LP#1564685 Alert and stop on invalid fields
authorBill Erickson <berickxx@gmail.com>
Mon, 28 Mar 2016 19:22:52 +0000 (15:22 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Mon, 4 Apr 2016 20:32:50 +0000 (16:32 -0400)
Display an alert message and prevent save or save+clone when invalid
values exist in the patron edit form.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/templates/staff/circ/patron/index.tt2
Open-ILS/src/templates/staff/circ/patron/register.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index df0cea5..85b8866 100644 (file)
@@ -44,6 +44,8 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
   s.RENEW_ITEMS = "[% l('Renew Items?') %]";
   s.RENEW_ALL_ITEMS = "[% l('Renew All Items?') %]";
   s.CHECK_IN_CONFIRM = "[% l('Check In Items?') %]";
+  s.REG_INVALID_FIELDS = 
+    "[% l('Please enter valid values for all required fields.') %]"
 }]);
 </script>
 
index 81b4279..3eac3ef 100644 (file)
@@ -12,6 +12,8 @@
 <script>
 angular.module('egCoreMod').run(['egStrings', function(s) {
   s.REG_ADDR_TYPE = "[% l('Mailing') %]";
+  s.REG_INVALID_FIELDS = 
+    "[% l('Please enter valid values for all required fields.') %]"
 }]);
 </script>
 <link rel="stylesheet" href="[% ctx.base_path %]/staff/css/circ.css" />
index da7cfed..534bda5 100644 (file)
@@ -1047,8 +1047,8 @@ angular.module('egCoreMod')
 }]);
 
 
-function PatronRegCtrl($scope, $routeParams, 
-    $q, $modal, $window, egCore, patronSvc, patronRegSvc, egUnloadPrompt) {
+function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore, 
+    patronSvc, patronRegSvc, egUnloadPrompt, egAlertDialog) {
 
     $scope.page_data_loaded = false;
     $scope.clone_id = patronRegSvc.clone_id = $routeParams.clone_id;
@@ -1669,27 +1669,36 @@ function PatronRegCtrl($scope, $routeParams,
         );
     }
 
+    // Returns true if the Save and Save & Clone buttons should be disabled.
+    $scope.edit_passthru.hide_save_actions = function() {
+        return $scope.patron.isnew ?
+            !$scope.perms.CREATE_USER : 
+            !$scope.perms.UPDATE_USER;
+    }
+
     // Returns true if any input elements are tagged as invalid
-    $scope.edit_passthru.has_invalid_fields = function() {
+    // via Angular patterns or required attributes.
+    function form_has_invalid_fields() {
         return $('#patron-reg-container .ng-invalid').length > 0;
     }
 
-    // Returns true if the Save and Save & Clone buttons should be disabled.
-    $scope.edit_passthru.hide_save_actions = function() {
-        var can_save = $scope.patron.isnew ?
-            $scope.perms.CREATE_USER : $scope.perms.UPDATE_USER;
-
+    function form_is_incomplete() {
         return (
-            !can_save ||
             $scope.dupe_username ||
             $scope.dupe_barcode ||
-            $scope.edit_passthru.has_invalid_fields()
+            form_has_invalid_fields()
         );
+
     }
 
     $scope.edit_passthru.save = function(save_args) {
         if (!save_args) save_args = {};
 
+        if (form_is_incomplete()) {
+            // User has not provided valid values for all required fields.
+            return egAlertDialog.open(egCore.strings.REG_INVALID_FIELDS);
+        }
+
         // remove page unload warning prompt
         egUnloadPrompt.clear();
 
@@ -1758,5 +1767,5 @@ function PatronRegCtrl($scope, $routeParams,
 // This controller may be loaded from different modules (patron edit vs.
 // register new patron), so we have to inject the controller params manually.
 PatronRegCtrl.$inject = ['$scope', '$routeParams', '$q', '$modal', 
-    '$window', 'egCore', 'patronSvc', 'patronRegSvc', 'egUnloadPrompt'];
+    '$window', 'egCore', 'patronSvc', 'patronRegSvc', 'egUnloadPrompt', 'egAlertDialog'];