LP#1452950 Patron reg pending users (wip) user/berick/lp1452950-web-client-patron-reg-pending-users
authorBill Erickson <berickxx@gmail.com>
Sun, 21 Feb 2016 23:43:53 +0000 (18:43 -0500)
committerBill Erickson <berickxx@gmail.com>
Sun, 21 Feb 2016 23:43:53 +0000 (18:43 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 4326cb5..c1e769e 100644 (file)
 
 <div id="reg-alert-pane">
 
-       <div id="reg-dupe-links">
-               [%# dupe_search_encoded is uri escaped in the JS %]
-               <div class="alert alert-danger" ng-show="dupe_counts.name">
-                       <a target="_blank"
-                               href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
-                       [% l('[_1] patron(s) with same name', '{{dupe_counts.name}}') %]
-                       </a>
-               </div>
-               <div class="alert alert-danger" ng-show="dupe_counts.email">
-                       <a target="_blank"
-                               href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
-                               [% l('[_1] patron(s) with same email', 
-                               '{{dupe_counts.email}}') %]</a>
-               </div>
-               <div class="alert alert-danger" ng-show="dupe_counts.ident">
-                       <a target="_blank" 
-                               href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
-                               [% l('[_1] patron(s) with same identification', 
-                               '{{dupe_counts.ident}}') %]</a>
-               </div>
-               <div class="alert alert-danger" ng-show="dupe_counts.phone">
-                       <a target="_blank" 
-                               href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
-                               [% l('[_1] patron(s) with same phone', 
-                               '{{dupe_counts.phone}}') %]</a>
-               </div>
-               <div class="alert alert-danger" ng-show="dupe_counts.address">
-                       <a target="_blank" 
-                               href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}" >
-                               [% l('[_1] patron(s) with same address', 
-                               '{{dupe_counts.address}}') %]</a>
-               </div>
-       </div>
-
-       <!-- IDL field documentation window -->
+  <div id="reg-dupe-links">
+    [%# dupe_search_encoded is uri escaped in the JS %]
+    <div class="alert alert-danger" ng-show="dupe_counts.name">
+      <a target="_blank"
+        href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
+      [% l('[_1] patron(s) with same name', '{{dupe_counts.name}}') %]
+      </a>
+    </div>
+    <div class="alert alert-danger" ng-show="dupe_counts.email">
+      <a target="_blank"
+        href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
+        [% l('[_1] patron(s) with same email', 
+        '{{dupe_counts.email}}') %]</a>
+    </div>
+    <div class="alert alert-danger" ng-show="dupe_counts.ident">
+      <a target="_blank" 
+        href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
+        [% l('[_1] patron(s) with same identification', 
+        '{{dupe_counts.ident}}') %]</a>
+    </div>
+    <div class="alert alert-danger" ng-show="dupe_counts.phone">
+      <a target="_blank" 
+        href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}">
+        [% l('[_1] patron(s) with same phone', 
+        '{{dupe_counts.phone}}') %]</a>
+    </div>
+    <div class="alert alert-danger" ng-show="dupe_counts.address">
+      <a target="_blank" 
+        href="/eg/staff/circ/patron/search?search={{dupe_search_encoded}}" >
+        [% l('[_1] patron(s) with same address', 
+        '{{dupe_counts.address}}') %]</a>
+    </div>
+  </div>
+
+  <!-- IDL field documentation window -->
   <div class="alert alert-info" ng-show="selected_field_doc">
     <fieldset id="reg-field-doc">
       <legend>
       <div>{{selected_field_doc.string()}}</div>
     </fieldset>
   </div>
+
+  <div class="alert alert-info" ng-show="stage_user_requestor">
+    <a target="_blank" 
+      href="/eg/staff/circ/patron/{{stage_user.reqesting_usr()}}/edit">
+      [% l('Requested by [_1]', '{{stage_user_requestor}}') %]
+    </a>
+  </div>
 </div>
 
 
index a1bd339..e578aa9 100644 (file)
@@ -42,6 +42,7 @@ angular.module('egCoreMod')
             service.get_stat_cats(),
             service.get_surveys(),
             service.get_clone_user(),
+            service.get_stage_user(),
             service.get_net_access_levels()
         ]);
     };
@@ -66,6 +67,48 @@ angular.module('egCoreMod')
         });
     }
 
+    service.get_stage_user = function() {
+        if (!service.stage_username) return $q.when();
+
+        // fetch the staged user object
+        return egCore.net.request(
+            'open-ils.actor',
+            'open-ils.actor.user.stage.retrieve.by_username',
+            egCore.auth.token(), 
+            service.stage_username
+        ).then(function(suser) {
+            if (e = egCore.evt.parse(suser)) {
+                alert(e);
+            } else {
+                service.stage_user = suser;
+            }
+        }).then(function() {
+
+            if (!service.stage_user) return;
+            var requestor = service.stage_user.user.requesting_usr();
+
+            if (!requestor) return;
+
+            // fetch the requesting user
+            return egCore.net.request(
+                'open-ils.actor', 
+                'open-ils.actor.user.retrieve.parts',
+                egCore.auth.token(),
+                requestor, 
+                ['family_name', 'first_given_name', 'second_given_name'] 
+            ).then(function(parts) {
+                service.stage_user_requestor = 
+                    service.format_name(parts[0], parts[1], parts[2]);
+            })
+        });
+    }
+
+    // See note above about not loading egUser.
+    // TODO: i18n
+    service.format_name = function(last, first, middle) {
+        return last + ', ' + first + (middle ? ' ' + middle : '');
+    }
+
     //service.check_grp_app_perm = function(grp_id) {
 
     // determine which user groups our user is not allowed to modify
@@ -557,6 +600,9 @@ angular.module('egCoreMod')
         return user;
     }
 
+    service.copy_stage_data = function(user) {
+    }
+
     // copy select values from the cloned user to the new user.
     // user is a hash
     service.copy_clone_data = function(user) {
@@ -635,12 +681,11 @@ angular.module('egCoreMod')
                 user.billing_address._is_billing = true;
                 user.addresses.push(user.billing_address);
                 user.billing_address._linked_owner_id = clone_user.id();
-                // TODO: see note above about egUser, which has its
-                // own name formatting function.
-                user.billing_address._linked_owner =
-                    clone_user.family_name() + ', ' + 
-                    clone_user.first_given_name() + ' ' + 
-                    clone_user.second_given_name();
+                user.billing_address._linked_owner = service.format_name(
+                    clone_user.family_name(),
+                    clone_user.first_given_name(),
+                    clone_user.second_given_name()
+                );
             }
 
             if (addr = clone_user.mailing_address()) {
@@ -654,12 +699,11 @@ angular.module('egCoreMod')
                     user.mailing_address._is_mailing = true;
                     user.addresses.push(user.mailing_address);
                     user.mailing_address._linked_owner_id = clone_user.id();
-                    // TODO: see note above about egUser, which has its
-                    // own name formatting function.
-                    user.mailing_address._linked_owner =
-                        clone_user.family_name() + ', ' + 
-                        clone_user.first_given_name() + ' ' + 
-                        clone_user.second_given_name();
+                    user.mailing_address._linked_owner = service.format_name(
+                        clone_user.family_name(),
+                        clone_user.first_given_name(),
+                        clone_user.second_given_name()
+                    );
                 }
             }
         }
@@ -806,8 +850,9 @@ function PatronRegCtrl($scope, $routeParams,
     $q, $modal, $window, egCore, patronSvc, patronRegSvc, egUnloadPrompt) {
 
     $scope.page_data_loaded = false;
-    $scope.clone_id = patronRegSvc.clone_id = $routeParams.clone_id;
-    $scope.stage_username = $routeParams.stage_username;
+    $scope.clone_id = $routeParams.clone_id;
+    $scope.stage_username = 
+        patronRegSvc.stage_username = $routeParams.stage_username;
     $scope.patron_id = 
         patronRegSvc.patron_id = $routeParams.edit_id || $routeParams.id;
 
@@ -894,6 +939,8 @@ function PatronRegCtrl($scope, $routeParams,
         $scope.surveys = prs.surveys;
         $scope.survey_responses = prs.survey_responses;
         $scope.stat_cat_entry_maps = prs.stat_cat_entry_maps;
+        $scope.stage_user = prs.stage_user;
+        $scope.stage_user_requestor = prs.stage_user_requestor;
 
         $scope.user_settings = prs.user_settings;
         // clone the user settings back into the patronRegSvc so