diff --git a/app/coffee/modules/common.coffee b/app/coffee/modules/common.coffee index bb11a405..15514453 100644 --- a/app/coffee/modules/common.coffee +++ b/app/coffee/modules/common.coffee @@ -60,6 +60,42 @@ CheckPermissionDirective = -> module.directive("tgCheckPermission", CheckPermissionDirective) +############################################################################# +## Add class based on permissions +############################################################################# + +ClassPermissionDirective = -> + name = "tgClassPermission" + + link = ($scope, $el, $attrs) -> + checkPermissions = (project, className, permission) -> + negation = permission[0] == "!" + + permission = permission.slice(1) if negation + + if negation && project.my_permissions.indexOf(permission) == -1 + $el.addClass(className) + else if project.my_permissions.indexOf(permission) != -1 + $el.addClass(className) + else + $el.removeClass(className) + + tgClassPermissionWatchAction = (project) -> + if project + unbindWatcher() + + classes = $scope.$eval($attrs[name]) + + for className, permission of classes + checkPermissions(project, className, permission) + + + unbindWatcher = $scope.$watch "project", tgClassPermissionWatchAction + + return {link:link} + +module.directive("tgClassPermission", ClassPermissionDirective) + ############################################################################# ## Animation frame service, apply css changes in the next render frame ############################################################################# diff --git a/app/partials/includes/components/backlog-row.jade b/app/partials/includes/components/backlog-row.jade index 5a0dbf87..7b10d154 100644 --- a/app/partials/includes/components/backlog-row.jade +++ b/app/partials/includes/components/backlog-row.jade @@ -1,4 +1,4 @@ -div.row.us-item-row(ng-repeat="us in visibleUserstories track by us.id", tg-bind-scope, ng-class="{blocked: us.is_blocked}") +div.row.us-item-row(ng-repeat="us in visibleUserstories track by us.id", tg-bind-scope, ng-class="{blocked: us.is_blocked}", tg-class-permission="{'readonly': '!modify_us'}") div.user-stories div.tags-block(tg-colorize-tags="us.tags", tg-colorize-tags-type="backlog") div.user-story-name diff --git a/app/styles/modules/backlog/backlog-table.scss b/app/styles/modules/backlog/backlog-table.scss index c9dd613a..c92e6333 100644 --- a/app/styles/modules/backlog/backlog-table.scss +++ b/app/styles/modules/backlog/backlog-table.scss @@ -237,4 +237,8 @@ opacity: 0; padding: .1rem .5rem 0 0; } + .readonly { + cursor: auto; + padding-right: 45px; + } }