From b63af8b56f87a82aa373944277d1f2b1a0caa43c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 5 Jul 2018 20:22:27 +0200 Subject: [PATCH] convert the last pickers in the user section to infinite editors --- .../src/common/services/editor.service.js | 56 +++++++++- src/Umbraco.Web.UI.Client/src/less/tree.less | 1 + .../sectionpicker/sectionpicker.controller.js | 16 ++- .../sectionpicker/sectionpicker.html | 54 ++++++++++ .../usergrouppicker.controller.js | 16 ++- .../usergrouppicker/usergrouppicker.html | 100 ++++++++++++++++++ .../userpicker/userpicker.controller.js | 16 ++- .../userpicker/userpicker.html | 90 ++++++++++++++++ .../overlays/sectionpicker/sectionpicker.html | 24 ----- .../usergrouppicker/usergrouppicker.html | 65 ------------ .../overlays/userpicker/userpicker.html | 58 ---------- .../src/views/users/group.controller.js | 36 +++---- .../src/views/users/group.html | 14 --- .../src/views/users/user.controller.js | 21 ++-- .../src/views/users/user.html | 6 -- .../users/views/users/users.controller.js | 39 +++---- .../src/views/users/views/users/users.html | 7 -- 17 files changed, 383 insertions(+), 236 deletions(-) rename src/Umbraco.Web.UI.Client/src/views/common/{overlays => infiniteeditors}/sectionpicker/sectionpicker.controller.js (84%) create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.html rename src/Umbraco.Web.UI.Client/src/views/common/{overlays => infiniteeditors}/usergrouppicker/usergrouppicker.controller.js (82%) create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.html rename src/Umbraco.Web.UI.Client/src/views/common/{overlays => infiniteeditors}/userpicker/userpicker.controller.js (86%) create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.html delete mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html delete mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.html delete mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html diff --git a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js index 1331ddc7d1..0bbfe34fe1 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js @@ -215,6 +215,57 @@ open(editor); } + /** + * @ngdoc method + * @name umbraco.services.editorService#userGroupPicker + * @methodOf umbraco.services.editorService + * + * @description + * Opens the user group picker in infinite editing, the submit callback returns an array of the selected user groups + * @param {Callback} editor.submit Submits the editor + * @param {Callback} editor.close Closes the editor + * @returns {Object} editor object + */ + function userGroupPicker(editor) { + editor.view = "views/common/infiniteeditors/usergrouppicker/usergrouppicker.html"; + editor.size = "small"; + open(editor); + } + + /** + * @ngdoc method + * @name umbraco.services.editorService#sectionPicker + * @methodOf umbraco.services.editorService + * + * @description + * Opens the section picker in infinite editing, the submit callback returns an array of the selected sections + * @param {Callback} editor.submit Submits the editor + * @param {Callback} editor.close Closes the editor + * @returns {Object} editor object + */ + function sectionPicker(editor) { + editor.view = "views/common/infiniteeditors/sectionpicker/sectionpicker.html"; + editor.size = "small"; + open(editor); + } + + /** + * @ngdoc method + * @name umbraco.services.editorService#sectionPicker + * @methodOf umbraco.services.editorService + * + * @description + * Opens the section picker in infinite editing, the submit callback returns an array of the selected users + * @param {Callback} editor.submit Submits the editor + * @param {Callback} editor.close Closes the editor + * @returns {Object} editor object + */ + function userPicker(editor) { + editor.view = "views/common/infiniteeditors/userpicker/userpicker.html"; + editor.size = "small"; + open(editor); + } + var service = { getEditors: getEditors, open: open, @@ -229,7 +280,10 @@ queryBuilder: queryBuilder, treePicker: treePicker, nodePermissions: nodePermissions, - insertCodeSnippet: insertCodeSnippet + insertCodeSnippet: insertCodeSnippet, + userGroupPicker: userGroupPicker, + sectionPicker: sectionPicker, + userPicker: userPicker }; return service; diff --git a/src/Umbraco.Web.UI.Client/src/less/tree.less b/src/Umbraco.Web.UI.Client/src/less/tree.less index 201ea238bf..d5ef7ccec5 100644 --- a/src/Umbraco.Web.UI.Client/src/less/tree.less +++ b/src/Umbraco.Web.UI.Client/src/less/tree.less @@ -162,6 +162,7 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + flex: 1 0 auto; } .umb-tree li > div:hover a:not(.umb-options) { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.controller.js similarity index 84% rename from src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.controller.js rename to src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.controller.js index f39da7074d..d6e8978e38 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.controller.js @@ -9,6 +9,8 @@ vm.loading = false; vm.selectSection = selectSection; + vm.submit = submit; + vm.close = close; ////////// @@ -80,10 +82,22 @@ }); } + function submit(model) { + if($scope.model.submit) { + $scope.model.submit(model); + } + } + + function close() { + if($scope.model.close) { + $scope.model.close(); + } + } + onInit(); } - angular.module("umbraco").controller("Umbraco.Overlays.SectionPickerController", SectionPickerController); + angular.module("umbraco").controller("Umbraco.Editors.SectionPickerController", SectionPickerController); })(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.html new file mode 100644 index 0000000000..8ca1993dcc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/sectionpicker/sectionpicker.html @@ -0,0 +1,54 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.controller.js similarity index 82% rename from src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.controller.js rename to src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.controller.js index 72d56f7884..8e075e1ab4 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.controller.js @@ -9,6 +9,8 @@ vm.loading = false; vm.selectUserGroup = selectUserGroup; + vm.submit = submit; + vm.close = close; ////////// @@ -75,10 +77,22 @@ } + function submit(model) { + if($scope.model.submit) { + $scope.model.submit(model); + } + } + + function close() { + if($scope.model.close) { + $scope.model.close(); + } + } + onInit(); } - angular.module("umbraco").controller("Umbraco.Overlays.UserGroupPickerController", UserGroupPickerController); + angular.module("umbraco").controller("Umbraco.Editors.UserGroupPickerController", UserGroupPickerController); })(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.html new file mode 100644 index 0000000000..e97d80648b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/usergrouppicker/usergrouppicker.html @@ -0,0 +1,100 @@ +
+ + + + + + + + + + + + + + + + + + + No user groups have been added + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.controller.js similarity index 86% rename from src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.controller.js rename to src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.controller.js index 2ccd17934b..2bd73a5558 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.controller.js @@ -12,6 +12,8 @@ vm.selectUser = selectUser; vm.searchUsers = searchUsers; vm.changePageNumber = changePageNumber; + vm.submit = submit; + vm.close = close; ////////// @@ -102,10 +104,22 @@ getUsers(); } + function submit(model) { + if($scope.model.submit) { + $scope.model.submit(model); + } + } + + function close() { + if($scope.model.close) { + $scope.model.close(); + } + } + onInit(); } - angular.module("umbraco").controller("Umbraco.Overlays.UserPickerController", UserPickerController); + angular.module("umbraco").controller("Umbraco.Editors.UserPickerController", UserPickerController); })(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.html new file mode 100644 index 0000000000..bc6c8b5761 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/userpicker/userpicker.html @@ -0,0 +1,90 @@ +
+ + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ + + + + + + + + + +
+ +
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html deleted file mode 100644 index 577dab63b2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html +++ /dev/null @@ -1,24 +0,0 @@ -
- - - - -
- - - -
- -
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.html deleted file mode 100644 index 4768052844..0000000000 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/usergrouppicker/usergrouppicker.html +++ /dev/null @@ -1,65 +0,0 @@ -
- - - - -
- - - - - - - No user groups have been added - - -
- -
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html deleted file mode 100644 index 517a63f60b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/views/common/overlays/userpicker/userpicker.html +++ /dev/null @@ -1,58 +0,0 @@ -
- - - - - - -
- - - -
- - -
- -
- -
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js index e282dbbb55..54096d413b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js @@ -104,23 +104,18 @@ } function openSectionPicker() { - vm.sectionPicker = { - view: "sectionpicker", + var oldSelection = angular.copy(vm.userGroup.sections); + var sectionPicker = { selection: vm.userGroup.sections, - closeButtonLabel: vm.labels.cancel, - show: true, submit: function (model) { - vm.sectionPicker.show = false; - vm.sectionPicker = null; + editorService.close(); }, - close: function (oldModel) { - if (oldModel.selection) { - vm.userGroup.sections = oldModel.selection; - } - vm.sectionPicker.show = false; - vm.sectionPicker = null; + close: function () { + vm.userGroup.sections = oldSelection; + editorService.close(); } }; + editorService.sectionPicker(sectionPicker); } function openContentPicker() { @@ -173,19 +168,18 @@ } function openUserPicker() { - vm.userPicker = { - view: "userpicker", + var oldSelection = angular.copy(vm.userGroup.users); + var userPicker = { selection: vm.userGroup.users, - show: true, - submit: function (model) { - vm.userPicker.show = false; - vm.userPicker = null; + submit: function () { + editorService.close(); }, - close: function (oldModel) { - vm.userPicker.show = false; - vm.userPicker = null; + close: function () { + vm.userGroup.users = oldSelection; + editorService.close(); } }; + editorService.userPicker(userPicker); } /** diff --git a/src/Umbraco.Web.UI.Client/src/views/users/group.html b/src/Umbraco.Web.UI.Client/src/views/users/group.html index 415d6c86f2..c9b4695708 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/group.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/group.html @@ -211,18 +211,4 @@ - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js index 97b2f14652..a65b9602ec 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/user.controller.js @@ -197,28 +197,23 @@ } function openUserGroupPicker() { - vm.userGroupPicker = { - view: "usergrouppicker", + var oldSelection = angular.copy(vm.user.userGroups); + var userGroupPicker = { selection: vm.user.userGroups, - closeButtonLabel: vm.labels.cancel, - show: true, submit: function (model) { // apply changes if (model.selection) { vm.user.userGroups = model.selection; } - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + editorService.close(); }, - close: function (oldModel) { - // rollback on close - if (oldModel.selection) { - vm.user.userGroups = oldModel.selection; - } - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + close: function () { + // roll back the selection + vm.user.userGroups = oldSelection; + editorService.close(); } }; + editorService.userGroupPicker(userGroupPicker); } function openContentPicker() { diff --git a/src/Umbraco.Web.UI.Client/src/views/users/user.html b/src/Umbraco.Web.UI.Client/src/views/users/user.html index 5d4c07c1bb..c34f0791d5 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/user.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/user.html @@ -65,10 +65,4 @@ - - - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js index c3cee9292c..ff97e0c259 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.controller.js @@ -1,7 +1,7 @@ (function () { "use strict"; - function UsersController($scope, $timeout, $location, $routeParams, usersResource, userGroupsResource, userService, localizationService, contentEditingHelper, usersHelper, formHelper, notificationsService, dateHelper) { + function UsersController($scope, $timeout, $location, $routeParams, usersResource, userGroupsResource, userService, localizationService, contentEditingHelper, usersHelper, formHelper, notificationsService, dateHelper, editorService) { var vm = this; var localizeSaving = localizationService.localize("general_saving"); @@ -300,16 +300,13 @@ return _.find(users, function (u) { return u.id === userId }); } - function openBulkUserGroupPicker(event) { + function openBulkUserGroupPicker() { var firstSelectedUser = getUserFromArrayById(vm.selection[0], vm.users); vm.selectedBulkUserGroups = _.clone(firstSelectedUser.userGroups); - vm.userGroupPicker = { - view: "usergrouppicker", + var userGroupPicker = { selection: vm.selectedBulkUserGroups, - closeButtonLabelKey: "general_cancel", - show: true, submit: function (model) { usersResource.setUserGroupsOnUsers(model.selection, vm.selection).then(function (data) { // sorting to ensure they show up in right order when updating the UI @@ -323,42 +320,36 @@ user.userGroups = vm.selectedBulkUserGroups; }); vm.selectedBulkUserGroups = []; - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + editorService.close(); clearSelection(); }, angular.noop); }, - close: function (oldModel) { + close: function () { vm.selectedBulkUserGroups = []; - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + editorService.close(); } }; + editorService.userGroupPicker(userGroupPicker); } - function openUserGroupPicker(event) { - vm.userGroupPicker = { - view: "usergrouppicker", + function openUserGroupPicker() { + var oldSelection = angular.copy(vm.newUser.userGroups); + var userGroupPicker = { selection: vm.newUser.userGroups, - closeButtonLabelKey: "general_cancel", - show: true, submit: function (model) { // apply changes if (model.selection) { vm.newUser.userGroups = model.selection; } - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + editorService.close(); }, - close: function (oldModel) { + close: function () { // rollback on close - if (oldModel.selection) { - vm.newUser.userGroups = oldModel.selection; - } - vm.userGroupPicker.show = false; - vm.userGroupPicker = null; + vm.newUser.userGroups = oldSelection; + editorService.close(); } }; + editorService.userGroupPicker(userGroupPicker); } function removeSelectedUserGroup(index, selection) { diff --git a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html index f82958769a..bf2f88c552 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/views/users/users.html @@ -541,11 +541,4 @@ - - -