1 var RETRIEVE_CL = 'open-ils.circ:open-ils.circ.copy_location.retrieve.all';
2 var CREATE_CL = 'open-ils.circ:open-ils.circ.copy_location.create';
3 var UPDATE_CL = 'open-ils.circ:open-ils.circ.copy_location.update';
4 var DELETE_CL = 'open-ils.circ:open-ils.circ.copy_location.delete';
15 'CREATE_COPY_LOCATION',
16 'UPDATE_COPY_LOCATION',
17 'DELETE_COPY_LOCATION',
20 function clEditorInit() {
22 session = cgi.param('ses');
23 if(!session) throw "User session is not defined!";
25 $('user').appendChild(text(USER.usrname()));
26 YES = $('yes').innerHTML;
27 NO = $('no').innerHTML;
34 fetchHighestWorkPermOrgs( SESSION, USER.id(), myPerms );
35 $('cl_new_name').focus();
42 function clHoldMsg() {
43 alert($('cl_hold_msg').innerHTML);
47 setTimeout(function(){clGo2();}, 500);
52 var req = new Request(RETRIEVE_CL, focusOrg);
53 req.request._last = true;
54 req.callback(clAppendLocation);
57 /* if we need to add view-all ability, can use this...
58 var org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
59 for(var i = 0; i < org_list.length; i++) {
60 var req = new Request(RETRIEVE_CL, org_list[i]);
61 req.callback(clAppendLocation);
62 if(i == org_list.length - 1)
63 req.request._last = true;
69 function clAppendLocation(r) {
70 var cls = r.getResultObject();
71 if(checkILSEvent(cls)) throw cls;
72 for(var i = 0; i < cls.length; i++)
73 locationSet[cls[i].id()] = cls[i];
78 function clBuildNew() {
79 org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
81 if(org_list.length == 0)
83 var selector = $('cl_new_owner');
84 var fselector = $('cl_org_filter');
85 buildMergedOrgSel(selector, org_list, 0, 'shortname');
86 buildMergedOrgSel(fselector, org_list, 0, 'shortname');
87 var org = findOrgUnit(org_list[0]);
88 if(org_list.length > 1 || (org.children() && org.children()[0])) {
89 selector.disabled = false;
90 fselector.disabled = false;
93 fselector.onchange = function() {
94 focusOrg = getSelectorVal(fselector);
98 focusOrg = USER.ws_ou();
99 if(!orgIsMineFromSet(org_list, USER.ws_ou()))
100 focusOrg = org_list[0];
101 setSelector(fselector, focusOrg);
104 var sub = $('sc_new_submit');
105 sub.disabled = false;
106 sub.onclick = clCreateNew;
109 function clCreateNew() {
111 cl.name( $('cl_new_name').value );
112 cl.owning_lib( getSelectorVal( $('cl_new_owner')));
113 cl.holdable( ($('cl_new_hold_yes').checked) ? 1 : 0 );
114 cl.hold_verify( ($('cl_new_hold_verify_yes').checked) ? 1 : 0 );
115 cl.opac_visible( ($('cl_new_vis_yes').checked) ? 1 : 0 );
116 cl.circulate( ($('cl_new_circulate_yes').checked) ? 1 : 0 );
118 var req = new Request(CREATE_CL, SESSION, cl);
120 var res = req.result();
121 if(checkILSEvent(res)) throw res;
122 alertId('cl_update_success');
130 for(var x in locationSet)
131 cls.push(locationSet[x]);
133 var tbody = $('cl_tbody');
135 rowTemplate = tbody.removeChild($('cl_row'));
136 removeChildren(tbody);
138 for(var i = 0; i < cls.length; i++) /* force stringify */
139 cls[i].name(new String(cls[i].name()));
141 cls = cls.sort( function(a,b) {
142 if( a.name().toLowerCase() > b.name().toLowerCase() ) return 1;
143 if( a.name().toLowerCase() < b.name().toLowerCase() ) return -1;
147 for( var c in cls ) {
149 var row = rowTemplate.cloneNode(true);
150 clBuildRow( tbody, row, cl );
151 tbody.appendChild(row);
155 function clBuildRow( tbody, row, cl ) {
156 $n( row, 'cl_name').appendChild(text(cl.name()));
157 $n( row, 'cl_owner').appendChild(text(findOrgUnit(cl.owning_lib()).shortname()));
159 appendClear($n( row, 'cl_holdable'), (isTrue(cl.holdable())) ? _TRUE.cloneNode(true) : _FALSE.cloneNode(true) );
160 appendClear($n( row, 'cl_hold_verify'), (isTrue(cl.hold_verify())) ? _TRUE.cloneNode(true) : _FALSE.cloneNode(true) );
161 appendClear($n( row, 'cl_visible'), (isTrue(cl.opac_visible())) ? _TRUE.cloneNode(true) : _FALSE.cloneNode(true) );
162 appendClear($n( row, 'cl_circulate'), (isTrue(cl.circulate())) ? _TRUE.cloneNode(true) : _FALSE.cloneNode(true) );
164 var edit = $n( row, 'cl_edit');
165 edit.onclick = function() { clEdit( cl, tbody, row ); };
166 checkPermOrgDisabled(edit, cl.owning_lib(), 'UPDATE_COPY_LOCATION');
168 var del = $n( row, 'cl_delete' );
169 del.onclick = function() { clDelete( cl, tbody, row ); };
170 checkPermOrgDisabled(del, cl.owning_lib(), 'DELETE_COPY_LOCATION');
173 function clEdit( cl, tbody, row ) {
175 cleanTbody(tbody, 'edit');
176 var r = $('cl_edit').cloneNode(true);
177 r.setAttribute('edit','1');
179 var name = $n(r, 'cl_edit_name');
180 name.setAttribute('size', cl.name().length + 3);
181 name.value = cl.name();
183 $n(r, 'cl_edit_owner').appendChild(text(findOrgUnit(cl.owning_lib()).shortname()));
185 var arr = _clOptions(r);
186 if(isTrue(cl.holdable())) arr[0].checked = true;
187 else arr[1].checked = true;
188 if(isTrue(cl.opac_visible())) arr[2].checked = true;
189 else arr[3].checked = true;
190 if(isTrue(cl.circulate())) arr[4].checked = true;
191 else arr[5].checked = true;
192 if(isTrue(cl.hold_verify())) arr[6].checked = true;
193 else arr[7].checked = true;
195 $n(r, 'cl_edit_cancel').onclick = function(){cleanTbody(tbody,'edit');}
196 $n(r, 'cl_edit_commit').onclick = function(){clEditCommit( tbody, r, cl ); }
198 insRow(tbody, row, r);
203 function _clOptions(r) {
205 arr[0] = $n( $n(r,'cl_edit_holdable_yes'), 'cl_edit_holdable');
206 arr[1] = $n( $n(r,'cl_edit_holdable_no'), 'cl_edit_holdable');
207 arr[2] = $n( $n(r,'cl_edit_visible_yes'), 'cl_edit_visible');
208 arr[3] = $n( $n(r,'cl_edit_visible_no'), 'cl_edit_visible');
209 arr[4] = $n( $n(r,'cl_edit_circulate_yes'), 'cl_edit_circulate');
210 arr[5] = $n( $n(r,'cl_edit_circulate_no'), 'cl_edit_circulate');
211 arr[6] = $n( $n(r,'cl_edit_hold_verify_yes'), 'cl_edit_hold_verify');
212 arr[7] = $n( $n(r,'cl_edit_hold_verify_no'), 'cl_edit_hold_verify');
216 function clEditCommit( tbody, r, cl ) {
218 var arr = _clOptions(r);
219 if(arr[0].checked) cl.holdable(1);
221 if(arr[2].checked) cl.opac_visible(1);
222 else cl.opac_visible(0);
223 if(arr[4].checked) cl.circulate(1);
224 else cl.circulate(0);
225 if(arr[6].checked) cl.hold_verify(1);
226 else cl.hold_verify(0);
227 cl.name($n(r, 'cl_edit_name').value);
229 var req = new Request( UPDATE_CL, SESSION, cl );
231 var res = req.result();
232 if(checkILSEvent(res)) throw res;
233 alertId('cl_update_success');
239 function clDelete( cl, tbody, row ) {
240 if(!confirm($('cl_delete_confirm').innerHTML)) return;
241 var req = new Request( DELETE_CL, SESSION, cl.id() );
243 var res = req.result();
244 if(checkILSEvent(res)) throw res;
245 alertId('cl_update_success');