boardHeader.jade 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. template(name="boardHeaderBar")
  2. h1.header-board-menu
  3. with currentBoard
  4. a(class="{{#if currentUser.isBoardAdmin}}js-edit-board-title{{else}}is-disabled{{/if}}")
  5. +viewer
  6. = title
  7. .board-header-btns.left
  8. unless isMiniScreen
  9. unless isSandstorm
  10. if currentBoard
  11. if currentUser
  12. a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
  13. title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
  14. i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
  15. if showStarCounter
  16. span
  17. = currentBoard.stars
  18. a.board-header-btn(
  19. class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
  20. title="{{_ currentBoard.permission}}")
  21. i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
  22. span {{_ currentBoard.permission}}
  23. a.board-header-btn.js-watch-board(
  24. title="{{_ watchLevel }}")
  25. if $eq watchLevel "watching"
  26. i.fa.fa-eye
  27. if $eq watchLevel "tracking"
  28. i.fa.fa-bell
  29. if $eq watchLevel "muted"
  30. i.fa.fa-bell-slash
  31. span {{_ watchLevel}}
  32. else
  33. a.board-header-btn.js-log-in(
  34. title="{{_ 'log-in'}}")
  35. i.fa.fa-sign-in
  36. span {{_ 'log-in'}}
  37. .board-header-btns.right
  38. if currentBoard
  39. if isMiniScreen
  40. unless isSandstorm
  41. if currentUser
  42. a.board-header-btn.js-star-board(class="{{#if isStarred}}is-active{{/if}}"
  43. title="{{#if isStarred}}{{_ 'click-to-unstar'}}{{else}}{{_ 'click-to-star'}}{{/if}} {{_ 'starred-boards-description'}}")
  44. i.fa(class="fa-star{{#unless isStarred}}-o{{/unless}}")
  45. if showStarCounter
  46. span
  47. = currentBoard.stars
  48. a.board-header-btn(
  49. class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
  50. title="{{_ currentBoard.permission}}")
  51. i.fa(class="{{#if currentBoard.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
  52. span {{_ currentBoard.permission}}
  53. a.board-header-btn.js-watch-board(
  54. title="{{_ watchLevel }}")
  55. if $eq watchLevel "watching"
  56. i.fa.fa-eye
  57. if $eq watchLevel "tracking"
  58. i.fa.fa-bell
  59. if $eq watchLevel "muted"
  60. i.fa.fa-bell-slash
  61. span {{_ watchLevel}}
  62. else
  63. a.board-header-btn.js-log-in(
  64. title="{{_ 'log-in'}}")
  65. i.fa.fa-sign-in
  66. span {{_ 'log-in'}}
  67. if isSandstorm
  68. if currentUser
  69. a.board-header-btn.js-open-archived-board
  70. i.fa.fa-archive
  71. span {{_ 'archives'}}
  72. a.board-header-btn.js-open-filter-view(
  73. title="{{#if Filter.isActive}}{{_ 'filter-on-desc'}}{{else}}{{_ 'filter'}}{{/if}}"
  74. class="{{#if Filter.isActive}}emphasis{{/if}}")
  75. i.fa.fa-filter
  76. span {{#if Filter.isActive}}{{_ 'filter-on'}}{{else}}{{_ 'filter'}}{{/if}}
  77. if Filter.isActive
  78. a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
  79. i.fa.fa-times-thin
  80. a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")
  81. i.fa.fa-search
  82. span {{_ 'search'}}
  83. a.board-header-btn.js-toggle-board-view(
  84. title="{{_ 'board-view'}}")
  85. i.fa.fa-th-large
  86. span {{_ currentUser.profile.boardView}}
  87. if canModifyBoard
  88. a.board-header-btn.js-multiselection-activate(
  89. title="{{#if MultiSelection.isActive}}{{_ 'multi-selection-on'}}{{else}}{{_ 'multi-selection'}}{{/if}}"
  90. class="{{#if MultiSelection.isActive}}emphasis{{/if}}")
  91. i.fa.fa-check-square-o
  92. span {{#if MultiSelection.isActive}}{{_ 'multi-selection-on'}}{{else}}{{_ 'multi-selection'}}{{/if}}
  93. if MultiSelection.isActive
  94. a.board-header-btn-close.js-multiselection-reset(title="{{_ 'filter-clear'}}")
  95. i.fa.fa-times-thin
  96. .separator
  97. a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
  98. i.board-header-btn-icon.fa.fa-navicon
  99. template(name="boardMenuPopup")
  100. ul.pop-over-list
  101. li: a.js-custom-fields {{_ 'custom-fields'}}
  102. li: a.js-open-archives {{_ 'archived-items'}}
  103. if currentUser.isBoardAdmin
  104. li: a.js-change-board-color {{_ 'board-change-color'}}
  105. //-
  106. XXX Language should be handled by sandstorm, but for now display a
  107. language selection link in the board menu. This link is normally present
  108. in the header bar that is not displayed on sandstorm.
  109. if isSandstorm
  110. li: a.js-change-language {{_ 'language'}}
  111. unless isSandstorm
  112. if currentUser.isBoardAdmin
  113. hr
  114. ul.pop-over-list
  115. li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
  116. li: a.js-archive-board {{_ 'archive-board'}}
  117. li: a.js-outgoing-webhooks {{_ 'outgoing-webhooks'}}
  118. hr
  119. ul.pop-over-list
  120. li: a.js-subtask-settings {{_ 'subtask-settings'}}
  121. if isSandstorm
  122. hr
  123. ul.pop-over-list
  124. li: a(href="{{exportUrl}}", download="{{exportFilename}}") {{_ 'export-board'}}
  125. li: a.js-import-board {{_ 'import-board-c'}}
  126. hr
  127. ul.pop-over-list
  128. li: a.js-subtask-settings {{_ 'subtask-settings'}}
  129. template(name="boardVisibilityList")
  130. ul.pop-over-list
  131. li
  132. with "private"
  133. a.js-select-visibility
  134. i.fa.fa-lock.colorful
  135. | {{_ 'private'}}
  136. if visibilityCheck
  137. i.fa.fa-check
  138. span.sub-name {{_ 'private-desc'}}
  139. li
  140. with "public"
  141. a.js-select-visibility
  142. i.fa.fa-globe.colorful
  143. | {{_ 'public'}}
  144. if visibilityCheck
  145. i.fa.fa-check
  146. span.sub-name {{_ 'public-desc'}}
  147. template(name="boardChangeVisibilityPopup")
  148. +boardVisibilityList
  149. template(name="boardChangeWatchPopup")
  150. ul.pop-over-list
  151. li
  152. with "watching"
  153. a.js-select-watch
  154. i.fa.fa-eye.colorful
  155. | {{_ 'watching'}}
  156. if watchCheck
  157. i.fa.fa-check
  158. span.sub-name {{_ 'watching-info'}}
  159. li
  160. with "tracking"
  161. a.js-select-watch
  162. i.fa.fa-bell.colorful
  163. | {{_ 'tracking'}}
  164. if watchCheck
  165. i.fa.fa-check
  166. span.sub-name {{_ 'tracking-info'}}
  167. li
  168. with "muted"
  169. a.js-select-watch
  170. i.fa.fa-bell-slash.colorful
  171. | {{_ 'muted'}}
  172. if watchCheck
  173. i.fa.fa-check
  174. span.sub-name {{_ 'muted-info'}}
  175. template(name="boardChangeColorPopup")
  176. .board-backgrounds-list.clearfix
  177. each backgroundColors
  178. .board-background-select.js-select-background
  179. span.background-box(class="board-color-{{this}}")
  180. if isSelected
  181. i.fa.fa-check
  182. template(name="boardSubtaskSettingsPopup")
  183. form.board-subtask-settings
  184. h3 {{_ 'show-parent-in-minicard'}}
  185. a#prefix-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
  186. .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
  187. span {{_ 'prefix-with-full-path'}}
  188. a#prefix-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
  189. .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
  190. span {{_ 'prefix-with-parent'}}
  191. a#subtext-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
  192. .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
  193. span {{_ 'subtext-with-full-path'}}
  194. a#subtext-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
  195. .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
  196. span {{_ 'subtext-with-parent'}}
  197. a#no-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
  198. .materialCheckBox(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
  199. span {{_ 'no-parent'}}
  200. div
  201. hr
  202. div.check-div
  203. a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  204. .materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  205. span {{_ 'show-subtasks-field'}}
  206. label
  207. | {{_ 'deposit-subtasks-board'}}
  208. select.js-field-deposit-board(disabled="{{#unless allowsSubtasks}}disabled{{/unless}}")
  209. each boards
  210. if isBoardSelected
  211. option(value=_id selected="selected") {{title}}
  212. else
  213. option(value=_id) {{title}}
  214. if isNullBoardSelected
  215. option(value='null' selected="selected") {{_ 'custom-field-dropdown-none'}}
  216. else
  217. option(value='null') {{_ 'custom-field-dropdown-none'}}
  218. div
  219. hr
  220. label
  221. | {{_ 'deposit-subtasks-list'}}
  222. select.js-field-deposit-list(disabled="{{#unless hasLists}}disabled{{/unless}}")
  223. each lists
  224. if isListSelected
  225. option(value=_id selected="selected") {{title}}
  226. else
  227. option(value=_id) {{title}}
  228. template(name="createBoard")
  229. form
  230. label
  231. | {{_ 'title'}}
  232. input.js-new-board-title(type="text" placeholder="{{_ 'bucket-example'}}" autofocus required)
  233. if visibilityMenuIsOpen.get
  234. +boardVisibilityList
  235. else
  236. p.quiet
  237. if $eq visibility.get 'public'
  238. span.fa.fa-globe.colorful
  239. = " "
  240. | {{{_ 'board-public-info'}}}
  241. else
  242. span.fa.fa-lock.colorful
  243. = " "
  244. | {{{_ 'board-private-info'}}}
  245. a.js-change-visibility {{_ 'change'}}.
  246. input.primary.wide(type="submit" value="{{_ 'create'}}")
  247. span.quiet
  248. | {{_ 'or'}}
  249. a.js-import-board {{_ 'import-board'}}
  250. template(name="chooseBoardSource")
  251. ul.pop-over-list
  252. li
  253. a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
  254. li
  255. a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
  256. template(name="boardChangeTitlePopup")
  257. form
  258. label
  259. | {{_ 'title'}}
  260. input.js-board-name(type="text" value=title autofocus)
  261. label
  262. | {{_ 'description'}}
  263. textarea.js-board-desc= description
  264. input.primary.wide(type="submit" value="{{_ 'rename'}}")
  265. template(name="archiveBoardPopup")
  266. p {{_ 'close-board-pop'}}
  267. button.js-confirm.negate.full(type="submit") {{_ 'archive'}}
  268. template(name="outgoingWebhooksPopup")
  269. each integrations
  270. form.integration-form
  271. if title
  272. h4 {{title}}
  273. else
  274. h4 {{_ 'no-name'}}
  275. label
  276. | URL
  277. input.js-outgoing-webhooks-url(type="text" name="url" value=url)
  278. input(type="hidden" value=_id name="id")
  279. input.primary.wide(type="submit" value="{{_ 'save'}}")
  280. form.integration-form
  281. h4
  282. | {{_ 'new-outgoing-webhook'}}
  283. label
  284. | URL
  285. input.js-outgoing-webhooks-url(type="text" name="url" autofocus)
  286. input.primary.wide(type="submit" value="{{_ 'save'}}")