Now we can edit and delete attachments
parent
3abc1af899
commit
822006c546
|
@ -76,7 +76,7 @@ module.directive("tgAttachments", [AttachmentsDirective])
|
||||||
## Attachment Directive
|
## Attachment Directive
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
AttachmentDirective = ($log) ->
|
AttachmentDirective = ($log, $repo, $rs, $confirm) ->
|
||||||
singleAttachment = _.template("""
|
singleAttachment = _.template("""
|
||||||
<div class="attachment-name">
|
<div class="attachment-name">
|
||||||
<span class="icon.icon-document"></span>
|
<span class="icon.icon-document"></span>
|
||||||
|
@ -98,10 +98,13 @@ AttachmentDirective = ($log) ->
|
||||||
</div>
|
</div>
|
||||||
<div class="editable editable-attachment-comment">
|
<div class="editable editable-attachment-comment">
|
||||||
<span class="attachment-size">(<%- size %>)</span>
|
<span class="attachment-size">(<%- size %>)</span>
|
||||||
<input type="text" />
|
<input type="text" name="description"
|
||||||
|
value="<%- description %>""
|
||||||
|
placeholder="Type a short description" />
|
||||||
</div>
|
</div>
|
||||||
<div class="editable editable-attachment-deprecated">
|
<div class="editable editable-attachment-deprecated">
|
||||||
<input type="checkbox" id="attach-<%- id %>-is-deprecated" />
|
<input type="checkbox" name="is-deprecated" id="attach-<%- id %>-is-deprecated"
|
||||||
|
<% if (isDeprecated){ %>checked<% } %> />
|
||||||
<label for="attach-<%- id %>-is-deprecated">Deprecated?</label>
|
<label for="attach-<%- id %>-is-deprecated">Deprecated?</label>
|
||||||
</div>
|
</div>
|
||||||
<a class="editable icon icon-floppy" href="" title="Save"></a>
|
<a class="editable icon icon-floppy" href="" title="Save"></a>
|
||||||
|
@ -109,6 +112,8 @@ AttachmentDirective = ($log) ->
|
||||||
""") # TODO: i18n
|
""") # TODO: i18n
|
||||||
|
|
||||||
link = ($scope, $el, $attrs, $model) ->
|
link = ($scope, $el, $attrs, $model) ->
|
||||||
|
$ctrl = $el.controller()
|
||||||
|
|
||||||
render = (attachment, isEditable=false) ->
|
render = (attachment, isEditable=false) ->
|
||||||
ctx = {
|
ctx = {
|
||||||
id: attachment.id
|
id: attachment.id
|
||||||
|
@ -123,6 +128,7 @@ AttachmentDirective = ($log) ->
|
||||||
html = singleAttachmentEditable(ctx)
|
html = singleAttachmentEditable(ctx)
|
||||||
else
|
else
|
||||||
html = singleAttachment(ctx)
|
html = singleAttachment(ctx)
|
||||||
|
|
||||||
$el.html(html)
|
$el.html(html)
|
||||||
|
|
||||||
if attachment.is_deprecated
|
if attachment.is_deprecated
|
||||||
|
@ -140,6 +146,51 @@ AttachmentDirective = ($log) ->
|
||||||
attachment = $scope.$eval($attrs.tgAttachment)
|
attachment = $scope.$eval($attrs.tgAttachment)
|
||||||
render(attachment)
|
render(attachment)
|
||||||
|
|
||||||
|
## Actions (on view mode)
|
||||||
|
$el.on "click", "a.settings.icon-edit", (event) ->
|
||||||
|
event.preventDefault()
|
||||||
|
render(attachment, true)
|
||||||
|
|
||||||
|
$el.on "click", "a.settings.icon-delete", (event) ->
|
||||||
|
event.preventDefault()
|
||||||
|
|
||||||
|
title = "Delete attachment" # i18n
|
||||||
|
subtitle = "the attachment '#{attachment.name}'"
|
||||||
|
|
||||||
|
onSuccess = ->
|
||||||
|
$ctrl.loadAttachments(attachment.object_id)
|
||||||
|
$confirm.notify("success", null, "We've deleted #{subtitle}.") #TODO: i18in
|
||||||
|
|
||||||
|
onError = ->
|
||||||
|
$confirm.notify("error", null, "We have not been able to delete #{subtitle}.") #TODO: i18in
|
||||||
|
|
||||||
|
$confirm.ask(title, subtitle).then ->
|
||||||
|
$repo.remove(attachment).then(onSuccess, onError)
|
||||||
|
|
||||||
|
## Actions (on edit mode)
|
||||||
|
$el.on "click", "a.editable.icon-delete", (event) ->
|
||||||
|
event.preventDefault()
|
||||||
|
render(attachment)
|
||||||
|
|
||||||
|
$el.on "click", "a.editable.icon-floppy", (event) ->
|
||||||
|
newDescription = $el.find("input[name='description']").val()
|
||||||
|
newIsDeprecated = $el.find("input[name='is-deprecated']").prop("checked")
|
||||||
|
|
||||||
|
if newDescription != attachment.description
|
||||||
|
attachment.setAttr("description", newDescription)
|
||||||
|
if newIsDeprecated != attachment.is_deprecated
|
||||||
|
attachment.setAttr("is_deprecated", newIsDeprecated)
|
||||||
|
|
||||||
|
onSuccess = ->
|
||||||
|
$ctrl.loadAttachments(attachment.object_id)
|
||||||
|
$confirm.notify("success")
|
||||||
|
|
||||||
|
onError = ->
|
||||||
|
$confirm.notify("error")
|
||||||
|
|
||||||
|
if attachment.isModified()
|
||||||
|
$repo.save(attachment).then(onSuccess, onError)
|
||||||
|
|
||||||
## On destroy
|
## On destroy
|
||||||
$scope.$on "$destroy", ->
|
$scope.$on "$destroy", ->
|
||||||
$el.off()
|
$el.off()
|
||||||
|
@ -149,4 +200,5 @@ AttachmentDirective = ($log) ->
|
||||||
require: "ngModel"
|
require: "ngModel"
|
||||||
}
|
}
|
||||||
|
|
||||||
module.directive("tgAttachment", ["$log", AttachmentDirective])
|
module.directive("tgAttachment", ["$log", "$tgRepo", "$tgResources", "$tgConfirm",
|
||||||
|
AttachmentDirective])
|
||||||
|
|
Loading…
Reference in New Issue