selfcheck checkin
authorBill Erickson <berick@esilibrary.com>
Mon, 4 Feb 2013 16:09:51 +0000 (11:09 -0500)
committerBill Erickson <berick@esilibrary.com>
Mon, 4 Feb 2013 16:09:51 +0000 (11:09 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/circ/selfcheck/checkin_page.tt2
Open-ILS/src/templates/circ/selfcheck/main.tt2
Open-ILS/web/css/skin/default/selfcheck.css
Open-ILS/web/js/ui/default/circ/selfcheck/selfcheck.js

index 3851b11..1a88e8f 100644 (file)
@@ -1,4 +1,24 @@
 <div id='oils-selfck-checkin-table-div'>
+    <div id='oils-selfck-checkin-mods'>
+        <span class='oils-selfck-checkin-mod'>
+            <span>[% l('Backdate') %]</span>
+            <span><input 
+                id='oils-selfchk-backdate'
+                style='width: 8em;'
+                constraints='{max: new Date()}'
+                dojoType='dijit.form.DateTextBox' 
+                jsId='checkinBackdateInput'/>
+            </span>
+        </span>
+        <span class='oils-selfck-checkin-mod'>
+            <span>[% l('Amnesty Mode') %]</span>
+            <span><input 
+                id='oils-selfchk-amnesty-mode' 
+                type='checkbox' 
+                checked='checked'/>
+            </span>
+        </span>
+    </div>
     <table id='oils-selfck-checkin-table' class='oils-selfck-item-table'>
         <thead>
             <tr>
index 5b3e19d..f5b3aaf 100644 (file)
         [% INCLUDE 'circ/selfcheck/summary.tt2' %]
     </div>
 </div>
+<div id='oils-selfchk-staff-actions' class='hidden'>
+    <span>
+        <a id='oils-selfchk-staff-logout' 
+            href='javascript:;'>[% l('Staff Logout') %]</a>
+    </span>
+</div>
 <div dojoType='openils.widget.ProgressDialog' jsId='progressDialog'></div>
 <div dojoType="dijit.Dialog" jsId='oilsSelfckWsDialog' class='oils-login-dialog' style='display:none;'>
     <form>
index 986b46f..54185ed 100644 (file)
@@ -92,12 +92,22 @@ body {
 #oils-selfck-circ-info-div span {
     padding-right: 8px;
 }
+
+/*
 #oils-selfck-info-nav span {
     padding-left: 8px;
 }
+*/
+
+#oils-selfck-info-nav a {
+    padding-left: 4px;
+    padding-right: 4px;
+    padding-top: 4px;
+}
 
-#oils-selfck-info-nav span.selected {
+#oils-selfck-info-nav .selected {
     background-color: #e0e0e0;
+    border: 1px solid #333;
 }
 
 #oils-selfck-circ-info-div fieldset {
@@ -132,4 +142,26 @@ body {
     padding: 5px;
 }
 
+#oils-selfck-checkin-mods {
+   text-align: right;
+   border-bottom: 1px solid #333;
+   background-color: #e0e0e0;
+   padding: 10px;
+}
+
+.oils-selfck-checkin-mod {
+    border-left: 1px solid #333;
+    padding-left: 8px;
+    padding-left: 8px;
+}
 
+#oils-selfchk-staff-actions {
+    position: absolute;
+    bottom: 0px;
+    right: 0px;
+    text-align: right;
+    padding-left: 10px;
+    padding: 10px;
+    background-color: #e0e0e0;
+    border-top: 2px solid #333;
+}
index 2ce93b4..5142a03 100644 (file)
@@ -90,6 +90,27 @@ SelfCheckManager.prototype.setupStaffLogin = function(verify) {
     this.authtoken = openils.User.authtoken;
 }
 
+SelfCheckManager.prototype.logoutStaff = function() {
+    // remove the authtoken
+    dojo.cookie('ses', null, {expires:-1, path:'/'}); 
+    // reload the page, which displays the login dialog
+    location.href = location.href;
+}
+
+SelfCheckManager.prototype.activateStaffMode = function() {
+    this.staffMode = true;
+    openils.Util.show(
+        dojo.byId('oils-selfck-nav-checkin').parentNode, 
+        'inline'
+    );
+
+    openils.Util.show(dojo.byId('oils-selfchk-staff-actions'));
+
+    var self = this;
+    dojo.byId('oils-selfchk-staff-logout').onclick = function() {
+        self.logoutStaff();
+    }
+}
 
 
 /**
@@ -103,15 +124,7 @@ SelfCheckManager.prototype.init = function() {
 
     // are we in staff mode?
     new openils.User().getPermOrgList(['SELFCHECK_FULL_THROTTLE'], 
-        function(orglist) {
-            if (orglist.length) {
-                self.staffMode = true;
-                openils.Util.show(
-                    dojo.byId('oils-selfck-nav-checkin').parentNode, 
-                    'inline'
-                );
-            }
-        }
+        function(orglist) { if (orglist.length) self.activateStaffMode() }
     );
 
     this.circTbody = dojo.byId('oils-selfck-circ-tbody');
@@ -552,8 +565,13 @@ SelfCheckManager.prototype.checkin = function(barcode) {
     // clear the box now so checkins can continue
     this.updateScanBox();
 
+    var backdate = checkinBackdateInput.attr('value') || null;
+    if (backdate) backdate = dojo.date.stamp.toISOString(backdate);
+
     this.checkinCopy({
         barcode : barcode, 
+        void_overdues : dojo.byId('oils-selfchk-amnesty-mode').checked,
+        backdate : backdate,
         onload : function(evts) {
             if (!evts.length) evts = [evts];
             dojo.forEach(evts, 
@@ -647,13 +665,19 @@ SelfCheckManager.prototype.goToTab = function(name) {
     openils.Util.hide('oils-selfck-circ-page');
     openils.Util.hide('oils-selfck-checkin-page');
     openils.Util.hide('oils-selfck-pay-fines-link');
-    
+
+    dojo.removeClass('oils-selfck-nav-home', 'selected'); 
+    dojo.removeClass('oils-selfck-nav-checkin', 'selected'); 
+
+
     switch(name) {
         case 'checkout':
             openils.Util.show('oils-selfck-circ-page');
+            dojo.addClass('oils-selfck-nav-home', 'selected'); 
             break;
         case 'checkin':
             openils.Util.show('oils-selfck-checkin-page');
+            dojo.addClass('oils-selfck-nav-checkin', 'selected'); 
             break;
         case 'items_out':
             openils.Util.show('oils-selfck-circ-page');
@@ -945,9 +969,8 @@ SelfCheckManager.prototype.checkinCopy = function(args) {
                 this.authtoken, {
                     patron_id : this.patron.id(),
                     copy_barcode : args.barcode,
-                    // TODO
-                    // amnesty
-                    // backdate
+                    void_overdues : args.void_overdues,
+                    backdate : args.backdate
                 }
             ],
             oncomplete : function(r) {