From 4953c69123059e44f64d0a2ea24f001cd6b2dff4 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley Date: Wed, 14 Mar 2018 01:36:56 +0000 Subject: [PATCH] Fix enterprise user unsaved changes --- .../enterprises/controllers/enterprise_controller.js.coffee | 5 +++-- app/views/admin/enterprises/_ng_form.html.haml | 1 - app/views/admin/enterprises/form/_users.html.haml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee index 98183a7c26..d8ef5e1b23 100644 --- a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee +++ b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee @@ -5,7 +5,7 @@ angular.module("admin.enterprises") $scope.ShippingMethods = EnterpriseShippingMethods.shippingMethods $scope.navClear = NavigationCheck.clear $scope.menu = SideMenu - $scope.newManager = { id: '', email: (t('add_manager')) } + $scope.newManager = { id: null, email: (t('add_manager')) } $scope.StatusMessage = StatusMessage $scope.$watch 'enterprise_form.$dirty', (newValue) -> @@ -42,12 +42,13 @@ angular.module("admin.enterprises") $scope.enterprise_form.$setDirty() $scope.addManager = (manager) -> - if manager.id? and manager.email? + if manager.id? and angular.isNumber(manager.id) and manager.email? manager = id: manager.id email: manager.email confirmed: manager.confirmed if (user for user in $scope.Enterprise.users when user.id == manager.id).length == 0 $scope.Enterprise.users.push manager + $scope.enterprise_form.$setDirty() else alert ("#{manager.email}" + " " + t("is_already_manager")) diff --git a/app/views/admin/enterprises/_ng_form.html.haml b/app/views/admin/enterprises/_ng_form.html.haml index f635ad95c4..fa97605104 100644 --- a/app/views/admin/enterprises/_ng_form.html.haml +++ b/app/views/admin/enterprises/_ng_form.html.haml @@ -3,7 +3,6 @@ -# So we use onchange and have to get the scope to access the ng controller = form_for [main_app, :admin, @enterprise], html: { name: "enterprise_form", "ng-controller" => 'enterpriseCtrl', - 'onchange' => 'angular.element(enterprise_form).scope().setFormDirty()', "ng-cloak" => true } do |f| %save-bar{ dirty: "enterprise_form.$dirty", persist: "true" } diff --git a/app/views/admin/enterprises/form/_users.html.haml b/app/views/admin/enterprises/form/_users.html.haml index 45318ec114..35db6bea9d 100644 --- a/app/views/admin/enterprises/form/_users.html.haml +++ b/app/views/admin/enterprises/form/_users.html.haml @@ -42,7 +42,7 @@ %tr %td - # Ignore this input in the submit - = hidden_field_tag :ignored, :new_manager, class: "select2 fullwidth", 'user-select' => 'newManager', 'ng-model' => 'newManager' + = hidden_field_tag :ignored, nil, class: "select2 fullwidth", 'user-select' => 'newManager', 'ng-model' => 'newManager' %td.actions %a{ 'ng-click' => 'addManager(newManager)', :class => "icon-plus no-text" } %tr.animate-repeat{ id: "manager-{{manager.id}}", ng: { repeat: 'manager in Enterprise.users' }}