sidebar.jade 19 KB

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