LP1823225 Patron Penalty Refresh Action
authorBill Erickson <berickxx@gmail.com>
Mon, 11 Jul 2022 18:06:44 +0000 (14:06 -0400)
committerMichele Morgan <mmorgan@noblenet.org>
Thu, 4 Aug 2022 20:49:41 +0000 (16:49 -0400)
New menu entry added under the 'Other' menu for patrons.  It refreshes
the patron's penalties and reloads the patron to ensure all needed data
is refreshed.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: John Amundson <jamundson@cwmars.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Open-ILS/src/templates/staff/circ/patron/index.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/app.js
docs/RELEASE_NOTES_NEXT/miscellaneous.adoc

index c2a548a..7df2df7 100644 (file)
@@ -87,6 +87,8 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
   s.TEST_NOTIFY_SUCCESS = "[% l('Test Notification sent') %]";
   s.TEST_NOTIFY_FAIL = "[% l('Test Notification failed to send') %]";
   s.REMOVE_HOLD_SUBSCRIPTIONS = "[% l('Remove selected Hold Groups for user?') %]";
+  s.PENALTY_REFRESH_FAILED = "[% l('Penalty Refresh Failed') %]";
+  s.PENALTY_REFRESH_SUCCESS = "[% l('Penalty Refresh Succeeded') %]";
 }]);
 </script>
 
@@ -179,6 +181,9 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
         </a>
         <ul uib-dropdown-menu>
           <li>
+            <a href ng-click="refreshPenalties()">[% l('Refresh Penalties') %]</a>
+          </li>
+          <li>
             <a href="./circ/patron/{{patron().id()}}/alerts">
               [% l('Display Alerts') %]
             </a>
index 0c4268a..e84f34b 100644 (file)
@@ -232,8 +232,10 @@ angular.module('egPatronApp', ['ngRoute', 'ui.bootstrap', 'egUserBucketMod',
  *
  * */
 .controller('PatronCtrl',
-       ['$scope','$q','$location','$filter','egCore','egNet','egUser','egAlertDialog','egConfirmDialog','egPromptDialog','patronSvc','egCirc','hasPermAt',
-function($scope,  $q , $location , $filter , egCore , egNet , egUser , egAlertDialog , egConfirmDialog , egPromptDialog , patronSvc , egCirc , hasPermAt) {
+       ['$scope','$q','$location','$filter','egCore','egNet','egUser','egAlertDialog',
+        'egConfirmDialog','egPromptDialog','patronSvc','egCirc','hasPermAt','ngToast',
+function($scope,  $q , $location , $filter , egCore , egNet , egUser , egAlertDialog ,
+         egConfirmDialog , egPromptDialog , patronSvc , egCirc , hasPermAt, ngToast) {
 
     $scope.is_patron_edit = function() {
         return Boolean($location.path().match(/patron\/\d+\/edit$/));
@@ -465,6 +467,28 @@ function($scope,  $q , $location , $filter , egCore , egNet , egUser , egAlertDi
         });
     }
 
+    $scope.refreshPenalties = function() {
+
+        egNet.request(
+            'open-ils.actor',
+            'open-ils.actor.user.penalties.update',
+            egCore.auth.token(), $scope.patron().id()
+
+        ).then(function(resp) {
+
+            if (evt = egCore.evt.parse(resp)) {
+                ngToast.warning(egCore.strings.PENALTY_REFRESH_FAILED);
+                console.error(evt);
+            }
+
+            ngToast.create(egCore.strings.PENALTY_REFRESH_SUCCESS);
+
+            // Depending on which page we're on (e.g. Note/Messages) we
+            // may need to force a full data refresh.
+            setTimeout(function() { location.href = location.href; });
+        });
+    }
+
     egCore.hatch.getItem('eg.circ.patron.summary.collapse')
     .then(function(val) {$scope.collapsePatronSummary = Boolean(val)});
 }])
index e69de29..ff00e6c 100644 (file)
@@ -0,0 +1,3 @@
+* The Field Documentation interface (under Local Administration) has
+  been ported to Angular with an org selector as an additional filter.
+* Patron Interface Gets a New Penalty Refresh Action