diff --git a/app/coffee/modules/common/tags.coffee b/app/coffee/modules/common/tags.coffee index 1d221d98..2ec1671a 100644 --- a/app/coffee/modules/common/tags.coffee +++ b/app/coffee/modules/common/tags.coffee @@ -91,7 +91,7 @@ module.directive("tgColorizeTags", ColorizeTagsDirective) ## TagLine (possible should be moved as generic directive) ############################################################################# -TagLineDirective = ($log, $rs, $tgrepo) -> +TagLineDirective = ($rootscope, $log, $rs, $tgrepo) -> # Main directive template (rendered by angular) template = """
@@ -124,7 +124,7 @@ TagLineDirective = ($log, $rs, $tgrepo) -> return _.uniq(tags) link = ($scope, $el, $attrs, $model) -> - editable = if $attrs.editable == "true" then true else false + editable = false $el.addClass("tags-block") @@ -140,7 +140,8 @@ TagLineDirective = ($log, $rs, $tgrepo) -> $model.$setViewValue(normalizeTags(tags)) autosaveModel = $scope.$eval($attrs.autosaveModel) if autosaveModel - $tgrepo.save(autosaveModel) + $tgrepo.save(autosaveModel).then -> + $rootscope.$broadcast("history:reload") saveInputTag = () -> input = $el.find('input') @@ -154,9 +155,14 @@ TagLineDirective = ($log, $rs, $tgrepo) -> tags_colors = if $scope.project?.tags_colors? then $scope.project.tags_colors else [] renderTags($el, val, editable, tags_colors) - bindOnce $scope, "projectId", (projectId) -> + bindOnce $scope, "project", (project) -> # If not editable, no tags preloading is needed. - return if not editable + editable = if $attrs.editable == "true" then true else false + editable = editable and project.my_permissions.indexOf($attrs.requiredPerm) != -1 + + if not editable + $el.find("input").remove() + return positioningFunction = (position, elements) -> menu = elements.element.element @@ -164,7 +170,7 @@ TagLineDirective = ($log, $rs, $tgrepo) -> menu.css("top", position.top) menu.css("left", position.left) - $rs.projects.tags(projectId).then (data) -> + $rs.projects.tags(project.id).then (data) -> $el.find("input").autocomplete({ source: data position: { @@ -176,9 +182,6 @@ TagLineDirective = ($log, $rs, $tgrepo) -> ui.item.value = "" }) - if not editable - $el.find("input").remove() - $el.on "keypress", "input", (event) -> return if event.keyCode != 13 event.preventDefault() @@ -210,7 +213,8 @@ TagLineDirective = ($log, $rs, $tgrepo) -> $model.$setViewValue(normalizeTags(tags)) autosaveModel = $scope.$eval($attrs.autosaveModel) if autosaveModel - $tgrepo.save(autosaveModel) + $tgrepo.save(autosaveModel).then -> + $rootscope.$broadcast("history:reload") return { link:link, @@ -218,4 +222,4 @@ TagLineDirective = ($log, $rs, $tgrepo) -> template: template } -module.directive("tgTagLine", ["$log", "$tgResources", "$tgRepo", TagLineDirective]) +module.directive("tgTagLine", ["$rootScope", "$log", "$tgResources", "$tgRepo", TagLineDirective]) diff --git a/app/partials/issues-detail.jade b/app/partials/issues-detail.jade index d1d348e8..f1e8a3da 100644 --- a/app/partials/issues-detail.jade +++ b/app/partials/issues-detail.jade @@ -31,7 +31,7 @@ block content a.icon.icon-arrow-left(ng-show="previousUrl",href="{{ previousUrl }}", title="previous issue") a.icon.icon-arrow-right(ng-show="nextUrl", href="{{ nextUrl }}", title="next issue") - div(tg-tag-line, editable="true", autosave-model="issue", ng-model="issue.tags") + div(tg-tag-line, editable="true", autosave-model="issue", ng-model="issue.tags", required-perm="modify_issue") section.us-content.wysiwyg(tg-editable-description, ng-model="issue", required-perm="modify_issue") diff --git a/app/partials/task-detail.jade b/app/partials/task-detail.jade index 59786dae..8ff59553 100644 --- a/app/partials/task-detail.jade +++ b/app/partials/task-detail.jade @@ -34,7 +34,7 @@ block content a.icon.icon-arrow-left(ng-show="previousUrl",href="{{ previousUrl }}", title="previous task") a.icon.icon-arrow-right(ng-show="nextUrl", href="{{ nextUrl }}", title="next task") - div(tg-tag-line, editable="true", autosave-model="task", ng-model="task.tags") + div(tg-tag-line, editable="true", autosave-model="task", ng-model="task.tags", required-perm="modify_task") section.us-content.wysiwyg(tg-editable-description, ng-model="task", required-perm="modify_task") diff --git a/app/partials/us-detail.jade b/app/partials/us-detail.jade index 4c6393c9..2993eb66 100644 --- a/app/partials/us-detail.jade +++ b/app/partials/us-detail.jade @@ -36,7 +36,7 @@ block content title="previous user story") a.icon.icon-arrow-right(ng-show="nextUrl", href="{{ nextUrl }}", title="next user story") - div(tg-tag-line, editable="true", autosave-model="us", ng-model="us.tags") + div(tg-tag-line, editable="true", autosave-model="us", ng-model="us.tags", required-perm="modify_us") section.us-content.wysiwyg(tg-editable-description, ng-model="us", required-perm="modify_us")