cardDetails.jade 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. template(name="cardDetails")
  2. section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
  3. .card-details-header
  4. +inlinedForm(classNames="js-card-details-title")
  5. +editCardTitleForm
  6. else
  7. a.fa.fa-times-thin.close-card-details.js-close-card-details
  8. if currentUser.isBoardMember
  9. a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
  10. h2.card-details-title.js-card-title(
  11. class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
  12. +viewer
  13. = title
  14. if isWatching
  15. i.fa.fa-eye.card-details-watch
  16. if archived
  17. p.warning {{_ 'card-archived'}}
  18. .card-details-items
  19. .card-details-item.card-details-item-received
  20. h3.card-details-item-title {{_ 'card-received'}}
  21. if receivedAt
  22. +cardReceivedDate
  23. else
  24. a.js-received-date {{_ 'add'}}
  25. .card-details-item.card-details-item-start
  26. h3.card-details-item-title {{_ 'card-start'}}
  27. if startAt
  28. +cardStartDate
  29. else
  30. a.js-start-date {{_ 'add'}}
  31. .card-details-item.card-details-item-due
  32. h3.card-details-item-title {{_ 'card-due'}}
  33. if dueAt
  34. +cardDueDate
  35. else
  36. a.js-due-date {{_ 'add'}}
  37. .card-details-item.card-details-item-end
  38. h3.card-details-item-title {{_ 'card-end'}}
  39. if endAt
  40. +cardEndDate
  41. else
  42. a.js-end-date {{_ 'add'}}
  43. .card-details-items
  44. .card-details-item.card-details-item-members
  45. h3.card-details-item-title {{_ 'members'}}
  46. each members
  47. +userAvatar(userId=this cardId=../_id)
  48. | {{! XXX Hack to hide syntaxic coloration /// }}
  49. if canModifyCard
  50. a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
  51. i.fa.fa-plus
  52. .card-details-item.card-details-item-labels
  53. h3.card-details-item-title {{_ 'labels'}}
  54. a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
  55. each labels
  56. span.card-label(class="card-label-{{color}}" title=name)= name
  57. if canModifyCard
  58. a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
  59. i.fa.fa-plus
  60. .card-details-items
  61. each customFieldsWD
  62. .card-details-item.card-details-item-customfield
  63. h3.card-details-item-title
  64. = definition.name
  65. +cardCustomField
  66. .card-details-items
  67. if spentTime
  68. .card-details-item.card-details-item-spent
  69. if isOvertime
  70. h3.card-details-item-title {{_ 'overtime-hours'}}
  71. else
  72. h3.card-details-item-title {{_ 'spent-time-hours'}}
  73. +cardSpentTime
  74. //- XXX We should use "editable" to avoid repetiting ourselves
  75. if canModifyCard
  76. h3.card-details-item-title {{_ 'description'}}
  77. +inlinedCardDescription(classNames="card-description js-card-description")
  78. +editor(autofocus=true)
  79. | {{getUnsavedValue 'cardDescription' _id description}}
  80. .edit-controls.clearfix
  81. button.primary(type="submit") {{_ 'save'}}
  82. a.fa.fa-times-thin.js-close-inlined-form
  83. else
  84. a.js-open-inlined-form
  85. if description
  86. +viewer
  87. = description
  88. else
  89. | {{_ 'edit'}}
  90. if (hasUnsavedValue 'cardDescription' _id)
  91. p.quiet
  92. | {{_ 'unsaved-description'}}
  93. a.js-open-inlined-form {{_ 'view-it'}}
  94. = ' - '
  95. a.js-close-inlined-form {{_ 'discard'}}
  96. else if description
  97. h3.card-details-item-title {{_ 'description'}}
  98. +viewer
  99. = description
  100. .card-details-items
  101. .card-details-item.card-details-item-name
  102. h3.card-details-item-title {{_ 'requested-by'}}
  103. if canModifyCard
  104. +inlinedForm(classNames="js-card-details-requester")
  105. +editCardRequesterForm
  106. else
  107. a.js-open-inlined-form
  108. if requestedBy
  109. +viewer
  110. = requestedBy
  111. else
  112. | {{_ 'add'}}
  113. else if requestedBy
  114. +viewer
  115. = requestedBy
  116. .card-details-item.card-details-item-name
  117. h3.card-details-item-title {{_ 'assigned-by'}}
  118. if canModifyCard
  119. +inlinedForm(classNames="js-card-details-assigner")
  120. +editCardAssignerForm
  121. else
  122. a.js-open-inlined-form
  123. if assignedBy
  124. +viewer
  125. = assignedBy
  126. else
  127. | {{_ 'add'}}
  128. else if requestedBy
  129. +viewer
  130. = assignedBy
  131. hr
  132. +checklists(cardId = _id)
  133. hr
  134. h3
  135. i.fa.fa-paperclip
  136. | {{_ 'attachments'}}
  137. +attachmentsGalery
  138. hr
  139. .activity-title
  140. h3 {{ _ 'activity'}}
  141. if currentUser.isBoardMember
  142. .material-toggle-switch
  143. span.toggle-switch-title {{_ 'hide-system-messages'}}
  144. if hiddenSystemMessages
  145. input.toggle-switch(type="checkbox" id="toggleButton" checked="checked")
  146. else
  147. input.toggle-switch(type="checkbox" id="toggleButton")
  148. label.toggle-label(for="toggleButton")
  149. if currentUser.isBoardMember
  150. +commentForm
  151. if isLoaded.get
  152. +activities(card=this mode="card")
  153. template(name="editCardTitleForm")
  154. textarea.js-edit-card-title(rows='1' autofocus)
  155. = title
  156. .edit-controls.clearfix
  157. button.primary.confirm.js-submit-edit-card-title-form(type="submit") {{_ 'save'}}
  158. a.fa.fa-times-thin.js-close-inlined-form
  159. template(name="editCardRequesterForm")
  160. input.js-edit-card-requester(type='text' autofocus value=requestedBy )
  161. .edit-controls.clearfix
  162. button.primary.confirm.js-submit-edit-card-requester-form(type="submit") {{_ 'save'}}
  163. a.fa.fa-times-thin.js-close-inlined-form
  164. template(name="editCardAssignerForm")
  165. input.js-edit-card-assigner(type='text' autofocus value=assignedBy)
  166. .edit-controls.clearfix
  167. button.primary.confirm.js-submit-edit-card-assigner-form(type="submit") {{_ 'save'}}
  168. a.fa.fa-times-thin.js-close-inlined-form
  169. template(name="cardDetailsActionsPopup")
  170. ul.pop-over-list
  171. li: a.js-toggle-watch-card {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
  172. if canModifyCard
  173. hr
  174. ul.pop-over-list
  175. li: a.js-members {{_ 'card-edit-members'}}
  176. li: a.js-labels {{_ 'card-edit-labels'}}
  177. li: a.js-attachments {{_ 'card-edit-attachments'}}
  178. li: a.js-custom-fields {{_ 'card-edit-custom-fields'}}
  179. li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
  180. li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
  181. li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
  182. li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
  183. li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
  184. hr
  185. ul.pop-over-list
  186. li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}
  187. li: a.js-move-card-to-bottom {{_ 'moveCardToBottom-title'}}
  188. hr
  189. ul.pop-over-list
  190. li: a.js-move-card {{_ 'moveCardPopup-title'}}
  191. li: a.js-copy-card {{_ 'copyCardPopup-title'}}
  192. li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}}
  193. unless archived
  194. li: a.js-archive {{_ 'archive-card'}}
  195. li: a.js-more {{_ 'cardMorePopup-title'}}
  196. template(name="moveCardPopup")
  197. +boardsAndLists
  198. template(name="copyCardPopup")
  199. label(for='copy-card-title') {{_ 'title'}}:
  200. textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
  201. = title
  202. +boardsAndLists
  203. template(name="copyChecklistToManyCardsPopup")
  204. label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
  205. textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
  206. | {{_ 'copyChecklistToManyCardsPopup-format'}}
  207. +boardsAndLists
  208. template(name="boardsAndLists")
  209. label {{_ 'boards'}}:
  210. select.js-select-boards
  211. each boards
  212. if $eq _id currentBoard._id
  213. option(value="{{_id}}" selected) {{_ 'current'}}
  214. else
  215. option(value="{{_id}}") {{title}}
  216. label {{_ 'swimlanes'}}:
  217. select.js-select-swimlanes
  218. each swimlanes
  219. option(value="{{_id}}") {{title}}
  220. label {{_ 'lists'}}:
  221. select.js-select-lists
  222. each aBoardLists
  223. option(value="{{_id}}") {{title}}
  224. .edit-controls.clearfix
  225. button.primary.confirm.js-done {{_ 'done'}}
  226. template(name="cardMembersPopup")
  227. ul.pop-over-list.js-card-member-list
  228. each board.activeMembers
  229. li.item(class="{{#if isCardMember}}active{{/if}}")
  230. a.name.js-select-member(href="#")
  231. +userAvatar(userId=user._id)
  232. span.full-name
  233. = user.profile.fullname
  234. | (<span class="username">{{ user.username }}</span>)
  235. if isCardMember
  236. i.fa.fa-check
  237. template(name="cardMorePopup")
  238. p.quiet
  239. span.clearfix
  240. span {{_ 'link-card'}}
  241. = ' '
  242. i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
  243. input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}")
  244. button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
  245. span.clearfix
  246. br
  247. | {{_ 'added'}}
  248. span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
  249. a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
  250. template(name="cardDeletePopup")
  251. p {{_ "card-delete-pop"}}
  252. unless archived
  253. p {{_ "card-delete-suggest-archive"}}
  254. button.js-confirm.negate.full(type="submit") {{_ 'delete'}}