Architecture: move F1 and F2 hotkeys from web staff client
authorDan Scott <dan@coffeecode.net>
Mon, 23 Dec 2019 16:10:50 +0000 (11:10 -0500)
committerDan Scott <dan@coffeecode.net>
Mon, 23 Dec 2019 16:10:50 +0000 (11:10 -0500)
LAL uses the Bibliotheca client, which has F1 and F2 set to
disable/enable security on RFID tags. The default hotkeys for the staff
client trap F1 and F2, interfering with the proper operation of the
Bibliotheca client. Reassign them accordingly.

Signed-off-by: Dan Scott <dan@coffeecode.net>
Open-ILS/src/templates_lal/staff/navbar.tt2 [new file with mode: 0644]

diff --git a/Open-ILS/src/templates_lal/staff/navbar.tt2 b/Open-ILS/src/templates_lal/staff/navbar.tt2
new file mode 100644 (file)
index 0000000..7c7078e
--- /dev/null
@@ -0,0 +1,605 @@
+<!-- 
+  main navigation bar
+    
+  note the use of target="_self" for navigation links.
+  this tells angular to treat the href as a new page 
+  and not an intra-app route.  This is necessary when
+  moving between applications.
+
+  For icons, see http://getbootstrap.com/components/#glyphicons
+-->
+
+<div id="top-navbar" role="navigation"
+  class="navbar navbar-default navbar-fixed-top" role="navigation">
+
+  <!-- navbar-header here needed for supporting angular-ui-bootstrap -->
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" 
+        ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed">
+      <span class="sr-only">[% l('Toggle navigation') %]</span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+  </div>
+
+  <div class="navbar-collapse collapse" ng-class="!navCollapsed && 'in'">
+    <ul class="nav navbar-nav">
+        <!--class="glyphicon glyphicon-home"-->
+      <li><a href='./' title="[% l('TEST') %]" target="_self">TEST</a><li>
+
+      <!-- search -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Search') %]
+          <b class="caret"></b>
+        </a>
+        <ul uib-dropdown-menu>
+          <li>
+            <a href="./circ/patron/search" target="_self"
+              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>
+            </a>
+          </li>
+          <li>
+            <a href="./cat/item/search" target="_self"
+              eg-accesskey="[% l('f5') %]" 
+              eg-accesskey-desc="[% l('Item Status') %]">
+              <span class="glyphicon glyphicon-barcode"></span>
+              <span>[% l('Search for Items by Barcode') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./cat/catalog/index" target="_self"
+              eg-accesskey="[% l('f3') %]" 
+              eg-accesskey-desc="[% l('OPAC') %]">
+              <span class="glyphicon glyphicon-search"></span>
+              <span>[% l('Search the Catalog') %]</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+
+
+      <!-- circulation -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Circulation') %]<b class="caret"></b>
+        </a>
+
+        <ul uib-dropdown-menu>
+          <li ng-if="username">
+            <a href="./circ/patron/bcsearch" target="_self"
+              eg-accesskey="[% l('shift+f2') %]" 
+              eg-accesskey-desc="[% l('Check Out') %]">
+              <span class="glyphicon glyphicon-export"></span>
+              [% l('Check Out') %]
+            </a>
+          </li>
+          <li ng-if="!username">
+            <a href="" ng-click="rs.active_tab('checkout')" target="_self"
+              eg-accesskey="[% l('shift+f2') %]" 
+              eg-accesskey-desc="[% l('Check Out') %]">
+              <span class="glyphicon glyphicon-export"></span>
+              [% l('Check Out') %]
+            </a>
+          </li>
+          <li ng-if="username">
+            <a href="./circ/checkin/checkin" target="_self"
+              eg-accesskey="[% l('ctrl+f2') %]" 
+              eg-accesskey-desc="[% l('Check In') %]">
+              <span class="glyphicon glyphicon-import"></span>
+              [% l('Check In') %]
+            </a>
+          </li>
+          <li ng-if="!username">
+            <a href="" ng-click="rs.active_tab('checkin')" target="_self"
+              eg-accesskey="[% l('ctrl+f2') %]" 
+              eg-accesskey-desc="[% l('Check In') %]">
+              <span class="glyphicon glyphicon-import"></span>
+              [% l('Check In') %]
+            </a>
+          </li>
+          <li>
+            <a href="./circ/checkin/capture" target="_self"
+              <span class="glyphicon glyphicon-pushpin"></span>
+              [% l('Capture Holds') %]
+            </a>
+          </li>
+          <li>
+            <a href="./circ/holds/pull" target="_self">
+              <span class="glyphicon glyphicon-th-list"></span>
+              [% l('Pull List for Hold Requests') %]
+            </a>
+          </li>
+          <li ng-if="username">
+            <a href="./circ/renew/renew" target="_self"
+              <span class="glyphicon glyphicon-refresh"></span>
+              [% l('Renew Items') %]
+            </a>
+          </li>
+          <li ng-if="!username">
+            <a href="" ng-click="rs.active_tab('renew')" target="_self"
+              <span class="glyphicon glyphicon-refresh"></span>
+              [% l('Renew Items') %]
+            </a>
+          </li>
+          <li ng-if="username">
+            <a href="./circ/patron/register" target="_self"
+              eg-accesskey="[% l('shift+f1') %]" 
+              eg-accesskey-desc="[% l('Register Patron') %]">
+              <span class="glyphicon glyphicon-user"></span>
+              [% l('Register Patron') %]
+            </a>
+          </li>
+          <li ng-if="!username">
+            <a href="" ng-click="rs.active_tab('register')" target="_self"
+              eg-accesskey="[% l('shift+f1') %]" 
+              eg-accesskey-desc="[% l('Register Patron') %]">
+              <span class="glyphicon glyphicon-user"></span>
+              [% l('Register Patron') %]
+            </a>
+          </li>
+          <li ng-if="showRecentPatron">
+            <a href="./circ/patron/last" target="_self"
+              eg-accesskey="[% l('f8') %]" 
+              eg-accesskey-desc="[% l('Retrieve Last Patron') %]">
+              <span class="glyphicon glyphicon-share-alt"></span>
+              [% l('Retrieve Last Patron') %]
+            </a>
+          </li>
+          <li ng-if="showRecentPatrons">
+            <a href="./circ/patron/search?show_recent=1" target="_self"
+              eg-accesskey-desc="[% l('Retrieve Recent Patrons') %]">
+              <span class="glyphicon glyphicon-share-alt"></span>
+              [% l('Retrieve Recent Patrons') %]
+            </a>
+          </li>
+          <li>
+            <a href="./circ/patron/pending/list" target="_self">
+              <span class="glyphicon glyphicon-thumbs-up"></span>
+              [% l('Pending Patrons') %]
+            </a>
+          </li>
+          <li>
+            <a href="./circ/patron/bucket/view" target="_self">
+              <span class="glyphicon glyphicon-list-alt"></span>
+              [% l('User Buckets') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./circ/patron/credentials" target="_self">
+              <span class="glyphicon glyphicon-ok"></span>
+              <span>[% l('Verify Credentials') %]</span>
+            </a>
+          </li>
+          <li ng-if="username">
+            <a href="./circ/in_house_use/index" target="_self"
+              eg-accesskey="[% l('f6') %]" 
+              eg-accesskey-desc="[% l('Record In-House Use') %]">
+              <span class="glyphicon glyphicon-pencil"></span>
+              <span>[% l('Record In-House Use') %]</span>
+            </a>
+          </li>
+          <li ng-if="!username">
+            <a href="" ng-click="rs.active_tab('in_house_use')" target="_self"
+              eg-accesskey="[% l('f6') %]" 
+              eg-accesskey-desc="[% l('Record In-House Use') %]">
+              <span class="glyphicon glyphicon-pencil"></span>
+              <span>[% l('Record In-House Use') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./circ/holds/shelf" target="_self">
+              <span class="glyphicon glyphicon-tasks"></span>
+              <span>[% l('Holds Shelf') %]</span>
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/item/replace_barcode/index" target="_self">
+              <span class="glyphicon glyphicon-barcode"></span>
+              <span>[% l('Replace Barcode') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./cat/item/search" target="_self">
+              <span class="glyphicon glyphicon-saved"></span>
+              <span>[% l('Item Status') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./cat/item/missing_pieces" target="_self">
+              <span class="glyphicon glyphicon-th"></span>
+              <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>
+          <li class="divider"></li>
+          <li ng-class="{disabled : offlineDisabled()}">
+            <a href="./offline-interface" target="_self" ng-class="{disabled : offlineDisabled()}">
+              <span class="glyphicon glyphicon-alert"></span>
+              <span>[% l('Offline Circulation') %]</span>
+            </a>
+          </li>
+        </ul>
+      </li><!-- circ -->
+
+      <!-- cataloging -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Cataloging') %]<b class="caret"></b>
+        </a>
+        <ul uib-dropdown-menu>
+          <li>
+            <a href="./cat/catalog/index" target="_self">
+              <span class="glyphicon glyphicon-search"></span>
+              [% l('Search the Catalog') %]
+            </a>
+          </li>
+          <!--
+            Link to experimental Angular staff catalog.
+          -->
+          <li ng-if="showAngularCatalog">
+            <a href="/eg2/staff/catalog/search">
+              <span class="glyphicon glyphicon-search"></span>
+              <span>[% l('Staff Catalog (Experimental)') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./cat/item/search" target="_self">
+              <span class="glyphicon glyphicon-saved"></span>
+              <span>[% l('Item Status') %]</span>
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/bucket/record/view" target="_self">
+              <span class="glyphicon glyphicon-list-alt"></span>
+              [% l('Record Buckets') %]
+            </a>
+          </li>
+          <li>
+            <a href="./cat/bucket/copy/view" target="_self">
+              <span class="glyphicon glyphicon-list-alt"></span>
+              [% l('Item Buckets') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/catalog/retrieve_by_id" target="_self">
+              <span class="glyphicon glyphicon-file"></span>
+              [% l('Retrieve Bib Record by ID') %]
+            </a>
+          </li>
+          <li>
+            <a href="./cat/catalog/retrieve_by_tcn" target="_self"
+              eg-accesskey="[% l('shift+f3') %]" 
+              eg-accesskey-desc="[% l('Retrieve Last Bib Record') %]">
+              <span class="glyphicon glyphicon-tag"></span>
+              [% l('Retrieve Bib Record by TCN') %]
+            </a>
+          </li>
+          <li>
+            <a href="" ng-click="retrieveLastRecord()" target="_self"
+              eg-accesskey="[% l('shift+f8') %]" 
+              eg-accesskey-desc="[% l('Retrieve Last Bib Record') %]">
+              <span class="glyphicon glyphicon-share-alt"></span>
+              [% l('Retrieve Last Bib Record') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/catalog/new_bib" target="_self">
+              <span class="glyphicon glyphicon-plus"></span>
+              [% l('Create New MARC Record') %]
+            </a>
+          </li>
+          <li>
+            <a href="./cat/z3950/index" target="_self">
+              <span class="glyphicon glyphicon-cloud-download"></span>
+              [% l('Import Record from Z39.50') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/cat/vandelay/import">
+              <span class="glyphicon glyphicon-transfer"></span>
+              [% l('MARC Batch Import/Export') %]
+            </a>
+          </li>
+          <li>
+            <a href="./cat/catalog/batchEdit" target="_self">
+              <span class="glyphicon glyphicon-edit"></span>
+              [% l('MARC Batch Edit') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/catalog/verifyURLs" target="_self">
+              <span class="glyphicon glyphicon-link"></span>
+              [% l('Link Checker') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./cat/catalog/manageAuthorities" target="_self">
+              <span class="glyphicon glyphicon-lock"></span>
+              [% l('Manage Authorities') %]
+            </a>
+          </li>
+          <li>
+            <a href="./cat/catalog/retrieve_by_authority_id" target="_self">
+              <span class="glyphicon glyphicon-file"></span>
+              [% l('Retrieve Authority Record by ID') %]
+            </a>
+          </li>
+       </ul>
+      </li>
+
+      <!-- acquisitions -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Acquisitions') %]<b class="caret"></b>
+        </a>
+        <ul uib-dropdown-menu>
+          <li>
+            <a href="./acq/legacy/search/unified" target="_self">
+              <span class="glyphicon glyphicon-search"></span>
+              [% l('General Search') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./acq/legacy/search/unified?ca=pl" target="_self">
+              <span class="glyphicon glyphicon-list"></span>
+              [% l('My Selection Lists') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/picklist/brief_record" target="_self">
+              <span class="glyphicon glyphicon-pencil"></span>
+              [% l('New Brief Record') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/requests/list" target="_self">
+              <span class="glyphicon glyphicon-thumbs-up"></span>
+              [% l('Patron Requests') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/picklist/bib_search" target="_self">
+              <span class="glyphicon glyphicon-cloud-download"></span>
+              [% l('MARC Federated Search') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/picklist/from_bib" target="_self">
+              <span class="glyphicon glyphicon-import"></span>
+              [% l('Load Catalog Record IDs') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./acq/legacy/picklist/upload" target="_self">
+              <span class="glyphicon glyphicon-cloud-upload"></span>
+              [% l('Load MARC Order Records') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/search/unified?ca=po" target="_self">
+              <span class="glyphicon glyphicon-shopping-cart"></span>
+              [% l('Purchase Orders') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/po/create" target="_self">
+              <span class="glyphicon glyphicon-plus"></span>
+              [% l('Create Purchase Order') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li>
+            <a href="./acq/legacy/financial/claim_eligible" target="_self">
+              <span class="glyphicon glyphicon-question-sign"></span>
+              [% l('Claim-Ready Items') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/search/unified?ca=inv" target="_self">
+              <span class="glyphicon glyphicon-usd"></span>
+              [% l('Open Invoices') %]
+            </a>
+          </li>
+          <li>
+            <a href="./acq/legacy/invoice/view?create=1" target="_self">
+              <span class="glyphicon glyphicon-credit-card"></span>
+              [% l('Create Invoice') %]
+            </a>
+          </li>
+       </ul>
+      </li>
+
+      <!-- booking -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Booking') %]<b class="caret"></b>
+        </a>
+        <ul uib-dropdown-menu>
+          <li>
+            <a href="/eg2/staff/booking/create_reservation" target="_self">
+              <span class="glyphicon glyphicon-plus"></span>
+              [% l('Create Reservations') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/booking/pull_list" target="_self">
+              <span class="glyphicon glyphicon-th-list"></span>
+              [% l('Pull List') %]
+            </a>
+          </li>
+          <li>
+            <a href="./booking/legacy/booking/capture" target="_self">
+              <span class="glyphicon glyphicon-pushpin"></span>
+              [% l('Capture Resources') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/booking/pickup" target="_self">
+              <span class="glyphicon glyphicon-export"></span>
+              [% l('Pick Up Reservations') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/booking/return" target="_self">
+              <span class="glyphicon glyphicon-import"></span>
+              [% l('Return Reservations') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/booking/manage_reservations" target="_self">
+              <span class="glyphicon glyphicon-wrench"></span>
+              [% l('Manage Reservations') %]
+            </a>
+          </li>
+        </ul>
+      </li>
+
+      <!-- admin -->
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Administration') %]<b class="caret"></b></a>
+        <ul uib-dropdown-menu>
+          <li>
+            <a href="./admin/workstation/index" target="_self">
+              <span class="glyphicon glyphicon-hdd"></span>
+              [% l('Workstation') %]
+            </a>
+          </li>
+          <li>
+            <a href="./admin/user_perms" target="_self">
+              <span class="glyphicon glyphicon-user"></span>
+              [% l('User Permission Editor') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/admin/server/splash">
+              <span class="glyphicon glyphicon-briefcase"></span>
+              [% l('Server Administration') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/admin/local/splash">
+              <span class="glyphicon glyphicon-picture"></span>
+              [% l('Local Administration') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/admin/acq/splash">
+              <span class="glyphicon glyphicon-usd"></span>
+              [% l('Acquisitions Administration') %]
+            </a>
+          </li>
+          <li>
+            <a href="./admin/serials/index" target="_self">
+              <span class="glyphicon glyphicon-paperclip"></span>
+              [% l('Serials Administration') %]
+            </a>
+          </li>
+          <li>
+            <a href="/eg2/staff/admin/booking/splash" target="_self">
+              <span class="glyphicon glyphicon-calendar"></span>
+              [% l('Booking Administration') %]
+            </a>
+          </li>
+          <li>
+            <a href="./reporter/legacy/main" target="_self">
+              <span class="glyphicon glyphicon-object-align-bottom"></span>
+              [% l('Reports') %]
+            </a>
+          </li>
+        </ul> <!-- admin dropdown -->
+      </li>
+    </ul> <!-- end left side entries -->
+
+    <!-- entries along the right side of the navbar -->
+    <ul class="nav navbar-nav navbar-right" style='margin-right: 6px;'>
+      <li>
+        <a ng-cloak ng-show="username" title="{{currentToken()}}"
+          ng-init="workstation = '[% l('<no workstation>') %]'">
+            {{username}} @ {{workstation}}
+        </a>
+      </li>
+
+      <!-- locale selector.  
+        only shown if multiple locales are registered -->
+      [% IF ctx.locales.keys.size > 1 %]
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>
+          [% lcl = ctx.locale;  ctx.locales.$lcl %]
+          <span class="glyphicon glyphicon-flag"></span>
+        </a>
+        <ul uib-dropdown-menu>
+        [% FOR locale IN ctx.locales.keys.sort %]
+          <!-- disable the selected locale -->
+          <li ng-class="{disabled : '[% ctx.locale %]'=='[% locale %]'}">
+            <a href="" ng-click="applyLocale('[% locale %]')">
+                [% ctx.locales.$locale %]
+            </a>
+          </li>
+        [% END %]
+        </ul>
+      </li>
+      [% END %]
+
+      <li class="dropdown" ng-show="username" uib-dropdown title="Logout and more...">
+        <a href class="glyphicon glyphicon-list" 
+          uib-dropdown-toggle></a>
+        <ul uib-dropdown-menu>
+          <li ng-if="!op_changed">
+            <a href="" ng-click="changeOperator()">
+              <span class="glyphicon glyphicon-random"></span>
+              [% l('Change Operator') %]
+            </a>
+          </li>
+          <li ng-if="op_changed">
+            <a href="" ng-click="changeOperatorUndo()">
+              <span class="glyphicon glyphicon-random"></span>
+              [% l('Restore Operator') %]
+            </a>
+          </li>
+          <li>
+            <a href="./login" ng-click="logout()" target="_self">
+              <span class="glyphicon glyphicon-log-out"></span>
+              [% l('Log Out') %]
+            </a>
+          </li>
+          <li>
+            <a href="./about" target="_self">
+              <span class="glyphicon glyphicon-question-sign"></span>
+              [% l('About') %]
+            </a>
+          </li>
+          <li class="divider"></li>
+          <li class="disabled">
+            <a href disabled="disabled">
+              <span
+                title="[% l('Hatch Connection Status') %]"
+                class="glyphicon glyphicon-transfer"
+                ng-class="{'connect-status-ok' : hatchConnected()}">
+              </span>
+              [% l('Hatch') %]
+            </a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+
+