initial patron reg / clone / edit integration (experimental)
authorBill Erickson <berick@esilibrary.com>
Fri, 11 Jul 2014 21:11:38 +0000 (17:11 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 11 Jul 2014 21:11:38 +0000 (17:11 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/staff/circ/patron/register.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/css/style.css.tt2
Open-ILS/src/templates/staff/navbar.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/register.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/services/lframe.js [new file with mode: 0644]

diff --git a/Open-ILS/src/templates/staff/circ/patron/register.tt2 b/Open-ILS/src/templates/staff/circ/patron/register.tt2
new file mode 100644 (file)
index 0000000..53505a1
--- /dev/null
@@ -0,0 +1,15 @@
+[%
+  WRAPPER "staff/base.tt2";
+  ctx.page_title = l("Patron Registration"); 
+  ctx.page_app = "egPatronRegApp";
+%]
+
+[% BLOCK APP_JS %]
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/lframe.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/register.js"></script>
+<link rel="stylesheet" href="[% ctx.base_path %]/staff/css/circ.css" />
+[% END %]
+
+<div ng-view></div>
+
+[% END %]
index 6b1f31b..7d555a7 100644 (file)
@@ -169,6 +169,13 @@ table.list tr.selected td { /* deprecated? */
   white-space:nowrap;
 }
 
+.eg-legacy-frame {
+  width: 100%;
+  border: none;
+  margin: 0px;
+  padding: 0px;
+}
+
 /* ----------------------------------------------------------------------
  * Grid
  * ---------------------------------------------------------------------- */
index 036dc40..7bf674c 100644 (file)
             </a>
           </li>
           <li>
+            <a href="./circ/patron/register" target="_self">
+              <span class="glyphicon glyphicon-refresh"></span>
+              [% l('Register Patron') %]
+            </a>
+          </li>
+          <li>
             <a href="./circ/patron/last" target="_self">
               <span class="glyphicon glyphicon-share-alt"></span>
               [% l('Retrieve Last Patron') %]
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/register.js b/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
new file mode 100644 (file)
index 0000000..705c4cc
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * Patron App
+ *
+ * Search, checkout, items out, holds, bills, edit, etc.
+ */
+
+angular.module('egPatronRegApp', ['ui.bootstrap','ngRoute','egCoreMod'])
+
+
+.config(function($routeProvider, $locationProvider, $compileProvider) {
+    $locationProvider.html5Mode(true);
+    $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|blob):/); // grid export
+
+    var resolver = {delay : 
+        ['egStartup', function(egStartup) {return egStartup.go()}]}
+
+    $routeProvider.when('/circ/patron/register', {
+        template: '<eg-legacy-frame url="reg_url"></eg-legacy-frame>',
+        controller: 'PatronRegCtrl',
+        resolve : resolver
+    });
+
+    $routeProvider.when('/circ/patron/register/stage/:stage_username', {
+        template: '<eg-legacy-frame url="reg_url"></eg-legacy-frame>',
+        controller: 'PatronRegCtrl',
+        resolve : resolver
+    });
+
+    $routeProvider.when('/circ/patron/register/edit/:edit_id', {
+        template: '<eg-legacy-frame url="reg_url"></eg-legacy-frame>',
+        controller: 'PatronRegCtrl',
+        resolve : resolver
+    });
+
+    $routeProvider.when('/circ/patron/register/clone/:clone_id', {
+        template: '<eg-legacy-frame url="reg_url"></eg-legacy-frame>',
+        controller: 'PatronRegCtrl',
+        resolve : resolver
+    });
+
+    $routeProvider.otherwise({redirectTo : '/circ/patron/register'});
+})
+
+
+/**
+ * */
+.controller('PatronRegCtrl',
+       ['$scope','$routeParams','$location','$filter','egCore',
+function($scope , $routeParams , $location , $filter , egCore) {
+    
+
+    var url = $location.absUrl().replace(/\/staff.*/, '/actor/user/register');
+
+    // since we don't store auth cookies, pass the cookie via URL
+    url += '?ses=' + egCore.auth.token();
+
+    if ($routeParams.stage_username) {
+        url += '&stage=' + encodeURIComponent($routeParams.stage_username);
+    }
+
+    if ($routeParams.edit_id) {
+        url += '&usr=' + encodeURIComponent($routeParams.edit_id);
+    }
+
+    if ($routeParams.clone_id) {
+        url += '&clone=' + encodeURIComponent($routeParams.clone_id);
+    }
+
+    console.log('URL = ' + url);
+    $scope.reg_url = url;
+}])
diff --git a/Open-ILS/web/js/ui/default/staff/services/lframe.js b/Open-ILS/web/js/ui/default/staff/services/lframe.js
new file mode 100644 (file)
index 0000000..a5ea654
--- /dev/null
@@ -0,0 +1,25 @@
+angular.module('egCoreMod')
+
+/*
+ * Iframe container for legacy interfaces
+ */
+.directive('egLegacyFrame', function() {
+    return {
+        restrict : 'AE',
+        scope : {
+            url : '='
+        },
+
+        template : '<iframe src="{{url}}" class="eg-legacy-frame" '
+            + 'style="height:{{height}}px"></iframe>',
+
+        controller : ['$scope','$window', function($scope, $window) {
+
+            // Set the iframe height to just under the window height.
+            // leave room for the navbar, padding, margins, etc.
+            $scope.height = $window.outerHeight - 250;
+        }]
+    }
+})
+
+