5 var SC_FETCH_ALL = 'open-ils.circ:open-ils.circ.stat_cat.actor.retrieve.all';
6 var SC_CREATE_MAP = 'open-ils.circ:open-ils.circ.stat_cat.actor.user_map.create';
7 var SV_FETCH_ALL = 'open-ils.circ:open-ils.circ.survey.retrieve.all';
9 var myPerms = [ 'CREATE_USER', 'UPDATE_USER', 'CREATE_PATRON_STAT_CAT_ENTRY_MAP' ];
21 /* ID's of objects that should be focused when their page is made visible */
27 'ue_stat_cat_selector_1',
28 'ue_survey_selector_1',
32 /* fetch the necessary data to start off */
33 function uEditInit() {
36 session = cgi.param('ses');
37 if(cgi.param('adv')) advanced = true
38 if(!session) throw "User session is not defined";
41 $('uedit_user').appendChild(text(USER.usrname()));
42 uEditShowPage('uedit_userid');
46 fetchHighestPermOrgs( SESSION, USER.id(), myPerms );
47 uEditDrawUser(fetchFleshedUser(cgi.param('usr')));
54 function uEditNext() {
55 var i = _findActive();
56 if( i < (pages.length - 1)) uEditShowPage(pages[i+1]);
59 function uEditPrev() {
60 var i = _findActive();
61 if( i > 0 ) uEditShowPage(pages[i-1]);
65 function uEditShowPage(id) {
66 if( id == null ) return;
68 for( var p in pages ) {
71 removeCSSClass($(page+'_label'), 'label_active');
75 addCSSClass($(id+'_label'), 'label_active');
76 var idx = _findPageIdx(id);
77 var fpage = pageFocus[idx];
78 if(fpage) { $(fpage).focus(); try{$(fpage).select()}catch(e){} }
80 unHideMe($('ue_back'));
81 unHideMe($('ue_fwd'));
83 if(idx == 0) hideMe($('ue_back'));
84 if(idx == (pages.length-1)) hideMe($('ue_fwd'));
88 function _findActive() {
89 for( var p in pages ) {
90 if(! $(pages[p]).className.match(/hide_me/) )
95 function _findPageIdx(name) {
96 for( var i in pages ) {
98 if( page == name ) return i;
103 function uEditAddrHighlight( node, type ) {
104 var tbody = $('ue_address_tbody');
105 for( var c in tbody.childNodes ) {
106 var row = tbody.childNodes[c];
107 if(row.nodeType != XML_ELEMENT_NODE ) continue;
108 var div = $n(row,'ue_addr_'+type+'_yes').parentNode;
109 removeCSSClass(div, 'addr_info_checked');
111 addCSSClass(node.parentNode, 'addr_info_checked');
116 function uEditDrawUser(patron) {
117 if(!patron) return 0;
120 function uEditFetchStatCats() {
121 var req = new Request(SC_FETCH_ALL, SESSION);
122 req.callback(uEditDrawStatCats);
126 function uEditDrawStatCats(r) {
127 var cats = r.getResultObject();
128 var tbody = $('ue_stat_cat_tbody');
129 var templ = tbody.removeChild($('ue_stat_cat_row'));
131 for( var c in cats ) {
132 var row = templ.cloneNode(true);
133 uEditInsertCat( tbody, row, cats[c], c );
134 tbody.appendChild(row);
138 function uEditInsertCat( tbody, row, cat, idx ) {
140 cat.entries().sort( /* sort the entries by value */
142 if( a.value().toLowerCase() > b.value().toLowerCase()) return 1;
143 if( a.value().toLowerCase() < b.value().toLowerCase()) return -1;
148 var selector = $n(row, 'ue_stat_cat_selector');
149 if( idx == 0 ) selector.id = 'ue_stat_cat_selector_1';
150 $n(row, 'ue_stat_cat_name').appendChild(text(cat.name()));
151 $n(row, 'ue_stat_cat_owner').appendChild(text(fetchOrgUnit(cat.owner()).shortname()));
154 for( var e in cat.entries() ) {
155 var entry = cat.entries()[e];
156 setSelectorVal( selector, idx++, entry.value(), entry.id() );
160 function uEditFetchSurveys() {
161 var req = new Request(SV_FETCH_ALL, SESSION);
162 req.callback(uEditDrawSurveys);
166 function uEditDrawSurveys(r) {
168 var surveys = r.getResultObject();
169 var div = $('uedit_surveys');
170 var table = div.removeChild($('ue_survey_table'));
173 for( var s in surveys ) {
174 var survey = surveys[s];
175 var clone = table.cloneNode(true);
176 uEditInsertSurvey( div, clone, survey, x++ );
177 div.appendChild(clone);
181 function uEditInsertSurvey( div, table, survey, sidx ) {
182 $n(table, 'ue_survey_name').appendChild(text(survey.name()));
183 $n(table, 'ue_survey_desc').appendChild(text(survey.description()));
184 var tbody = $n(table, 'ue_survey_tbody');
185 var templ = tbody.removeChild($n(table, 'ue_survey_row'));
187 var polldiv = $('ue_survey_answer_poll');
190 for( var q in survey.questions() ) {
191 var row = templ.cloneNode(true);
192 uEditInsertSurveyQuestion( div, table, tbody, row, survey, survey.questions()[q], sidx );
193 tbody.appendChild(row);
197 function uEditInsertSurveyQuestion( div, table, tbody, row, survey, question, sidx ) {
199 $n(row, 'ue_survey_question').appendChild(text(question.question()));
201 var selector = $n(row, 'ue_survey_answer');
202 var polldiv = $n(row, 'ue_survey_answer_poll');
204 var polltbody = $n(row, 'ue_survey_answer_poll_tbody');
205 var pollrow = polltbody.removeChild($n(polltbody, 'ue_survey_answer_poll_row'));
207 if( sidx == 0 ) selector.id = 'ue_survey_selector_1';
209 for( var a in question.answers() ) {
211 var answer = question.answers()[a];
213 if( survey.poll() ) {
216 var prow = pollrow.cloneNode(true);
217 $n(prow, 'ue_survey_answer_poll_answer').appendChild(text(answer.answer()));
219 $n(prow, 'ue_survey_answer_poll_radio').appendChild(
222 name : 'survey_poll_answer_'+survey.id(),
226 polltbody.appendChild(prow);
230 unHideMe(selector.parentNode);
231 setSelectorVal( selector, idx++, answer.answer(), answer.id() );
237 function uEditSaveUser() {
239 if(patron == null) patron = new au();
241 var barcode = $('ue_barcode').value;
242 patron.usrname($('ue_username').value);
243 patron.passwd($('ue_password1').value);
244 patron.first_given_name($('ue_firstname').value);
245 patron.second_given_name($('ue_middlename').value);
246 patron.family_name($('ue_lastname').value);
247 patron.suffix($('ue_suffix').value);
248 patron.dob($('ue_dob').value);
250 alert(js2JSON(patron));