sidebar.jade 20 KB

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