From dcd62dc098c7abc2c49ad07a473483afd07427cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 8 Feb 2016 15:02:14 +0100 Subject: [PATCH] Hide related attachments and related tasks --- app/coffee/modules/related-tasks.coffee | 13 +++++++++++ .../attachments-full.controller.coffee | 13 +++++++++-- .../attachments-full.controller.spec.coffee | 23 +++++++++++++++++++ .../attachments-full.directive.coffee | 5 ++-- .../attachments-full/attachments-full.jade | 5 +++- .../includes/modules/related-tasks.jade | 5 +++- app/partials/issue/issues-detail.jade | 1 + app/partials/task/task-detail.jade | 3 ++- app/partials/us/us-detail.jade | 1 + app/partials/wiki/wiki.jade | 1 + 10 files changed, 63 insertions(+), 7 deletions(-) diff --git a/app/coffee/modules/related-tasks.coffee b/app/coffee/modules/related-tasks.coffee index 0a44213c..9095773f 100644 --- a/app/coffee/modules/related-tasks.coffee +++ b/app/coffee/modules/related-tasks.coffee @@ -227,6 +227,19 @@ RelatedTasksDirective = ($repo, $rs, $rootscope) -> $scope.tasks = _.sortBy(tasks, 'ref') return tasks + _isVisible = -> + if $scope.project + return $scope.project.my_permissions.indexOf("view_tasks") != -1 + return false + + _isEditable = -> + if $scope.project + return $scope.project.my_permissions.indexOf("modify_task") != -1 + return false + + $scope.showRelatedTasks = -> + return _isVisible() && ( _isEditable() || $scope.tasks?.length ) + $scope.$on "related-tasks:add", -> loadTasks().then -> $rootscope.$broadcast("related-tasks:update") diff --git a/app/modules/components/attachments-full/attachments-full.controller.coffee b/app/modules/components/attachments-full/attachments-full.controller.coffee index 30055c87..400ee65f 100644 --- a/app/modules/components/attachments-full/attachments-full.controller.coffee +++ b/app/modules/components/attachments-full/attachments-full.controller.coffee @@ -25,10 +25,11 @@ class AttachmentsFullController "$tgConfirm", "$tgConfig", "$tgStorage", - "tgAttachmentsFullService" + "tgAttachmentsFullService", + "tgProjectService" ] - constructor: (@translate, @confirm, @config, @storage, @attachmentsFullService) -> + constructor: (@translate, @confirm, @config, @storage, @attachmentsFullService, @projectService) -> @.mode = @storage.get('attachment-mode', 'list') @.maxFileSize = @config.get("maxUploadFileSize", null) @@ -85,4 +86,12 @@ class AttachmentsFullController updateAttachment: (toUpdateAttachment) -> @attachmentsFullService.updateAttachment(toUpdateAttachment, @.type) + _isEditable: -> + if @projectService.project + return @projectService.hasPermission(@.editPermission) + return false + + showAttachments: -> + return @._isEditable() || @attachmentsFullService.attachments.size + angular.module("taigaComponents").controller("AttachmentsFull", AttachmentsFullController) diff --git a/app/modules/components/attachments-full/attachments-full.controller.spec.coffee b/app/modules/components/attachments-full/attachments-full.controller.spec.coffee index e45321af..6c623174 100644 --- a/app/modules/components/attachments-full/attachments-full.controller.spec.coffee +++ b/app/modules/components/attachments-full/attachments-full.controller.spec.coffee @@ -53,6 +53,14 @@ describe "AttachmentsController", -> $provide.value("tgAttachmentsFullService", mocks.attachmentsFullService) + _mockProjectService = -> + mocks.projectService = { + project: sinon.stub() + hasPermission: sinon.stub() + } + + $provide.value("tgProjectService", mocks.projectService) + _mocks = -> module (_$provide_) -> $provide = _$provide_ @@ -62,6 +70,7 @@ describe "AttachmentsController", -> _mockConfig() _mockStorage() _mockAttachmetsFullService() + _mockProjectService() return null @@ -213,3 +222,17 @@ describe "AttachmentsController", -> ctrl.updateAttachment(file, 5) expect(mocks.attachmentsFullService.updateAttachment).to.have.been.calledWith(file, 'us') + + it "if attachments editable", () -> + mocks.projectService.project = true + ctrl = $controller("AttachmentsFull") + + ctrl._isEditable() + + expect(mocks.projectService.hasPermission).has.been.called + + it "if attachments are not editable", () -> + mocks.projectService.project = false + ctrl = $controller("AttachmentsFull") + + expect(ctrl._isEditable()).to.be.false diff --git a/app/modules/components/attachments-full/attachments-full.directive.coffee b/app/modules/components/attachments-full/attachments-full.directive.coffee index 5200feb5..e710daaa 100644 --- a/app/modules/components/attachments-full/attachments-full.directive.coffee +++ b/app/modules/components/attachments-full/attachments-full.directive.coffee @@ -28,8 +28,9 @@ AttachmentsFullDirective = () -> scope: {}, bindToController: { type: "@", - objId: "=" - projectId: "=" + objId: "=", + projectId: "=", + editPermission: "@" }, controller: "AttachmentsFull", controllerAs: "vm", diff --git a/app/modules/components/attachments-full/attachments-full.jade b/app/modules/components/attachments-full/attachments-full.jade index 98a9710d..1e4e58aa 100644 --- a/app/modules/components/attachments-full/attachments-full.jade +++ b/app/modules/components/attachments-full/attachments-full.jade @@ -1,4 +1,7 @@ -section.attachments(tg-attachments-drop="vm.addAttachments(files, false)") +section.attachments( + tg-attachments-drop="vm.addAttachments(files, false)" + ng-show="vm.showAttachments()" +) .attachments-header h3.attachments-title #[span.attachments-num {{vm.attachments.size}}] #[span.attachments-text(translate="ATTACHMENT.SECTION_NAME")] .options diff --git a/app/partials/includes/modules/related-tasks.jade b/app/partials/includes/modules/related-tasks.jade index 40c900b4..da0c24ba 100644 --- a/app/partials/includes/modules/related-tasks.jade +++ b/app/partials/includes/modules/related-tasks.jade @@ -1,4 +1,7 @@ -section.related-tasks(tg-related-tasks) +section.related-tasks( + tg-related-tasks + ng-show="showRelatedTasks()" +) .related-tasks-header span.related-tasks-title(translate="COMMON.RELATED_TASKS") div(tg-related-task-create-button) diff --git a/app/partials/issue/issues-detail.jade b/app/partials/issue/issues-detail.jade index 30b2d69d..5a2b5a44 100644 --- a/app/partials/issue/issues-detail.jade +++ b/app/partials/issue/issues-detail.jade @@ -77,6 +77,7 @@ div.wrapper( obj-id="issue.id" type="issue", project-id="projectId" + edit-permission = "modify_issue" ) tg-history(ng-model="issue", type="issue") diff --git a/app/partials/task/task-detail.jade b/app/partials/task/task-detail.jade index 962f1bfe..e4060314 100644 --- a/app/partials/task/task-detail.jade +++ b/app/partials/task/task-detail.jade @@ -92,8 +92,9 @@ div.wrapper( tg-attachments-full( obj-id="task.id" - type="task", + type="task" project-id="projectId" + edit-permission = "modify_task" ) tg-history(ng-model="task", type="task") diff --git a/app/partials/us/us-detail.jade b/app/partials/us/us-detail.jade index 58b89303..b6dcbcd0 100644 --- a/app/partials/us/us-detail.jade +++ b/app/partials/us/us-detail.jade @@ -89,6 +89,7 @@ div.wrapper( obj-id="us.id" type="us", project-id="projectId" + edit-permission = "modify_us" ) tg-history( diff --git a/app/partials/wiki/wiki.jade b/app/partials/wiki/wiki.jade index f7f04cb0..40523910 100644 --- a/app/partials/wiki/wiki.jade +++ b/app/partials/wiki/wiki.jade @@ -21,6 +21,7 @@ div.wrapper(ng-controller="WikiDetailController as ctrl", obj-id="wiki.id" type="wiki_page", project-id="projectId" + edit-permission = "modify_wiki_page" ) a.remove(href="", ng-click="ctrl.delete()", ng-if="wiki.id", title="{{'WIKI.REMOVE' | translate}}", tg-check-permission="delete_wiki_page")