checkin, maybe
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 15 Jul 2005 21:07:10 +0000 (21:07 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 15 Jul 2005 21:07:10 +0000 (21:07 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1223 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/Makefile
Evergreen/staff_client/chrome/content/evergreen/Open-ILS/OpenILS.js
Evergreen/staff_client/chrome/content/evergreen/Open-ILS/OpenILS_scripts_overlay.xul
Evergreen/staff_client/chrome/content/evergreen/circ/checkin.js [new file with mode: 0755]
Evergreen/staff_client/chrome/content/evergreen/circ/checkin.xul [new file with mode: 0755]
Evergreen/staff_client/chrome/content/evergreen/circ/checkin_items.js [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/circ/checkin_overlay.xul [new file with mode: 0755]
Evergreen/staff_client/chrome/content/evergreen/util/error.js
Evergreen/staff_client/chrome/skin/evergreen/checkin.css [new file with mode: 0644]

index b22d1d4..ed79ec6 100644 (file)
@@ -30,12 +30,16 @@ patron:
        (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_search_results.dtd)
        (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/patron_checkout_items.dtd)
 
+circ:
+       (cat chrome/content/evergreen/main/paged_tree_overlay.xul | sed s/paged_tree/checkin_items/g | sed s/PagedTree/CheckinItems/g > chrome/content/evergreen/circ/checkin_items_overlay.xul )
+       (cp chrome/locale/en-US/evergreen/paged_tree.dtd chrome/locale/en-US/evergreen/checkin_items.dtd)
+
 evergreen.xpi: evergreen.jar
        @echo
        @echo make the xpi file
        zip -r evergreen.xpi chrome/ defaults/ install.js install.rdf Makefile LICENSE README -x \*CVS\* > /dev/null
 
-evergreen.jar: generated open-ils patron
+evergreen.jar: generated open-ils patron circ
        @echo
        @echo make the jar file
        (cd chrome; zip -r evergreen.jar content/ locale/ skin/ -x \*CVS\* > /dev/null )
@@ -48,6 +52,7 @@ clean:
        rm -f chrome/content/evergreen/patron/patron_items_overlay.xul chrome/locale/en-US/evergreen/patron_items.dtd
        rm -f chrome/content/evergreen/patron/patron_search_results_overlay.xul chrome/locale/en-US/evergreen/patron_search_results.dtd
        rm -f chrome/content/evergreen/patron/patron_checkout_items_overlay.xul chrome/locale/en-US/evergreen/patron_checkout_items.dtd
+       rm -f chrome/content/evergreen/circ/checkin_items_overlay.xul chrome/locale/en-US/evergreen/checkin_items.dtd
        rm -f chrome/content/evergreen/conf/client_config.xml
        rm -f chrome/content/evergreen/util/fieldmapper.js
        rm -f chrome/content/evergreen/util/OrgTree.js
index e88a62b..3d3daa9 100644 (file)
@@ -10,13 +10,8 @@ function OpenILS_init(params) {
                        case 'PagedTree' : paged_tree_init(params); break;
                        case 'Opac' : opac_init(params); break;
                        case 'PatronSearch' : patron_search_init(params); break;
-                       case 'PatronSearchForm' : patron_search_form_init(params); break;
-                       case 'PatronSearchResults' : patron_search_results_init(params); break;
                        case 'PatronDisplay' : patron_display_init(params); break;
-                       case 'PatronDisplayStatus' : patron_display_status_init(params); break;
-                       case 'PatronDisplayContact' : patron_display_contact_init(params); break;
-                       case 'PatronItems' : patron_items_init(params); break;
-                       case 'PatronCheckoutItems' : patron_checkout_items_init(params); break;
+                       case 'Checkin' : checkin_init(params); break;
                }
 
        } catch(E) { sdump('D_ERROR',js2JSON(E)+'\n'); }
@@ -43,13 +38,8 @@ function OpenILS_exit(params) {
                        case 'PagedTree' : paged_tree_exit(params); break;
                        case 'Opac' : opac_exit(params); break;
                        case 'PatronSearch' : patron_search_exit(params); break;
-                       case 'PatronSearchForm' : patron_search_form_exit(params); break;
-                       case 'PatronSearchResults' : patron_search_results_exit(params); break;
                        case 'PatronDisplay' : patron_display_exit(params); break;
-                       case 'PatronDisplayStatus' : patron_display_status_exit(params); break;
-                       case 'PatronDisplayContact' : patron_display_contact_exit(params); break;
-                       case 'PatronItems' : patron_items_exit(params); break;
-                       case 'PatronCheckoutItems' : patron_checkout_items_exit(params); break;
+                       case 'Checkin' : checkin_exit(params); break;
                }
 
        } catch(E) { sdump('D_ERROR',js2JSON(E)+'\n'); }
index 1cfb586..96ee868 100644 (file)
                <script src="chrome://evergreen/content/patron/patron_search_form.js" />
                <script src="chrome://evergreen/content/patron/patron_search_results.js" />
                <script src="chrome://evergreen/content/patron/patron_display.js" />
-               <!--    
-               <script src="chrome://evergreen/content/patron/patron_display_status.js" />
-               <script src="chrome://evergreen/content/patron/patron_display_contact.js" />
-               -->
                <script src="chrome://evergreen/content/patron/patron_checkout_items.js" />
                <script src="chrome://evergreen/content/patron/patron_items.js" />
                <script src="chrome://evergreen/content/circ/circ_utils.js" />
+               <script src="chrome://evergreen/content/circ/checkin.js" />
+               <script src="chrome://evergreen/content/circ/checkin_items.js" />
        </apps>
 
 </overlay>
diff --git a/Evergreen/staff_client/chrome/content/evergreen/circ/checkin.js b/Evergreen/staff_client/chrome/content/evergreen/circ/checkin.js
new file mode 100755 (executable)
index 0000000..f47da05
--- /dev/null
@@ -0,0 +1,129 @@
+sdump('D_TRACE','Loading checkin.js\n');
+
+function checkin_init(p) {
+       sdump('D_CHECKIN',"TESTING: checkin.js: " + mw.G['main_test_variable'] + '\n');
+       sdump('D_CONSTRUCTOR',arg_dump(arguments));
+
+
+       // gives: p.clamshell, p.right_panel, p.left_panel, p.inner_left_clamshell, p.inner_top_panel, p.inner_bottom_panel
+       checkin_clamshell_init(p);
+
+       // gives: p.checkin_items, p.redraw_checkin_items
+       checkin_checkin_items_init(p);
+
+       p.refresh = function() {
+       }
+
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+       return p;
+}
+
+function checkin_clamshell_init(p) {
+       p.clamshell = clam_shell_init( { 'w' : p.w, 'node' : p.clamshell_node, 'debug' : p.app } );
+       p.left_panel = p.clamshell.first_deck;
+       p.right_panel = p.clamshell.second_deck;
+}
+
+function checkin_checkin_items_init(p) {
+       p.checkin_items = checkin_items_init( { 'w' : p.w, 'node' : p.checkin_items_node, 'popupset_node' : p.popupset_node, 'debug' : p.app } );
+
+       var checkins = [];
+       var tb = p.checkin_items_node.getElementsByAttribute('id','checkin_barcode_entry_textbox')[0];
+       var submit_button = p.checkin_items_node.getElementsByAttribute('id','checkin_submit_barcode_button')[0];
+
+       p.attempt_checkin = function(barcode) {
+               try {
+                       if (! is_barcode_valid(barcode) ) throw('Invalid Barcode');
+                       var permit_check = checkout_permit( barcode, p._patron.id(), 0 );
+                       if (permit_check.status == 0) {
+                               var check = checkout_by_barcode( barcode, p._patron.id() );
+                               if (check) {
+                                       checkins.push( check );
+                                       p.checkin_items.add_checkin_items( [ checkins.length - 1 ] );
+                               }
+                       } else {
+                               throw(permit_check.text);
+                       }
+               } catch(E) {
+                       handle_error(E);
+               }
+       }
+
+       tb.addEventListener(
+               'keypress',
+               function(ev) {
+                       if (ev.keyCode == 13 || ev.keyCode == 77 ) { p.attempt_checkin( tb.value ); }
+               },
+               false
+       );
+       submit_button.addEventListener(
+               'command',
+               function(ev) {
+                       p.attempt_checkin( tb.value );
+               },
+               false
+       );
+
+       p.redraw_checkin_items = function() {
+               p.checkin_items.clear_checkin_items();
+               for (var i = 0; i < checkins.length; i++) {
+                       p.checkin_items.add_checkin_items( [ i ] );
+               }
+       }
+
+       p.checkin_items.register_checkin_items_select_callback(
+               function (ev) {
+                       sdump('D_CHECKIN','Firing checkin_items_select_callback\n');
+                       var checkin_items = get_list_from_tree_selection( p.checkin_items.paged_tree.tree );
+                       /* grab cover art for selected item? */
+               }
+       );
+       p.checkin_items.register_flesh_checkin_items_function(
+               function (treeitem) {
+                       sdump('D_CHECKIN','Firing flesh_checkin_items_function\n');
+                       var record_id = treeitem.getAttribute('record_id'); 
+                       p.checkin_items.map_checkin_items_to_cols( checkins[ record_id ], treeitem );
+               }
+       );
+       p.checkin_items.register_context_builder(
+               function (ev) {
+                       sdump('D_CHECKIN','Firing context_builder\n');
+                       empty_widget(p.checkin_items.paged_tree.popup);
+                       var checkin_items = get_list_from_tree_selection( p.checkin_items.paged_tree.tree );
+                       var menuitem;
+
+                       /*** COPY EDITOR ***/
+                       menuitem = p.checkin_items.paged_tree.w.document.createElement('menuitem');
+                       p.checkin_items.paged_tree.popup.appendChild( menuitem );
+                       menuitem.setAttribute('label',getString('circ.context_edit'));
+                       menuitem.addEventListener(
+                               'command',
+                               function (ev) {
+                                       for (var i = 0; i < checkin_items.length; i++) {
+                                               var idx = checkin_items[i].getAttribute('record_id');
+                                               sdump('D_CHECKIN','Firing copy edit context\n');
+                                       }
+                               },
+                               false
+                       );
+
+                       /*** OPAC ***/
+                       menuitem = p.checkin_items.paged_tree.w.document.createElement('menuitem');
+                       p.checkin_items.paged_tree.popup.appendChild( menuitem );
+                       menuitem.setAttribute('label',getString('circ.context_opac'));
+                       menuitem.addEventListener(
+                               'command',
+                               function (ev) {
+                                       for (var i = 0; i < checkin_items.length; i++) {
+                                               var idx = checkin_items[i].getAttribute('record_id');
+                                               sdump('D_CHECKIN','Firing opac context\n');
+                                       }
+                               },
+                               false
+                       );
+                       
+               }
+       );
+}
+
+
diff --git a/Evergreen/staff_client/chrome/content/evergreen/circ/checkin.xul b/Evergreen/staff_client/chrome/content/evergreen/circ/checkin.xul
new file mode 100755 (executable)
index 0000000..bde47e2
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!-- Clamlication: Evergreen Staff Client -->
+
+<!-- Localization -->
+<!DOCTYPE page SYSTEM "chrome://evergreen/locale/checkin.dtd">
+
+<page id="checkin_win"
+       orient="vertical" style="overflow: auto" width="800" height="500"
+       sizemode="maximized" persist="width height" 
+       onload="params.w = window; 
+               params.app = 'Checkin'; 
+               params.clamshell_node = document.getElementById('ClamShell_main');
+               params.patron_items_node = document.getElementById('PatronItems_main');
+               params.patron_checkout_items_node = document.getElementById('PatronCheckoutItems_main');
+               params.commandset_node = document.getElementById('universal_cmds');
+               params.popupset_node = document.getElementById('universal_popupset');
+               mw.focus_widget( document, 'PatronNavBar_refresh' );
+               mw.OpenILS_init(params);"
+       onunload="mw.OpenILS_exit(params);"
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <script>mw.sdump('D_TRACE','Loading checkin.xul\n');</script>
+
+       <!-- Stylesheets -->
+       <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+       <?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+       <?xml-stylesheet href="chrome://evergreen/skin/checkin.css" type="text/css"?>
+       
+       <!-- Overlays for this XUL file -->
+       <?xul-overlay href="chrome://evergreen/content/circ/checkin_overlay.xul"?>
+
+       <!-- XUL'ified abstraction for logic to attach to widgets -->
+       <commandset id="universal_cmds" />
+
+       <!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+       <keyset id="Checkin_keys" />
+
+       <!-- Layout to be filled in by overlays and javascript -->
+       <box id="Checkin_main" />
+
+       <popupset id="universal_popupset" />
+
+</page>
+
diff --git a/Evergreen/staff_client/chrome/content/evergreen/circ/checkin_items.js b/Evergreen/staff_client/chrome/content/evergreen/circ/checkin_items.js
new file mode 100644 (file)
index 0000000..dd3e98c
--- /dev/null
@@ -0,0 +1,64 @@
+sdump('D_TRACE','Loading checkin_items.js\n');
+
+function checkin_items_init(p) {
+       sdump('D_CHECKIN_ITEMS',"TESTING: checkin_items.js: " + mw.G['main_test_variable'] + '\n');
+       sdump('D_CONSTRUCTOR',arg_dump(arguments));
+
+       p.checkin_items_cols = circ_cols();
+
+       p.paged_tree = paged_tree_init( { 'w' : p.w, 'node' : p.node, 'popupset_node' : p.popupset_node, 'cols' : p.checkin_items_cols, 'hide_nav' : true, 'hits_per_page' : '9999', 'debug' : p.app } );
+       p.add_checkout_items = p.paged_tree.add_rows;
+       p.clear_checkout_items = p.paged_tree.clear_tree;
+
+       p.register_checkin_items_select_callback = function (f) {
+               sdump('D_CHECKIN_ITEMS','p.register_checkin_items_select_callback(' + f + ')\n');
+               p.paged_tree.register_select_callback( f );
+       }
+
+       p.register_flesh_checkin_items_function = function (f) {
+               sdump('D_CHECKIN_ITEMS','p.register_flesh_checkin_items_function(' + f + ')\n');
+               p.paged_tree.register_flesh_row_function( f );
+       }
+
+       p.register_context_builder = function (f) {
+               sdump('D_CHECKIN_ITEMS','p.register_context_builder(' + f + ')\n');
+               p.paged_tree.register_context_builder( f );
+       }
+
+       p.map_checkin_items_to_cols = function (checkin_items, treeitem) {
+               sdump('D_CHECKIN_ITEMS','p.map_checkin_items_to_cols( ' + checkin_items + ',' + treeitem + ')\n');
+               checkin_items_tree_map_checkin_items_to_cols(p, checkin_items, treeitem);       
+       }
+
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+       return p;
+}
+
+function checkin_items_tree_map_checkin_items_to_cols(p, checkin_items, treeitem) {
+       sdump('D_CHECKIN_ITEMS',arg_dump(arguments,{1:true}));
+       sdump('D_TRACE_ENTER',arg_dump(arguments));
+       var cols = new Array();
+       for (var i = 0; i < p.checkin_items_cols.length; i++) {
+               var hash = p.checkin_items_cols[i];
+               sdump('D_CHECKIN_ITEMS','Considering ' + js2JSON(hash) + '\n');
+               var obj_string;
+               switch( hash.fm_class ) {
+                       case 'acp' : obj_string = 'checkin_items.copy'; break;
+                       case 'circ' : obj_string = 'checkin_items.circ'; break;
+                       case 'mvr' : obj_string = 'checkin_items.record'; break;
+               }
+               var cmd = parse_render_string( obj_string, hash.fm_field_render );
+               sdump('D_CHECKIN_ITEMS','cmd = ' + cmd + '\n');
+               var col = '';
+               try {
+                       col = eval( cmd );
+                       sdump('D_CHECKIN_ITEMS','eval = ' + col + '\n');
+               } catch(E) {
+                       sdump('D_ERROR',js2JSON(E) + '\n');
+               }
+               cols.push( col );
+       }
+       sdump('D_CHECKIN_ITEMS','cols = ' + js2JSON(cols) + '\n');
+       p.paged_tree.map_cols_to_treeitem( cols, treeitem );
+       sdump('D_TRACE_EXIT',arg_dump(arguments));
+}
diff --git a/Evergreen/staff_client/chrome/content/evergreen/circ/checkin_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/circ/checkin_overlay.xul
new file mode 100755 (executable)
index 0000000..e3eb97d
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/checkin.dtd">
+<overlay id="checkin_overlay" 
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <script>mw.sdump('D_TRACE','Loading checkin_overlay.xul\n');</script>
+
+       <?xul-overlay href="chrome://evergreen/content/circ/checkin_items_overlay.xul"?>
+
+<commandset id="universal_cmds">
+
+       <command id="cmd_broken" oncommand="
+               alert('Not Yet Implemented'); "/>
+
+
+</commandset>
+
+<!-- main widget for checkin -->
+<box id="Checkin_main" flex="1" orient="vertical">
+       <groupbox id="Checkin_groupbox" orient="vertical" flex="1">
+               <box id="ClamShell_main" />
+       </groupbox>
+</box>
+
+<deck id="ClamShell_first_deck">
+</deck>
+
+<deck id="ClamShell_second_deck">
+       <box id="CheckinItems_main"/>
+</deck>
+
+<hbox id="CheckinItems_insert1">
+       <label id="checkin_scan_barcode_label" value="&circ.checkin.scan_label;" accesskey="&circ.checkin.scan_label.accesskey;" control="checkin_scan_textbox"/>
+        <textbox id="checkin_barcode_entry_textbox"/>
+        <button id="checkin_submit_barcode_button" value="&circ.checkin.submit_label;" accesskey="&circ.checkin.submit_label.accesskey;"/>
+</hbox>
+
+<hbox id="CheckinItems_insert2" />
+<hbox id="CheckinItems_insert3" />
+<hbox id="CheckinItems_insert4" />
+
+
+<!-- Accelerator Keys (Accessor Keys are in DTD's) -->
+<keyset id="Checkin_keys">
+</keyset>
+
+</overlay>
index 5eb4d51..3c38472 100644 (file)
@@ -22,7 +22,7 @@ var sdump_levels = {
        'D_PAGED_TREE' : true,
        'D_TAB' : false,
 
-       'D_AUTH' : false,
+       'D_AUTH' : true,
 
        'D_OPAC' : false,
 
@@ -36,6 +36,9 @@ var sdump_levels = {
 
        'D_PATRON_ITEMS' : true,
 
+       'D_CHECKIN' : true,
+       'D_CHECKIN_ITEMS' : true,
+
        'D_PATRON_UTILS' : true,
        
        'D_CIRC_TREE' : true,
diff --git a/Evergreen/staff_client/chrome/skin/evergreen/checkin.css b/Evergreen/staff_client/chrome/skin/evergreen/checkin.css
new file mode 100644 (file)
index 0000000..19db78e
--- /dev/null
@@ -0,0 +1,3 @@
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 
+@namespace html url("http://www.w3.org/TR/REC-html40"); 
+