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' ];
31 /* fetch the necessary data to start off */
32 function uEditInit() {
35 session = cgi.param('ses');
36 if(cgi.param('adv')) advanced = true
37 if(!session) throw "User session is not defined";
39 user = fetchUser(session);
40 $('uedit_user').appendChild(text(USER.usrname()));
41 uEditShowPage('uedit_userid');
45 fetchHighestPermOrgs( SESSION, USER.id(), myPerms );
46 uEditDrawUser(fetchFleshedUser(cgi.param('usr')));
53 function uEditNext() {
54 var i = _findActive();
55 if( i < (pages.length - 1)) uEditShowPage(pages[i+1]);
58 function uEditPrev() {
59 var i = _findActive();
60 if( i > 0 ) uEditShowPage(pages[i-1]);
64 function uEditShowPage(id) {
65 if( id == null ) return;
67 for( var p in pages ) {
70 removeCSSClass($(page+'_label'), 'label_active');
74 addCSSClass($(id+'_label'), 'label_active');
75 var idx = _findPageIdx(id);
76 var fpage = pageFocus[idx];
77 if(fpage) { $(fpage).focus(); $(fpage).select() }
79 unHideMe($('ue_back'));
80 unHideMe($('ue_fwd'));
82 if(idx == 0) hideMe($('ue_back'));
83 if(idx == (pages.length-1)) hideMe($('ue_fwd'));
87 function _findActive() {
88 for( var p in pages ) {
89 if(! $(pages[p]).className.match(/hide_me/) )
94 function _findPageIdx(name) {
95 for( var i in pages ) {
97 if( page == name ) return i;
102 function uEditAddrHighlight( node, type ) {
103 var tbody = $('ue_address_tbody');
104 for( var c in tbody.childNodes ) {
105 var row = tbody.childNodes[c];
106 if(row.nodeType != XML_ELEMENT_NODE ) continue;
107 var div = $n(row,'ue_addr_'+type+'_yes').parentNode;
108 removeCSSClass(div, 'addr_info_checked');
110 addCSSClass(node.parentNode, 'addr_info_checked');
115 function uEditDrawUser(patron) {
116 if(!patron) return 0;
119 function uEditFetchStatCats() {
120 var req = new Request(SC_FETCH_ALL, SESSION);
121 req.callback(uEditDrawStatCats);
125 function uEditDrawStatCats(r) {
126 var cats = r.getResultObject();
127 var tbody = $('ue_stat_cat_tbody');
128 var templ = tbody.removeChild($('ue_stat_cat_row'));
130 for( var c in cats ) {
131 var row = templ.cloneNode(true);
132 uEditInsertCat( tbody, row, cats[c] );
133 tbody.appendChild(row);
137 function uEditInsertCat( tbody, row, cat ) {
139 cat.entries().sort( /* sort the entries by value */
141 if( a.value().toLowerCase() > b.value().toLowerCase()) return 1;
142 if( a.value().toLowerCase() < b.value().toLowerCase()) return -1;
147 var selector = $n(row, 'ue_stat_cat_selector');
148 $n(row, 'ue_stat_cat_name').appendChild(text(cat.name()));
149 $n(row, 'ue_stat_cat_owner').appendChild(text(fetchOrgUnit(cat.owner()).shortname()));
152 for( var e in cat.entries() ) {
153 var entry = cat.entries()[e];
154 setSelectorVal( selector, idx++, entry.value(), entry.id() );
158 function uEditFetchSurveys() {
159 var req = new Request(SV_FETCH_ALL, SESSION);
160 req.callback(uEditDrawSurveys);
164 function uEditDrawSurveys(r) {
166 var surveys = r.getResultObject();
167 var div = $('uedit_surveys');
168 var table = div.removeChild($('ue_survey_table'));
170 for( var s in surveys ) {
171 var survey = surveys[s];
172 var clone = table.cloneNode(true);
173 uEditInsertSurvey( div, clone, survey );
174 div.appendChild(clone);
178 function uEditInsertSurvey( div, table, survey ) {
179 $n(table, 'ue_survey_name').appendChild(text(survey.name()));
180 $n(table, 'ue_survey_desc').appendChild(text(survey.description()));
181 var tbody = $n(table, 'ue_survey_tbody');
182 var templ = tbody.removeChild($n(table, 'ue_survey_row'));
184 var selector = $('ue_survey_answer');
185 var polldiv = $('ue_survey_answer_poll');
188 for( var q in survey.questions() ) {
189 var row = templ.cloneNode(true);
190 uEditInsertSurveyQuestion( div, table, tbody, row, survey, survey.questions()[q] );
191 tbody.appendChild(row);
195 function uEditInsertSurveyQuestion( div, table, tbody, row, survey, question ) {
197 $n(row, 'ue_survey_question').appendChild(text(question.question()));
199 var selector = $n(row, 'ue_survey_answer');
200 var polldiv = $n(row, 'ue_survey_answer_poll');
202 var polltbody = $n(row, 'ue_survey_answer_poll_tbody');
203 var pollrow = polltbody.removeChild($n(polltbody, 'ue_survey_answer_poll_row'));
205 for( var a in question.answers() ) {
207 var answer = question.answers()[a];
209 if( survey.poll() ) {
212 var prow = pollrow.cloneNode(true);
213 $n(prow, 'ue_survey_answer_poll_answer').appendChild(text(answer.answer()));
215 $n(prow, 'ue_survey_answer_poll_radio').appendChild(
218 name : 'survey_poll_answer_'+survey.id(),
222 polltbody.appendChild(prow);
226 unHideMe(selector.parentNode);
227 setSelectorVal( selector, idx++, answer.answer(), answer.id() );