peopleBody.jade 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. template(name="people")
  2. .setting-content
  3. unless currentUser.isAdmin
  4. | {{_ 'error-notAuthorized'}}
  5. else
  6. .content-title.ext-box
  7. .ext-box-left
  8. if loading.get
  9. +spinner
  10. else if orgSetting.get
  11. span
  12. i.fa.fa-sitemap
  13. unless isMiniScreen
  14. | {{_ 'organizations'}}
  15. input#searchOrgInput(placeholder="{{_ 'search'}}")
  16. button#searchOrgButton
  17. i.fa.fa-search
  18. | {{_ 'search'}}
  19. .ext-box-right
  20. span {{#unless isMiniScreen}}{{_ 'org-number'}}{{/unless}} #{orgNumber}
  21. else if teamSetting.get
  22. span
  23. i.fa.fa-users
  24. unless isMiniScreen
  25. | {{_ 'teams'}}
  26. input#searchTeamInput(placeholder="{{_ 'search'}}")
  27. button#searchTeamButton
  28. i.fa.fa-search
  29. | {{_ 'search'}}
  30. .ext-box-right
  31. span {{#unless isMiniScreen}}{{_ 'team-number'}}{{/unless}} #{teamNumber}
  32. else if peopleSetting.get
  33. span
  34. i.fa.fa-user
  35. unless isMiniScreen
  36. | {{_ 'people'}}
  37. input#searchInput(placeholder="{{_ 'search'}}")
  38. button#searchButton
  39. i.fa.fa-search
  40. | {{_ 'search'}}
  41. .ext-box-right
  42. span {{#unless isMiniScreen}}{{_ 'people-number'}}{{/unless}} #{peopleNumber}
  43. .divAddOrRemoveTeam#divAddOrRemoveTeam
  44. button#addOrRemoveTeam
  45. i.fa.fa-edit
  46. | {{_ 'add'}} / {{_ 'delete'}} {{_ 'teams'}}
  47. .content-body
  48. .side-menu
  49. ul
  50. li.active
  51. a.js-org-menu(data-id="org-setting")
  52. i.fa.fa-sitemap
  53. | {{_ 'organizations'}}
  54. li
  55. a.js-team-menu(data-id="team-setting")
  56. i.fa.fa-users
  57. | {{_ 'teams'}}
  58. li
  59. a.js-people-menu(data-id="people-setting")
  60. i.fa.fa-user
  61. | {{_ 'people'}}
  62. .main-body
  63. if loading.get
  64. +spinner
  65. else if orgSetting.get
  66. +orgGeneral
  67. else if teamSetting.get
  68. +teamGeneral
  69. else if peopleSetting.get
  70. +peopleGeneral
  71. template(name="orgGeneral")
  72. table
  73. tbody
  74. tr
  75. th {{_ 'displayName'}}
  76. th {{_ 'description'}}
  77. th {{_ 'shortName'}}
  78. th {{_ 'website'}}
  79. th {{_ 'createdAt'}}
  80. th {{_ 'active'}}
  81. th
  82. +newOrgRow
  83. each org in orgList
  84. +orgRow(orgId=org._id)
  85. template(name="teamGeneral")
  86. table
  87. tbody
  88. tr
  89. th {{_ 'displayName'}}
  90. th {{_ 'description'}}
  91. th {{_ 'shortName'}}
  92. th {{_ 'website'}}
  93. th {{_ 'createdAt'}}
  94. th {{_ 'active'}}
  95. th
  96. +newTeamRow
  97. each team in teamList
  98. +teamRow(teamId=team._id)
  99. template(name="peopleGeneral")
  100. #divAddOrRemoveTeamContainer
  101. +modifyTeamsUsers
  102. table
  103. tbody
  104. tr
  105. th
  106. +selectAllUser
  107. th {{_ 'username'}}
  108. th {{_ 'fullname'}}
  109. th {{_ 'initials'}}
  110. th {{_ 'admin'}}
  111. th {{_ 'email'}}
  112. th {{_ 'verified'}}
  113. th {{_ 'createdAt'}}
  114. th {{_ 'active'}}
  115. th {{_ 'authentication-method'}}
  116. th {{_ 'import-usernames'}}
  117. th {{_ 'organizations'}}
  118. th {{_ 'teams'}}
  119. th
  120. +newUserRow
  121. each user in peopleList
  122. +peopleRow(userId=user._id)
  123. template(name="selectAllUser")
  124. | {{_ 'dueCardsViewChange-choice-all'}}
  125. input.allUserChkBox(type="checkbox", id="chkSelectAll")
  126. template(name="newOrgRow")
  127. a.new-org
  128. i.fa.fa-plus-square
  129. | {{_ 'new'}}
  130. template(name="newTeamRow")
  131. a.new-team
  132. i.fa.fa-plus-square
  133. | {{_ 'new'}}
  134. template(name="newUserRow")
  135. a.new-user
  136. i.fa.fa-plus-square
  137. | {{_ 'new'}}
  138. template(name="orgRow")
  139. tr
  140. if orgData.orgIsActive
  141. td {{ orgData.orgDisplayName }}
  142. else
  143. td <s>{{ orgData.orgDisplayName }}</s>
  144. if orgData.orgIsActive
  145. td {{ orgData.orgDesc }}
  146. else
  147. td <s>{{ orgData.orgDesc }}</s>
  148. if orgData.orgIsActive
  149. td {{ orgData.orgShortName }}
  150. else
  151. td <s>{{ orgData.orgShortName }}</s>
  152. if orgData.orgIsActive
  153. td {{ orgData.orgWebsite }}
  154. else
  155. td <s>{{ orgData.orgWebsite }}</s>
  156. if orgData.orgIsActive
  157. td {{ moment orgData.createdAt 'LLL' }}
  158. else
  159. td <s>{{ moment orgData.createdAt 'LLL' }}</s>
  160. td
  161. if orgData.orgIsActive
  162. | {{_ 'yes'}}
  163. else
  164. | {{_ 'no'}}
  165. td
  166. a.edit-org
  167. i.fa.fa-edit
  168. | {{_ 'edit'}}
  169. a.more-settings-org
  170. i.fa.fa-ellipsis-h
  171. template(name="teamRow")
  172. tr
  173. if teamData.teamIsActive
  174. td {{ teamData.teamDisplayName }}
  175. else
  176. td <s>{{ teamData.teamDisplayName }}</s>
  177. if teamData.teamIsActive
  178. td {{ teamData.teamDesc }}
  179. else
  180. td <s>{{ teamData.teamDesc }}</s>
  181. if teamData.teamIsActive
  182. td {{ teamData.teamShortName }}
  183. else
  184. td <s>{{ teamData.teamShortName }}</s>
  185. if teamData.teamIsActive
  186. td {{ teamData.teamWebsite }}
  187. else
  188. td <s>{{ teamData.teamWebsite }}</s>
  189. if teamData.teamIsActive
  190. td {{ moment teamData.createdAt 'LLL' }}
  191. else
  192. td <s>{{ moment teamData.createdAt 'LLL' }}</s>
  193. td
  194. if teamData.teamIsActive
  195. | {{_ 'yes'}}
  196. else
  197. | {{_ 'no'}}
  198. td
  199. a.edit-team
  200. i.fa.fa-edit
  201. | {{_ 'edit'}}
  202. a.more-settings-team
  203. i.fa.fa-ellipsis-h
  204. template(name="peopleRow")
  205. tr
  206. if userData.loginDisabled
  207. td
  208. input.selectUserChkBox(type="checkbox", disabled="disabled", id="{{userData._id}}")
  209. else
  210. td
  211. input.selectUserChkBox(type="checkbox", id="{{userData._id}}")
  212. if userData.loginDisabled
  213. td.username <s>{{ userData.username }}</s>
  214. else
  215. td.username {{ userData.username }}
  216. if userData.loginDisabled
  217. td <s>{{ userData.profile.fullname }}</s>
  218. else
  219. td {{ userData.profile.fullname }}
  220. if userData.loginDisabled
  221. td <s>{{ userData.profile.initials }}</s>
  222. else
  223. td {{ userData.profile.initials }}
  224. if userData.loginDisabled
  225. td
  226. if userData.isAdmin
  227. | <s>{{_ 'yes'}}</s>
  228. else
  229. | <s>{{_ 'no'}}</s>
  230. else
  231. td
  232. if userData.isAdmin
  233. | {{_ 'yes'}}
  234. else
  235. | {{_ 'no'}}
  236. if userData.loginDisabled
  237. td <s>{{ userData.emails.[0].address }}</s>
  238. else
  239. td {{ userData.emails.[0].address }}
  240. if userData.loginDisabled
  241. td
  242. if userData.emails.[0].verified
  243. | <s>{{_ 'yes'}}</s>
  244. else
  245. | <s>{{_ 'no'}}</s>
  246. else
  247. td
  248. if userData.emails.[0].verified
  249. | {{_ 'yes'}}
  250. else
  251. | {{_ 'no'}}
  252. if userData.loginDisabled
  253. td <s>{{ moment userData.createdAt 'LLL' }}</s>
  254. else
  255. td {{ moment userData.createdAt 'LLL' }}
  256. td
  257. if userData.loginDisabled
  258. | {{_ 'no'}}
  259. else
  260. | {{_ 'yes'}}
  261. if userData.loginDisabled
  262. td <s>{{_ userData.authenticationMethod }}</s>
  263. else
  264. td {{_ userData.authenticationMethod }}
  265. if userData.loginDisabled
  266. td <s>{{ userData.importUsernamesString }}</s>
  267. else
  268. td {{ userData.importUsernamesString }}
  269. if userData.loginDisabled
  270. td <s>{{ userData.orgsUserBelongs }}</s>
  271. else
  272. td {{ userData.orgsUserBelongs }}
  273. if userData.loginDisabled
  274. td <s>{{ userData.teamsUserBelongs }}</s>
  275. else
  276. td {{ userData.teamsUserBelongs }}
  277. td
  278. a.edit-user
  279. i.fa.fa-edit
  280. | {{_ 'edit'}}
  281. a.more-settings-user
  282. i.fa.fa-ellipsis-h
  283. template(name="editOrgPopup")
  284. form
  285. label.hide.orgId(type="text" value=org._id)
  286. label
  287. | {{_ 'displayName'}}
  288. input.js-orgDisplayName(type="text" value=org.orgDisplayName required)
  289. span.error.hide.orgname-taken
  290. | {{_ 'error-orgname-taken'}}
  291. label
  292. | {{_ 'description'}}
  293. input.js-orgDesc(type="text" value=org.orgDesc required)
  294. label
  295. | {{_ 'shortName'}}
  296. input.js-orgShortName(type="text" value=org.orgShortName required)
  297. label
  298. | {{_ 'website'}}
  299. input.js-orgWebsite(type="text" value=org.orgWebsite required)
  300. label
  301. | {{_ 'active'}}
  302. select.select-active.js-org-isactive
  303. option(value="false") {{_ 'no'}}
  304. option(value="true" selected="{{org.orgIsActive}}") {{_ 'yes'}}
  305. hr
  306. div.buttonsContainer
  307. input.primary.wide(type="submit" value="{{_ 'save'}}")
  308. template(name="editTeamPopup")
  309. form
  310. label.hide.teamId(type="text" value=team._id)
  311. label
  312. | {{_ 'displayName'}}
  313. input.js-teamDisplayName(type="text" value=team.teamDisplayName required)
  314. span.error.hide.teamname-taken
  315. | {{_ 'error-teamname-taken'}}
  316. label
  317. | {{_ 'description'}}
  318. input.js-teamDesc(type="text" value=team.teamDesc required)
  319. label
  320. | {{_ 'shortName'}}
  321. input.js-teamShortName(type="text" value=team.teamShortName required)
  322. label
  323. | {{_ 'website'}}
  324. input.js-teamWebsite(type="text" value=team.teamWebsite required)
  325. label
  326. | {{_ 'active'}}
  327. select.select-active.js-team-isactive
  328. option(value="false") {{_ 'no'}}
  329. option(value="true" selected="{{team.teamIsActive}}") {{_ 'yes'}}
  330. hr
  331. div.buttonsContainer
  332. input.primary.wide(type="submit" value="{{_ 'save'}}")
  333. template(name="editUserPopup")
  334. form
  335. label.hide.userId(type="text" value=user._id)
  336. label
  337. | {{_ 'username'}}
  338. span.error.hide.username-taken
  339. | {{_ 'error-username-taken'}}
  340. if isLdap
  341. input.js-profile-username(type="text" value=user.username readonly)
  342. else
  343. input.js-profile-username(type="text" value=user.username required)
  344. label
  345. | {{_ 'fullname'}}
  346. input.js-profile-fullname(type="text" value=user.profile.fullname required)
  347. label
  348. | {{_ 'initials'}}
  349. input.js-profile-initials(type="text" value=user.profile.initials)
  350. label
  351. | {{_ 'admin'}}
  352. select.select-role.js-profile-isadmin
  353. option(value="false") {{_ 'no'}}
  354. option(value="true" selected="{{user.isAdmin}}") {{_ 'yes'}}
  355. label
  356. | {{_ 'email'}}
  357. span.error.hide.email-taken
  358. | {{_ 'error-email-taken'}}
  359. if isLdap
  360. input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
  361. else
  362. input.js-profile-email(type="email" value="{{user.emails.[0].address}}" required)
  363. label
  364. | {{_ 'import-usernames'}}
  365. input.js-import-usernames(type="text" value=user.importUsernames)
  366. label
  367. | {{_ 'verified'}}
  368. select.select-verified.js-profile-email-verified
  369. option(value="false") {{_ 'no'}}
  370. option(value="true" selected="{{userData.emails.[0].verified}}") {{_ 'yes'}}
  371. label
  372. | {{_ 'active'}}
  373. select.select-active.js-profile-isactive
  374. option(value="false") {{_ 'yes'}}
  375. option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}}
  376. label
  377. | {{_ 'authentication-type'}}
  378. select.select-authenticationMethod.js-authenticationMethod
  379. each authentications
  380. if isSelected value
  381. option(value="{{value}}" selected) {{_ value}}
  382. else
  383. option(value="{{value}}") {{_ value}}
  384. label
  385. | {{_ 'organizations'}}
  386. i.fa.fa-plus-square#addUserOrg
  387. i.fa.fa-minus-square#removeUserOrg
  388. select.js-orgs#jsOrgs
  389. option(value="-1") {{_ 'organizations'}} :
  390. each value in orgsDatas
  391. option(value="{{value._id}}") {{value.orgDisplayName}}
  392. input#jsUserOrgsInPut.js-userOrgs(type="text" value=user.orgsUserBelongs, disabled)
  393. input#jsUserOrgIdsInPut.js-userOrgIds.hide(type="text" value=user.orgIdsUserBelongs)
  394. label
  395. | {{_ 'teams'}}
  396. i.fa.fa-plus-square#addUserTeam
  397. i.fa.fa-minus-square#removeUserTeam
  398. select.js-teams#jsTeams
  399. option(value="-1") {{_ 'teams'}} :
  400. each value in teamsDatas
  401. option(value="{{value._id}}") {{_ value.teamDisplayName}}
  402. input#jsUserTeamsInPut.js-userteams(type="text" value=user.teamsUserBelongs, disabled)
  403. input#jsUserTeamIdsInPut.js-userteamIds.hide(type="text" value=user.teamIdsUserBelongs)
  404. hr
  405. label
  406. | {{_ 'password'}}
  407. input.js-profile-password(type="password")
  408. div.buttonsContainer
  409. input.primary.wide(type="submit" value="{{_ 'save'}}")
  410. template(name="newOrgPopup")
  411. form
  412. //label.hide.userId(type="text" value=user._id)
  413. label
  414. | {{_ 'displayName'}}
  415. input.js-orgDisplayName(type="text" value="" required)
  416. label
  417. | {{_ 'description'}}
  418. input.js-orgDesc(type="text" value="" required)
  419. label
  420. | {{_ 'shortName'}}
  421. input.js-orgShortName(type="text" value="" required)
  422. label
  423. | {{_ 'website'}}
  424. input.js-orgWebsite(type="text" value="" required)
  425. label
  426. | {{_ 'active'}}
  427. select.select-active.js-org-isactive
  428. option(value="false" selected="selected") {{_ 'no'}}
  429. option(value="true") {{_ 'yes'}}
  430. hr
  431. div.buttonsContainer
  432. input.primary.wide(type="submit" value="{{_ 'save'}}")
  433. template(name="newTeamPopup")
  434. form
  435. //label.hide.teamId(type="text" value=team._id)
  436. label
  437. | {{_ 'displayName'}}
  438. input.js-teamDisplayName(type="text" value="" required)
  439. label
  440. | {{_ 'description'}}
  441. input.js-teamDesc(type="text" value="" required)
  442. label
  443. | {{_ 'shortName'}}
  444. input.js-teamShortName(type="text" value="" required)
  445. label
  446. | {{_ 'website'}}
  447. input.js-teamWebsite(type="text" value="" required)
  448. label
  449. | {{_ 'active'}}
  450. select.select-active.js-team-isactive
  451. option(value="false" selected="selected") {{_ 'no'}}
  452. option(value="true") {{_ 'yes'}}
  453. hr
  454. div.buttonsContainer
  455. input.primary.wide(type="submit" value="{{_ 'save'}}")
  456. template(name="modifyTeamsUsers")
  457. label
  458. | {{_ 'teams'}}
  459. select.js-teamsUser#jsteamsUser
  460. each value in teamsDatas
  461. option(value="{{value._id}}") {{_ value.teamDisplayName}}
  462. hr
  463. label
  464. | {{_ 'r-action'}}
  465. .form-group.flex
  466. input.wekan-form-control#addAction(type="radio" name="action" value="true" checked="checked")
  467. span {{_ 'add'}}
  468. input.wekan-form-control#deleteAction(type="radio" name="action" value="false")
  469. span {{_ 'delete'}}
  470. div.buttonsContainer
  471. input.primary.wide#addTeamBtn(type="submit" value="{{_ 'save'}}")
  472. input.primary.wide#cancelBtn(type="submit" value="{{_ 'cancel'}}")
  473. template(name="newUserPopup")
  474. form
  475. //label.hide.userId(type="text" value=user._id)
  476. label
  477. | {{_ 'fullname'}}
  478. input.js-profile-fullname(type="text" value="" required)
  479. label
  480. | {{_ 'username'}}
  481. span.error.hide.username-taken
  482. | {{_ 'error-username-taken'}}
  483. //if isLdap
  484. // input.js-profile-username(type="text" value=user.username readonly)
  485. //else
  486. input.js-profile-username(type="text" value="" required)
  487. label
  488. | {{_ 'initials'}}
  489. input.js-profile-initials(type="text" value="")
  490. label
  491. | {{_ 'email'}}
  492. span.error.hide.email-taken
  493. | {{_ 'error-email-taken'}}
  494. //if isLdap
  495. // input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
  496. //else
  497. input.js-profile-email(type="email" value="" required)
  498. label
  499. | {{_ 'import-usernames'}}
  500. input.js-import-usernames(type="text" value="")
  501. label
  502. | {{_ 'admin'}}
  503. select.select-role.js-profile-isadmin
  504. option(value="false" selected="selected") {{_ 'no'}}
  505. option(value="true") {{_ 'yes'}}
  506. label
  507. | {{_ 'active'}}
  508. select.select-active.js-profile-isactive
  509. option(value="false" selected="selected") {{_ 'yes'}}
  510. option(value="true") {{_ 'no'}}
  511. label
  512. | {{_ 'authentication-type'}}
  513. select.select-authenticationMethod.js-authenticationMethod
  514. each authentications
  515. if isSelected value
  516. option(value="{{value}}" selected) {{_ value}}
  517. else
  518. option(value="{{value}}") {{_ value}}
  519. label
  520. | {{_ 'organizations'}}
  521. i.fa.fa-plus-square#addUserOrgNewUser
  522. i.fa.fa-minus-square#removeUserOrgNewUser
  523. select.js-orgsNewUser#jsOrgsNewUser
  524. option(value="-1") {{_ 'organizations'}} :
  525. each value in orgsDatas
  526. option(value="{{value._id}}") {{value.orgDisplayName}}
  527. input#jsUserOrgsInPutNewUser.js-userOrgsNewUser(type="text" value=user.orgsUserBelongs, disabled)
  528. input#jsUserOrgIdsInPutNewUser.js-userOrgIdsNewUser.hide(type="text" value=user.orgIdsUserBelongs)
  529. label
  530. | {{_ 'teams'}}
  531. i.fa.fa-plus-square#addUserTeamNewUser
  532. i.fa.fa-minus-square#removeUserTeamNewUser
  533. select.js-teamsNewUser#jsTeamsNewUser
  534. option(value="-1") {{_ 'teams'}} :
  535. each value in teamsDatas
  536. option(value="{{value._id}}") {{_ value.teamDisplayName}}
  537. input#jsUserTeamsInPutNewUser.js-userteamsNewUser(type="text" value=user.teamsUserBelongs, disabled)
  538. input#jsUserTeamIdsInPutNewUser.js-userteamIdsNewUser.hide(type="text" value=user.teamIdsUserBelongs)
  539. hr
  540. label
  541. | {{_ 'password'}}
  542. input.js-profile-password(type="password" required)
  543. div.buttonsContainer
  544. input.primary.wide(type="submit" value="{{_ 'save'}}")
  545. template(name="settingsOrgPopup")
  546. ul.pop-over-list
  547. li
  548. form
  549. label#deleteOrgWarningMessage.hide
  550. | {{_ 'delete-org-warning-message'}}
  551. br
  552. label
  553. | {{_ 'delete-org-confirm-popup'}}
  554. br
  555. label.hide.orgId(type="text" value=org._id)
  556. labeldelete-org-confirm-popup
  557. div.buttonsContainer
  558. input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
  559. // It's not yet possible to impersonate organization. Only impersonate user,
  560. // because that changes current user ID. What would it mean in practice
  561. // to impersonate organization?
  562. // li
  563. // a.impersonate-org
  564. // i.fa.fa-user
  565. // | {{_ 'impersonate-org'}}
  566. //
  567. //
  568. template(name="settingsTeamPopup")
  569. ul.pop-over-list
  570. li
  571. form
  572. label#deleteTeamWarningMessage.hide
  573. | {{_ 'delete-team-warning-message'}}
  574. br
  575. label
  576. | {{_ 'delete-team-confirm-popup'}}
  577. br
  578. label.hide.teamId(type="text" value=team._id)
  579. div.buttonsContainer
  580. input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
  581. template(name="settingsUserPopup")
  582. ul.pop-over-list
  583. li
  584. a.impersonate-user
  585. i.fa.fa-user
  586. | {{_ 'impersonate-user'}}
  587. br
  588. hr
  589. li
  590. form
  591. label.hide.userId(type="text" value=user._id)
  592. label
  593. | {{_ 'delete-user-confirm-popup' }}
  594. br
  595. div.buttonsContainer
  596. input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
  597. // Delete is enabled, but there is still bug of leaving empty user avatars
  598. // to boards: boards members, card members and assignees have
  599. // empty users. So it is better to remove user from all boards before removing user.
  600. // See:
  601. // - wekan/client/components/settings/peopleBody.jade deleteButton
  602. // - wekan/client/components/settings/peopleBody.js deleteButton
  603. // - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
  604. // that does now remove member from board, card members and assignees correctly,
  605. // but that should be used to remove user from all boards similarly
  606. // - wekan/models/users.js Delete is not enabled