]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/items.js
select all for trees, and renew all for items out
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / patron / items.js
1 dump('entering patron.items.js\n');
2
3 if (typeof patron == 'undefined') patron = {};
4 patron.items = function (params) {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         JSAN.use('util.network'); this.network = new util.network();
8         JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
9 }
10
11 patron.items.prototype = {
12
13         'init' : function( params ) {
14
15                 var obj = this;
16
17                 obj.patron_id = params['patron_id'];
18
19                 obj.init_lists();
20
21                 JSAN.use('util.controller'); obj.controller = new util.controller();
22                 obj.controller.init(
23                         {
24                                 'control_map' : {
25                                         'cmd_broken' : [ ['command'], function() { alert('Not Yet Implemented'); } ],
26                                         'cmd_items_print' : [ ['command'], function() { obj.items_print(1); } ],
27                                         'cmd_items_print2' : [ ['command'], function() { obj.items_print(2); } ],
28                                         'cmd_items_renew' : [ ['command'], function() { obj.items_renew(1); } ],
29                                         'cmd_items_renew_all' : [ ['command'], function() { obj.items_renew_all(); } ],
30                                         'cmd_items_renew2' : [ ['command'], function() { obj.items_renew(2); } ],
31                                         'cmd_items_edit' : [ ['command'], function() { obj.items_edit(1); } ],
32                                         'cmd_items_edit2' : [ ['command'], function() { obj.items_edit(2); } ],
33                                         'cmd_items_mark_lost' : [ ['command'], function() { obj.items_mark_lost(1); } ],
34                                         'cmd_items_mark_lost2' : [ ['command'], function() { obj.items_mark_lost(2); } ],
35                                         'cmd_items_claimed_returned' : [ ['command'], function() { obj.items_claimed_returned(1); } ],
36                                         'cmd_items_claimed_returned2' : [ ['command'], function() { obj.items_claimed_returned(2); } ],
37                                         'cmd_items_checkin' : [ ['command'], function() { obj.items_checkin(1); } ],
38                                         'cmd_items_checkin2' : [ ['command'], function() { obj.items_checkin(2); } ],
39                                         'cmd_show_catalog' : [ ['command'], function() { obj.show_catalog(1); } ],
40                                         'cmd_show_catalog2' : [ ['command'], function() { obj.show_catalog(2); } ],
41                                         'cmd_add_billing' : [ ['command'], function() { obj.add_billing(1); } ],
42                                         'cmd_add_billing2' : [ ['command'], function() { obj.add_billing(2); } ],
43                                 }
44                         }
45                 );
46
47                 obj.retrieve();
48
49                 obj.controller.view.cmd_items_claimed_returned.setAttribute('disabled','true');
50                 obj.controller.view.cmd_items_renew.setAttribute('disabled','true');
51                 obj.controller.view.cmd_items_checkin.setAttribute('disabled','true');
52                 obj.controller.view.cmd_items_edit.setAttribute('disabled','true');
53                 obj.controller.view.cmd_items_mark_lost.setAttribute('disabled','true');
54                 obj.controller.view.cmd_show_catalog.setAttribute('disabled','true');
55                 obj.controller.view.cmd_items_claimed_returned2.setAttribute('disabled','true');
56                 obj.controller.view.cmd_items_renew2.setAttribute('disabled','true');
57                 obj.controller.view.cmd_items_checkin2.setAttribute('disabled','true');
58                 obj.controller.view.cmd_items_edit2.setAttribute('disabled','true');
59                 obj.controller.view.cmd_items_mark_lost2.setAttribute('disabled','true');
60                 obj.controller.view.cmd_show_catalog2.setAttribute('disabled','true');
61         },
62
63
64         'items_print' : function(which) {
65                 var obj = this;
66                 try {
67                         var list = (which==2 ? obj.list2 : obj.list);
68                         dump(js2JSON( list.dump() ) + '\n');
69                         function flesh_callback() {
70                                 try {
71                                         JSAN.use('patron.util');
72                                         var params = { 
73                                                 'patron' : patron.util.retrieve_au_via_id(ses(),obj.patron_id), 
74                                                 'lib' : obj.data.hash.aou[ obj.data.list.au[0].ws_ou() ],
75                                                 'staff' : obj.data.list.au[0],
76                                                 'header' : obj.data.print_list_templates.checkout.header,
77                                                 'line_item' : obj.data.print_list_templates.checkout.line_item,
78                                                 'footer' : obj.data.print_list_templates.checkout.footer,
79                                                 'type' : obj.data.print_list_templates.checkout.type,
80                                                 'list' : list.dump(),
81                                         };
82                                         JSAN.use('util.print'); var print = new util.print();
83                                         print.tree_list( params );
84                                         setTimeout(function(){list.on_all_fleshed = null;},0);
85                                 } catch(E) {
86                                         obj.error.standard_unexpected_error_alert('printing 2',E);
87                                 }
88                         }
89                         list.on_all_fleshed = flesh_callback;
90                         list.full_retrieve();
91                 } catch(E) {
92                         obj.error.standard_unexpected_error_alert('printing 1',E);
93                 }
94         },
95
96         'items_renew_all' : function() {
97                 try {
98                         this.list.select_all();
99                         this.items_renew(1);    
100                 } catch(E) {
101                         this.error.standard_unexpected_error_alert('Items were not likely renewed',E);
102                 }
103         },
104
105         'items_renew' : function(which) {
106                 var obj = this;
107                 try{
108                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
109                         JSAN.use('util.functional');
110                         var msg = 'Are you sure you would like to renew item' + ( retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ') + '?';
111                         var r = obj.error.yns_alert(msg,'Renewing Items','Yes','No',null,'Check here to confirm this message');
112                         if (r != 0) { return; }
113                         for (var i = 0; i < retrieve_ids.length; i++) {
114                                 try {
115                                         var barcode = retrieve_ids[i].barcode;
116                                         //alert('Renew barcode = ' + barcode);
117                                         var renew = obj.network.simple_request(
118                                                 'CHECKOUT_RENEW', 
119                                                 [ ses(), { barcode: barcode, patron: obj.patron_id } ],
120                                                 null,
121                                                 {
122                                                         'title' : 'Override Renew Failure?',
123                                                         'overridable_events' : [ 
124                                                                 1212 /* PATRON_EXCEEDS_OVERDUE_COUNT */,
125                                                                 7002 /* PATRON_EXCEEDS_CHECKOUT_COUNT */,
126                                                                 7003 /* COPY_CIRC_NOT_ALLOWED */,
127                                                                 7004 /* COPY_NOT_AVAILABLE */,
128                                                                 7006 /* COPY_IS_REFERENCE */,
129                                                                 7007 /* COPY_NEEDED_FOR_HOLD */,
130                                                                 7008 /* MAX_RENEWALS_REACHED */, 
131                                                                 7010 /* COPY_ALERT_MESSAGE */,
132                                                                 7013 /* PATRON_EXCEEDS_FINES */,
133                                                         ],
134                                                         'text' : {
135                                                                 '7010' : function(r) {
136                                                                         return r.payload;
137                                                                 },
138                                                                 '7004' : function(r) {
139                                                                         //return obj.data.hash.ccs[ r.payload ].name();
140                                                                         return r.payload.status().name();
141                                                                         //return r.payload.name();
142                                                                 },
143                                                         }
144                                                 }
145                                         );
146                                         if (typeof renew.ilsevent != 'undefined') renew = [ renew ];
147                                         for (var j = 0; j < renew.length; j++) { 
148                                                 switch(renew[j].ilsevent) {
149                                                         case 0 /* SUCCESS */ : break;
150                                                         case 5000 /* PERM_FAILURE */: break;
151                                                         case 7008 /* MAX_RENEWALS_REACHED */ : break;
152                                                         default:
153                                                                 throw(renew);
154                                                         break;
155                                                 }
156                                         }
157                                 } catch(E) {
158                                         obj.error.standard_unexpected_error_alert('Renew probably did not happen for barcode ' + barcode,E);
159                                 }
160                         }
161                         obj.retrieve();
162                 } catch(E) {
163                         obj.error.standard_unexpected_error_alert('Renew probably did not happen.',E);
164                         obj.retrieve();
165                 }
166         },
167
168         'items_edit' : function(which) {
169                         var obj = this;
170                         try {
171                                 var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
172                                 function check_date(value) {
173                                         JSAN.use('util.date');
174                                         try {
175                                                 if (! util.date.check('YYYY-MM-DD',value) ) { 
176                                                         throw('Invalid Date'); 
177                                                 }
178                                                 if (util.date.check_past('YYYY-MM-DD',value) ) { 
179                                                         throw('Due date needs to be after today.'); 
180                                                 }
181                                                 /*
182                                                 if ( util.date.formatted_date(new Date(),'%F') == value) { 
183                                                         throw('Due date needs to be after today.'); 
184                                                 }
185                                                 */
186                                                 return true;
187                                         } catch(E) {
188                                                 alert(E);
189                                                 return false;
190                                         }
191                                 }
192
193                                 JSAN.use('util.functional');
194                                 var title = 'Edit Due Date' + (retrieve_ids.length > 1 ? 's' : '');
195                                 var value = 'YYYY-MM-DD';
196                                 var text = 'Enter a new due date for these copies: ' + 
197                                         util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ');
198                                 var due_date; var invalid = true;
199                                 while(invalid) {
200                                         due_date = window.prompt(text,value,title);
201                                         if (due_date) {
202                                                 invalid = ! check_date(due_date);
203                                         } else {
204                                                 invalid = false;
205                                         }
206                                 }
207                                 if (due_date) {
208                                         var circs = util.functional.map_list(retrieve_ids,function(o){return o.circ_id;});
209                                         for (var i = 0; i < circs.length; i++) {
210                                                 var robj = obj.network.simple_request('FM_CIRC_EDIT_DUE_DATE',[ses(),circs[i],due_date]);
211                                                 if (typeof robj.ilsevent != 'undefined') { if (robj.ilsevent != 0) throw(robj); }
212                                         }
213                                         obj.retrieve();
214                                 }
215                         } catch(E) {
216                                 obj.error.standard_unexpected_error_alert('The due dates were not likely modified.',E);
217                                 obj.retrieve();
218                         }
219         },
220
221         'items_mark_lost' : function(which) {
222                 var obj = this;
223                 try {
224                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
225                         for (var i = 0; i < retrieve_ids.length; i++) {
226                                 var barcode = retrieve_ids[i].barcode;
227                                 dump('Mark barcode lost = ' + barcode);
228                                 var robj = obj.network.simple_request( 'MARK_ITEM_LOST', [ ses(), { barcode: barcode } ]);
229                                 if (typeof robj.ilsevent != 'undefined') { if (robj.ilsevent != 0) throw(robj); }
230                         }
231                         obj.retrieve();
232                 } catch(E) {
233                         obj.error.standard_unexpected_error_alert('The items were not likely marked lost.',E);
234                         obj.retrieve();
235                 }
236         },
237
238         'items_claimed_returned' : function(which) {
239                 var obj = this;
240                 try {
241                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
242                         function check_date(value) {
243                                 JSAN.use('util.date');
244                                 try {
245                                         if (! util.date.check('YYYY-MM-DD',value) ) { 
246                                                 throw('Invalid Date'); 
247                                         }
248                                         if ( util.date.formatted_date(new Date(),'%F') == value) { 
249                                                 return true;
250                                         }
251                                         if (! util.date.check_past('YYYY-MM-DD',value) ) { 
252                                                 throw('Claims Returned Date cannot be in the future.'); 
253                                         }
254                                         return true;
255                                 } catch(E) {
256                                         alert(E);
257                                         return false;
258                                 }
259                         }
260
261                         JSAN.use('util.functional');
262                         var title = 'Claimed Returned';
263                         var value = 'YYYY-MM-DD';
264                         var text = 'Enter a claimed returned date for these copies: ' + 
265                                 util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ');
266                         var backdate; var invalid = true;
267                         while(invalid) {
268                                 backdate = window.prompt(text,value,title);
269                                 if (backdate) {
270                                         invalid = ! check_date(backdate);
271                                 } else {
272                                         invalid = false;
273                                 }
274                         }
275                         alert('backdate = ' + backdate);
276                         if (backdate) {
277                                 var barcodes = util.functional.map_list(retrieve_ids,function(o){return o.barcode;});
278                                 for (var i = 0; i < barcodes.length; i++) {
279                                         var robj = obj.network.simple_request(
280                                                 'MARK_ITEM_CLAIM_RETURNED', 
281                                                 [ ses(), { barcode: barcodes[i], backdate: backdate } ]
282                                         );
283                                         if (typeof robj.ilsevent != 'undefined') { if (robj.ilsevent != 0) throw(robj); }
284                                 }
285                                 obj.retrieve();
286                         }
287                 } catch(E) {
288                         obj.error.standard_unexpected_error_alert('The items were not likely marked Claimed Returned.',E);
289                         obj.retrieve();
290                 }
291         },
292
293         'items_checkin' : function(which) {
294                 var obj = this;
295                 try {
296                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
297                         JSAN.use('util.functional');
298                         var msg = 'Are you sure you would like to check in item' + ( retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ') + '?';
299                         var r = obj.error.yns_alert(msg,'Check In Items','Yes','No',null,'Check here to confirm this message');
300                         if (r != 0) { return; }
301                         JSAN.use('circ.util');
302                         for (var i = 0; i < retrieve_ids.length; i++) {
303                                 var barcode = retrieve_ids[i].barcode;
304                                 dump('Check in barcode = ' + barcode);
305                                 var robj = circ.util.checkin_via_barcode(
306                                         ses(), barcode
307                                 );
308                                 /* circ.util.checkin_via_barcode handles errors currently */
309                         }
310                         obj.retrieve();
311                 } catch(E) {
312                         obj.error.standard_unexpected_error_alert('Checkin probably did not happen.',E);
313                         obj.retrieve();
314                 }
315         },
316
317         'show_catalog' : function(which) {
318                 var obj = this;
319                 try {
320                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
321                         for (var i = 0; i < retrieve_ids.length; i++) {
322                                 var doc_id = retrieve_ids[i].doc_id;
323                                 if (!doc_id) {
324                                         alert(retrieve_ids[i].barcode + ' is not cataloged');
325                                         continue;
326                                 }
327                                 var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
328                                 var content_params = { 
329                                         'session' : ses(),
330                                         'authtime' : ses('authtime'),
331                                         'opac_url' : opac_url,
332                                 };
333                                 xulG.new_tab(
334                                         xulG.url_prefix(urls.XUL_OPAC_WRAPPER), 
335                                         {'tab_name':'Retrieving title...'}, 
336                                         content_params
337                                 );
338                         }
339                 } catch(E) {
340                         obj.error.standard_unexpected_error_alert('',E);
341                 }
342         },
343
344         'add_billing' : function(which) {
345                 var obj = this;
346                 try {
347                         var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
348                         JSAN.use('util.window');
349                         var win = new util.window();
350                         for (var i = 0; i < retrieve_ids.length; i++) {
351                                 var circ_id = retrieve_ids[i].circ_id;
352                                 var w = win.open(
353                                         urls.XUL_PATRON_BILL_WIZARD
354                                                 + '?patron_id=' + window.escape(obj.patron_id)
355                                                 + '&xact_id=' + window.escape( circ_id ),
356                                         'billwizard',
357                                         'chrome,resizable,modal'
358                                 );
359                         }
360                         obj.retrieve();
361                 } catch(E) {
362                         obj.error.standard_unexpected_error_alert('',E);
363                 }
364         },
365
366         'init_lists' : function() {
367                 var obj = this;
368
369                 JSAN.use('circ.util');
370                 var columns = circ.util.columns( 
371                         { 
372                                 'barcode' : { 'hidden' : false },
373                                 'title' : { 'hidden' : false, 'flex' : '3' },
374                                 'due_date' : { 'hidden' : false },
375                                 'renewal_remaining' : { 'hidden' : false },
376                                 'stop_fines' : { 'hidden' : false },
377                         } 
378                 );
379                 var columns2 = circ.util.columns( 
380                         { 
381                                 'barcode' : { 'hidden' : false },
382                                 'title' : { 'hidden' : false, 'flex' : '3' },
383                                 'checkin_time' : { 'hidden' : false },
384                                 'stop_fines' : { 'hidden' : false },
385                         } 
386                 );
387
388                 function retrieve_row(params) {
389                         var row = params.row;
390
391                         var funcs = [];
392
393
394                         funcs.push(
395                                 function() {
396                                         row.my.circ = obj.network.simple_request('FM_CIRC_RETRIEVE_VIA_ID',[ ses(), row.my.circ_id ]);
397                                 }
398                         );
399                         
400                         if (!row.my.mvr) funcs.push(
401                                 function() {
402
403                                         row.my.mvr = obj.network.request(
404                                                 api.MODS_SLIM_RECORD_RETRIEVE_VIA_COPY.app,
405                                                 api.MODS_SLIM_RECORD_RETRIEVE_VIA_COPY.method,
406                                                 [ row.my.circ.target_copy() ]
407                                         );
408
409                                 }
410                         );
411                         if (!row.my.acp) {
412                                 funcs.push(     
413                                         function() {
414
415                                                 row.my.acp = obj.network.request(
416                                                         api.FM_ACP_RETRIEVE.app,
417                                                         api.FM_ACP_RETRIEVE.method,
418                                                         [ row.my.circ.target_copy() ]
419                                                 );
420
421                                                 params.row_node.setAttribute( 'retrieve_id', js2JSON({'circ_id':row.my.circ.id(),'barcode':row.my.acp.barcode(),'doc_id': (typeof row.my.mvr.ilsevent == 'undefined' ? row.my.mvr.doc_id() : null )}) );
422
423                                         }
424                                 );
425                         } else {
426                                 params.row_node.setAttribute( 'retrieve_id', js2JSON({'circ_id':row.my.circ.id(),'barcode':row.my.acp.barcode(),'doc_id': ( typeof row.my.mvr.ilsevent == 'undefined' ? row.my.mvr.doc_id() : null) }) );
427                         }
428
429                         funcs.push(
430                                 function() {
431
432                                         if (typeof params.on_retrieve == 'function') {
433                                                 params.on_retrieve(row);
434                                         }
435
436                                 }
437                         );
438
439                         JSAN.use('util.exec'); var exec = new util.exec();
440                         exec.on_error = function(E) {
441                                 //var err = 'items chain: ' + js2JSON(E);
442                                 //obj.error.sdump('D_ERROR',err);
443                                 return true; /* keep going */
444                         }
445                         exec.chain( funcs );
446
447                         return row;
448
449                 }
450
451                 JSAN.use('util.list'); obj.list = new util.list('items_list');
452                 obj.list.init(
453                         {
454                                 'columns' : columns,
455                                 'map_row_to_column' : circ.util.std_map_row_to_column(),
456                                 'retrieve_row' : retrieve_row,
457                                 'on_select' : function(ev) {
458                                         JSAN.use('util.functional');
459                                         var sel = obj.list.retrieve_selection();
460                                         var list = util.functional.map_list(
461                                                 sel,
462                                                 function(o) { return JSON2js( o.getAttribute('retrieve_id') ); }
463                                         );
464                                         if (typeof obj.on_select == 'function') {
465                                                 obj.on_select(list);
466                                         }
467                                         if (typeof window.xulG == 'object' && typeof window.xulG.on_select == 'function') {
468                                                 obj.error.sdump('D_PATRON','patron.items: Calling external .on_select()\n');
469                                                 window.xulG.on_select(list);
470                                         } else {
471                                                 obj.error.sdump('D_PATRON','patron.items: No external .on_select()\n');
472                                         }
473                                 },
474                         }
475                 );
476                 
477                 obj.list2 = new util.list('items_list2');
478                 obj.list2.init(
479                         {
480                                 'columns' : columns2,
481                                 'map_row_to_column' : circ.util.std_map_row_to_column(),
482                                 'retrieve_row' : retrieve_row,
483                                 'on_select' : function(ev) {
484                                         JSAN.use('util.functional');
485                                         var sel = obj.list2.retrieve_selection();
486                                         var list = util.functional.map_list(
487                                                 sel,
488                                                 function(o) { return JSON2js( o.getAttribute('retrieve_id') ); }
489                                         );
490                                         if (typeof obj.on_select2 == 'function') {
491                                                 obj.on_select2(list);
492                                         }
493                                 },
494                         }
495                 );
496         },
497
498         'retrieve' : function(dont_show_me_the_list_change) {
499                 var obj = this;
500                 if (window.xulG && window.xulG.checkouts) {
501                         obj.checkouts = window.xulG.checkouts;
502                 } else {
503                         obj.checkouts = [];
504                         obj.checkouts2 = [];
505                         var robj = obj.network.simple_request(
506                                 'FM_CIRC_RETRIEVE_VIA_USER',
507                                 [ ses(), obj.patron_id ]
508                         );
509                         if (typeof robj.ilsevent!='undefined') {
510                                 obj.error.standard_unexpected_error_alert('Error retrieving circulations.',E);
511                         } else {
512                                 obj.checkouts = obj.checkouts.concat( robj.overdue );
513                                 obj.checkouts = obj.checkouts.concat( robj.out );
514                                 obj.checkouts2 = obj.checkouts2.concat( robj.lost );
515                                 obj.checkouts2 = obj.checkouts2.concat( robj.claims_returned );
516                                 obj.checkouts2 = obj.checkouts2.concat( robj.long_overdue );
517                         }
518                         var robj = obj.network.simple_request(
519                                 'FM_CIRC_IN_WITH_FINES_VIA_USER',
520                                 [ ses(), obj.patron_id ]
521                         );
522                         if (typeof robj.ilsevent!='undefined') {
523                                 obj.error.standard_unexpected_error_alert('Error retrieving circulations.',E);
524                         } else {
525                                 obj.checkouts2 = obj.checkouts2.concat( robj.lost );
526                                 obj.checkouts2 = obj.checkouts2.concat( robj.claims_returned );
527                                 obj.checkouts2 = obj.checkouts2.concat( robj.long_overdue );
528                         }
529                 }
530
531                 function gen_list_append(circ_id,which_list) {
532                         return function() {
533                                 try {
534                                         switch(which_list) {
535                                                 case 1:
536                                                         obj.list2.append( { 'row' : { 'my' : { 'circ_id' : circ_id } }, } );
537                                                 break;
538                                                 default:
539                                                         obj.list.append( { 'row' : { 'my' : { 'circ_id' : circ_id } }, } );
540                                                 break;
541                                         }
542                                 } catch(E) {
543                                         alert(E);
544                                 }
545                         };
546                 }
547
548                 obj.list.clear(); obj.list2.clear();
549
550                 JSAN.use('util.exec'); var exec = new util.exec();
551                 var rows = [];
552                 for (var i in obj.checkouts) {
553                         rows.push( gen_list_append(obj.checkouts[i],0) );
554                 }
555                 for (var i in obj.checkouts2) {
556                         rows.push( gen_list_append(obj.checkouts2[i],1) );
557                 }
558                 exec.chain( rows );
559                 if (!dont_show_me_the_list_change) {
560                         if (window.xulG && typeof window.xulG.on_list_change == 'function') {
561                                 try { window.xulG.on_list_change(obj.checkouts); } catch(E) { this.error.sdump('D_ERROR',E); }
562                         }
563                 }
564         },
565
566         'on_select' : function(list) {
567
568                 dump('patron.items.on_select list = ' + js2JSON(list) + '\n');
569
570                 var obj = this;
571
572                 obj.controller.view.cmd_items_claimed_returned.setAttribute('disabled','false');
573                 obj.controller.view.cmd_items_renew.setAttribute('disabled','false');
574                 obj.controller.view.cmd_items_checkin.setAttribute('disabled','false');
575                 obj.controller.view.cmd_items_edit.setAttribute('disabled','false');
576                 obj.controller.view.cmd_items_mark_lost.setAttribute('disabled','false');
577                 obj.controller.view.cmd_show_catalog.setAttribute('disabled','false');
578
579                 obj.retrieve_ids = list;
580         },
581
582         'on_select2' : function(list) {
583         
584                 dump('patron.items.on_select2 list = ' + js2JSON(list) + '\n');
585
586                 var obj = this;
587
588                 obj.controller.view.cmd_items_claimed_returned2.setAttribute('disabled','false');
589                 obj.controller.view.cmd_items_renew2.setAttribute('disabled','false');
590                 obj.controller.view.cmd_items_checkin2.setAttribute('disabled','false');
591                 obj.controller.view.cmd_items_edit2.setAttribute('disabled','false');
592                 obj.controller.view.cmd_items_mark_lost2.setAttribute('disabled','false');
593                 obj.controller.view.cmd_show_catalog2.setAttribute('disabled','false');
594
595                 this.retrieve_ids2 = list;
596         },
597
598 }
599
600 dump('exiting patron.items.js\n');