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';
13 'CREATE_COPY_LOCATION',
14 'UPDATE_COPY_LOCATION',
15 'DELETE_COPY_LOCATION',
18 function clEditorInit() {
20 session = cgi.param('ses');
21 if(!session) throw "User session is not defined!";
23 $('user').appendChild(text(USER.usrname()));
24 YES = $('yes').innerHTML;
25 NO = $('no').innerHTML;
30 fetchHighestWorkPermOrgs( SESSION, USER.id(), myPerms );
31 $('cl_new_name').focus();
38 function clHoldMsg() {
39 alert($('cl_hold_msg').innerHTML);
43 setTimeout(function(){clGo2();}, 500);
48 var req = new Request(RETRIEVE_CL, focusOrg);
49 req.request._last = true;
50 req.callback(clAppendLocation);
53 /* if we need to add view-all ability, can use this...
54 var org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
55 for(var i = 0; i < org_list.length; i++) {
56 var req = new Request(RETRIEVE_CL, org_list[i]);
57 req.callback(clAppendLocation);
58 if(i == org_list.length - 1)
59 req.request._last = true;
65 function clAppendLocation(r) {
66 var cls = r.getResultObject();
67 if(checkILSEvent(cls)) throw cls;
68 for(var i = 0; i < cls.length; i++)
69 locationSet[cls[i].id()] = cls[i];
74 function clBuildNew() {
75 org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
77 if(org_list.length == 0)
79 var selector = $('cl_new_owner');
80 var fselector = $('cl_org_filter');
81 buildMergedOrgSel(selector, org_list, 0);
82 buildMergedOrgSel(fselector, org_list, 0);
83 var org = findOrgUnit(org_list[0]);
84 if(org_list.length > 1 || (org.children() && org.children()[0])) {
85 selector.disabled = false;
86 fselector.disabled = false;
89 fselector.onchange = function() {
90 focusOrg = getSelectorVal(fselector);
94 focusOrg = USER.ws_ou();
95 if(!orgIsMineFromSet(org_list, USER.ws_ou()))
96 focusOrg = org_list[0];
97 setSelector(fselector, focusOrg);
100 var sub = $('sc_new_submit');
101 sub.disabled = false;
102 sub.onclick = clCreateNew;
105 function clCreateNew() {
107 cl.name( $('cl_new_name').value );
108 cl.owning_lib( getSelectorVal( $('cl_new_owner')));
109 cl.holdable( ($('cl_new_hold_yes').checked) ? 1 : 0 );
110 cl.opac_visible( ($('cl_new_vis_yes').checked) ? 1 : 0 );
111 cl.circulate( ($('cl_new_circulate_yes').checked) ? 1 : 0 );
113 var req = new Request(CREATE_CL, SESSION, cl);
115 var res = req.result();
116 if(checkILSEvent(res)) throw res;
117 alertId('cl_update_success');
125 for(var x in locationSet)
126 cls.push(locationSet[x]);
128 var tbody = $('cl_tbody');
130 rowTemplate = tbody.removeChild($('cl_row'));
131 removeChildren(tbody);
133 for(var i = 0; i < cls.length; i++) /* force stringify */
134 cls[i].name(new String(cls[i].name()));
136 cls = cls.sort( function(a,b) {
137 if( a.name().toLowerCase() > b.name().toLowerCase() ) return 1;
138 if( a.name().toLowerCase() < b.name().toLowerCase() ) return -1;
142 for( var c in cls ) {
144 var row = rowTemplate.cloneNode(true);
145 clBuildRow( tbody, row, cl );
146 tbody.appendChild(row);
150 function clBuildRow( tbody, row, cl ) {
151 $n( row, 'cl_name').appendChild(text(cl.name()));
152 $n( row, 'cl_owner').appendChild(text(findOrgUnit(cl.owning_lib()).name()));
153 $n( row, 'cl_holdable').appendChild(text( (cl.holdable()) ? YES : NO ) );
154 $n( row, 'cl_visible').appendChild(text( (cl.opac_visible()) ? YES : NO ) );
155 $n( row, 'cl_circulate').appendChild(text( (cl.circulate()) ? YES : NO ) );
157 var edit = $n( row, 'cl_edit');
158 edit.onclick = function() { clEdit( cl, tbody, row ); };
159 checkPermOrgDisabled(edit, cl.owning_lib(), 'UPDATE_COPY_LOCATION');
161 var del = $n( row, 'cl_delete' );
162 del.onclick = function() { clDelete( cl, tbody, row ); };
163 checkPermOrgDisabled(del, cl.owning_lib(), 'DELETE_COPY_LOCATION');
166 function clEdit( cl, tbody, row ) {
168 cleanTbody(tbody, 'edit');
169 var r = $('cl_edit').cloneNode(true);
170 r.setAttribute('edit','1');
172 var name = $n(r, 'cl_edit_name');
173 name.setAttribute('size', cl.name().length + 3);
174 name.value = cl.name();
176 $n(r, 'cl_edit_owner').appendChild(text(findOrgUnit(cl.owning_lib()).name()));
178 var arr = _clOptions(r);
179 if(cl.holdable()) arr[0].checked = true;
180 else arr[1].checked = true;
181 if(cl.opac_visible()) arr[2].checked = true;
182 else arr[3].checked = true;
183 if(cl.circulate()) arr[4].checked = true;
184 else arr[5].checked = true;
186 $n(r, 'cl_edit_cancel').onclick = function(){cleanTbody(tbody,'edit');}
187 $n(r, 'cl_edit_commit').onclick = function(){clEditCommit( tbody, r, cl ); }
189 insRow(tbody, row, r);
194 function _clOptions(r) {
196 arr[0] = $n( $n(r,'cl_edit_holdable_yes'), 'cl_edit_holdable');
197 arr[1] = $n( $n(r,'cl_edit_holdable_no'), 'cl_edit_holdable');
198 arr[2] = $n( $n(r,'cl_edit_visible_yes'), 'cl_edit_visible');
199 arr[3] = $n( $n(r,'cl_edit_visible_no'), 'cl_edit_visible');
200 arr[4] = $n( $n(r,'cl_edit_circulate_yes'), 'cl_edit_circulate');
201 arr[5] = $n( $n(r,'cl_edit_circulate_no'), 'cl_edit_circulate');
205 function clEditCommit( tbody, r, cl ) {
207 var arr = _clOptions(r);
208 if(arr[0].checked) cl.holdable(1);
210 if(arr[2].checked) cl.opac_visible(1);
211 else cl.opac_visible(0);
212 if(arr[4].checked) cl.circulate(1);
213 else cl.circulate(0);
214 cl.name($n(r, 'cl_edit_name').value);
216 var req = new Request( UPDATE_CL, SESSION, cl );
218 var res = req.result();
219 if(checkILSEvent(res)) throw res;
220 alertId('cl_update_success');
226 function clDelete( cl, tbody, row ) {
227 if(!confirm($('cl_delete_confirm').innerHTML)) return;
228 var req = new Request( DELETE_CL, SESSION, cl.id() );
230 var res = req.result();
231 if(checkILSEvent(res)) throw res;
232 alertId('cl_update_success');