file / directory name improvements and cleanup
authorBill Erickson <berick@esilibrary.com>
Mon, 12 May 2014 15:26:32 +0000 (11:26 -0400)
committerBill Erickson <berick@esilibrary.com>
Mon, 12 May 2014 15:26:32 +0000 (11:26 -0400)
* remove t_ prefix from TT-loaded template files (not needed).
* rename "parts" to "share", which better describes the contents
* remove deprecated column_picker template

Signed-off-by: Bill Erickson <berick@esilibrary.com>
23 files changed:
Open-ILS/src/templates/staff/admin/workstation/index.tt2
Open-ILS/src/templates/staff/base.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/base_js.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/cat/bucket/record/index.tt2
Open-ILS/src/templates/staff/circ/checkin/index.tt2
Open-ILS/src/templates/staff/circ/patron/index.tt2
Open-ILS/src/templates/staff/index.tt2
Open-ILS/src/templates/staff/navbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/parts/column_picker.tt2 [deleted file]
Open-ILS/src/templates/staff/parts/statusbar.tt2 [deleted file]
Open-ILS/src/templates/staff/parts/t_alert_dialog.tt2 [deleted file]
Open-ILS/src/templates/staff/parts/t_autogrid.tt2 [deleted file]
Open-ILS/src/templates/staff/parts/t_confirm_dialog.tt2 [deleted file]
Open-ILS/src/templates/staff/share/README [new file with mode: 0644]
Open-ILS/src/templates/staff/share/t_alert_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/share/t_autogrid.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/share/t_confirm_dialog.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/statusbar.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/t_base.tt2 [deleted file]
Open-ILS/src/templates/staff/t_base_js.tt2 [deleted file]
Open-ILS/src/templates/staff/t_navbar.tt2 [deleted file]
Open-ILS/web/js/ui/default/staff/services/grid.js
Open-ILS/web/js/ui/default/staff/services/ui.js

index daf08b7..2d955ec 100644 (file)
@@ -1,5 +1,5 @@
 [%
-  WRAPPER "staff/t_base.tt2";
+  WRAPPER "staff/base.tt2";
   ctx.page_title = l("Workstation Administration"); 
   ctx.page_app = "egWorkstationAdmin";
 %]
diff --git a/Open-ILS/src/templates/staff/base.tt2 b/Open-ILS/src/templates/staff/base.tt2
new file mode 100644 (file)
index 0000000..5a361b2
--- /dev/null
@@ -0,0 +1,47 @@
+<!doctype html>
+[%- 
+  EVERGREEN_VERSION='0.0.1' 
+
+  # create script / css refs to individual files instead of using
+  EXPAND_WEB_IMPORTS=1; 
+%]
+<html lang="[% ctx.locale %]"
+    [%- IF ctx.page_app %] ng-app="[% ctx.page_app %]"[% END -%]
+    [%- IF ctx.page_ctrl %] ng-controller="[% ctx.page_ctrl %]"[% END %]>
+  <head>
+    <title>[% l('Evergreen Staff [_1]', ctx.page_title) %]</title>
+    <base href="/eg/staff/">
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- TODO: remote hosted CSS should be hosted locally instead -->
+    [% IF EXPAND_WEB_IMPORTS %]
+    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/hotkeys.min.css" />
+    [% ELSE %]
+    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/evergreen-staff-client-deps.[% EVERGREEN_VERSION %].min.css" />
+    [% END %]
+    <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/style.css" />
+    <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/print.css" type="text/css" media="print" />
+  </head>
+  <body>
+    <!-- load the navbar template inline since it's used on every page -->
+    <script type="text/ng-template" id="eg-navbar-template">
+      [% INCLUDE "staff/navbar.tt2" %]
+    </script>
+    <!-- instantiate the navbar by invoking it's name -->
+    <eg-navbar></eg-navbar>
+
+    <div id="top-content-container" class="container">[% content %]</div>
+    [% 
+      # status bar along bottom of page
+      INCLUDE "staff/statusbar.tt2";
+
+      # script imports
+      INCLUDE "staff/base_js.tt2";
+
+      # App-specific JS load commands go into an APP_JS block.
+      PROCESS APP_JS;
+    %]
+    <div id="print-div" eg-print-container></div>
+  </body>
+</html>
diff --git a/Open-ILS/src/templates/staff/base_js.tt2 b/Open-ILS/src/templates/staff/base_js.tt2
new file mode 100644 (file)
index 0000000..e56cf47
--- /dev/null
@@ -0,0 +1,46 @@
+<script src="/IDL2js"></script>
+
+[% IF EXPAND_WEB_IMPORTS %]
+
+<!-- angular -->
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular.min.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular-route.min.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/ui-bootstrap-tpls.min.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/hotkeys.min.js"></script>
+
+<!-- IDL / opensrf (network) -->
+<script src="[% ctx.media_prefix %]/js/dojo/opensrf/JSON_v1.js"></script>
+<script src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf.js"></script>
+<script src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf_ws.js"></script>
+
+<!-- evergreen core services -->
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/core.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/strings.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/idl.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/event.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/net.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/auth.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/pcrud.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/env.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/org.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/startup.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/hatch.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/coresvc.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/navbar.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/statusbar.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/ui.js"></script>
+
+[% ELSE %]
+
+<!-- concatenated, minified version of all of the above -->
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/evergreen-staff-client.[% EVERGREEN_VERSION %].min.js"></script>
+
+[% END %]
+
+<script>
+  // Configure OpenSRF
+  // pending api_level thunking in C
+  // OpenSRF.api_level = 2;
+  OpenSRF.Session.transport = OSRF_TRANSPORT_TYPE_WS;
+</script>
+
index f92c4aa..2f21e72 100644 (file)
@@ -1,5 +1,5 @@
 [%
-  WRAPPER "staff/t_base.tt2";
+  WRAPPER "staff/base.tt2";
   ctx.page_title = l("Record Buckets"); 
   ctx.page_app = "egCatRecordBuckets";
   ctx.page_ctrl = "RecordBucketCtrl";
index ef7d5a3..ea5d58c 100644 (file)
@@ -1,5 +1,5 @@
 [%
-  WRAPPER "staff/t_base.tt2";
+  WRAPPER "staff/base.tt2";
   ctx.page_title = l("Check In"); 
   ctx.page_app = "egCheckinApp";
   ctx.page_ctrl = "CheckinCtrl";
index 551b07d..f3f80ca 100644 (file)
@@ -1,5 +1,5 @@
 [%
-  WRAPPER "staff/t_base.tt2";
+  WRAPPER "staff/base.tt2";
   ctx.page_title = l("Patron"); 
   ctx.page_app = "egPatronApp";
   ctx.page_ctrl = "PatronCtrl";
index 478ff2f..b2e25f8 100644 (file)
@@ -1,5 +1,5 @@
 [%
-  WRAPPER "staff/t_base.tt2";
+  WRAPPER "staff/base.tt2";
   ctx.page_title = l("Home"); 
   ctx.page_app = "egHome";
 %]
diff --git a/Open-ILS/src/templates/staff/navbar.tt2 b/Open-ILS/src/templates/staff/navbar.tt2
new file mode 100644 (file)
index 0000000..b6dea13
--- /dev/null
@@ -0,0 +1,153 @@
+<!-- 
+  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-static-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">
+      <li><a href='./' title="[% l('Home') %]" target="_self"
+        class="glyphicon glyphicon-home"></a><li>
+
+      <!-- circulation -->
+      <li class="dropdown">
+        <a href="javascript:;" class="dropdown-toggle"
+          data-toggle="dropdown">[% l('Circulation') %]
+          <b class="caret"></b>
+        </a>
+
+        <ul class="dropdown-menu">
+          <li>
+            <a href="./circ/patron/bcsearch" target="_self">
+              <span class="glyphicon glyphicon-export"></span>
+              [% l('Check Out') %]
+            </a>
+          </li>
+          <li>
+            <a href="./circ/patron/search" target="_self"
+              eg-accesskey="[% l('alt+s') %]" 
+              eg-accesskey-desc="[% l('Patron search by name, address, etc.') %]">
+              <span class="glyphicon glyphicon-search"></span>
+              <span eg-accesskey-label>[% l('Patron Search') %]</span>
+            </a>
+          </li>
+          <li>
+            <a href="./circ/checkin/index" target="_self">
+              <span class="glyphicon glyphicon-import"></span>
+              [% l('Check In') %]
+            </a>
+          </li>
+          <!-- sample sub-menu
+          <li class="divider"></li>
+          <li class="dropdown-header">Sub Menu Test</li>
+          <li><a href="javascript:;">Test Item</a></li>
+          -->
+        </ul>
+      </li>
+
+      <!-- cataloging -->
+      <li class="dropdown">
+        <a href="javascript:;" class="dropdown-toggle" 
+          data-toggle="dropdown">[% l('Cataloging') %]
+            <b class="caret"></b>
+        </a>
+        <ul class="dropdown-menu">
+          <li>
+            <a href="./cat/bucket/record/view" target="_self">
+              <span class="glyphicon glyphicon-list-alt"></span>
+              [% l('Record Buckets') %]
+            </a>
+          </li>
+       </ul>
+      </li>
+
+      <!-- cataloging -->
+      <li class="dropdown">
+        <a href="javascript:;" class="dropdown-toggle" 
+          data-toggle="dropdown">[% l('Administration') %]
+            <b class="caret"></b>
+        </a>
+        <ul class="dropdown-menu">
+          <li>
+            <a href="./admin/workstation/index" target="_self">
+              <span class="glyphicon glyphicon-hdd"></span>
+              [% l('Workstation') %]
+            </a>
+          </li>
+       </ul>
+      </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" 
+          ng-init="workstation = '[% l('<no workstation>') %]'">
+            [% l('{{username}} @ {{workstation}}') %]
+        </a>
+      </li>
+
+      <!-- locale selector.  
+        only shown if multiple locales are registered -->
+      [% IF ctx.locales.keys.size > 1 %]
+      <li class="dropdown">
+        <a href='' class="dropdown-toggle" data-toggle="dropdown">
+            [% lcl = ctx.locale;  ctx.locales.$lcl %]
+            <span class="glyphicon glyphicon-flag"></span>
+        </a>
+        <ul class="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">
+        <a href='' class="dropdown-toggle glyphicon glyphicon-list" 
+          data-toggle="dropdown"></a>
+        <ul class="dropdown-menu">
+          <li class="disabled">
+            <a href="" ng-click="" target="_self">
+              <span class="glyphicon glyphicon-random"></span>
+              [% l('Change Operator') %]
+            </a>
+          </li>
+          <li>
+            <a href="./login" ng-click="logout()" target="_self">
+              <span class="glyphicon glyphicon-log-out"></span>
+              [% l('Log Out') %]
+            </a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </div>
+</div>
+
+
diff --git a/Open-ILS/src/templates/staff/parts/column_picker.tt2 b/Open-ILS/src/templates/staff/parts/column_picker.tt2
deleted file mode 100644 (file)
index 49bd38e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-[%#
-Must be wrapped in a btn-group/text-left div for correct display.
-It's not done here since the caller may wish to add other buttons/
-dropdowns, etc. to the btn-group
-
-<div class="btn-group text-left">
-  [ INCLUDE 'staff/parts/column_picker.tt2' listname=somelist ]
-<div>
-%]
-
-<div class="btn-group column-picker" dropdown>
-  <button type="button" class="btn btn-default dropdown-toggle">
-    <span class="caret"></span>
-  </button>
-  <ul class="dropdown-menu pull-right">
-    <li ng-repeat="col in [% listname %].allColumns">
-      <a href='' ng-click="[% listname %].displayColumns[col.name] = 
-          ![% listname %].displayColumns[col.name]">
-          <span ng-if="[% listname %].displayColumns[col.name]" 
-            class="label label-success">&#x2713;</span>
-          <span ng-if="![% listname %].displayColumns[col.name]" 
-            class="label label-warning">&#x2717;</span>
-          <span>{{col.label}}</span>
-      </a>
-    </li>
-    <li role="presentation" class="divider"></li>
-    <li>
-      <a href='' ng-click="[% listname %].showAllColumns()">
-        [% l('Show All Columns') %]
-      </a>
-    </li>
-    <li>
-      <a href='' ng-click="[% listname %].hideAllColumns()">
-        [% l('Hide All Columns') %]
-      </a>
-    </li>
-    <li class='disabled'>
-      <a href='' ng-click="">[% l('Save Columns') %]</a>
-    </li>
-  </ul>
-</div>
-
diff --git a/Open-ILS/src/templates/staff/parts/statusbar.tt2 b/Open-ILS/src/templates/staff/parts/statusbar.tt2
deleted file mode 100644 (file)
index 7eef88b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!-- Status bar along the bottom of the page -->
-
-<div id="status-bar" 
-  class="navbar navbar-default navbar-fixed-bottom" 
-  role="navigation">
-
-  <!-- 
-    Define the status bar as a directive so it may be used globally.
-    The template is defined inline (below) to leverage i18n and 
-    so one less network fetch is required.
-  -->
-  <eg-status-bar></eg-status-bar>
-  <script type="text/ng-template" id="eg-status-bar-template">
-    <ul class="nav navbar-nav navbar-right">
-      <li>{{messages[0]}}</li>
-      <li>
-        <span 
-          ng-click="hatchConnect()"
-          title="[% l('Print/Store Connection Status') %]"
-          class="glyphicon glyphicon-transfer"
-          ng-class="{'status-bar-connected' : hatchConnected()}">
-        </span>
-      </li>
-      <li>
-        <span 
-          title="[% l('Network Connection Status') %]"
-          class="glyphicon glyphicon-signal"
-          ng-class="{'status-bar-connected' : netConnected()}">
-        </span>
-      </li>
-    </ul>    
-  </script>
-</div>
diff --git a/Open-ILS/src/templates/staff/parts/t_alert_dialog.tt2 b/Open-ILS/src/templates/staff/parts/t_alert_dialog.tt2
deleted file mode 100644 (file)
index b71614a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<!-- 
-  Generic alert dialog.
-  The only user action allowed is the 'OK' button.
--->
-<div>
-  <div class="modal-header">
-    <button type="button" class="close" 
-      ng-click="ok()" aria-hidden="true">&times;</button>
-    <h4 class="modal-title alert alert-danger">[% l('Alert') %]</h4>
-  </div>
-  <div class="modal-body">{{message}}</div>
-  <div class="modal-footer">
-    <input type="submit" 
-      class="btn btn-primary" ng-click="ok()" value="[% l('OK') %]"/>
-  </div>
-</div>
diff --git a/Open-ILS/src/templates/staff/parts/t_autogrid.tt2 b/Open-ILS/src/templates/staff/parts/t_autogrid.tt2
deleted file mode 100644 (file)
index 4e037ad..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-
-<!-- 
-  Actions row.
-  This sits above the grid and contains the column picker, etc.
--->
-
-<div class="eg-grid-row eg-grid-action-row">
-
-  <div style="flex:1">
-    <div class="eg-grid-primary-label">{{mainLabel}}</div>
-  </div>
-
-  <div class="btn-group" ng-if="menuLabel" dropdown style="margin-right: 10px">
-    <button type="button" class="btn btn-default dropdown-toggle">
-      {{menuLabel}}<span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu">
-      <li ng-repeat="item in menuItems" ng-class="{divider: item.divider}">
-        <a ng-if="!item.divider" href
-          ng-click="item.handler(item, item.handlerData)">{{item.label}}</a>
-      </li>
-    </ul>
-  </div>
-
-  <!-- column picker, pager, etc. -->
-  <div class="btn-group column-picker">
-
-    <!-- first page -->
-    <button type="button" class="btn btn-default" 
-      ng-class="{disabled : onFirstPage()}" 
-      ng-click="offset(0);collect()"
-      title="[% l('Start') %]">
-        <span class="glyphicon glyphicon-fast-backward"></span>
-    </button>
-
-    <!-- previous page -->
-    <button type="button" class="btn btn-default" 
-      ng-class="{disabled : onFirstPage()}"
-      ng-click="decrementPage()"
-      title="[% l('Previous Page') %]">
-        <span class="glyphicon glyphicon-backward"></span>
-    </button>
-
-    <!-- next page -->
-    <!-- todo: paging needs a total count value to be fully functional -->
-    <button type="button" class="btn btn-default" 
-      ng-class="{disabled : !hasNextPage()}"
-      ng-click="incrementPage()"
-      title="[% l('Next Page') %]">
-        <span class="glyphicon glyphicon-forward"></span>
-    </button>
-
-    <!-- actions drop-down menu -->
-    <div class="btn-group" ng-if="actions.length" dropdown>                                                  
-      <button type="button" class="btn btn-default dropdown-toggle"
-        ng-class="{disabled : false}">
-        [% l('Actions') %] <span class="caret"></span>                       
-      </button>                                                              
-      <ul class="dropdown-menu pull-right">                                  
-        <li ng-class="{disabled : false}" ng-repeat="action in actions">
-          <a href="" ng-click="actionLauncher(action)">{{action.label}}</a>
-        </li>                                                                
-      </ul>
-    </div>
-
-    <div class="btn-group" dropdown>
-      <button type="button" title="[% ('Select Row Count') %]"
-        class="btn btn-default dropdown-toggle">
-        [% l('Rows [_1]', '{{limit()}}') %]
-        <span class="caret"></span>
-      </button>
-      <ul class="dropdown-menu">
-        <li ng-repeat="t in [5,10,25,50,100]">
-          <a href dropdown-toggle ng-click='offset(0);limit(t);collect()'>
-            {{t}}
-          </a>
-        </li>
-      </ul>
-    </div>
-
-    <div class="btn-group" dropdown>
-      <button type="button" title="[% ('Select Page') %]"
-        class="btn btn-default dropdown-toggle">
-        [% l('Page [_1]', '{{page()}}') %]
-        <span class="caret"></span>
-      </button>
-      <ul class="dropdown-menu">
-        <li>
-          <div class="input-group">
-            <input type="text" class="form-control"
-              ng-model="pageFromUI"
-              ng-click="$event.stopPropagation()"/>
-            <span class="input-group-btn">
-              <button class="btn btn-default" type="button"
-                ng-click="goToPage(pageFromUI);pageFromUI=''">
-                [% l('Go To...') %]
-              </button>
-            </span>
-          </div>
-        </li>
-        <li role="presentation" class="divider"></li>
-        <li ng-repeat="t in [1,2,3,4,5,10,25,50,100]">
-          <a href dropdown-toggle ng-click='goToPage(t)'>{{t}}</a>
-        </li>
-      </ul>
-    </div>
-
-    <div class="btn-group" dropdown>
-    <button type="button" 
-      class="btn btn-default dropdown-toggle">
-      <span class="caret"></span>
-    </button>
-    <ul class="dropdown-menu pull-right">
-      <li><a href dropdown-toggle ng-click="toggleConfDisplay()">
-        <span class="glyphicon glyphicon-wrench"></span>
-        [% l('Configure Columns') %]
-      </a></li>
-      <li><a href dropdown-toggle ng-click="saveConfig()">
-        <span class="glyphicon glyphicon-floppy-save"></span>
-        [% l('Save Columns') %]
-      </a></li>
-      <li><a href dropdown-toggle ng-click="showAllColumns()">
-        <span class="glyphicon glyphicon-resize-full"></span>
-        [% l('Show All Columns') %]
-      </a></li>
-      <li><a href dropdown-toggle ng-click="hideAllColumns()">
-        <span class="glyphicon glyphicon-resize-small"></span>
-        [% l('Hide All Columns') %]
-      </a></li>
-      <li><a ng-click="generateCSVExportURL()" 
-        download="{{csvExportFileName}}.csv" ng-href="{{csvExportURL}}">
-        <span class="glyphicon glyphicon-download"></span>
-        [% l('Download CSV') %]
-      </a></li>
-      <li><a href dropdown-toggle ng-click="printCSV()">
-        <span class="glyphicon glyphicon-print"></span>
-        [% l('Print CSV') %]
-      </a></li>
-      <li role="presentation" class="divider"></li>
-      <li ng-repeat="col in columns">
-        <a href dropdown-toggle ng-click="col.visible = !col.visible">
-            <span ng-if="col.visible" 
-              class="label label-success">&#x2713;</span>
-            <span ng-if="!col.visible" 
-              class="label label-warning">&#x2717;</span>
-            <span>{{col.label}}</span>
-        </a>
-      </li>
-    </ul>
-    </div>
-  </div>
-</div>
-
-<!-- Grid -->
-<div class="eg-grid" ng-class="{'eg-grid-as-conf' : showGridConf}">
-
-  <!-- import our eg-grid-field defs -->
-  <div ng-transclude></div>
-
-  <div class="eg-grid-row eg-grid-header-row">
-    <div class="eg-grid-cell eg-grid-cell-stock">
-      <div>[% l('#') %]</div>
-    </div>
-    <div class="eg-grid-cell eg-grid-cell-stock">
-      <div>
-        <input type='checkbox' ng-click="toggleSelectAllItems()"/>
-      </div>
-    </div>
-    <div class="eg-grid-cell"
-        eg-grid-column-drag-dest
-        column="{{col.name}}"
-        eg-right-click="onContextMenu($event)"
-        ng-repeat="col in columns"
-        style="flex:{{col.flex}}"
-        ng-show="col.visible">
-
-        <div style="display:flex">
-          <div style="flex:1" class="eg-grid-column-move-handle">
-            <div ng-if="col.sortable">
-              <a column="{{col.name}}" href='' 
-                eg-grid-column-drag-source
-                ng-click="quickSort(col.name)">{{col.label}}</a>
-            </div>
-            <div ng-if="!col.sortable">
-              <div column="{{col.name}}" eg-grid-column-drag-source>{{col.label}}</div>
-            </div>
-          </div>
-          <div eg-grid-column-drag-source 
-            drag-type="resize" column="{{col.name}}" 
-            class="eg-grid-column-resize-handle">&nbsp;</div>
-        </div>
-    </div>
-  </div>
-
-  <!-- Inline grid configuration row -->
-  <div class="eg-grid-row eg-grid-conf-row" ng-show="showGridConf">
-    <div class="eg-grid-cell eg-grid-cell-conf-header">
-      <div class="eg-grid-conf-cell-entry">[% l('Expand') %]</div>
-      <div class="eg-grid-conf-cell-entry">[% l('Shrink') %]</div>
-      <div class="eg-grid-conf-cell-entry" ng-if="!disableMultiSort">[% l('Sort') %]</div>
-    </div>
-    <div class="eg-grid-cell"
-      ng-repeat="col in columns"
-      style="flex:{{col.flex}}"
-      ng-show="col.visible">
-      <div class="eg-grid-conf-cell-entry">
-        <a href="" title="[% l('Make column wider') %]"
-          ng-click="modifyColumnFlex(col,1)">
-          <span class="glyphicon glyphicon-fast-forward"></span>
-        </a>
-      </div>
-      <div class="eg-grid-conf-cell-entry">
-        <a href="" title="[% l('Make column narrower') %]"
-          ng-click="modifyColumnFlex(col,-1)">
-          <span class="glyphicon glyphicon-fast-backward"></span>
-        </a>
-      </div>
-      <div class="eg-grid-conf-cell-entry" ng-if="!disableMultiSort">
-        <div ng-if="col.multisortable">
-          <input type='number' ng-model="col.sort"
-            title="[% l('Sort Priority / Direction') %]" style='width:2.3em'/>
-        </div>
-      </div>
-    </div>
-  </div>
-
-  <div class="eg-grid-content-body">
-    <div ng-show="items.length == 0" 
-      class="alert alert-info">[% l('No Items To Display') %]</div>
-
-    <div class="eg-grid-row" 
-        id="eg-grid-row-{{$index + 1}}"
-        ng-repeat="item in items"
-        ng-show="items.length > 0"
-        ng-class="{'eg-grid-row-selected' : selected[indexValue(item)]}">
-      <div class="eg-grid-cell eg-grid-cell-stock"
-        ng-click="handleRowClick($event, item)">
-        {{$index + offset() + 1}}
-      </div>
-      <div class="eg-grid-cell eg-grid-cell-stock">
-        <!-- ng-click=handleRowClick here has unintended 
-             consequences and is unnecessary, avoid it -->
-        <div>
-          <input type='checkbox'  
-            ng-model="selected[indexValue(item)]"/>
-        </div>
-      </div>
-      <div class="eg-grid-cell eg-grid-cell-content"
-          ng-click="handleRowClick($event, item)"
-          ng-repeat="col in columns"
-          style="flex:{{col.flex}}"
-          ng-show="col.visible">
-        {{itemFieldValue(item, col)}}
-      </div>
-    </div>
-  </div>
-
-
-</div>
-
diff --git a/Open-ILS/src/templates/staff/parts/t_confirm_dialog.tt2 b/Open-ILS/src/templates/staff/parts/t_confirm_dialog.tt2
deleted file mode 100644 (file)
index 45e8ca1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  Generic confirmation dialog
--->
-<div>
-  <div class="modal-header">
-    <button type="button" class="close" 
-      ng-click="cancel()" aria-hidden="true">&times;</button>
-    <h4 class="modal-title alert alert-info">{{title}}</h4> 
-  </div>
-  <div class="modal-body">{{message}}</div>
-  <div class="modal-footer">
-    [% dialog_footer %]
-    <input type="submit" class="btn btn-primary" 
-      ng-click="ok()" value="[% l('OK/Continue') %]"/>
-    <button class="btn btn-warning" 
-      ng-click="cancel()">[% l('Cancel') %]</button>
-  </div>
-</div>
diff --git a/Open-ILS/src/templates/staff/share/README b/Open-ILS/src/templates/staff/share/README
new file mode 100644 (file)
index 0000000..bcbddf5
--- /dev/null
@@ -0,0 +1,5 @@
+Location for globally shared template files.  These are generally used 
+by AngularJS directives.
+
+App-specific shared templates should live within the application's
+directory.
diff --git a/Open-ILS/src/templates/staff/share/t_alert_dialog.tt2 b/Open-ILS/src/templates/staff/share/t_alert_dialog.tt2
new file mode 100644 (file)
index 0000000..b71614a
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- 
+  Generic alert dialog.
+  The only user action allowed is the 'OK' button.
+-->
+<div>
+  <div class="modal-header">
+    <button type="button" class="close" 
+      ng-click="ok()" aria-hidden="true">&times;</button>
+    <h4 class="modal-title alert alert-danger">[% l('Alert') %]</h4>
+  </div>
+  <div class="modal-body">{{message}}</div>
+  <div class="modal-footer">
+    <input type="submit" 
+      class="btn btn-primary" ng-click="ok()" value="[% l('OK') %]"/>
+  </div>
+</div>
diff --git a/Open-ILS/src/templates/staff/share/t_autogrid.tt2 b/Open-ILS/src/templates/staff/share/t_autogrid.tt2
new file mode 100644 (file)
index 0000000..4e037ad
--- /dev/null
@@ -0,0 +1,260 @@
+
+<!-- 
+  Actions row.
+  This sits above the grid and contains the column picker, etc.
+-->
+
+<div class="eg-grid-row eg-grid-action-row">
+
+  <div style="flex:1">
+    <div class="eg-grid-primary-label">{{mainLabel}}</div>
+  </div>
+
+  <div class="btn-group" ng-if="menuLabel" dropdown style="margin-right: 10px">
+    <button type="button" class="btn btn-default dropdown-toggle">
+      {{menuLabel}}<span class="caret"></span>
+    </button>
+    <ul class="dropdown-menu">
+      <li ng-repeat="item in menuItems" ng-class="{divider: item.divider}">
+        <a ng-if="!item.divider" href
+          ng-click="item.handler(item, item.handlerData)">{{item.label}}</a>
+      </li>
+    </ul>
+  </div>
+
+  <!-- column picker, pager, etc. -->
+  <div class="btn-group column-picker">
+
+    <!-- first page -->
+    <button type="button" class="btn btn-default" 
+      ng-class="{disabled : onFirstPage()}" 
+      ng-click="offset(0);collect()"
+      title="[% l('Start') %]">
+        <span class="glyphicon glyphicon-fast-backward"></span>
+    </button>
+
+    <!-- previous page -->
+    <button type="button" class="btn btn-default" 
+      ng-class="{disabled : onFirstPage()}"
+      ng-click="decrementPage()"
+      title="[% l('Previous Page') %]">
+        <span class="glyphicon glyphicon-backward"></span>
+    </button>
+
+    <!-- next page -->
+    <!-- todo: paging needs a total count value to be fully functional -->
+    <button type="button" class="btn btn-default" 
+      ng-class="{disabled : !hasNextPage()}"
+      ng-click="incrementPage()"
+      title="[% l('Next Page') %]">
+        <span class="glyphicon glyphicon-forward"></span>
+    </button>
+
+    <!-- actions drop-down menu -->
+    <div class="btn-group" ng-if="actions.length" dropdown>                                                  
+      <button type="button" class="btn btn-default dropdown-toggle"
+        ng-class="{disabled : false}">
+        [% l('Actions') %] <span class="caret"></span>                       
+      </button>                                                              
+      <ul class="dropdown-menu pull-right">                                  
+        <li ng-class="{disabled : false}" ng-repeat="action in actions">
+          <a href="" ng-click="actionLauncher(action)">{{action.label}}</a>
+        </li>                                                                
+      </ul>
+    </div>
+
+    <div class="btn-group" dropdown>
+      <button type="button" title="[% ('Select Row Count') %]"
+        class="btn btn-default dropdown-toggle">
+        [% l('Rows [_1]', '{{limit()}}') %]
+        <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu">
+        <li ng-repeat="t in [5,10,25,50,100]">
+          <a href dropdown-toggle ng-click='offset(0);limit(t);collect()'>
+            {{t}}
+          </a>
+        </li>
+      </ul>
+    </div>
+
+    <div class="btn-group" dropdown>
+      <button type="button" title="[% ('Select Page') %]"
+        class="btn btn-default dropdown-toggle">
+        [% l('Page [_1]', '{{page()}}') %]
+        <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu">
+        <li>
+          <div class="input-group">
+            <input type="text" class="form-control"
+              ng-model="pageFromUI"
+              ng-click="$event.stopPropagation()"/>
+            <span class="input-group-btn">
+              <button class="btn btn-default" type="button"
+                ng-click="goToPage(pageFromUI);pageFromUI=''">
+                [% l('Go To...') %]
+              </button>
+            </span>
+          </div>
+        </li>
+        <li role="presentation" class="divider"></li>
+        <li ng-repeat="t in [1,2,3,4,5,10,25,50,100]">
+          <a href dropdown-toggle ng-click='goToPage(t)'>{{t}}</a>
+        </li>
+      </ul>
+    </div>
+
+    <div class="btn-group" dropdown>
+    <button type="button" 
+      class="btn btn-default dropdown-toggle">
+      <span class="caret"></span>
+    </button>
+    <ul class="dropdown-menu pull-right">
+      <li><a href dropdown-toggle ng-click="toggleConfDisplay()">
+        <span class="glyphicon glyphicon-wrench"></span>
+        [% l('Configure Columns') %]
+      </a></li>
+      <li><a href dropdown-toggle ng-click="saveConfig()">
+        <span class="glyphicon glyphicon-floppy-save"></span>
+        [% l('Save Columns') %]
+      </a></li>
+      <li><a href dropdown-toggle ng-click="showAllColumns()">
+        <span class="glyphicon glyphicon-resize-full"></span>
+        [% l('Show All Columns') %]
+      </a></li>
+      <li><a href dropdown-toggle ng-click="hideAllColumns()">
+        <span class="glyphicon glyphicon-resize-small"></span>
+        [% l('Hide All Columns') %]
+      </a></li>
+      <li><a ng-click="generateCSVExportURL()" 
+        download="{{csvExportFileName}}.csv" ng-href="{{csvExportURL}}">
+        <span class="glyphicon glyphicon-download"></span>
+        [% l('Download CSV') %]
+      </a></li>
+      <li><a href dropdown-toggle ng-click="printCSV()">
+        <span class="glyphicon glyphicon-print"></span>
+        [% l('Print CSV') %]
+      </a></li>
+      <li role="presentation" class="divider"></li>
+      <li ng-repeat="col in columns">
+        <a href dropdown-toggle ng-click="col.visible = !col.visible">
+            <span ng-if="col.visible" 
+              class="label label-success">&#x2713;</span>
+            <span ng-if="!col.visible" 
+              class="label label-warning">&#x2717;</span>
+            <span>{{col.label}}</span>
+        </a>
+      </li>
+    </ul>
+    </div>
+  </div>
+</div>
+
+<!-- Grid -->
+<div class="eg-grid" ng-class="{'eg-grid-as-conf' : showGridConf}">
+
+  <!-- import our eg-grid-field defs -->
+  <div ng-transclude></div>
+
+  <div class="eg-grid-row eg-grid-header-row">
+    <div class="eg-grid-cell eg-grid-cell-stock">
+      <div>[% l('#') %]</div>
+    </div>
+    <div class="eg-grid-cell eg-grid-cell-stock">
+      <div>
+        <input type='checkbox' ng-click="toggleSelectAllItems()"/>
+      </div>
+    </div>
+    <div class="eg-grid-cell"
+        eg-grid-column-drag-dest
+        column="{{col.name}}"
+        eg-right-click="onContextMenu($event)"
+        ng-repeat="col in columns"
+        style="flex:{{col.flex}}"
+        ng-show="col.visible">
+
+        <div style="display:flex">
+          <div style="flex:1" class="eg-grid-column-move-handle">
+            <div ng-if="col.sortable">
+              <a column="{{col.name}}" href='' 
+                eg-grid-column-drag-source
+                ng-click="quickSort(col.name)">{{col.label}}</a>
+            </div>
+            <div ng-if="!col.sortable">
+              <div column="{{col.name}}" eg-grid-column-drag-source>{{col.label}}</div>
+            </div>
+          </div>
+          <div eg-grid-column-drag-source 
+            drag-type="resize" column="{{col.name}}" 
+            class="eg-grid-column-resize-handle">&nbsp;</div>
+        </div>
+    </div>
+  </div>
+
+  <!-- Inline grid configuration row -->
+  <div class="eg-grid-row eg-grid-conf-row" ng-show="showGridConf">
+    <div class="eg-grid-cell eg-grid-cell-conf-header">
+      <div class="eg-grid-conf-cell-entry">[% l('Expand') %]</div>
+      <div class="eg-grid-conf-cell-entry">[% l('Shrink') %]</div>
+      <div class="eg-grid-conf-cell-entry" ng-if="!disableMultiSort">[% l('Sort') %]</div>
+    </div>
+    <div class="eg-grid-cell"
+      ng-repeat="col in columns"
+      style="flex:{{col.flex}}"
+      ng-show="col.visible">
+      <div class="eg-grid-conf-cell-entry">
+        <a href="" title="[% l('Make column wider') %]"
+          ng-click="modifyColumnFlex(col,1)">
+          <span class="glyphicon glyphicon-fast-forward"></span>
+        </a>
+      </div>
+      <div class="eg-grid-conf-cell-entry">
+        <a href="" title="[% l('Make column narrower') %]"
+          ng-click="modifyColumnFlex(col,-1)">
+          <span class="glyphicon glyphicon-fast-backward"></span>
+        </a>
+      </div>
+      <div class="eg-grid-conf-cell-entry" ng-if="!disableMultiSort">
+        <div ng-if="col.multisortable">
+          <input type='number' ng-model="col.sort"
+            title="[% l('Sort Priority / Direction') %]" style='width:2.3em'/>
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <div class="eg-grid-content-body">
+    <div ng-show="items.length == 0" 
+      class="alert alert-info">[% l('No Items To Display') %]</div>
+
+    <div class="eg-grid-row" 
+        id="eg-grid-row-{{$index + 1}}"
+        ng-repeat="item in items"
+        ng-show="items.length > 0"
+        ng-class="{'eg-grid-row-selected' : selected[indexValue(item)]}">
+      <div class="eg-grid-cell eg-grid-cell-stock"
+        ng-click="handleRowClick($event, item)">
+        {{$index + offset() + 1}}
+      </div>
+      <div class="eg-grid-cell eg-grid-cell-stock">
+        <!-- ng-click=handleRowClick here has unintended 
+             consequences and is unnecessary, avoid it -->
+        <div>
+          <input type='checkbox'  
+            ng-model="selected[indexValue(item)]"/>
+        </div>
+      </div>
+      <div class="eg-grid-cell eg-grid-cell-content"
+          ng-click="handleRowClick($event, item)"
+          ng-repeat="col in columns"
+          style="flex:{{col.flex}}"
+          ng-show="col.visible">
+        {{itemFieldValue(item, col)}}
+      </div>
+    </div>
+  </div>
+
+
+</div>
+
diff --git a/Open-ILS/src/templates/staff/share/t_confirm_dialog.tt2 b/Open-ILS/src/templates/staff/share/t_confirm_dialog.tt2
new file mode 100644 (file)
index 0000000..45e8ca1
--- /dev/null
@@ -0,0 +1,18 @@
+<!--
+  Generic confirmation dialog
+-->
+<div>
+  <div class="modal-header">
+    <button type="button" class="close" 
+      ng-click="cancel()" aria-hidden="true">&times;</button>
+    <h4 class="modal-title alert alert-info">{{title}}</h4> 
+  </div>
+  <div class="modal-body">{{message}}</div>
+  <div class="modal-footer">
+    [% dialog_footer %]
+    <input type="submit" class="btn btn-primary" 
+      ng-click="ok()" value="[% l('OK/Continue') %]"/>
+    <button class="btn btn-warning" 
+      ng-click="cancel()">[% l('Cancel') %]</button>
+  </div>
+</div>
diff --git a/Open-ILS/src/templates/staff/statusbar.tt2 b/Open-ILS/src/templates/staff/statusbar.tt2
new file mode 100644 (file)
index 0000000..7eef88b
--- /dev/null
@@ -0,0 +1,33 @@
+<!-- Status bar along the bottom of the page -->
+
+<div id="status-bar" 
+  class="navbar navbar-default navbar-fixed-bottom" 
+  role="navigation">
+
+  <!-- 
+    Define the status bar as a directive so it may be used globally.
+    The template is defined inline (below) to leverage i18n and 
+    so one less network fetch is required.
+  -->
+  <eg-status-bar></eg-status-bar>
+  <script type="text/ng-template" id="eg-status-bar-template">
+    <ul class="nav navbar-nav navbar-right">
+      <li>{{messages[0]}}</li>
+      <li>
+        <span 
+          ng-click="hatchConnect()"
+          title="[% l('Print/Store Connection Status') %]"
+          class="glyphicon glyphicon-transfer"
+          ng-class="{'status-bar-connected' : hatchConnected()}">
+        </span>
+      </li>
+      <li>
+        <span 
+          title="[% l('Network Connection Status') %]"
+          class="glyphicon glyphicon-signal"
+          ng-class="{'status-bar-connected' : netConnected()}">
+        </span>
+      </li>
+    </ul>    
+  </script>
+</div>
diff --git a/Open-ILS/src/templates/staff/t_base.tt2 b/Open-ILS/src/templates/staff/t_base.tt2
deleted file mode 100644 (file)
index c9a8d95..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<!doctype html>
-[%- 
-  EVERGREEN_VERSION='0.0.1' 
-
-  # create script / css refs to individual files instead of using
-  EXPAND_WEB_IMPORTS=1; 
-%]
-<html lang="[% ctx.locale %]"
-    [%- IF ctx.page_app %] ng-app="[% ctx.page_app %]"[% END -%]
-    [%- IF ctx.page_ctrl %] ng-controller="[% ctx.page_ctrl %]"[% END %]>
-  <head>
-    <title>[% l('Evergreen Staff [_1]', ctx.page_title) %]</title>
-    <base href="/eg/staff/">
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <!-- TODO: remote hosted CSS should be hosted locally instead -->
-    [% IF EXPAND_WEB_IMPORTS %]
-    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/bootstrap.min.css" />
-    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/hotkeys.min.css" />
-    [% ELSE %]
-    <link rel="stylesheet" href="[% ctx.media_prefix %]/js/ui/default/staff/build/css/evergreen-staff-client-deps.[% EVERGREEN_VERSION %].min.css" />
-    [% END %]
-    <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/style.css" />
-    <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/print.css" type="text/css" media="print" />
-  </head>
-  <body>
-    <!-- load the navbar template inline since it's used on every page -->
-    <script type="text/ng-template" id="eg-navbar-template">
-      [% INCLUDE "staff/t_navbar.tt2" %]
-    </script>
-    <!-- instantiate the navbar by invoking it's name -->
-    <eg-navbar></eg-navbar>
-
-    <div id="top-content-container" class="container">[% content %]</div>
-    [% 
-      # status bar along bottom of page
-      INCLUDE "staff/parts/statusbar.tt2";
-
-      # script imports
-      INCLUDE "staff/t_base_js.tt2";
-
-      # App-specific JS load commands go into an APP_JS block.
-      PROCESS APP_JS;
-    %]
-    <div id="print-div" eg-print-container></div>
-  </body>
-</html>
diff --git a/Open-ILS/src/templates/staff/t_base_js.tt2 b/Open-ILS/src/templates/staff/t_base_js.tt2
deleted file mode 100644 (file)
index e56cf47..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<script src="/IDL2js"></script>
-
-[% IF EXPAND_WEB_IMPORTS %]
-
-<!-- angular -->
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular.min.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/angular-route.min.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/ui-bootstrap-tpls.min.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/hotkeys.min.js"></script>
-
-<!-- IDL / opensrf (network) -->
-<script src="[% ctx.media_prefix %]/js/dojo/opensrf/JSON_v1.js"></script>
-<script src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf.js"></script>
-<script src="[% ctx.media_prefix %]/js/dojo/opensrf/opensrf_ws.js"></script>
-
-<!-- evergreen core services -->
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/core.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/strings.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/idl.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/event.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/net.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/auth.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/pcrud.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/env.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/org.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/startup.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/hatch.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/coresvc.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/navbar.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/statusbar.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/ui.js"></script>
-
-[% ELSE %]
-
-<!-- concatenated, minified version of all of the above -->
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/build/js/evergreen-staff-client.[% EVERGREEN_VERSION %].min.js"></script>
-
-[% END %]
-
-<script>
-  // Configure OpenSRF
-  // pending api_level thunking in C
-  // OpenSRF.api_level = 2;
-  OpenSRF.Session.transport = OSRF_TRANSPORT_TYPE_WS;
-</script>
-
diff --git a/Open-ILS/src/templates/staff/t_navbar.tt2 b/Open-ILS/src/templates/staff/t_navbar.tt2
deleted file mode 100644 (file)
index b6dea13..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<!-- 
-  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-static-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">
-      <li><a href='./' title="[% l('Home') %]" target="_self"
-        class="glyphicon glyphicon-home"></a><li>
-
-      <!-- circulation -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle"
-          data-toggle="dropdown">[% l('Circulation') %]
-          <b class="caret"></b>
-        </a>
-
-        <ul class="dropdown-menu">
-          <li>
-            <a href="./circ/patron/bcsearch" target="_self">
-              <span class="glyphicon glyphicon-export"></span>
-              [% l('Check Out') %]
-            </a>
-          </li>
-          <li>
-            <a href="./circ/patron/search" target="_self"
-              eg-accesskey="[% l('alt+s') %]" 
-              eg-accesskey-desc="[% l('Patron search by name, address, etc.') %]">
-              <span class="glyphicon glyphicon-search"></span>
-              <span eg-accesskey-label>[% l('Patron Search') %]</span>
-            </a>
-          </li>
-          <li>
-            <a href="./circ/checkin/index" target="_self">
-              <span class="glyphicon glyphicon-import"></span>
-              [% l('Check In') %]
-            </a>
-          </li>
-          <!-- sample sub-menu
-          <li class="divider"></li>
-          <li class="dropdown-header">Sub Menu Test</li>
-          <li><a href="javascript:;">Test Item</a></li>
-          -->
-        </ul>
-      </li>
-
-      <!-- cataloging -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle" 
-          data-toggle="dropdown">[% l('Cataloging') %]
-            <b class="caret"></b>
-        </a>
-        <ul class="dropdown-menu">
-          <li>
-            <a href="./cat/bucket/record/view" target="_self">
-              <span class="glyphicon glyphicon-list-alt"></span>
-              [% l('Record Buckets') %]
-            </a>
-          </li>
-       </ul>
-      </li>
-
-      <!-- cataloging -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle" 
-          data-toggle="dropdown">[% l('Administration') %]
-            <b class="caret"></b>
-        </a>
-        <ul class="dropdown-menu">
-          <li>
-            <a href="./admin/workstation/index" target="_self">
-              <span class="glyphicon glyphicon-hdd"></span>
-              [% l('Workstation') %]
-            </a>
-          </li>
-       </ul>
-      </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" 
-          ng-init="workstation = '[% l('<no workstation>') %]'">
-            [% l('{{username}} @ {{workstation}}') %]
-        </a>
-      </li>
-
-      <!-- locale selector.  
-        only shown if multiple locales are registered -->
-      [% IF ctx.locales.keys.size > 1 %]
-      <li class="dropdown">
-        <a href='' class="dropdown-toggle" data-toggle="dropdown">
-            [% lcl = ctx.locale;  ctx.locales.$lcl %]
-            <span class="glyphicon glyphicon-flag"></span>
-        </a>
-        <ul class="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">
-        <a href='' class="dropdown-toggle glyphicon glyphicon-list" 
-          data-toggle="dropdown"></a>
-        <ul class="dropdown-menu">
-          <li class="disabled">
-            <a href="" ng-click="" target="_self">
-              <span class="glyphicon glyphicon-random"></span>
-              [% l('Change Operator') %]
-            </a>
-          </li>
-          <li>
-            <a href="./login" ng-click="logout()" target="_self">
-              <span class="glyphicon glyphicon-log-out"></span>
-              [% l('Log Out') %]
-            </a>
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </div>
-</div>
-
-
index dad5239..360ac91 100644 (file)
@@ -69,7 +69,7 @@ angular.module('egGridMod',
         },
 
         // TODO: avoid hard-coded url
-        templateUrl : '/eg/staff/parts/t_autogrid', 
+        templateUrl : '/eg/staff/share/t_autogrid', 
 
         link : function(scope, element, attrs) {     
             // link() is called after page compilation, which means our
index f76f1cb..8605e26 100644 (file)
@@ -91,7 +91,7 @@ function($modal , $interpolate) {
 
     service.open = function(message, msg_scope) {
         return $modal.open({
-            templateUrl: './parts/t_alert_dialog',
+            templateUrl: './share/t_alert_dialog',
             controller: ['$scope', '$modalInstance',
                 function($scope, $modalInstance) {
                     $scope.message = $interpolate(message)(msg_scope);
@@ -119,7 +119,7 @@ function($modal, $interpolate) {
 
     service.open = function(title, message, msg_scope) {
         return $modal.open({
-            templateUrl: './parts/t_confirm_dialog',
+            templateUrl: './share/t_confirm_dialog',
             controller: ['$scope', '$modalInstance',
                 function($scope, $modalInstance) {
                     $scope.title = $interpolate(title)(msg_scope);