The editable tags are aware about permissions
parent
d371bf6c36
commit
ba1ba9065d
|
@ -91,7 +91,7 @@ module.directive("tgColorizeTags", ColorizeTagsDirective)
|
||||||
## TagLine (possible should be moved as generic directive)
|
## TagLine (possible should be moved as generic directive)
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
TagLineDirective = ($log, $rs, $tgrepo) ->
|
TagLineDirective = ($rootscope, $log, $rs, $tgrepo) ->
|
||||||
# Main directive template (rendered by angular)
|
# Main directive template (rendered by angular)
|
||||||
template = """
|
template = """
|
||||||
<div class="tags-container"></div>
|
<div class="tags-container"></div>
|
||||||
|
@ -124,7 +124,7 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
return _.uniq(tags)
|
return _.uniq(tags)
|
||||||
|
|
||||||
link = ($scope, $el, $attrs, $model) ->
|
link = ($scope, $el, $attrs, $model) ->
|
||||||
editable = if $attrs.editable == "true" then true else false
|
editable = false
|
||||||
|
|
||||||
$el.addClass("tags-block")
|
$el.addClass("tags-block")
|
||||||
|
|
||||||
|
@ -140,7 +140,8 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
$model.$setViewValue(normalizeTags(tags))
|
$model.$setViewValue(normalizeTags(tags))
|
||||||
autosaveModel = $scope.$eval($attrs.autosaveModel)
|
autosaveModel = $scope.$eval($attrs.autosaveModel)
|
||||||
if autosaveModel
|
if autosaveModel
|
||||||
$tgrepo.save(autosaveModel)
|
$tgrepo.save(autosaveModel).then ->
|
||||||
|
$rootscope.$broadcast("history:reload")
|
||||||
|
|
||||||
saveInputTag = () ->
|
saveInputTag = () ->
|
||||||
input = $el.find('input')
|
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 []
|
tags_colors = if $scope.project?.tags_colors? then $scope.project.tags_colors else []
|
||||||
renderTags($el, val, editable, tags_colors)
|
renderTags($el, val, editable, tags_colors)
|
||||||
|
|
||||||
bindOnce $scope, "projectId", (projectId) ->
|
bindOnce $scope, "project", (project) ->
|
||||||
# If not editable, no tags preloading is needed.
|
# 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) ->
|
positioningFunction = (position, elements) ->
|
||||||
menu = elements.element.element
|
menu = elements.element.element
|
||||||
|
@ -164,7 +170,7 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
menu.css("top", position.top)
|
menu.css("top", position.top)
|
||||||
menu.css("left", position.left)
|
menu.css("left", position.left)
|
||||||
|
|
||||||
$rs.projects.tags(projectId).then (data) ->
|
$rs.projects.tags(project.id).then (data) ->
|
||||||
$el.find("input").autocomplete({
|
$el.find("input").autocomplete({
|
||||||
source: data
|
source: data
|
||||||
position: {
|
position: {
|
||||||
|
@ -176,9 +182,6 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
ui.item.value = ""
|
ui.item.value = ""
|
||||||
})
|
})
|
||||||
|
|
||||||
if not editable
|
|
||||||
$el.find("input").remove()
|
|
||||||
|
|
||||||
$el.on "keypress", "input", (event) ->
|
$el.on "keypress", "input", (event) ->
|
||||||
return if event.keyCode != 13
|
return if event.keyCode != 13
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
@ -210,7 +213,8 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
$model.$setViewValue(normalizeTags(tags))
|
$model.$setViewValue(normalizeTags(tags))
|
||||||
autosaveModel = $scope.$eval($attrs.autosaveModel)
|
autosaveModel = $scope.$eval($attrs.autosaveModel)
|
||||||
if autosaveModel
|
if autosaveModel
|
||||||
$tgrepo.save(autosaveModel)
|
$tgrepo.save(autosaveModel).then ->
|
||||||
|
$rootscope.$broadcast("history:reload")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
link:link,
|
link:link,
|
||||||
|
@ -218,4 +222,4 @@ TagLineDirective = ($log, $rs, $tgrepo) ->
|
||||||
template: template
|
template: template
|
||||||
}
|
}
|
||||||
|
|
||||||
module.directive("tgTagLine", ["$log", "$tgResources", "$tgRepo", TagLineDirective])
|
module.directive("tgTagLine", ["$rootScope", "$log", "$tgResources", "$tgRepo", TagLineDirective])
|
||||||
|
|
|
@ -31,7 +31,7 @@ block content
|
||||||
a.icon.icon-arrow-left(ng-show="previousUrl",href="{{ previousUrl }}", title="previous issue")
|
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")
|
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")
|
section.us-content.wysiwyg(tg-editable-description, ng-model="issue", required-perm="modify_issue")
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ block content
|
||||||
a.icon.icon-arrow-left(ng-show="previousUrl",href="{{ previousUrl }}", title="previous task")
|
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")
|
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")
|
section.us-content.wysiwyg(tg-editable-description, ng-model="task", required-perm="modify_task")
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ block content
|
||||||
title="previous user story")
|
title="previous user story")
|
||||||
a.icon.icon-arrow-right(ng-show="nextUrl", href="{{ nextUrl }}", title="next 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")
|
section.us-content.wysiwyg(tg-editable-description, ng-model="us", required-perm="modify_us")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue