|
|
@ -8,10 +8,13 @@ template(name="cardDetails") |
|
|
|
a.fa.fa-times-thin.close-card-details.js-close-card-details |
|
|
|
a.fa.fa-times-thin.close-card-details.js-close-card-details |
|
|
|
if currentUser.isBoardMember |
|
|
|
if currentUser.isBoardMember |
|
|
|
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu |
|
|
|
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu |
|
|
|
|
|
|
|
input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}") |
|
|
|
|
|
|
|
a.fa.fa-link.card-copy-button.js-copy-link |
|
|
|
if isMiniScreen |
|
|
|
if isMiniScreen |
|
|
|
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details |
|
|
|
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details |
|
|
|
if currentUser.isBoardMember |
|
|
|
if currentUser.isBoardMember |
|
|
|
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu |
|
|
|
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu |
|
|
|
|
|
|
|
a.fa.fa-link.card-copy-mobile-button |
|
|
|
h2.card-details-title.js-card-title( |
|
|
|
h2.card-details-title.js-card-title( |
|
|
|
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") |
|
|
|
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") |
|
|
|
+viewer |
|
|
|
+viewer |
|
|
@ -36,92 +39,103 @@ template(name="cardDetails") |
|
|
|
p.warning {{_ 'card-archived'}} |
|
|
|
p.warning {{_ 'card-archived'}} |
|
|
|
|
|
|
|
|
|
|
|
.card-details-items |
|
|
|
.card-details-items |
|
|
|
.card-details-item.card-details-item-received |
|
|
|
if currentBoard.allowsReceivedDate |
|
|
|
h3 |
|
|
|
.card-details-item.card-details-item-received |
|
|
|
i.fa.fa-sign-out |
|
|
|
h3 |
|
|
|
card-details-item-title {{_ 'card-received'}} |
|
|
|
i.fa.fa-sign-out |
|
|
|
if getReceived |
|
|
|
card-details-item-title {{_ 'card-received'}} |
|
|
|
+cardReceivedDate |
|
|
|
if getReceived |
|
|
|
else |
|
|
|
+cardReceivedDate |
|
|
|
if canModifyCard |
|
|
|
else |
|
|
|
unless currentUser.isWorker |
|
|
|
if canModifyCard |
|
|
|
a.js-received-date {{_ 'add'}} |
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.card-label.add-label.js-received-date |
|
|
|
.card-details-item.card-details-item-start |
|
|
|
i.fa.fa-plus |
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-hourglass-start |
|
|
|
if currentBoard.allowsStartDate |
|
|
|
card-details-item-title {{_ 'card-start'}} |
|
|
|
.card-details-item.card-details-item-start |
|
|
|
if getStart |
|
|
|
h3 |
|
|
|
+cardStartDate |
|
|
|
i.fa.fa-hourglass-start |
|
|
|
else |
|
|
|
card-details-item-title {{_ 'card-start'}} |
|
|
|
if canModifyCard |
|
|
|
if getStart |
|
|
|
unless currentUser.isWorker |
|
|
|
+cardStartDate |
|
|
|
a.js-start-date {{_ 'add'}} |
|
|
|
else |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.card-label.add-label.js-start-date |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if currentBoard.allowsDueDate |
|
|
|
|
|
|
|
.card-details-item.card-details-item-due |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-sign-in |
|
|
|
|
|
|
|
card-details-item-title {{_ 'card-due'}} |
|
|
|
|
|
|
|
if getDue |
|
|
|
|
|
|
|
+cardDueDate |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.card-label.add-label.js-due-date |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if currentBoard.allowsEndDate |
|
|
|
|
|
|
|
.card-details-item.card-details-item-end |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-hourglass-end |
|
|
|
|
|
|
|
card-details-item-title {{_ 'card-end'}} |
|
|
|
|
|
|
|
if getEnd |
|
|
|
|
|
|
|
+cardEndDate |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.card-label.add-label.js-end-date |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
|
|
|
|
.card-details-item.card-details-item-due |
|
|
|
.card-details-items |
|
|
|
h3 |
|
|
|
if currentBoard.allowsMembers |
|
|
|
i.fa.fa-sign-in |
|
|
|
.card-details-item.card-details-item-members |
|
|
|
card-details-item-title {{_ 'card-due'}} |
|
|
|
h3 |
|
|
|
if getDue |
|
|
|
i.fa.fa-users |
|
|
|
+cardDueDate |
|
|
|
card-details-item-title {{_ 'members'}} |
|
|
|
else |
|
|
|
each getMembers |
|
|
|
|
|
|
|
+userAvatar(userId=this cardId=../_id) |
|
|
|
|
|
|
|
| {{! XXX Hack to hide syntaxic coloration /// }} |
|
|
|
if canModifyCard |
|
|
|
if canModifyCard |
|
|
|
unless currentUser.isWorker |
|
|
|
unless currentUser.isWorker |
|
|
|
a.js-due-date {{_ 'add'}} |
|
|
|
a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
.card-details-item.card-details-item-end |
|
|
|
|
|
|
|
h3 |
|
|
|
//if assigneeSelected |
|
|
|
i.fa.fa-hourglass-end |
|
|
|
if currentBoard.allowsAssignee |
|
|
|
card-details-item-title {{_ 'card-end'}} |
|
|
|
.card-details-item.card-details-item-assignees |
|
|
|
if getEnd |
|
|
|
h3 |
|
|
|
+cardEndDate |
|
|
|
i.fa.fa-user |
|
|
|
else |
|
|
|
card-details-item-title {{_ 'assignee'}} |
|
|
|
|
|
|
|
each getAssignees |
|
|
|
|
|
|
|
+userAvatarAssignee(userId=this cardId=../_id) |
|
|
|
|
|
|
|
| {{! XXX Hack to hide syntaxic coloration /// }} |
|
|
|
if canModifyCard |
|
|
|
if canModifyCard |
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.js-end-date {{_ 'add'}} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.card-details-items |
|
|
|
|
|
|
|
.card-details-item.card-details-item-members |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-users |
|
|
|
|
|
|
|
card-details-item-title {{_ 'members'}} |
|
|
|
|
|
|
|
each getMembers |
|
|
|
|
|
|
|
+userAvatar(userId=this cardId=../_id) |
|
|
|
|
|
|
|
| {{! XXX Hack to hide syntaxic coloration /// }} |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}") |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.card-details-item.card-details-item-assignees |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-user |
|
|
|
|
|
|
|
card-details-item-title {{_ 'assignee'}} |
|
|
|
|
|
|
|
each getAssignees |
|
|
|
|
|
|
|
+userAvatarAssignee(userId=this cardId=../_id) |
|
|
|
|
|
|
|
| {{! XXX Hack to hide syntaxic coloration /// }} |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
if currentUser.isWorker |
|
|
|
|
|
|
|
unless assigneeSelected |
|
|
|
|
|
|
|
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") |
|
|
|
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") |
|
|
|
i.fa.fa-plus |
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
if currentUser.isWorker |
|
|
|
|
|
|
|
unless assigneeSelected |
|
|
|
.card-details-item.card-details-item-labels |
|
|
|
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}") |
|
|
|
h3 |
|
|
|
i.fa.fa-plus |
|
|
|
i.fa.fa-tags |
|
|
|
|
|
|
|
card-details-item-title {{_ 'labels'}} |
|
|
|
if currentBoard.allowsLabels |
|
|
|
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}") |
|
|
|
.card-details-item.card-details-item-labels |
|
|
|
each labels |
|
|
|
h3 |
|
|
|
span.card-label(class="card-label-{{color}}" title=name) |
|
|
|
i.fa.fa-tags |
|
|
|
+viewer |
|
|
|
card-details-item-title {{_ 'labels'}} |
|
|
|
= name |
|
|
|
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}") |
|
|
|
if canModifyCard |
|
|
|
each labels |
|
|
|
unless currentUser.isWorker |
|
|
|
span.card-label(class="card-label-{{color}}" title=name) |
|
|
|
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") |
|
|
|
+viewer |
|
|
|
i.fa.fa-plus |
|
|
|
= name |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}") |
|
|
|
|
|
|
|
i.fa.fa-plus |
|
|
|
|
|
|
|
|
|
|
|
.card-details-items |
|
|
|
.card-details-items |
|
|
|
each customFieldsWD |
|
|
|
each customFieldsWD |
|
|
@ -143,9 +157,9 @@ template(name="cardDetails") |
|
|
|
//- XXX We should use "editable" to avoid repetiting ourselves |
|
|
|
//- XXX We should use "editable" to avoid repetiting ourselves |
|
|
|
if canModifyCard |
|
|
|
if canModifyCard |
|
|
|
unless currentUser.isWorker |
|
|
|
unless currentUser.isWorker |
|
|
|
h3 |
|
|
|
//h3 |
|
|
|
i.fa.fa-align-left |
|
|
|
// i.fa.fa-align-left |
|
|
|
card-details-item-title {{_ 'description'}} |
|
|
|
// card-details-item-title {{_ 'description'}} |
|
|
|
+inlinedCardDescription(classNames="card-description js-card-description") |
|
|
|
+inlinedCardDescription(classNames="card-description js-card-description") |
|
|
|
+editor(autofocus=true) |
|
|
|
+editor(autofocus=true) |
|
|
|
| {{getUnsavedValue 'cardDescription' _id getDescription}} |
|
|
|
| {{getUnsavedValue 'cardDescription' _id getDescription}} |
|
|
@ -153,16 +167,16 @@ template(name="cardDetails") |
|
|
|
button.primary(type="submit") {{_ 'save'}} |
|
|
|
button.primary(type="submit") {{_ 'save'}} |
|
|
|
a.fa.fa-times-thin.js-close-inlined-form |
|
|
|
a.fa.fa-times-thin.js-close-inlined-form |
|
|
|
else |
|
|
|
else |
|
|
|
a.js-open-inlined-form |
|
|
|
a.description-item.add-description.js-open-inlined-form |
|
|
|
if getDescription |
|
|
|
if getDescription |
|
|
|
+viewer |
|
|
|
+viewer |
|
|
|
= getDescription |
|
|
|
= getDescription |
|
|
|
else |
|
|
|
else |
|
|
|
| {{_ 'edit'}} |
|
|
|
| {{_ 'addmore-detail'}} |
|
|
|
if (hasUnsavedValue 'cardDescription' _id) |
|
|
|
if (hasUnsavedValue 'cardDescription' _id) |
|
|
|
p.quiet |
|
|
|
p.quiet |
|
|
|
| {{_ 'unsaved-description'}} |
|
|
|
| {{_ 'unsaved-description'}} |
|
|
|
a.js-open-inlined-form {{_ 'view-it'}} |
|
|
|
a.description-item.add-description.js-open-inlined-form {{_ 'view-it'}} |
|
|
|
= ' - ' |
|
|
|
= ' - ' |
|
|
|
a.js-close-inlined-form {{_ 'discard'}} |
|
|
|
a.js-close-inlined-form {{_ 'discard'}} |
|
|
|
else if getDescription |
|
|
|
else if getDescription |
|
|
@ -171,57 +185,60 @@ template(name="cardDetails") |
|
|
|
= getDescription |
|
|
|
= getDescription |
|
|
|
|
|
|
|
|
|
|
|
.card-details-items |
|
|
|
.card-details-items |
|
|
|
.card-details-item.card-details-item-name |
|
|
|
if currentBoard.allowsRequestedBy |
|
|
|
h3 |
|
|
|
.card-details-item.card-details-item-name |
|
|
|
i.fa.fa-shopping-cart |
|
|
|
h3 |
|
|
|
card-details-item-title {{_ 'requested-by'}} |
|
|
|
i.fa.fa-shopping-cart |
|
|
|
if canModifyCard |
|
|
|
card-details-item-title {{_ 'requested-by'}} |
|
|
|
unless currentUser.isWorker |
|
|
|
if canModifyCard |
|
|
|
+inlinedForm(classNames="js-card-details-requester") |
|
|
|
unless currentUser.isWorker |
|
|
|
+editCardRequesterForm |
|
|
|
+inlinedForm(classNames="js-card-details-requester") |
|
|
|
else |
|
|
|
+editCardRequesterForm |
|
|
|
a.js-open-inlined-form |
|
|
|
else |
|
|
|
if getRequestedBy |
|
|
|
a.js-open-inlined-form |
|
|
|
+viewer |
|
|
|
if getRequestedBy |
|
|
|
= getRequestedBy |
|
|
|
+viewer |
|
|
|
else |
|
|
|
= getRequestedBy |
|
|
|
| {{_ 'add'}} |
|
|
|
else |
|
|
|
else if getRequestedBy |
|
|
|
| {{_ 'add'}} |
|
|
|
+viewer |
|
|
|
else if getRequestedBy |
|
|
|
= getRequestedBy |
|
|
|
+viewer |
|
|
|
|
|
|
|
= getRequestedBy |
|
|
|
.card-details-item.card-details-item-name |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-user-plus |
|
|
|
|
|
|
|
card-details-item-title {{_ 'assigned-by'}} |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
+inlinedForm(classNames="js-card-details-assigner") |
|
|
|
|
|
|
|
+editCardAssignerForm |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
a.js-open-inlined-form |
|
|
|
|
|
|
|
if getAssignedBy |
|
|
|
|
|
|
|
+viewer |
|
|
|
|
|
|
|
= getAssignedBy |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
| {{_ 'add'}} |
|
|
|
|
|
|
|
else if getRequestedBy |
|
|
|
|
|
|
|
+viewer |
|
|
|
|
|
|
|
= getAssignedBy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hr |
|
|
|
|
|
|
|
+checklists(cardId = _id) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if currentBoard.allowsSubtasks |
|
|
|
|
|
|
|
hr |
|
|
|
|
|
|
|
+subtasks(cardId = _id) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hr |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-paperclip |
|
|
|
|
|
|
|
| {{_ 'attachments'}} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+attachmentsGalery |
|
|
|
if currentBoard.allowsAssignedBy |
|
|
|
|
|
|
|
.card-details-item.card-details-item-name |
|
|
|
|
|
|
|
h3 |
|
|
|
|
|
|
|
i.fa.fa-user-plus |
|
|
|
|
|
|
|
card-details-item-title {{_ 'assigned-by'}} |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
unless currentUser.isWorker |
|
|
|
|
|
|
|
+inlinedForm(classNames="js-card-details-assigner") |
|
|
|
|
|
|
|
+editCardAssignerForm |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
a.js-open-inlined-form |
|
|
|
|
|
|
|
if getAssignedBy |
|
|
|
|
|
|
|
+viewer |
|
|
|
|
|
|
|
= getAssignedBy |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
| {{_ 'add'}} |
|
|
|
|
|
|
|
else if getRequestedBy |
|
|
|
|
|
|
|
+viewer |
|
|
|
|
|
|
|
= getAssignedBy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.card-checklist-attachmentGalerys |
|
|
|
|
|
|
|
.card-checklist-attachmentGalery.card-checklists |
|
|
|
|
|
|
|
if currentBoard.allowsChecklists |
|
|
|
|
|
|
|
+checklists(cardId = _id) |
|
|
|
|
|
|
|
if currentBoard.allowsSubtasks |
|
|
|
|
|
|
|
hr |
|
|
|
|
|
|
|
+subtasks(cardId = _id) |
|
|
|
|
|
|
|
if currentBoard.allowsAttachments |
|
|
|
|
|
|
|
//- hr |
|
|
|
|
|
|
|
//- h3 |
|
|
|
|
|
|
|
//- i.fa.fa-paperclip |
|
|
|
|
|
|
|
//- | {{_ 'attachments'}} |
|
|
|
|
|
|
|
.card-checklist-attachmentGalery.card-attachmentGalery |
|
|
|
|
|
|
|
+attachmentsGalery |
|
|
|
|
|
|
|
|
|
|
|
hr |
|
|
|
hr |
|
|
|
unless currentUser.isNoComments |
|
|
|
unless currentUser.isNoComments |
|
|
@ -237,9 +254,16 @@ template(name="cardDetails") |
|
|
|
else |
|
|
|
else |
|
|
|
input.toggle-switch(type="checkbox" id="toggleButton") |
|
|
|
input.toggle-switch(type="checkbox" id="toggleButton") |
|
|
|
label.toggle-label(for="toggleButton") |
|
|
|
label.toggle-label(for="toggleButton") |
|
|
|
if currentUser.isBoardMember |
|
|
|
if currentBoard.allowsComments |
|
|
|
unless currentUser.isNoComments |
|
|
|
if currentUser.isBoardMember |
|
|
|
+commentForm |
|
|
|
unless currentUser.isNoComments |
|
|
|
|
|
|
|
if canModifyCard |
|
|
|
|
|
|
|
+inlinedForm(autoclose=false classNames="js-new-comment-form") |
|
|
|
|
|
|
|
+commentForm |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
+userAvatar(userId=currentUser._id) |
|
|
|
|
|
|
|
a.comment-item.add-comment.js-open-inlined-form |
|
|
|
|
|
|
|
| {{_ 'Write Comment'}} |
|
|
|
unless currentUser.isNoComments |
|
|
|
unless currentUser.isNoComments |
|
|
|
if isLoaded.get |
|
|
|
if isLoaded.get |
|
|
|
if isLinkedCard |
|
|
|
if isLinkedCard |
|
|
|