From 3d847b0ea974e992a50d032d1ffa237153119051 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 28 Jun 2017 16:03:33 +0200 Subject: [PATCH] fixes: U4-10054 Prototype granular permissions on user group --- .../components/umbnodepreview.directive.js | 1 + .../users/umbpermission.directive.js | 36 ++++++ src/Umbraco.Web.UI.Client/src/less/belle.less | 4 +- .../{ => users}/umb-permission.less | 1 + .../nodepermissions.controller.js | 111 ++++++++++++++++++ .../nodepermissions/nodepermissions.html | 13 ++ .../views/components/umb-node-preview.html | 12 +- .../components/users/umb-permission.html | 11 ++ .../content/content.rights.controller.js | 5 - .../src/views/content/rights.html | 33 ++---- .../src/views/users/group.controller.js | 61 ++++++++++ .../src/views/users/group.html | 62 ++++++---- 12 files changed, 299 insertions(+), 51 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbpermission.directive.js rename src/Umbraco.Web.UI.Client/src/less/components/{ => users}/umb-permission.less (93%) create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.html create mode 100644 src/Umbraco.Web.UI.Client/src/views/components/users/umb-permission.html diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js index 77f6f06a30..9966e94b70 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbnodepreview.directive.js @@ -103,6 +103,7 @@ icon: "=?", name: "=", description: "=?", + permissions: "=?", published: "=?", sortable: "=?", allowOpen: "=?", diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbpermission.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbpermission.directive.js new file mode 100644 index 0000000000..bae87789ca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/users/umbpermission.directive.js @@ -0,0 +1,36 @@ +(function () { + 'use strict'; + + function PermissionDirective() { + + function link(scope, el, attr, ctrl) { + + scope.change = function() { + scope.selected = !scope.selected; + if(scope.onChange) { + scope.onChange({'selected': scope.selected}); + } + }; + + } + + var directive = { + restrict: 'E', + replace: true, + templateUrl: 'views/components/users/umb-permission.html', + scope: { + name: "=", + description: "=?", + selected: "=", + onChange: "&" + }, + link: link + }; + + return directive; + + } + + angular.module('umbraco.directives').directive('umbPermission', PermissionDirective); + +})(); \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/less/belle.less b/src/Umbraco.Web.UI.Client/src/less/belle.less index 54d662f5d8..a7478f6c5e 100644 --- a/src/Umbraco.Web.UI.Client/src/less/belle.less +++ b/src/Umbraco.Web.UI.Client/src/less/belle.less @@ -123,7 +123,6 @@ @import "components/umb-badge.less"; @import "components/umb-nested-content.less"; @import "components/umb-checkmark.less"; -@import "components/umb-permission.less"; @import "components/buttons/umb-button.less"; @import "components/buttons/umb-button-group.less"; @@ -141,6 +140,9 @@ @import "components/users/umb-user-preview.less"; @import "components/users/umb-user-picker-list.less"; @import "components/users/umb-user.less"; +@import "components/users/umb-permission-group.less"; +@import "components/users/umb-permission.less"; + // Utilities @import "utilities/layout/_display.less"; diff --git a/src/Umbraco.Web.UI.Client/src/less/components/umb-permission.less b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less similarity index 93% rename from src/Umbraco.Web.UI.Client/src/less/components/umb-permission.less rename to src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less index 1aba704435..6e616c6baa 100644 --- a/src/Umbraco.Web.UI.Client/src/less/components/umb-permission.less +++ b/src/Umbraco.Web.UI.Client/src/less/components/users/umb-permission.less @@ -2,6 +2,7 @@ display: flex; border-bottom: 1px solid @gray-9; padding: 7px 0; + cursor: pointer; } .umb-permission:last-of-type { diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.controller.js new file mode 100644 index 0000000000..ecadc4dea6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.controller.js @@ -0,0 +1,111 @@ +(function () { + "use strict"; + + function NodePermissionsController($scope) { + + var vm = this; + + function onInit() { + + // fake node permissions + $scope.model.node.permissions = [ + { + "groupName": "Group 1", + "permissions": [ + { + "name": "Edit content (save)", + "description": "Lorem ipsum dolor sit amet", + "checked": false + }, + { + "name": "Browse content", + "description": "Nullam egestas porta mi, quis finibus nisl commodo a", + "checked": true + }, + { + "name": "Publish", + "description": "Aliquam molestie consequat felis", + "checked": true + }, + { + "name": "Send to publish", + "description": "Sed pharetra sodales enim quis molestie", + "checked": true + }, + { + "name": "Delete", + "description": "Vitae porta mauris turpis sit amet ligula", + "checked": true + }, + { + "name": "Create", + "description": "Vestibulum pretium sapien id turpis elementum viverra", + "checked": true + }, + ] + }, + { + "groupName": "Group 2", + "permissions": [ + { + "name": "Move", + "description": "Vestibulum pretium sapien id turpis elementum viverra", + "checked": true + }, + { + "name": "Copy", + "description": "Phasellus sagittis, dolor vel accumsan porttitor", + "checked": false + }, + { + "name": "Sort", + "description": "Aliquam erat volutpat", + "checked": false + } + ] + }, + { + "groupName": "Group 3", + "permissions": [ + { + "name": "Culture and Hostnames", + "description": "Lorem ipsum dolor sit amet", + "checked": true + }, + { + "name": "Audit Trail", + "description": "Lorem ipsum dolor sit amet", + "checked": true + }, + { + "name": "Translate", + "description": "Lorem ipsum dolor sit amet", + "checked": true + }, + { + "name": "Change document type", + "description": "Lorem ipsum dolor sit amet", + "checked": true + }, + { + "name": "Public access", + "description": "Lorem ipsum dolor sit amet", + "checked": true + }, + { + "name": "Rollback", + "description": "Lorem ipsum dolor sit amet", + "checked": true + } + ] + } + ]; + } + + onInit(); + + } + + angular.module("umbraco").controller("Umbraco.Overlays.NodePermissionsController", NodePermissionsController); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.html b/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.html new file mode 100644 index 0000000000..6043451269 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/common/overlays/nodepermissions/nodepermissions.html @@ -0,0 +1,13 @@ +
+

Nam tellus purus, malesuada sed purus ut, semper sollicitudin odio.

+ + + + +
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/umb-node-preview.html b/src/Umbraco.Web.UI.Client/src/views/components/umb-node-preview.html index 02bce43611..a48d522e3b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/umb-node-preview.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/umb-node-preview.html @@ -1,8 +1,16 @@
-
{{ name }}
-
{{ description }}
+
+
{{ name }}
+
{{ description }}
+
+
+ + Permissions: + {{ permission.name }}, + +
Open diff --git a/src/Umbraco.Web.UI.Client/src/views/components/users/umb-permission.html b/src/Umbraco.Web.UI.Client/src/views/components/users/umb-permission.html new file mode 100644 index 0000000000..d33584f73b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/components/users/umb-permission.html @@ -0,0 +1,11 @@ +
+ + +
+
{{ name }}
+
{{ description }}
+
+
\ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.rights.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.rights.controller.js index 614be714f5..3c74ca2fe9 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.rights.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.rights.controller.js @@ -14,7 +14,6 @@ vm.editPermissions = editPermissions; vm.setPermissions = setPermissions; vm.removePermissions = removePermissions; - vm.togglePermission = togglePermission; vm.cancelManagePermissions = cancelManagePermissions; function onInit() { @@ -126,10 +125,6 @@ vm.viewState = state; } - function togglePermission(permission) { - permission.checked = !permission.checked; - } - function editPermissions(group) { vm.selectedUserGroup = group; setViewSate("managePermissions"); diff --git a/src/Umbraco.Web.UI.Client/src/views/content/rights.html b/src/Umbraco.Web.UI.Client/src/views/content/rights.html index defedb550e..25d5d87628 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/rights.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/rights.html @@ -54,31 +54,20 @@
-
- +
Set permissions for {{ vm.selectedUserGroup.name }}

Nam tellus purus, malesuada sed purus ut, semper sollicitudin odio.

- -
- -
{{ group.groupName }}
- -
- - -
-
{{ permission.name }}
-
{{ permission.description }}
-
-
- -
- + + + +
-
\ No newline at end of file