From fb3ac86d8c6ca2a46cad5fc3591a27f52ac64a07 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 13 Jun 2017 11:30:48 +0200 Subject: [PATCH] add section picker --- .../sectionpicker/sectionpicker.controller.js | 82 +++++++++++++++++++ .../overlays/sectionpicker/sectionpicker.html | 24 ++++++ .../src/views/users/group.controller.js | 33 +++++++- .../src/views/users/group.html | 2 +- 4 files changed, 138 insertions(+), 3 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html 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/overlays/sectionpicker/sectionpicker.controller.js new file mode 100644 index 0000000000..1bda7f73f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.controller.js @@ -0,0 +1,82 @@ +(function () { + "use strict"; + + function SectionPickerController($scope, sectionResource) { + + var vm = this; + + vm.sections = []; + vm.loading = false; + + vm.selectSection = selectSection; + + ////////// + + function onInit() { + + vm.loading = true; + + // make sure we can push to something + if(!$scope.model.selection) { + $scope.model.selection = []; + } + + // get sections + sectionResource.getSections().then(function(sections){ + vm.sections = sections; + + setSectionIcon(vm.sections); + + if($scope.model.selection && $scope.model.selection.length > 0) { + preSelect($scope.model.selection); + } + + vm.loading = false; + + }); + + } + + function preSelect(selection) { + angular.forEach(selection, function(selected){ + angular.forEach(vm.sections, function(section){ + if(selected.alias === section.alias) { + section.selected = true; + } + }); + }); + } + + function selectSection(section) { + + if(!section.selected) { + + section.selected = true; + $scope.model.selection.push(section); + + } else { + + angular.forEach($scope.model.selection, function(selectedSection, index){ + if(selectedSection.alias === section.alias) { + section.selected = false; + $scope.model.selection.splice(index, 1); + } + }); + + } + + } + + function setSectionIcon(sections) { + angular.forEach(sections, function(section) { + section.icon = "icon-section " + section.cssclass; + }); + } + + onInit(); + + } + + angular.module("umbraco").controller("Umbraco.Overlays.SectionPickerController", SectionPickerController); + +})(); 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 new file mode 100644 index 0000000000..577dab63b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/sectionpicker/sectionpicker.html @@ -0,0 +1,24 @@ +
+ + + + +
+ + + +
+ +
\ 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 731518e2b4..03f5f9ad6f 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 @@ -1,13 +1,14 @@ (function () { "use strict"; - function UserGroupEditController($scope, $timeout, $location, usersResource, $routeParams) { + function UserGroupEditController($scope, $timeout, $location, $routeParams, usersResource, localizationService) { var vm = this; vm.loading = false; vm.page = {}; vm.userGroup = {}; + vm.labels = {}; vm.goToPage = goToPage; vm.openSectionPicker = openSectionPicker; @@ -21,9 +22,14 @@ vm.loading = true; + localizationService.localize("general_cancel").then(function(name){ + vm.labels.cancel = name; + }); + // get user usersResource.getUserGroup($routeParams.id).then(function (userGroup) { vm.userGroup = userGroup; + setSectionIcon(vm.userGroup.sections); makeBreadcrumbs(); }); @@ -39,7 +45,24 @@ } function openSectionPicker() { - alert("open section picker"); + vm.sectionPicker = { + title: "Select sections", + view: "sectionpicker", + selection: vm.userGroup.sections, + closeButtonLabel: vm.labels.cancel, + show: true, + submit: function(model) { + vm.sectionPicker.show = false; + vm.sectionPicker = null; + }, + close: function(oldModel) { + if(oldModel.selection) { + vm.userGroup.sections = oldModel.selection; + } + vm.sectionPicker.show = false; + vm.sectionPicker = null; + } + }; } function openContentPicker() { @@ -134,6 +157,12 @@ } ]; } + + function setSectionIcon(sections) { + angular.forEach(sections, function(section) { + section.icon = "icon-section " + section.cssclass; + }); + } init(); 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 24bc7aa018..8f556d3018 100644 --- a/src/Umbraco.Web.UI.Client/src/views/users/group.html +++ b/src/Umbraco.Web.UI.Client/src/views/users/group.html @@ -38,7 +38,7 @@ Add