patron reg
authorBill Erickson <berickxx@gmail.com>
Mon, 4 May 2015 01:19:51 +0000 (21:19 -0400)
committerBill Erickson <berickxx@gmail.com>
Mon, 4 May 2015 01:19:51 +0000 (21:19 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/circ/patron/index.tt2
Open-ILS/src/templates/staff/circ/patron/register.tt2
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/src/templates/staff/css/circ.css.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/app.js
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/patron/register.js

index bb0d2f8..3234b95 100644 (file)
@@ -17,6 +17,7 @@
 [% INCLUDE 'staff/circ/share/hold_strings.tt2' %]
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/record.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/app.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/regctl.js"></script>
 
 <!-- load the rest on demand? -->
 
index 4a3c9ce..b943d6d 100644 (file)
@@ -5,8 +5,8 @@
 %]
 
 [% BLOCK APP_JS %]
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/eframe.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/register.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/regctl.js"></script>
 <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/circ.css" />
 [% END %]
 
index 3f85366..98f0102 100644 (file)
@@ -1,2 +1,36 @@
-<eg-embed-frame url="patron_edit_url" handlers="funcs"></eg-embed-frame>
+[% DOC_IMG = '/images/question-mark.png' %]
+
+<div class="strong-text-2">[% l('Patron Edit') %]</div>
+
+<!-- IDL field documentation -->
+<fieldset id="reg-field-doc" ng-show="selected_field_doc">
+    <legend>{{idl_fields[selected_field_doc.fm_class()][selected_field_doc.field()].label}}</legend>
+    <div>{{selected_field_doc.string()}}</div>
+</fieldset>
+
+
+<div class="row pad-all-min">
+    <div class="col-md-3 reg-field-label">
+        <span>{{idl_fields.ac.barcode.label}}</span>
+        <img ng-show="field_doc.ac.barcode" 
+            ng-click="selected_field_doc=field_doc.ac.barcode"
+            src='[% DOC_IMG %]'></img>
+    </div>
+    <div class="col-md-3 reg-field-input">
+        <input type="text" ng-model="patron.card.barcode"/>
+    </div>
+</div>
+
+<div class="row pad-all-min">
+    <div class="col-md-3 reg-field-label">
+        <span>{{idl_fields.au.usrname.label}}</span>
+        <img ng-show="field_doc.au.usrname" 
+            ng-click="selected_field_doc=field_doc.au.usrname"
+            src='[% DOC_IMG %]'></img>
+    </div>
+    <div class="col-md-3 reg-field-input">
+        <input type="text" ng-model="patron.usrname"/>
+    </div>
+</div>
+
 
index 8d6c139..c0f44b8 100644 (file)
@@ -54,6 +54,27 @@ but the ones I'm finding aren't quite cutting it..*/
   border-bottom: 1px solid #CCC;
 }
 
+.reg-field-doc {
+    width: 21px;
+    background-image: url("/opac/images/advancedsearch-icon.png");
+}
+
+#reg-field-doc {
+    position: fixed;
+    top:124px;
+    right:30px;
+    width:300px;
+    border:2px dashed #d9e8f9;
+    -moz-border-radius: 10px;
+    font-weight: bold;
+    padding: 20px;
+    margin-top: 20px;
+}
+
+#reg-field-doc legend {
+    font-size: 100%;
+}
+
 
 [%# 
 vim: ft=css 
index f80486f..b3001c9 100644 (file)
@@ -157,7 +157,7 @@ angular.module('egPatronApp', ['ngRoute', 'ui.bootstrap',
 
     $routeProvider.when('/circ/patron/:id/edit', {
         templateUrl: './circ/patron/t_edit',
-        controller: 'PatronEditCtrl',
+        controller: 'PatronRegCtrl',
         resolve : resolver
     });
 
@@ -1141,26 +1141,6 @@ function($scope , $q , $routeParams,  egCore , $modal , patronSvc , egCirc) {
 
 
 /**
- * Link to patron edit UI
- */
-.controller('PatronEditCtrl',
-       ['$scope','$routeParams','$location','egCore','patronSvc',
-function($scope,  $routeParams,  $location , egCore , patronSvc) {
-    $scope.initTab('edit', $routeParams.id);
-
-    var url = $location.absUrl().replace(/\/staff.*/, '/actor/user/register');
-    url += '?usr=' + encodeURIComponent($routeParams.id);
-
-    $scope.funcs = {
-        on_save : function() {
-            patronSvc.refreshPrimary();
-        }
-    }
-
-    $scope.patron_edit_url = url;
-}])
-
-/**
  * Credentials tester
  */
 .controller('PatronVerifyCredentialsCtrl',
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
new file mode 100644 (file)
index 0000000..1e72b75
--- /dev/null
@@ -0,0 +1,72 @@
+
+angular.module('egCoreMod')
+// toss tihs onto egCoreMod since the page app may vary
+
+.factory('patronRegSvc', ['$q', 'egCore', function($q, egCore) {
+
+    var service = {};
+
+    service.init = function(scope) {
+        return $q.all([
+            service.get_field_doc(),
+        ]);
+    };
+
+    service.get_field_doc = function() {
+
+        service.field_doc = {};
+
+        return egCore.pcrud.search('fdoc', {
+            fm_class: ['au', 'ac', 'aua', 'actsc', 'asv', 'asvq', 'asva']})
+        .then(null, null, function(doc) {
+            if (!service.field_doc[doc.fm_class()]) {
+                service.field_doc[doc.fm_class()] = {};
+            }
+            service.field_doc[doc.fm_class()][doc.field()] = doc;
+        });
+    };
+
+
+    return service;
+}]);
+
+
+function PatronRegCtrl($scope, $routeParams, 
+    $location, egCore, patronSvc, patronRegSvc) {
+
+    patronRegSvc.init().then(function() {
+        $scope.field_doc = patronRegSvc.field_doc;
+    });
+
+    // only add the classes we care about to the scope to avoid bloat
+    $scope.idl_fields = {
+        au  : egCore.idl.classes.au.field_map,
+        ac  : egCore.idl.classes.ac.field_map,
+        aua : egCore.idl.classes.aua.field_map
+    };
+
+    if ($scope.initTab) {
+        // Inside the patron app
+        
+        $scope.initTab('other', $routeParams.id).then(function() {
+
+            $scope.patron = egCore.idl.toHash(patronSvc.current);
+
+        });
+
+    } else {
+        // Outside of the patron app
+
+        $scope.patron_id = $routeParams.edit_id;
+        $scope.clone_id = $routeParams.clone_id;
+        $scope.stage_username = $routeParams.stage_username;
+
+        $scope.patron = {
+            card : {}
+        };
+        $scope.patron.isnew = true;
+    }
+}
+
+
+// TODO: $inject controller params 
index 13b4a41..b8cbe27 100644 (file)
@@ -15,25 +15,25 @@ angular.module('egPatronRegApp', ['ui.bootstrap','ngRoute','egCoreMod'])
         ['egStartup', function(egStartup) {return egStartup.go()}]}
 
     $routeProvider.when('/circ/patron/register', {
-        template: '<eg-embed-frame url="reg_url"></eg-embed-frame>',
+        templateUrl: './circ/patron/t_edit',
         controller: 'PatronRegCtrl',
         resolve : resolver
     });
 
     $routeProvider.when('/circ/patron/register/stage/:stage_username', {
-        template: '<eg-embed-frame url="reg_url"></eg-embed-frame>',
+        templateUrl: './circ/patron/t_edit',
         controller: 'PatronRegCtrl',
         resolve : resolver
     });
 
     $routeProvider.when('/circ/patron/register/edit/:edit_id', {
-        template: '<eg-embed-frame url="reg_url"></eg-embed-frame>',
+        templateUrl: './circ/patron/t_edit',
         controller: 'PatronRegCtrl',
         resolve : resolver
     });
 
     $routeProvider.when('/circ/patron/register/clone/:clone_id', {
-        template: '<eg-embed-frame url="reg_url"></eg-embed-frame>',
+        templateUrl: './circ/patron/t_edit',
         controller: 'PatronRegCtrl',
         resolve : resolver
     });
@@ -41,32 +41,7 @@ angular.module('egPatronRegApp', ['ui.bootstrap','ngRoute','egCoreMod'])
     $routeProvider.otherwise({redirectTo : '/circ/patron/register'});
 })
 
+// dummy service so standalone patron editor can reference it
+.factory('patronSvc', function() {});
 
-/**
- * */
-.controller('PatronRegCtrl',
-       ['$scope','$routeParams','$location','egCore',
-function($scope , $routeParams , $location , 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);
-    }
 
-    // pass the reg URL into the scope, thus into the 
-    $scope.reg_url = url;
-}])