[open-ils-commits] [GIT] Evergreen ILS branch master updated. 406fe9fcf38278a26858ac4242a848b51bdd75f2

Evergreen Git git at git.evergreen-ils.org
Mon Apr 17 15:04:43 EDT 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  406fe9fcf38278a26858ac4242a848b51bdd75f2 (commit)
       via  b58023ac04cf192239ab39c94d34fe0c770ed966 (commit)
       via  c6ce82716cf965424925ac6d6a978975cae32410 (commit)
       via  39bac20cb3869c787e49c6c472d3018a09efdf57 (commit)
       via  74a2c694078cbfdcd7a0c1b73c63322c6cad8d90 (commit)
       via  c786d82f94311a3c4e5b9a923803ee0824daba37 (commit)
       via  c06136c66b1a0f0ada8f5f2ef901344022fa6bbf (commit)
       via  98b0b66a7bbf5c8b370639b8249fcba90e7a5a44 (commit)
       via  a7899650a95909bb0f1f3ff2c3302a59319b7ae5 (commit)
       via  3dd3cb67c72100b931360fb8b15fb2774bf712a4 (commit)
       via  30e8cf7a285d73ba05d9a48f1a739278a6739cec (commit)
       via  75405865596e176ead6aec22d6b7696271c9a8a7 (commit)
       via  1fa669dbfe8e4abccce091c995974f4dcae0be65 (commit)
       via  f2404cfe6777be17d82ffdf213f83994868f107e (commit)
      from  495b2539b26195235dc62ba4e388d522784ead92 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 406fe9fcf38278a26858ac4242a848b51bdd75f2
Author: Mike Rylander <mrylander at gmail.com>
Date:   Thu Mar 30 14:15:34 2017 -0400

    webstaff: install and include Lovefield in prep for offline mode
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    
    Conflicts:
    	Open-ILS/web/js/ui/default/staff/Gruntfile.js
    	Open-ILS/web/js/ui/default/staff/bower.json
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/base_js.tt2 b/Open-ILS/src/templates/staff/base_js.tt2
index 1054c05..06f8bc4 100644
--- a/Open-ILS/src/templates/staff/base_js.tt2
+++ b/Open-ILS/src/templates/staff/base_js.tt2
@@ -18,6 +18,7 @@
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular-tree-control.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/iframeResizer.min.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/ng-order-object-by.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/lovefield.min.js"></script>
 
 <!-- IDL / opensrf (network) -->
 <script src="[% ctx.media_prefix %]/js/dojo/opensrf/JSON_v1.js"></script>
diff --git a/Open-ILS/web/js/ui/default/staff/Gruntfile.js b/Open-ILS/web/js/ui/default/staff/Gruntfile.js
index 2b93c14..b35584a 100644
--- a/Open-ILS/web/js/ui/default/staff/Gruntfile.js
+++ b/Open-ILS/web/js/ui/default/staff/Gruntfile.js
@@ -36,7 +36,9 @@ module.exports = function(grunt) {
             'node_modules/iframe-resizer/js/iframeResizer.min.js',
             'node_modules/iframe-resizer/js/iframeResizer.map',
             'node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js',
-            'node_modules/angular-order-object-by/src/ng-order-object-by.js'
+            'node_modules/angular-order-object-by/src/ng-order-object-by.js',
+            'node_modules/lovefield/dist/lovefield.min.js',
+            'node_modules/lovefield/dist/lovefield.min.js.map'
           ]
         }]
       },
@@ -142,7 +144,9 @@ module.exports = function(grunt) {
             'build/js/hotkeys.min.js',
             'build/js/angular-tree-control.js',
             'build/js/ngToast.min.js',
+            'build/js/lovefield.min.js',
             // NOTE: OpenSRF must be installed
+            // XXX: Should not be hard-coded
             '/openils/lib/javascript/JSON_v1.js',
             '/openils/lib/javascript/opensrf.js',
             '/openils/lib/javascript/opensrf_ws.js',
diff --git a/Open-ILS/web/js/ui/default/staff/package.json b/Open-ILS/web/js/ui/default/staff/package.json
index 91a1802..91c88fa 100644
--- a/Open-ILS/web/js/ui/default/staff/package.json
+++ b/Open-ILS/web/js/ui/default/staff/package.json
@@ -16,6 +16,7 @@
     "angular-route": "~1.5.0",
     "angular-tree-control": "~0.2.28",
     "angular-order-object-by": "rxfork/ngOrderObjectBy#npm",
+    "lovefield": "*",
     "bootstrap": "~3.3.6",
     "grunt": "~0.4.4",
     "grunt-cli": "^0.1.13",

commit b58023ac04cf192239ab39c94d34fe0c770ed966
Author: Mike Rylander <mrylander at gmail.com>
Date:   Fri Mar 24 11:35:53 2017 -0400

    webstaff: Allow adding new volumes to libaries that were not selected in the holdings UI (and fix a couple minor bugs)
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2 b/Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
index 30ac2d3..5266734 100644
--- a/Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
@@ -32,7 +32,7 @@
                     </div>
                     <div class="col-xs-1"></div>
                     <div class="col-xs-5">
-                        <button class="btn btn-default center-block" ng-click="applyBatchCNValues()" type="button">Apply</button>
+                        <button class="btn btn-default center-block" ng-click="applyBatchCNValues()" type="button">[% l('Apply') %]</button>
                     </div>
                 </div>
             </div>
@@ -73,6 +73,11 @@
             allcopies="data.copies"
             struct="data.tree[lib]">
         </eg-vol-edit>
+        <hr/>
+        <div>
+            <eg-org-selector alldisabled="{{record_id == 0}}" selected="new_lib_to_add" onchange="changeNewLib" disable-test="cant_have_vols"></eg-org-selector>
+            <button class="btn btn-default" ng-click="addLibToStruct()" type="button">[% l('Add volume') %]</button>
+        </div>
     </div>
 
 </div>
diff --git a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
index 92c2201..23bd2e8 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
@@ -728,7 +728,7 @@ function(egCore , $q) {
 
                             $scope.struct[cn.id()] = [cp];
                             $scope.allcopies.push(cp);
-                            if (!scope.defaults.classification) {
+                            if (!$scope.defaults.classification) {
                                 egCore.org.settings(
                                     ['cat.default_classification_scheme'],
                                     cn.owning_lib()
@@ -795,6 +795,40 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
         }
     };
 
+    $scope.new_lib_to_add = egCore.org.get(egCore.auth.user().ws_ou());
+    $scope.changeNewLib = function (org) {
+        $scope.new_lib_to_add = org;
+    }
+    $scope.addLibToStruct = function () {
+        var newLib = $scope.new_lib_to_add;
+        var cn = new egCore.idl.acn();
+        cn.id( --itemSvc.new_cn_id );
+        cn.isnew( true );
+        cn.prefix( $scope.defaults.prefix || -1 );
+        cn.suffix( $scope.defaults.suffix || -1 );
+        cn.label_class( $scope.defaults.classification || 1 );
+        cn.owning_lib( newLib.id() );
+        cn.record( $scope.record_id );
+
+        var cp = itemSvc.generateNewCopy(
+            cn,
+            newLib.id(),
+            $scope.fast_add,
+            true
+        );
+
+        $scope.data.addCopy(cp);
+
+        if (!$scope.defaults.classification) {
+            egCore.org.settings(
+                ['cat.default_classification_scheme'],
+                cn.owning_lib()
+            ).then(function (val) {
+                cn.label_class(val['cat.default_classification_scheme']);
+            });
+        }
+    }
+
     $scope.embedded = ($routeParams.mode && $routeParams.mode == 'embedded') ? true : false;
     $scope.edit_templates = ($location.path().match(/edit_template/)) ? true : false;
 

commit c6ce82716cf965424925ac6d6a978975cae32410
Author: Mike Rylander <mrylander at gmail.com>
Date:   Thu Mar 23 10:51:59 2017 -0400

    LP#1528924: Use localizable date filter format
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/cat/item/t_list.tt2 b/Open-ILS/src/templates/staff/cat/item/t_list.tt2
index ca2cf5d..f448c0d 100644
--- a/Open-ILS/src/templates/staff/cat/item/t_list.tt2
+++ b/Open-ILS/src/templates/staff/cat/item/t_list.tt2
@@ -62,7 +62,7 @@
   <eg-grid-field label="[% l('Barcode') %]"        path='barcode' visible></eg-grid-field>
   <eg-grid-field label="[% l('Call Number') %]"    path="call_number.label" visible></eg-grid-field>
   <eg-grid-field label="[% l('Due Date') %]"       path="_circ.due_date" visible>
-    {{item['_circ']['due_date'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ']['due_date'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Location') %]"       path="location.name" visible></eg-grid-field>
   <eg-grid-field label="[% l('Status') %]"         path="status.name" visible></eg-grid-field>
@@ -78,14 +78,14 @@
   <eg-grid-field label="[% l('Age-Based Hold Protection') %]"  path="age_protect" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Author') %]"               path="call_number.record.simple_record.author"  hidden></eg-grid-field>
   <eg-grid-field label="[% l('Checkin Date') %]"         path="_circ_summary.last_checkin_time" hidden>
-    {{item['_circ_summary']['last_checkin_time'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ_summary']['last_checkin_time'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Checkin Scan Date') %]"    path="_circ_summary.last_checkin_scan_time" hidden>
-    {{item['_circ_summary.last_checkin_scan_time'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ_summary.last_checkin_scan_time'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Checkin Workstation') %]"  path="_circ_summary.last_checkin_workstation" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Checkout Date') %]"  path="_circ_summary.start_time" hidden>
-    {{item['_circ_summary']['start_time'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ_summary']['start_time'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Checkout Workstation') %]"  path="_circ_summary.checkout_workstation" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Checkout/Renewal Library') %]"  path="_circ.circ_lib.name" hidden></eg-grid-field>
@@ -102,16 +102,16 @@
   <eg-grid-field label="[% l('Copy Number') %]"           path="copy_number" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Created By') %]"            path="creator" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Date Created') %]"          path="create_date" hidden>
-    {{item['create_date'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['create_date'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Date Last Edited') %]"      path="edit_date" hidden>
-    {{item['edit_date'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['edit_date'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Date Record Created') %]"   path="call_number.record.create_date" hidden>
-    {{item['call_number.record.create_date'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['call_number.record.create_date'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Date Record Last Edited') %]"    path="call_number.record.edit_date" hidden>
-    {{item['call_number.record.create_date'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['call_number.record.create_date'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Deleted?') %]"              path="deleted" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Document ID') %]"           path="call_number.record.id" hidden></eg-grid-field>
@@ -119,7 +119,7 @@
   <eg-grid-field label="[% l('Fine Level') %]"            path="fine_level" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Fines Stopped') %]"         path="_circ_summary.last_stop_fines" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Fines Stopped Time') %]"    path="_circ_summary.last_stop_fines_time" hidden>
-    {{item['_circ_summary']['last_stop_fines_time'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ_summary']['last_stop_fines_time'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('Floating?') %]"             path="floating" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Holdable?') %]"             path="holdable" hidden></eg-grid-field>
@@ -138,12 +138,12 @@
   <eg-grid-field label="[% l('Reference?') %]"            path="ref" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Remaining Renewals') %]"    path="_circ.renewals_remaining" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Status Changed Time') %]"   path="status_changed_time" hidden>
-    {{item['status_changed_time'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['status_changed_time'] | date:'short'}}
   </eg-grid-field>
   <eg-grid-field label="[% l('TCN') %]"                   path="call_number.record.tcn_value" hidden></eg-grid-field>
   <eg-grid-field label="[% l('TCN Source') %]"            path="call_number.record.tcn_source" hidden></eg-grid-field>
   <eg-grid-field label="[% l('Transaction Complete') %]"  path="_circ.xact_finish" hidden>
-    {{item['_circ']['xact_finish'] | date:'MM/dd/yy HH:mm a'}}
+    {{item['_circ']['xact_finish'] | date:'short'}}
   </eg-grid-field>
 </eg-grid>
 </eg-grid>

commit 39bac20cb3869c787e49c6c472d3018a09efdf57
Author: Kyle Huckins <khuckins at catalystdevworks.com>
Date:   Tue Jan 24 15:41:45 2017 -0800

    LP#1528924 Item Status List Columns
    
    Add several new columns to Item Status List.
    
    Refactor of ItemSvc to properly grab circ-related information.
    
    Signed-off-by: Kyle Huckins <khuckins at catalystdevworks.com>
     Changes to be committed:
    	modified:   Open-ILS/src/templates/staff/cat/item/t_list.tt2
    	modified:   Open-ILS/web/js/ui/default/staff/cat/item/app.js
    
    Signed-off-by: Kyle Huckins <khuckins at catalystdevworks.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/cat/item/t_list.tt2 b/Open-ILS/src/templates/staff/cat/item/t_list.tt2
index 9755360..ca2cf5d 100644
--- a/Open-ILS/src/templates/staff/cat/item/t_list.tt2
+++ b/Open-ILS/src/templates/staff/cat/item/t_list.tt2
@@ -58,16 +58,94 @@
   <eg-grid-action handler="transferItems" group="[% l('Transfer') %]"
     label="[% l('Items to Previously Marked Volume') %]"></eg-grid-action>
 
-  <eg-grid-field label="[% l('Barcode') %]"     path='barcode' visible></eg-grid-field>
-  <eg-grid-field label="[% l('Call Number') %]" path="call_number.label" visible></eg-grid-field>
-  <eg-grid-field label="[% l('Location') %]"    path="location.name" visible></eg-grid-field>
-
+  <eg-grid-field label="[% l('Alert Message') %]"  path='alert_message' visible></eg-grid-field>
+  <eg-grid-field label="[% l('Barcode') %]"        path='barcode' visible></eg-grid-field>
+  <eg-grid-field label="[% l('Call Number') %]"    path="call_number.label" visible></eg-grid-field>
+  <eg-grid-field label="[% l('Due Date') %]"       path="_circ.due_date" visible>
+    {{item['_circ']['due_date'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Location') %]"       path="location.name" visible></eg-grid-field>
+  <eg-grid-field label="[% l('Status') %]"         path="status.name" visible></eg-grid-field>
   <eg-grid-field label="[% l('Title') %]"       
     path="call_number.record.simple_record.title" visible>
     <a target="_blank" href="[% ctx.base_path %]/staff/cat/catalog/record/{{item['call_number.record.id']}}">
       {{item['call_number.record.simple_record.title']}} <span ng-show="item['call_number.record.id']" class="glyphicon glyphicon-new-window"/>
     </a>
   </eg-grid-field>
+
+
+  <eg-grid-field label="[% l('Acquisition Cost') %]"     path="cost" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Age-Based Hold Protection') %]"  path="age_protect" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Author') %]"               path="call_number.record.simple_record.author"  hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Checkin Date') %]"         path="_circ_summary.last_checkin_time" hidden>
+    {{item['_circ_summary']['last_checkin_time'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Checkin Scan Date') %]"    path="_circ_summary.last_checkin_scan_time" hidden>
+    {{item['_circ_summary.last_checkin_scan_time'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Checkin Workstation') %]"  path="_circ_summary.last_checkin_workstation" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Checkout Date') %]"  path="_circ_summary.start_time" hidden>
+    {{item['_circ_summary']['start_time'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Checkout Workstation') %]"  path="_circ_summary.checkout_workstation" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Checkout/Renewal Library') %]"  path="_circ.circ_lib.name" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circulation ID') %]"        path="_circ.id" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circ or Renewal Workstation') %]"  path="_circ.workstation.name" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Classification') %]"        path="call_number.label_class.name" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('CN Prefix') %]"             path="call_number.prefix.label" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('CN Suffix') %]"             path="call_number.suffix.label" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circulate as Type') %]"     path="circ_as_type" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circulate?') %]"            path="circulate" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circulation Library') %]"   path="_circ_lib.name" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Circulation Modifier') %]"  path="circ_modifier" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Copy ID') %]"               path="id" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Copy Number') %]"           path="copy_number" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Created By') %]"            path="creator" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Date Created') %]"          path="create_date" hidden>
+    {{item['create_date'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Date Last Edited') %]"      path="edit_date" hidden>
+    {{item['edit_date'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Date Record Created') %]"   path="call_number.record.create_date" hidden>
+    {{item['call_number.record.create_date'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Date Record Last Edited') %]"    path="call_number.record.edit_date" hidden>
+    {{item['call_number.record.create_date'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Deleted?') %]"              path="deleted" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Document ID') %]"           path="call_number.record.id" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Edited By') %]"             path="editor" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Fine Level') %]"            path="fine_level" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Fines Stopped') %]"         path="_circ_summary.last_stop_fines" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Fines Stopped Time') %]"    path="_circ_summary.last_stop_fines_time" hidden>
+    {{item['_circ_summary']['last_stop_fines_time'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('Floating?') %]"             path="floating" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Holdable?') %]"             path="holdable" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Holds Count') %]"           path="holds_count" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('In-House Uses') %]"         path="_inHouseUseCount" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('ISBN') %]"                  path="call_number.record.simple_record.isbn" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Loan Duration') %]"         path="loan.duration" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('OPAC Visible?') %]"         path="opac_visible" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Owned By') %]"              path="call_number.record.owner" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Owning Library') %]"        path="call_number.owning_lib" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Parts') %]"                 path="parts" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Price') %]"                 path="price" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Publication Date') %]"      path="call_number.record.simple_record.pubdate" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Publisher') %]"             path="call_number.record.simple_record.publisher" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Quality') %]"               path="call_number.record.simple_record.quality" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Reference?') %]"            path="ref" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Remaining Renewals') %]"    path="_circ.renewals_remaining" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Status Changed Time') %]"   path="status_changed_time" hidden>
+    {{item['status_changed_time'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+  <eg-grid-field label="[% l('TCN') %]"                   path="call_number.record.tcn_value" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('TCN Source') %]"            path="call_number.record.tcn_source" hidden></eg-grid-field>
+  <eg-grid-field label="[% l('Transaction Complete') %]"  path="_circ.xact_finish" hidden>
+    {{item['_circ']['xact_finish'] | date:'MM/dd/yy HH:mm a'}}
+  </eg-grid-field>
+</eg-grid>
 </eg-grid>
 
 <div class="flex-row pad-vert">
diff --git a/Open-ILS/web/js/ui/default/staff/cat/item/app.js b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
index 5f0ecb0..dba013c 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/item/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
@@ -59,8 +59,9 @@ function(egCore) {
     service.flesh = {   
         flesh : 3, 
         flesh_fields : {
-            acp : ['call_number','location','status','location','floating','circ_modifier','age_protect'],
-            acn : ['record','prefix','suffix'],
+            acp : ['call_number','location','status','location','floating','circ_modifier',
+                'age_protect','circ_lib'],
+            acn : ['record','prefix','suffix','label_class'],
             bre : ['simple_record','creator','editor']
         },
         select : { 
@@ -70,51 +71,134 @@ function(egCore) {
         } 
     }
 
-    // resolved with the last received copy
-    service.fetch = function(barcode, id, noListDupes) {
-        var promise;
+    service.circFlesh = {
+        flesh : 2,
+        flesh_fields : {
+            circ : [
+                'usr',
+                'workstation',
+                'checkin_workstation',
+                'checkin_lib',
+                'duration_rule',
+                'max_fine_rule',
+                'recurring_fine_rule'
+            ],
+            au : ['card']
+        },
+        order_by : {circ : 'xact_start desc'},
+        limit :  1
+    }
+
+    //Retrieve separate copy, combcirc, and accs information
+    service.getCopy = function(barcode, id) {
+        if (barcode) return egCore.pcrud.search(
+            'acp', {barcode : barcode, deleted : 'f'},
+            service.flesh).then(function(copy) {return copy});
+
+        return egCore.pcrud.retrieve( 'acp', id, service.flesh)
+            .then(function(copy) {return copy});
+    }
+    service.getCirc = function(id) {
+        return egCore.pcrud.search('combcirc', { target_copy : id },
+            service.circFlesh).then(function(circ) {return circ});
+    }
+    service.getSummary = function(id) {
+        return circ_summary = egCore.net.request(
+            'open-ils.circ',
+            'open-ils.circ.renewal_chain.retrieve_by_circ.summary',
+            egCore.auth.token(), id).then(
+                function(circ_summary) {return circ_summary});
+    }
+
+    //Combine copy, circ, and accs information
+    service.retrieveCopyData = function(barcode, id) {
+        var copyData = {};
 
-        if (barcode) {
-            promise = egCore.pcrud.search('acp', 
-                {barcode : barcode, deleted : 'f'}, service.flesh);
-        } else {
-            promise = egCore.pcrud.retrieve('acp', id, service.flesh);
+        var fetchCopy = function(barcode, id) {
+            return service.getCopy(barcode, id)
+                .then(function(copy) {
+                    copyData.copy = copy;
+                    return copyData;
+                });
+        }
+        var fetchCirc = function(copy) {
+            return service.getCirc(copy.id())
+                .then(function(circ) {
+                    copyData.circ = circ;
+                    return copyData;
+                });
         }
+        var fetchSummary = function(circ) {
+            return service.getSummary(circ.id())
+                .then(function(summary) {
+                    copyData.circ_summary = summary;
+                    return copyData;
+                });
+        }
+        return fetchCopy(barcode, id).then(function(res) {
+            return fetchCirc(copyData.copy).then(function(res) {
+                if (copyData.circ) {
+                    return fetchSummary(copyData.circ).then(function() {
+                        return copyData;
+                    });
+                } else {
+                    return copyData;
+                }
+            });
+        });
 
-        var lastRes;
-        return promise.then(
-            function() {return lastRes},
-            null, // error
+    }
 
-            // notify reads the stream of copies, one at a time.
-            function(copy) {
+    // resolved with the last received copy
+    service.fetch = function(barcode, id, noListDupes) {
+        var copy;
+        var circ;
+        var circ_summary;
+        var lastRes = {};
+
+        return service.retrieveCopyData(barcode, id)
+        .then(function(copyData) {
+            //Make sure we're getting a completed copyData - no plain acp or circ objects
+            if (copyData.circ) {
+                // flesh circ_lib locally
+                copyData.circ.circ_lib(egCore.org.get(copyData.circ.circ_lib()));
+                copyData.circ.checkin_workstation(
+                    egCore.org.get(copyData.circ.checkin_workstation()));
+            }
+            var flatCopy;
 
-                var flatCopy;
+            if (noListDupes) {
+                // use the existing copy if possible
+                flatCopy = service.copies.filter(
+                    function(c) {return c.id == copyData.copy.id()})[0];
+            }
 
-                egCore.pcrud.search('aihu', 
-                    {item : copy.id()}, {}, {idlist : true, atomic : true})
-                .then(function(uses) { 
-                    copy._inHouseUseCount = uses.length;
-                });
+            if (!flatCopy) {
+                flatCopy = egCore.idl.toHash(copyData.copy, true);
 
-                if (noListDupes) {
-                    // use the existing copy if possible
-                    flatCopy = service.copies.filter(
-                        function(c) {return c.id == copy.id()})[0];
+                if (copyData.circ) {
+                    flatCopy._circ = egCore.idl.toHash(copyData.circ, true);
+                    flatCopy._circ_summary = egCore.idl.toHash(copyData.circ_summary, true);
                 }
+                flatCopy.index = service.index++;
+                service.copies.unshift(flatCopy);
+            }
 
-                if (!flatCopy) {
-                    flatCopy = egCore.idl.toHash(copy, true);
-                    flatCopy.index = service.index++;
-                    service.copies.unshift(flatCopy);
-                }
+            //Get in-house use count
+            egCore.pcrud.search('aihu',
+                {item : flatCopy.id}, {}, {idlist : true, atomic : true})
+            .then(function(uses) {
+                flatCopy._inHouseUseCount = uses.length;
+                copyData.copy._inHouseUseCount = uses.length;
+            });
 
-                return lastRes = {
-                    copy : copy, 
-                    index : flatCopy.index
-                }
+            return lastRes = {
+                copy : copyData.copy,
+                index : flatCopy.index
             }
-        );
+        });
+
+
     }
 
     return service;

commit 74a2c694078cbfdcd7a0c1b73c63322c6cad8d90
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Mar 21 13:03:44 2017 -0400

    webstaff: Reprint Last Receipt functionality
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/navbar.tt2 b/Open-ILS/src/templates/staff/navbar.tt2
index 7835f25..8d593b9 100644
--- a/Open-ILS/src/templates/staff/navbar.tt2
+++ b/Open-ILS/src/templates/staff/navbar.tt2
@@ -168,6 +168,15 @@
               <span>[% l('Scan Item as Missing Pieces') %]</span>
             </a>
           </li>
+          <li class="divider"></li>
+          <li>
+            <a href="" ng-click="reprintLast($event)"
+              eg-accesskey="[% l('f9') %]" 
+              eg-accesskey-desc="[% l('Reprint Last Receipt') %]">
+              <span class="glyphicon glyphicon-print"></span>
+              <span>[% l('Reprint Last Receipt') %]</span>
+            </a>
+          </li>
         </ul>
       </li><!-- circ -->
 
diff --git a/Open-ILS/web/js/ui/default/staff/services/navbar.js b/Open-ILS/web/js/ui/default/staff/services/navbar.js
index d36d40e..c7bb4ed 100644
--- a/Open-ILS/web/js/ui/default/staff/services/navbar.js
+++ b/Open-ILS/web/js/ui/default/staff/services/navbar.js
@@ -31,6 +31,11 @@ angular.module('egCoreMod')
             function($scope , $window , $location , $timeout , hotkeys ,
                      egCore , $uibModal , ngToast, egOpChange) {
 
+                $scope.reprintLast = function (e) {
+                    egCore.print.reprintLast();
+                    return e.preventDefault();
+                }
+
                 function navTo(path) {                                           
                     // Strip the leading "./" if any.
                     path = path.replace(/^\.\//,'');
diff --git a/Open-ILS/web/js/ui/default/staff/services/print.js b/Open-ILS/web/js/ui/default/staff/services/print.js
index 67a26b3..97f8333 100644
--- a/Open-ILS/web/js/ui/default/staff/services/print.js
+++ b/Open-ILS/web/js/ui/default/staff/services/print.js
@@ -54,6 +54,8 @@ function($q , $window , $timeout , $http , egHatch , egAuth , egIDL , egOrg , eg
             egIDL.toHash(egOrg.get(egAuth.user().ws_ou()));
     }
 
+    service.last_print = {};
+
     // Template has been fetched (or no template needed) 
     // Process the template and send the result off to the printer.
     service.print_content = function(args) {
@@ -81,15 +83,26 @@ function($q , $window , $timeout , $http , egHatch , egAuth , egIDL , egOrg , eg
         return promise.then(function(html) {
             // For good measure, wrap the compiled HTML in container tags.
             html = "<html><body>" + html + "</body></html>";
-            return egHatch.remotePrint(
-                args.context || 'default',
-                args.content_type, 
-                html, 
-                args.show_dialog
-            );
+            service.last_print.content = html;
+            service.last_print.context = args.context || 'default';
+            service.last_print.content_type = args.content_type;
+            service.last_print.show_dialog = args.show_dialog;
+
+            egHatch.setItem('eg.print.last_printed', service.last_print);
+
+            return service._remotePrint();
         });
     }
 
+    service._remotePrint = function () {
+        return egHatch.remotePrint(
+            service.last_print.context,
+            service.last_print.content_type,
+            service.last_print.content, 
+            service.last_print.show_dialog
+        );
+    }
+
     service.print_via_browser = function(args) {
         var type = args.content_type;
         var content = args.content;
@@ -111,14 +124,55 @@ function($q , $window , $timeout , $http , egHatch , egAuth , egIDL , egOrg , eg
                   content;
 
         }).then(function(content) {
+            service.last_print.content = content;
+            service.last_print.content_type = type;
+            service.last_print.printScope = printScope
+
+            egHatch.setItem('eg.print.last_printed', service.last_print);
+
             // Ingest the content into the page DOM.
-            return service.ingest_print_content(type, content, printScope);
+            return service.ingest_print_content(
+                service.last_print.content_type,
+                service.last_print.content,
+                service.last_print.printScope
+            );
 
         }).then(function() { 
             $window.print();
         });
     }
 
+    service.reprintLast = function () {
+        var deferred = $q.defer();
+        var promise = deferred.promise;
+        promise.finally( function() { service.clear_print_content() });
+
+        egHatch.getItem(
+            'eg.print.last_printed'
+        ).then(function (last) {
+            if (last && last.content) {
+                service.last_print = last;
+
+                if (egHatch.usePrinting()) {
+                    promise.then(function () {
+                        egHatch._remotePrint()
+                    });
+                } else {
+                    promise.then(function () {
+                        service.ingest_print_content(
+                            service.last_print.content_type,
+                            service.last_print.content,
+                            service.last_print.printScope
+                        ).then(function() { $window.print() });
+                    });
+                }
+                return deferred.resolve();
+            } else {
+                return deferred.reject();
+            }
+        });
+    }
+
     // loads an HTML print template by name from the server
     // If no template is available in local/hatch storage, 
     // fetch the template as an HTML file from the server.

commit c786d82f94311a3c4e5b9a923803ee0824daba37
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Mar 21 10:23:26 2017 -0400

    webstaff: Apply XUL-era hotkeys to some actions
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/navbar.tt2 b/Open-ILS/src/templates/staff/navbar.tt2
index e989fcf..7835f25 100644
--- a/Open-ILS/src/templates/staff/navbar.tt2
+++ b/Open-ILS/src/templates/staff/navbar.tt2
@@ -36,7 +36,7 @@
         <ul uib-dropdown-menu>
           <li>
             <a href="./circ/patron/search" target="_self"
-              eg-accesskey="[% l('alt+s') %]" 
+              eg-accesskey="[% l('alt+s') %] [% l('f4') %]" 
               eg-accesskey-desc="[% l('Patron search by name, address, etc.') %]">
               <span class="glyphicon glyphicon-user"></span>
               <span eg-accesskey-label>[% l('Search for Patrons') %]</span>
@@ -99,7 +99,9 @@
             </a>
           </li>
           <li>
-            <a href="./circ/renew/renew" target="_self">
+            <a href="./circ/renew/renew" target="_self"
+              eg-accesskey="[% l('ctrl+f2') %]" 
+              eg-accesskey-desc="[% l('Renew items') %]">
               <span class="glyphicon glyphicon-refresh"></span>
               [% l('Renew Items') %]
             </a>

commit c06136c66b1a0f0ada8f5f2ef901344022fa6bbf
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Mar 21 10:22:59 2017 -0400

    webstaff: Allow multiple hotkeys for a single action
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/services/navbar.js b/Open-ILS/web/js/ui/default/staff/services/navbar.js
index ec00a9a..d36d40e 100644
--- a/Open-ILS/web/js/ui/default/staff/services/navbar.js
+++ b/Open-ILS/web/js/ui/default/staff/services/navbar.js
@@ -41,15 +41,17 @@ angular.module('egCoreMod')
                 // adds a keyboard shortcut
                 // http://chieffancypants.github.io/angular-hotkeys/
                 $scope.addHotkey = function(key, path, desc, elm) {                 
-                    hotkeys.add({
-                        combo: key,
-                        allowIn: ['INPUT','SELECT','TEXTAREA'],
-                        description: desc,
-                        callback: function(e) {
-                            e.preventDefault();
-                            if (path) return navTo(path);
-                            return $timeout(function(){$(elm).trigger('click')});
-                        }
+                    angular.forEach(key.split(' '), function (k) {
+                        hotkeys.add({
+                            combo: k,
+                            allowIn: ['INPUT','SELECT','TEXTAREA'],
+                            description: desc,
+                            callback: function(e) {
+                                e.preventDefault();
+                                if (path) return navTo(path);
+                                return $timeout(function(){$(elm).trigger('click')});
+                            }
+                        });
                     });
                 };
 

commit 98b0b66a7bbf5c8b370639b8249fcba90e7a5a44
Author: Galen Charlton <gmc at equinoxinitiative.org>
Date:   Tue Mar 14 18:05:45 2017 -0400

    webstaff: add more comments to print templates
    
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_bill_payment.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_bill_payment.tt2
index fe6851a..e3bb24e 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_bill_payment.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_bill_payment.tt2
@@ -1,3 +1,14 @@
+<!--
+Template for bill payment recepts. Data specific to this template
+includes:
+
+* current_location.name - name of workstation location
+* payment_type
+* payment_total - total paid
+* new_balance - balance after the payments were applied
+* payments - list of specific payments
+
+-->
 Welcome to {{current_location.name}}!<br/>
 A receipt of your  transaction:<hr/>
 
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_bills_current.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_bills_current.tt2
index c99cb4d..21b53c2 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_bills_current.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_bills_current.tt2
@@ -1,3 +1,13 @@
+<!-
+Template for printing a list of current bills. Data specific
+to this template includes:
+
+* transasctions - a list of transactions, each of which
+  contains:
+
+  summary - information about the transaction
+
+-->
 Welcome to {{current_location.name}}!<br/>
 You have the following bills:
 <hr/>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_bills_historical.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_bills_historical.tt2
index d8871fe..44fcd57 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_bills_historical.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_bills_historical.tt2
@@ -1,3 +1,13 @@
+<!-
+Template for printing a list of past bills. Data specific
+to this template includes:
+
+* transasctions - a list of transactions, each of which
+  contains:
+
+  summary - information about the transaction
+
+-->
 Welcome to {{current_location.name}}!<br/>
 You had the following bills:
 <hr/>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_checkin.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_checkin.tt2
index 7bc56e4..3aa276c 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_checkin.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_checkin.tt2
@@ -1,3 +1,15 @@
+<!--
+Template for printing a checkin receipt. Data specific to this
+template includes:
+
+* checkins - list of checkins recorded during the session. Each
+  includes:
+
+  * title
+  * copy_barcode
+  * call_number.label
+
+-->
 <div>
   <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
   <div>[% l('You checked in the following items:') %]</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2
index 1f1218e..dc88446 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2
@@ -1,3 +1,14 @@
+<!--
+Template for printing checkout receipts; fields available include:
+
+* circulations - list of loans made during this session. Each
+  includes:
+
+  * title
+  * copy_barcode
+  * due_date
+
+-->
 <div>
   <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
   <div>[% l('You checked out the following items:') %]</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
index ce23fe4..47be206 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
@@ -1,3 +1,15 @@
+<!--
+Template for printing a table of holds to pull. Fields include:
+
+* holds - list of holds, each of which includes:
+
+  * title
+  * author
+  * hold.hold_type
+  * copy.location_name
+  * volume.label - call number
+  * copy.barcode
+-->
 <table id='pull-list-template-table'>
   <style>
     #pull-list-template-table td,
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_list.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_list.tt2
index c95fb3e..375e9b9 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_list.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_list.tt2
@@ -1,3 +1,18 @@
+<!--
+Template for printing a list of items on the hold shelf. Fields include:
+
+* holds - list of hold requests, including
+
+  * patron_alias
+  * patron_last
+  * patron_first
+  * hold.hold_type
+  * title
+  * author
+  * volume.label
+  * copy.barcode
+
+-->
 <table id='shelf-list-template-table'>
   <style>
     #pull-list-template-table td,
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_slip.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_slip.tt2
index 590e00b..aef5b8a 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_slip.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_slip.tt2
@@ -1,3 +1,19 @@
+<!--
+Template for printing hold request slips. Fields include:
+
+* hold.behind_desk
+* copy.barcode
+* title
+* patron.family_name
+* patron.first_given_name
+* patron.second_given_name
+* patron.card.barcode
+* hold.request_time
+* hold.phone_notify
+* hold.sms_notify
+* hold.email_notify
+
+-->
 <div>
   <div ng-switch on="hold.behind_desk">
     <div ng-switch-when="t">
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_hold_transit_slip.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_hold_transit_slip.tt2
index 64a213d..eb002b8 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_hold_transit_slip.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_hold_transit_slip.tt2
@@ -1,3 +1,26 @@
+<!--
+Template for printing hold transit slips. Fields include:
+
+* dest_location.name - name of destination library
+* dest_location.shortname
+* dest_address.street1
+* dest_address.street2
+* dest_address.city
+* dest_address.state
+* dest_address.post_code
+* hold.behind_desk
+* copy.barcode
+* title
+* patron.family_name
+* patron.first_given_name
+* patron.second_given_name
+* patron.card.barcode
+* hold.request_time
+* hold.phone_notify
+* hold.sms_notify
+* hold.email_notify
+
+-->
 <div>
   <div>[% l('This item needs to be routed to [_1]', '<b>{{dest_location.shortname}}</b>') %]</div>
   <div>{{dest_location.name}}</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_bib.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_bib.tt2
index 8d3061c..2a2f965 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_bib.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_bib.tt2
@@ -1,3 +1,16 @@
+<!--
+Template for printing a list of holds associated with a
+bib record. Fields include:
+
+* holds - list of holds, including
+
+  * hold.request_time
+  * patron_barcode
+  * patron_last - patron surname
+  * patron_alias - hold alias for the patorn
+  * copy.barcode
+
+-->
 <div>
   <div>[% l('Holds for record: [_1]', '{{holds[0].title}}') %]</div>
   <hr/>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2
index 492454c..0f3a5da 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2
@@ -1,3 +1,11 @@
+<!--
+Template for printing a list of hold requests for a patron. Fields include:
+
+* holds - a list of hold request, each of which includes
+ 
+  * title
+
+-->
 <div>
   <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
   <div>[% l('You have the following title on hold:') %]</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_items_out.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_items_out.tt2
index fee903b..10564b1 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_items_out.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_items_out.tt2
@@ -1,3 +1,14 @@
+<!--
+Template for printing a list of items that a patron has checked out.
+Fields include:
+
+* circulations - list of current loans, including
+
+  * copy.barcode
+  * circ.due_date
+  * title
+
+-->
 <div>
   <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
   <div>[% l('You have the following items:') %]</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_patron_address.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_patron_address.tt2
index c1a3e37..55996b2 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_patron_address.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_patron_address.tt2
@@ -1,3 +1,16 @@
+<!--
+Template for printing a patron address. Fields include:
+
+* first_given_name
+* second_given_name
+* family_name
+* address.street1
+* address.street2
+* address.city
+* address.state
+* address.post_code
+
+-->
 <div>
   <div>
     {{patron.first_given_name}} 
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_patron_note.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_patron_note.tt2
index 5b98683..da75ec4 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_patron_note.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_patron_note.tt2
@@ -1,3 +1,13 @@
+<!--
+Template for printing a patron note. Fields include:
+
+* note.usr.family_name
+* note.usr.first_name
+* note.usr.second_given_name
+* note.usr.card.barcode
+* note.create_date
+
+-->
 <h3>[% l(
   'Pertaining to [_1], [_2] [_3] : [_4]',
   '{{note.usr.family_name}}',
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_renew.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_renew.tt2
index 8e96445..d5046b2 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_renew.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_renew.tt2
@@ -1,3 +1,13 @@
+<!--
+Template for printing a renewal receipt. Fields include:
+
+* circulations - list of renewals made during the session, including
+
+  * title
+  * copy.barcode
+  * circ.due_date
+
+-->
 <div>
   <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
   <div>[% l('You renewed the following items:') %]</div>
diff --git a/Open-ILS/src/templates/staff/share/print_templates/t_transit_slip.tt2 b/Open-ILS/src/templates/staff/share/print_templates/t_transit_slip.tt2
index 324ad5e..afd5aab 100644
--- a/Open-ILS/src/templates/staff/share/print_templates/t_transit_slip.tt2
+++ b/Open-ILS/src/templates/staff/share/print_templates/t_transit_slip.tt2
@@ -1,3 +1,17 @@
+<!--
+Template for printing a transit slip. Fields include:
+
+* dest_location.name - name of destination library
+* dest_location.shortname
+* dest_address.street1
+* dest_address.street2
+* dest_address.city
+* dest_address.state
+* dest_address.post_code
+* copy.barcode
+* title
+* author
+-->
 <div>
   <div>[% l('This item needs to be routed to [_1]', '<b>{{dest_location.shortname}}</b>') %]</div>
   <div>{{dest_location.name}}</div>

commit a7899650a95909bb0f1f3ff2c3302a59319b7ae5
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Mon Mar 27 16:00:11 2017 -0400

    webstaff: console logging for debugging audio
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/services/audio.js b/Open-ILS/web/js/ui/default/staff/services/audio.js
index 8cab872..82baa76 100644
--- a/Open-ILS/web/js/ui/default/staff/services/audio.js
+++ b/Open-ILS/web/js/ui/default/staff/services/audio.js
@@ -39,6 +39,7 @@ angular.module('egCoreMod')
     }
 
     service.play_url = function(path, orig_path) {
+        console.log('audio: play_url('+path+','+orig_path+')');
 
         egHatch.getItem('eg.audio.disable').then(function(audio_disabled) {
             if (!audio_disabled) {
@@ -51,6 +52,7 @@ angular.module('egCoreMod')
                 player.onloadeddata = function() {
                     service.url_cache[orig_path] = url;
                     player.play();
+                    console.log('audio: ' + url);
                 };
 
                 if (service.url_cache[path]) {

commit 3dd3cb67c72100b931360fb8b15fb2774bf712a4
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Mon Mar 27 15:52:06 2017 -0400

    webstaff: warning sound for Refund Confirmation dialog
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
index 7c869b3..601956a 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
@@ -545,7 +545,8 @@ function($scope , $q , $routeParams , egCore , egConfirmDialog , $location,
         if (items.length == 0) return;
 
         var ids = items.map(function(item) {return item.id});
-            
+
+        egCore.audio.play('warning.circ.refund_confirmation');
         egConfirmDialog.open(
             egCore.strings.CONFIRM_REFUND_PAYMENT, '', 
             {   xactIds : ''+ids,

commit 30e8cf7a285d73ba05d9a48f1a739278a6739cec
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Mon Mar 27 15:31:34 2017 -0400

    webstaff: warning sound for Event Override dialog
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
index 7e50729..4c48ae6 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
@@ -642,6 +642,8 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,
     // the returned event.
     service.override_dialog = function(evt, params, options, action) {
         if (!angular.isArray(evt)) evt = [evt];
+
+        egCore.audio.play('warning.circ.event_override');
         return $uibModal.open({
             templateUrl: './circ/share/t_event_override_dialog',
             controller: 

commit 75405865596e176ead6aec22d6b7696271c9a8a7
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Mon Mar 27 15:10:45 2017 -0400

    webstaff: warning sound for Bad Barcode dialog
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
index 77564fd..7e50729 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
@@ -1477,6 +1477,7 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,
         var ok = service.check_barcode(bc);
         if (ok) return $q.when();
 
+        egCore.audio.play('warning.circ.bad_barcode');
         return $uibModal.open({
             templateUrl: './circ/share/t_bad_barcode_dialog',
             controller: 

commit 1fa669dbfe8e4abccce091c995974f4dcae0be65
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Mon Mar 27 15:01:48 2017 -0400

    webstaff: warning sound for Item Not Found in Item Status
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/cat/item/app.js b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
index 6e411ef..5f0ecb0 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/item/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
@@ -213,6 +213,7 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                 $scope.args.barcode = '';
             } else {
                 $scope.context.itemNotFound = true;
+                egCore.audio.play('warning.item_status.itemNotFound');
             }
             $scope.context.selectBarcode = true;
         })
@@ -1002,6 +1003,7 @@ function($scope , $q , $location , $routeParams , $timeout , $window , egCore ,
             if (!res) {
                 copyId = null;
                 $scope.context.itemNotFound = true;
+                egCore.audio.play('warning.item_status.itemNotFound');
                 deferred.reject(); // avoid propagation of data fetch calls
                 return;
             }

commit f2404cfe6777be17d82ffdf213f83994868f107e
Author: Jason Etheridge <jason at esilibrary.com>
Date:   Thu Mar 23 15:08:17 2017 -0400

    webstaff: tweak successful renewal sound
    
    aesthetic: default to info.wav instead of success.wav
    
    Signed-off-by: Jason Etheridge <jason at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
index df43abb..77564fd 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
@@ -412,7 +412,7 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,
         // Other events
         switch (evt[0].textcode) {
             case 'SUCCESS':
-                egCore.audio.play('success.renew');
+                egCore.audio.play('info.renew');
                 return $q.when(final_resp);
 
             case 'COPY_IN_TRANSIT':

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/src/templates/staff/base_js.tt2           |    1 +
 Open-ILS/src/templates/staff/cat/item/t_list.tt2   |   86 ++++++++++-
 .../src/templates/staff/cat/volcopy/t_edit.tt2     |    7 +-
 Open-ILS/src/templates/staff/navbar.tt2            |   15 ++-
 .../staff/share/print_templates/t_bill_payment.tt2 |   11 ++
 .../share/print_templates/t_bills_current.tt2      |   10 ++
 .../share/print_templates/t_bills_historical.tt2   |   10 ++
 .../staff/share/print_templates/t_checkin.tt2      |   12 ++
 .../staff/share/print_templates/t_checkout.tt2     |   11 ++
 .../share/print_templates/t_hold_pull_list.tt2     |   12 ++
 .../share/print_templates/t_hold_shelf_list.tt2    |   15 ++
 .../share/print_templates/t_hold_shelf_slip.tt2    |   16 ++
 .../share/print_templates/t_hold_transit_slip.tt2  |   23 +++
 .../share/print_templates/t_holds_for_bib.tt2      |   13 ++
 .../share/print_templates/t_holds_for_patron.tt2   |    8 +
 .../staff/share/print_templates/t_items_out.tt2    |   11 ++
 .../share/print_templates/t_patron_address.tt2     |   13 ++
 .../staff/share/print_templates/t_patron_note.tt2  |   10 ++
 .../staff/share/print_templates/t_renew.tt2        |   10 ++
 .../staff/share/print_templates/t_transit_slip.tt2 |   14 ++
 Open-ILS/web/js/ui/default/staff/Gruntfile.js      |    6 +-
 Open-ILS/web/js/ui/default/staff/cat/item/app.js   |  158 +++++++++++++++-----
 .../web/js/ui/default/staff/cat/volcopy/app.js     |   36 +++++-
 .../web/js/ui/default/staff/circ/patron/bills.js   |    3 +-
 .../web/js/ui/default/staff/circ/services/circ.js  |    5 +-
 Open-ILS/web/js/ui/default/staff/package.json      |    1 +
 Open-ILS/web/js/ui/default/staff/services/audio.js |    2 +
 .../web/js/ui/default/staff/services/navbar.js     |   25 ++-
 Open-ILS/web/js/ui/default/staff/services/print.js |   68 ++++++++-
 29 files changed, 549 insertions(+), 63 deletions(-)


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list