sidebar.jade 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. template(name="sidebar")
  2. .board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}}")
  3. //a.sidebar-tongue.js-toggle-sidebar(
  4. // class="{{#if isTongueHidden}}is-hidden{{/if}}",
  5. // title="{{showTongueTitle}}")
  6. // i.fa.fa-navicon
  7. .sidebar-shadow
  8. .sidebar-content.js-board-sidebar-content
  9. //a.hide-btn.js-hide-sidebar
  10. // i.fa.fa-navicon
  11. unless isDefaultView
  12. h2
  13. a.fa.fa-chevron-left.js-back-home
  14. = getViewTitle
  15. +Template.dynamic(template=getViewTemplate)
  16. template(name='homeSidebar')
  17. hr
  18. +membersWidget
  19. hr
  20. +labelsWidget
  21. ul#cards.label-text-hidden
  22. a.flex.js-toggle-minicard-label-text(title="{{_ 'hide-minicard-label-text'}}")
  23. span {{_ 'hide-minicard-label-text'}}
  24. b  
  25. .materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
  26. hr
  27. unless currentUser.isNoComments
  28. h3
  29. i.fa.fa-comments-o
  30. | {{_ 'activities'}}
  31. +activities(mode="board")
  32. template(name="membersWidget")
  33. unless currentUser.isCommentOnly
  34. unless currentUser.isWorker
  35. h3
  36. a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
  37. i.board-header-btn-icon.fa.fa-cog
  38. | {{_ 'boardMenuPopup-title'}}
  39. .board-widget.board-widget-members
  40. .sidebar-shortcuts
  41. a.board-header-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
  42. i.fa.fa-keyboard-o
  43. span {{_ 'keyboard-shortcuts' }}
  44. hr
  45. h3
  46. i.fa.fa-users
  47. | {{_ 'members'}}
  48. +basicTabs(tabs=tabs)
  49. +tabContent(slug="people")
  50. unless isWorker
  51. p.quiet
  52. .board-widget-content
  53. each currentBoard.activeMembers
  54. +userAvatar(userId=this.userId showStatus=true)
  55. if isSandstorm
  56. if currentUser.isBoardMember
  57. a.member.add-member.sandstorm-powerbox-request-identity(title="{{_ 'add-members'}}")
  58. i.fa.fa-plus
  59. else if currentUser.isBoardAdmin
  60. a.member.add-member.js-manage-board-members(title="{{_ 'add-members'}}")
  61. i.fa.fa-plus
  62. .clearfix
  63. if isInvited
  64. hr
  65. p
  66. i.fa.fa-exclamation-circle
  67. | {{_ 'just-invited'}}
  68. button.js-member-invite-accept.primary {{_ 'accept'}}
  69. button.js-member-invite-decline {{_ 'decline'}}
  70. +tabContent(slug='organizations')
  71. unless isWorker
  72. p.quiet
  73. if AtLeastOneOrgWasCreated
  74. .board-widget.board-widget-members
  75. .board-widget-content
  76. +boardOrgGeneral
  77. .clearfix
  78. +tabContent(slug="teams")
  79. unless isWorker
  80. p.quiet
  81. if AtLeastOneTeamWasCreated
  82. .board-widget.board-widget-members
  83. .board-widget-content
  84. +boardTeamGeneral
  85. .clearfix
  86. template(name="boardOrgGeneral")
  87. table
  88. tbody
  89. tr
  90. th
  91. | {{_ 'add-organizations'}}
  92. br
  93. i.addOrganizationsLabel
  94. | {{_ 'to-create-organizations-contact-admin'}}
  95. br
  96. i.addOrganizationsLabel
  97. | {{_ 'add-organizations-label'}}
  98. th
  99. if currentUser.isBoardAdmin
  100. a.member.orgOrTeamMember.add-member.js-manage-board-addOrg(title="{{_ 'add-members'}}")
  101. i.addTeamFaPlus.fa.fa-plus
  102. .divaddfaplusminus
  103. | {{_ 'add'}}
  104. each org in currentBoard.activeOrgs
  105. +boardOrgRow(orgId=org.orgId)
  106. template(name="boardTeamGeneral")
  107. table
  108. tbody
  109. tr
  110. th
  111. | {{_ 'add-teams'}}
  112. br
  113. i.addTeamsLabel
  114. | {{_ 'to-create-teams-contact-admin'}}
  115. br
  116. i.addTeamsLabel
  117. | {{_ 'add-teams-label'}}
  118. th
  119. if currentUser.isBoardAdmin
  120. a.member.orgOrTeamMember.add-member.js-manage-board-addTeam(title="{{_ 'add-members'}}")
  121. i.addTeamFaPlus.fa.fa-plus
  122. .divaddfaplusminus
  123. | {{_ 'add'}}
  124. each currentBoard.activeTeams
  125. +boardTeamRow(teamId=this.teamId)
  126. template(name="boardChangeColorPopup")
  127. .board-backgrounds-list.clearfix
  128. each backgroundColors
  129. .board-background-select.js-select-background
  130. span.background-box(class="board-color-{{this}}")
  131. span {{this}}
  132. if isSelected
  133. i.fa.fa-check
  134. template(name="boardInfoOnMyBoardsPopup")
  135. form.board-info-on-my-boards
  136. h3 {{_ 'show-at-all-boards-page'}}
  137. div.check-div
  138. a.flex.js-field-has-cardcounterlist(class="{{#if allowsCardCounterList}}is-checked{{/if}}")
  139. .materialCheckBox(class="{{#if allowsCardCounterList}}is-checked{{/if}}")
  140. span
  141. i.fa.fa-sign-out
  142. | {{_ 'show-card-counter-per-list'}}
  143. div.check-div
  144. a.flex.js-field-has-boardmemberlist(class="{{#if allowsBoardMemberList}}is-checked{{/if}}")
  145. .materialCheckBox(class="{{#if allowsBoardMemberList}}is-checked{{/if}}")
  146. span
  147. i.fa.fa-hourglass-start
  148. | {{_ 'show-board_members-avatar'}}
  149. template(name="boardCardSettingsPopup")
  150. form.board-card-settings
  151. h3 {{_ 'show-on-card'}}
  152. div.check-div
  153. a.flex.js-field-has-receiveddate(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
  154. .materialCheckBox(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
  155. span
  156. i.fa.fa-sign-out
  157. | {{_ 'card-received'}}
  158. div.check-div
  159. a.flex.js-field-has-startdate(class="{{#if allowsStartDate}}is-checked{{/if}}")
  160. .materialCheckBox(class="{{#if allowsStartDate}}is-checked{{/if}}")
  161. span
  162. i.fa.fa-hourglass-start
  163. | {{_ 'card-start'}}
  164. div.check-div
  165. a.flex.js-field-has-duedate(class="{{#if allowsDueDate}}is-checked{{/if}}")
  166. .materialCheckBox(class="{{#if allowsDueDate}}is-checked{{/if}}")
  167. span
  168. i.fa.fa-sign-in
  169. | {{_ 'card-due'}}
  170. div.check-div
  171. a.flex.js-field-has-enddate(class="{{#if allowsEndDate}}is-checked{{/if}}")
  172. .materialCheckBox(class="{{#if allowsEndDate}}is-checked{{/if}}")
  173. span
  174. i.fa.fa-hourglass-end
  175. | {{_ 'card-end'}}
  176. div.check-div
  177. a.flex.js-field-has-members(class="{{#if allowsMembers}}is-checked{{/if}}")
  178. .materialCheckBox(class="{{#if allowsMembers}}is-checked{{/if}}")
  179. span
  180. i.fa.fa-users
  181. | {{_ 'members'}}
  182. div.check-div
  183. a.flex.js-field-has-creator(class="{{#if allowsCreator}}is-checked{{/if}}")
  184. .materialCheckBox(class="{{#if allowsCreator}}is-checked{{/if}}")
  185. span
  186. i.fa.fa-user
  187. | {{_ 'creator'}}
  188. div.check-div
  189. a.flex.js-field-has-assignee(class="{{#if allowsAssignee}}is-checked{{/if}}")
  190. .materialCheckBox(class="{{#if allowsAssignee}}is-checked{{/if}}")
  191. span
  192. i.fa.fa-user
  193. | {{_ 'assignee'}}
  194. div.check-div
  195. a.flex.js-field-has-assigned-by(class="{{#if allowsAssignedBy}}is-checked{{/if}}")
  196. .materialCheckBox(class="{{#if allowsAssignedBy}}is-checked{{/if}}")
  197. span
  198. i.fa.fa-shopping-cart
  199. | {{_ 'assigned-by'}}
  200. div.check-div
  201. a.flex.js-field-has-requested-by(class="{{#if allowsRequestedBy}}is-checked{{/if}}")
  202. .materialCheckBox(class="{{#if allowsRequestedBy}}is-checked{{/if}}")
  203. span
  204. i.fa.fa-user-plus
  205. | {{_ 'requested-by'}}
  206. div.check-div
  207. a.flex.js-field-has-card-sorting-by-number(class="{{#if allowsCardSortingByNumber}}is-checked{{/if}}")
  208. .materialCheckBox(class="{{#if allowsCardSortingByNumber}}is-checked{{/if}}")
  209. span
  210. i.fa.fa-sort
  211. | {{_ 'card-sorting-by-number'}}
  212. div.check-div
  213. a.flex.js-field-has-card-show-lists(class="{{#if allowsShowLists}}is-checked{{/if}}")
  214. .materialCheckBox(class="{{#if allowsShowLists}}is-checked{{/if}}")
  215. span
  216. i.fa.fa-list
  217. | {{_ 'card-show-lists'}}
  218. div.check-div
  219. a.flex.js-field-has-labels(class="{{#if allowsLabels}}is-checked{{/if}}")
  220. .materialCheckBox(class="{{#if allowsLabels}}is-checked{{/if}}")
  221. span
  222. i.fa.fa-tags
  223. | {{_ 'labels'}}
  224. div.check-div
  225. a.flex.js-field-has-card-number(class="{{#if allowsCardNumber}}is-checked{{/if}}")
  226. .materialCheckBox(class="{{#if allowsCardNumber}}is-checked{{/if}}")
  227. span
  228. i.fa.fa-hashtag
  229. | {{_ 'card'}}
  230. | {{_ 'number'}}
  231. div.check-div
  232. a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
  233. .materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
  234. span
  235. i.fa.fa-align-left
  236. | {{_ 'description'}}
  237. | {{_ 'title'}}
  238. div.check-div
  239. a.flex.js-field-has-description-text(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
  240. .materialCheckBox(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
  241. span
  242. i.fa.fa-align-left
  243. | {{_ 'description'}}
  244. | {{_ 'custom-field-text'}}
  245. div.check-div
  246. a.flex.js-field-has-checklists(class="{{#if allowsChecklists}}is-checked{{/if}}")
  247. .materialCheckBox(class="{{#if allowsChecklists}}is-checked{{/if}}")
  248. span
  249. i.fa.fa-check
  250. | {{_ 'checklists'}}
  251. div.check-div
  252. a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  253. .materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  254. span
  255. i.fa.fa-sitemap
  256. | {{_ 'subtasks'}}
  257. div.check-div
  258. a.flex.js-field-has-attachments(class="{{#if allowsAttachments}}is-checked{{/if}}")
  259. .materialCheckBox(class="{{#if allowsAttachments}}is-checked{{/if}}")
  260. span
  261. i.fa.fa-paperclip
  262. | {{_ 'attachments'}}
  263. //div.check-div
  264. // a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
  265. // .materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
  266. // span
  267. // i.fa.fa-comment-o
  268. // | {{_ 'comment'}}
  269. //div.check-div
  270. // a.flex.js-field-has-activities(class="{{#if allowsActivities}}is-checked{{/if}}")
  271. // .materialCheckBox(class="{{#if allowsActivities}}is-checked{{/if}}")
  272. // span
  273. // i.fa.fa-history
  274. // | {{_ 'activities'}}
  275. template(name="boardMinicardSettingsPopup")
  276. form.board-minicard-settings
  277. h3 {{_ 'show-on-minicard'}}
  278. div.check-div
  279. a.flex.js-field-has-description-text-on-minicard(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
  280. .materialCheckBox(class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
  281. span
  282. i.fa.fa-align-left
  283. | {{_ 'description-on-minicard'}}
  284. template(name="boardSubtaskSettingsPopup")
  285. form.board-subtask-settings
  286. h3 {{_ 'show-parent-in-minicard'}}
  287. a#prefix-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
  288. .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
  289. span {{_ 'prefix-with-full-path'}}
  290. a#prefix-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
  291. .materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
  292. span {{_ 'prefix-with-parent'}}
  293. a#subtext-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
  294. .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
  295. span {{_ 'subtext-with-full-path'}}
  296. a#subtext-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
  297. .materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
  298. span {{_ 'subtext-with-parent'}}
  299. a#no-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
  300. .materialCheckBox(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
  301. span {{_ 'no-parent'}}
  302. div
  303. hr
  304. div.check-div
  305. a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  306. .materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/if}}")
  307. span {{_ 'show-subtasks-field'}}
  308. label
  309. | {{_ 'deposit-subtasks-board'}}
  310. select.js-field-deposit-board(disabled="{{#unless allowsSubtasks}}disabled{{/unless}}")
  311. each boards
  312. if isBoardSelected
  313. option(value=_id selected="selected") {{title}}
  314. else
  315. option(value=_id) {{title}}
  316. if isNullBoardSelected
  317. option(value='null' selected="selected") {{_ 'custom-field-dropdown-none'}}
  318. else
  319. option(value='null') {{_ 'custom-field-dropdown-none'}}
  320. div
  321. hr
  322. label
  323. | {{_ 'deposit-subtasks-list'}}
  324. select.js-field-deposit-list(disabled="{{#unless hasLists}}disabled{{/unless}}")
  325. each lists
  326. if isListSelected
  327. option(value=_id selected="selected") {{title}}
  328. else
  329. option(value=_id) {{title}}
  330. template(name="chooseBoardSource")
  331. ul.pop-over-list
  332. li
  333. a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
  334. li
  335. a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
  336. li
  337. a(href="{{pathFor '/import/csv'}}") {{_ 'from-csv'}}
  338. template(name="archiveBoardPopup")
  339. p {{_ 'close-board-pop'}}
  340. button.js-confirm.negate.full(type="submit")
  341. i.fa.fa-archive
  342. | {{_ 'archive'}}
  343. template(name="outgoingWebhooksPopup")
  344. each integrations
  345. form.integration-form
  346. a.flex
  347. span {{_ 'disable-webhook'}}
  348. b  
  349. .materialCheckBox(class="{{#unless enabled}}is-checked{{/unless}}")
  350. input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" value=title)
  351. input.js-outgoing-webhooks-url(type="text" name="url" value=url)
  352. input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" value=token name="token")
  353. select.js-outgoing-webhooks-type(name="type")
  354. each _type in types
  355. if($eq _type this.type)
  356. option(value=_type selected="selected") {{_ _type}}
  357. else
  358. option(value=_type) {{_ _type}}
  359. input(type="hidden" value=this.type name="_type")
  360. input(type="hidden" value=_id name="id")
  361. input.primary.wide(type="submit" value="{{_ 'save'}}")
  362. form.integration-form
  363. input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title")
  364. input.js-outgoing-webhooks-url(placeholder="{{_ 'URL' }}" type="text" name="url")
  365. input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" name="token")
  366. select.js-outgoing-webhooks-type(name="type")
  367. each _type in types
  368. option(value=_type) {{_ _type}}
  369. input.primary.wide(type="submit" value="{{_ 'create'}}")
  370. template(name="boardMenuPopup")
  371. ul.pop-over-list
  372. if currentUser.isBoardAdmin
  373. li
  374. a.js-open-rules-view(title="{{_ 'rules'}}")
  375. i.fa.fa-magic
  376. | {{_ 'rules'}}
  377. if currentUser.isBoardAdmin
  378. li
  379. a.js-custom-fields
  380. i.fa.fa-list-alt
  381. | {{_ 'custom-fields'}}
  382. li
  383. a.js-open-archives
  384. i.fa.fa-archive
  385. | {{_ 'archived-items'}}
  386. if currentUser.isBoardAdmin
  387. li
  388. a.js-change-board-color
  389. i.fa.fa-paint-brush
  390. | {{_ 'board-change-color'}}
  391. if currentUser.isBoardAdmin
  392. li
  393. a.js-board-info-on-my-boards(title="{{_ 'board-info-on-my-boards'}}")
  394. i.fa.fa-id-card-o
  395. | {{_ 'board-info-on-my-boards'}}
  396. hr
  397. ul.pop-over-list
  398. if withApi
  399. li
  400. a.js-export-board
  401. i.fa.fa-share-alt
  402. | {{_ 'export-board'}}
  403. if currentUser.isBoardAdmin
  404. li
  405. a.js-outgoing-webhooks
  406. i.fa.fa-globe
  407. | {{_ 'outgoing-webhooks'}}
  408. li
  409. a.js-card-settings
  410. i.fa.fa-id-card-o
  411. | {{_ 'card-settings'}}
  412. li
  413. a.js-minicard-settings
  414. i.fa.fa-id-card-o
  415. | {{_ 'minicard-settings'}}
  416. li
  417. a.js-subtask-settings
  418. i.fa.fa-sitemap
  419. | {{_ 'subtask-settings'}}
  420. unless currentBoard.isTemplatesBoard
  421. if currentUser.isBoardAdmin
  422. hr
  423. ul.pop-over-list
  424. li
  425. a.js-archive-board
  426. i.fa.fa-arrow-right
  427. i.fa.fa-archive
  428. | {{_ 'archive-board'}}
  429. template(name="exportBoard")
  430. ul.pop-over-list
  431. li
  432. a.download-json-link(href="{{exportUrl}}", download="{{exportJsonFilename}}")
  433. i.fa.fa-share-alt
  434. | {{_ 'export-board-json'}}
  435. li
  436. a(href="{{exportUrlExcel}}", download="{{exportFilenameExcel}}")
  437. i.fa.fa-share-alt
  438. | {{_ 'export-board-excel'}}
  439. li
  440. a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
  441. i.fa.fa-share-alt
  442. | {{_ 'export-board-csv'}} ,
  443. li
  444. a(href="{{exportScsvUrl}}", download="{{exportCsvFilename}}")
  445. i.fa.fa-share-alt
  446. | {{_ 'export-board-csv'}} ;
  447. li
  448. a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
  449. i.fa.fa-share-alt
  450. | {{_ 'export-board-tsv'}}
  451. li
  452. a.html-export-board
  453. i.fa.fa-archive
  454. | {{_ 'export-board-html'}}
  455. template(name="labelsWidget")
  456. .board-widget.board-widget-labels
  457. h3
  458. i.fa.fa-tags
  459. | {{_ 'labels'}}
  460. .board-widget-content
  461. each currentBoard.labels
  462. a.card-label(class="card-label-{{color}}"
  463. class="{{#if currentUser.isNotCommentOnly}}{{#if currentUser.isNotWorker}}js-label{{/if}}{{/if}}")
  464. span.card-label-name
  465. +viewer
  466. = name
  467. if currentUser.isBoardAdmin
  468. a.card-label.add-label.js-add-label(title="{{_ 'label-create'}}")
  469. i.fa.fa-plus
  470. template(name="memberPopup")
  471. .board-member-menu
  472. .miniprofile-header
  473. +userAvatar(userId=user._id showEdit=true)
  474. .info
  475. h3
  476. .js-profile= user.profile.fullname
  477. p.quiet @#{user.username}
  478. if isInvited
  479. p
  480. i.fa.fa-exclamation-circle
  481. | {{_ 'not-accepted-yet'}}
  482. ul.pop-over-list
  483. li
  484. a.js-filter-member {{_ 'filter-cards'}}
  485. if currentUser.isBoardAdmin
  486. li
  487. a.js-change-role
  488. | {{_ 'change-permissions'}}
  489. span.quiet (#{memberType})
  490. unless currentUser.isWorker
  491. li
  492. if $eq currentUser._id userId
  493. a.js-leave-member {{_ 'leave-board'}}
  494. else if currentUser.isBoardAdmin
  495. a.js-remove-member {{_ 'remove-from-board'}}
  496. template(name="removeMemberPopup")
  497. p {{_ 'remove-member-pop' name=user.profile.fullname username=user.username boardTitle=board.title}}
  498. button.js-confirm.negate.full(type="submit") {{_ 'remove-member'}}
  499. template(name="leaveBoardPopup")
  500. p {{_ 'leave-board-pop' boardTitle=board.title}}
  501. button.js-confirm.negate.full(type="submit") {{_ 'leave-board'}}
  502. template(name="addBoardOrgPopup")
  503. select.js-boardOrgs#jsBoardOrgs
  504. option(value="-1") {{_ 'organizations'}} :
  505. each value in orgsDatas
  506. option(value="{{value._id}}") {{value.orgDisplayName}}
  507. template(name="removeBoardOrgPopup")
  508. form
  509. input.hide#hideOrgId(type="text" value=org._id)
  510. label
  511. | {{_ 'remove-organization-from-board'}}
  512. br
  513. hr
  514. div.buttonsContainer
  515. input.primary.wide.leaveBoardBtn#leaveBoardBtn(type="submit" value="{{_ 'confirm-btn'}}")
  516. input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardBtn(type="submit" value="{{_ 'cancel'}}")
  517. template(name="addBoardTeamPopup")
  518. select.js-boardTeams#jsBoardTeams
  519. option(value="-1") {{_ 'teams'}} :
  520. each value in teamsDatas
  521. option(value="{{value._id}}") {{_ value.teamDisplayName}}
  522. template(name="removeBoardTeamPopup")
  523. form
  524. input.hide#hideTeamId(type="text" value=team._id)
  525. label
  526. | {{_ 'remove-team-from-table'}}
  527. br
  528. hr
  529. div.buttonsContainer
  530. input.primary.wide.leaveBoardBtn#leaveBoardTeamBtn(type="submit" value="{{_ 'confirm-btn'}}")
  531. input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardTeamBtn(type="submit" value="{{_ 'cancel'}}")
  532. template(name="addMemberPopup")
  533. .js-search-member
  534. +EasySearch.Input(index=searchIndex)
  535. if loading.get
  536. +spinner
  537. else if error.get
  538. .warning {{_ error.get}}
  539. else
  540. ul.pop-over-list
  541. +EasySearch.Each(index=searchIndex)
  542. li.item.js-member-item(class="{{#if isBoardMember}}disabled{{/if}}")
  543. a.name.js-select-member(title="{{profile.fullname}} ({{username}})")
  544. +userAvatar(userId=__originalId)
  545. span.full-name
  546. = profile.fullname
  547. | (<span class="username">{{username}}</span>)
  548. if isBoardMember
  549. .quiet ({{_ 'joined'}})
  550. +EasySearch.IfSearching(index=searchIndex)
  551. +spinner
  552. +EasySearch.IfNoResults(index=searchIndex)
  553. .manage-member-section
  554. p.quiet {{_ 'no-results'}}
  555. button.js-email-invite.primary.full {{_ 'email-invite'}}
  556. template(name="changePermissionsPopup")
  557. ul.pop-over-list
  558. li
  559. a(class="{{#if isLastAdmin}}disabled{{else}}js-set-admin{{/if}}")
  560. | {{_ 'admin'}}
  561. if isAdmin
  562. i.fa.fa-check
  563. span.sub-name {{_ 'admin-desc'}}
  564. li
  565. a(class="{{#if isLastAdmin}}disabled{{else}}js-set-normal{{/if}}")
  566. | {{_ 'normal'}}
  567. if isNormal
  568. i.fa.fa-check
  569. span.sub-name {{_ 'normal-desc'}}
  570. li
  571. a(class="{{#if isLastAdmin}}disabled{{else}}js-set-no-comments{{/if}}")
  572. | {{_ 'no-comments'}}
  573. if isNoComments
  574. i.fa.fa-check
  575. span.sub-name {{_ 'no-comments-desc'}}
  576. li
  577. a(class="{{#if isLastAdmin}}disabled{{else}}js-set-comment-only{{/if}}")
  578. | {{_ 'comment-only'}}
  579. if isCommentOnly
  580. i.fa.fa-check
  581. span.sub-name {{_ 'comment-only-desc'}}
  582. li
  583. a(class="{{#if isLastAdmin}}disabled{{else}}js-set-worker{{/if}}")
  584. | {{_ 'worker'}}
  585. if isWorker
  586. i.fa.fa-check
  587. span.sub-name {{_ 'worker-desc'}}
  588. if isLastAdmin
  589. hr
  590. p.quiet.bottom {{_ 'last-admin-desc'}}