peopleBody.jade 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  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. | {{_ 'organizations'}}
  14. input#searchOrgInput(placeholder="{{_ 'search'}}")
  15. button#searchOrgButton
  16. i.fa.fa-search
  17. | {{_ 'search'}}
  18. .ext-box-right
  19. span {{_ 'org-number'}} #{orgNumber}
  20. else if teamSetting.get
  21. span
  22. i.fa.fa-users
  23. | {{_ 'teams'}}
  24. input#searchTeamInput(placeholder="{{_ 'search'}}")
  25. button#searchTeamButton
  26. i.fa.fa-search
  27. | {{_ 'search'}}
  28. .ext-box-right
  29. span {{_ 'team-number'}} #{teamNumber}
  30. else if peopleSetting.get
  31. span
  32. i.fa.fa-user
  33. | {{_ 'people'}}
  34. input#searchInput(placeholder="{{_ 'search'}}")
  35. button#searchButton
  36. i.fa.fa-search
  37. | {{_ 'search'}}
  38. .ext-box-right
  39. span {{_ 'people-number'}} #{peopleNumber}
  40. .content-body
  41. .side-menu
  42. ul
  43. li.active
  44. a.js-org-menu(data-id="org-setting")
  45. i.fa.fa-sitemap
  46. | {{_ 'organizations'}}
  47. li
  48. a.js-team-menu(data-id="team-setting")
  49. i.fa.fa-users
  50. | {{_ 'teams'}}
  51. li
  52. a.js-people-menu(data-id="people-setting")
  53. i.fa.fa-user
  54. | {{_ 'people'}}
  55. .main-body
  56. if loading.get
  57. +spinner
  58. else if orgSetting.get
  59. +orgGeneral
  60. else if teamSetting.get
  61. +teamGeneral
  62. else if peopleSetting.get
  63. +peopleGeneral
  64. template(name="orgGeneral")
  65. table
  66. tbody
  67. tr
  68. th {{_ 'displayName'}}
  69. th {{_ 'description'}}
  70. th {{_ 'shortName'}}
  71. th {{_ 'website'}}
  72. th {{_ 'teams'}}
  73. th {{_ 'createdAt'}}
  74. th {{_ 'active'}}
  75. th
  76. +newOrgRow
  77. each user in orgList
  78. +orgRow(orgId=org._id)
  79. template(name="teamGeneral")
  80. table
  81. tbody
  82. tr
  83. th {{_ 'displayName'}}
  84. th {{_ 'description'}}
  85. th {{_ 'shortName'}}
  86. th {{_ 'website'}}
  87. th {{_ 'createdAt'}}
  88. th {{_ 'active'}}
  89. th
  90. +newTeamRow
  91. each team in teamList
  92. +teamRow(teamId=team._id)
  93. template(name="peopleGeneral")
  94. table
  95. tbody
  96. tr
  97. th {{_ 'username'}}
  98. th {{_ 'fullname'}}
  99. th {{_ 'admin'}}
  100. th {{_ 'email'}}
  101. th {{_ 'verified'}}
  102. th {{_ 'createdAt'}}
  103. th {{_ 'active'}}
  104. th {{_ 'authentication-method'}}
  105. th
  106. +newUserRow
  107. each user in peopleList
  108. +peopleRow(userId=user._id)
  109. template(name="newOrgRow")
  110. a.new-org
  111. i.fa.fa-edit
  112. | {{_ 'new'}}
  113. template(name="newTeamRow")
  114. a.new-team
  115. i.fa.fa-edit
  116. | {{_ 'new'}}
  117. template(name="newUserRow")
  118. a.new-user
  119. i.fa.fa-edit
  120. | {{_ 'new'}}
  121. template(name="orgRow")
  122. tr
  123. if orgData.loginDisabled
  124. td <s>{{ orgData.displayName }}</s>
  125. else
  126. td {{ orgData.displayName }}
  127. if orgData.loginDisabled
  128. td <s>{{ orgData.orgDesc }}</s>
  129. else
  130. td {{ orgData.desc }}
  131. if orgData.loginDisabled
  132. td <s>{{ orgData.name }}</s>
  133. else
  134. td {{ orgData.name }}
  135. if orgData.loginDisabled
  136. td <s>{{ orgData.website }}</s>
  137. else
  138. td {{ orgData.website }}
  139. if orgData.loginDisabled
  140. td <s>{{ orgData.teams }}</s>
  141. else
  142. td {{ orgData.teams }}
  143. if orgData.loginDisabled
  144. td <s>{{ moment orgData.createdAt 'LLL' }}</s>
  145. else
  146. td {{ moment orgData.createdAt 'LLL' }}
  147. td
  148. if orgData.loginDisabled
  149. | {{_ 'no'}}
  150. else
  151. | {{_ 'yes'}}
  152. td
  153. a.edit-org
  154. i.fa.fa-edit
  155. | {{_ 'edit'}}
  156. a.more-settings-org
  157. i.fa.fa-ellipsis-h
  158. template(name="teamRow")
  159. tr
  160. if teamData.loginDisabled
  161. td <s>{{ teamData.displayName }}</s>
  162. else
  163. td {{ teamData.displayName }}
  164. if teamData.loginDisabled
  165. td <s>{{ teamData.desc }}</s>
  166. else
  167. td {{ teamData.desc }}
  168. if teamData.loginDisabled
  169. td <s>{{ teamData.dame }}</s>
  170. else
  171. td {{ teamData.name }}
  172. if teamData.loginDisabled
  173. td <s>{{ teamData.website }}</s>
  174. else
  175. td {{ teamData.website }}
  176. if orgData.loginDisabled
  177. td <s>{{ moment teamData.createdAt 'LLL' }}</s>
  178. else
  179. td {{ moment teamData.createdAt 'LLL' }}
  180. td
  181. if teamData.loginDisabled
  182. | {{_ 'no'}}
  183. else
  184. | {{_ 'yes'}}
  185. td
  186. a.edit-team
  187. i.fa.fa-edit
  188. | {{_ 'edit'}}
  189. a.more-settings-team
  190. i.fa.fa-ellipsis-h
  191. template(name="peopleRow")
  192. tr
  193. if userData.loginDisabled
  194. td.username <s>{{ userData.username }}</s>
  195. else
  196. td.username {{ userData.username }}
  197. if userData.loginDisabled
  198. td <s>{{ userData.profile.fullname }}</s>
  199. else
  200. td {{ userData.profile.fullname }}
  201. if userData.loginDisabled
  202. td
  203. if userData.isAdmin
  204. | <s>{{_ 'yes'}}</s>
  205. else
  206. | <s>{{_ 'no'}}</s>
  207. else
  208. td
  209. if userData.isAdmin
  210. | {{_ 'yes'}}
  211. else
  212. | {{_ 'no'}}
  213. if userData.loginDisabled
  214. td <s>{{ userData.emails.[0].address }}</s>
  215. else
  216. td {{ userData.emails.[0].address }}
  217. if userData.loginDisabled
  218. td
  219. if userData.emails.[0].verified
  220. | <s>{{_ 'yes'}}</s>
  221. else
  222. | <s>{{_ 'no'}}</s>
  223. else
  224. td
  225. if userData.emails.[0].verified
  226. | {{_ 'yes'}}
  227. else
  228. | {{_ 'no'}}
  229. if userData.loginDisabled
  230. td <s>{{ moment userData.createdAt 'LLL' }}</s>
  231. else
  232. td {{ moment userData.createdAt 'LLL' }}
  233. td
  234. if userData.loginDisabled
  235. | {{_ 'no'}}
  236. else
  237. | {{_ 'yes'}}
  238. if userData.loginDisabled
  239. td <s>{{_ userData.authenticationMethod }}</s>
  240. else
  241. td {{_ userData.authenticationMethod }}
  242. td
  243. a.edit-user
  244. i.fa.fa-edit
  245. | {{_ 'edit'}}
  246. a.more-settings-user
  247. i.fa.fa-ellipsis-h
  248. template(name="editOrgPopup")
  249. form
  250. label.hide.orgId(type="text" value=org._id)
  251. label
  252. | {{_ 'orgDisplayName'}}
  253. input.js-orgDisplayName(type="text" value=org.orgDisplayName required)
  254. span.error.hide.orgname-taken
  255. | {{_ 'error-orgname-taken'}}
  256. label
  257. | {{_ 'orgDesc'}}
  258. input.js-orgDesc(type="text" value=org.orgDesc required)
  259. label
  260. | {{_ 'orgName'}}
  261. input.js-orgName(type="text" value=org.orgName required)
  262. label
  263. | {{_ 'orgWebsite'}}
  264. input.js-orgWebsite(type="text" value=org.orgWebsite required)
  265. label
  266. | {{_ 'active'}}
  267. select.select-active.js-org-isactive
  268. option(value="false") {{_ 'yes'}}
  269. option(value="true" selected="{{org.loginDisabled}}") {{_ 'no'}}
  270. hr
  271. div.buttonsContainer
  272. input.primary.wide(type="submit" value="{{_ 'save'}}")
  273. template(name="editTeamPopup")
  274. form
  275. label.hide.teamId(type="text" value=team._id)
  276. label
  277. | {{_ 'displayName'}}
  278. input.js-teamDisplayName(type="text" value=team.displayName required)
  279. span.error.hide.teamname-taken
  280. | {{_ 'error-teamname-taken'}}
  281. label
  282. | {{_ 'desc'}}
  283. input.js-orgDesc(type="text" value=org.desc required)
  284. label
  285. | {{_ 'name'}}
  286. input.js-orgName(type="text" value=org.name required)
  287. label
  288. | {{_ 'website'}}
  289. input.js-orgWebsite(type="text" value=org.website required)
  290. label
  291. | {{_ 'active'}}
  292. select.select-active.js-team-isactive
  293. option(value="false") {{_ 'yes'}}
  294. option(value="true" selected="{{team.loginDisabled}}") {{_ 'no'}}
  295. hr
  296. div.buttonsContainer
  297. input.primary.wide(type="submit" value="{{_ 'save'}}")
  298. template(name="editUserPopup")
  299. form
  300. label.hide.userId(type="text" value=user._id)
  301. label
  302. | {{_ 'fullname'}}
  303. input.js-profile-fullname(type="text" value=user.profile.fullname required)
  304. label
  305. | {{_ 'username'}}
  306. span.error.hide.username-taken
  307. | {{_ 'error-username-taken'}}
  308. if isLdap
  309. input.js-profile-username(type="text" value=user.username readonly)
  310. else
  311. input.js-profile-username(type="text" value=user.username required)
  312. label
  313. | {{_ 'email'}}
  314. span.error.hide.email-taken
  315. | {{_ 'error-email-taken'}}
  316. if isLdap
  317. input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
  318. else
  319. input.js-profile-email(type="email" value="{{user.emails.[0].address}}" required)
  320. label
  321. | {{_ 'admin'}}
  322. select.select-role.js-profile-isadmin
  323. option(value="false") {{_ 'no'}}
  324. option(value="true" selected="{{user.isAdmin}}") {{_ 'yes'}}
  325. label
  326. | {{_ 'active'}}
  327. select.select-active.js-profile-isactive
  328. option(value="false") {{_ 'yes'}}
  329. option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}}
  330. label
  331. | {{_ 'authentication-type'}}
  332. select.select-authenticationMethod.js-authenticationMethod
  333. each authentications
  334. if isSelected value
  335. option(value="{{value}}" selected) {{_ value}}
  336. else
  337. option(value="{{value}}") {{_ value}}
  338. hr
  339. label
  340. | {{_ 'password'}}
  341. input.js-profile-password(type="password")
  342. div.buttonsContainer
  343. input.primary.wide(type="submit" value="{{_ 'save'}}")
  344. template(name="newOrgPopup")
  345. form
  346. //label.hide.userId(type="text" value=user._id)
  347. label
  348. | {{_ 'orgDisplayName'}}
  349. input.js-orgDisplayName(type="text" value="" required)
  350. label
  351. | {{_ 'orgDesc'}}
  352. input.js-orgDesc(type="text" value="" required)
  353. label
  354. | {{_ 'orgName'}}
  355. input.js-orgName(type="text" value="")
  356. label
  357. | {{_ 'orgWebsite'}}
  358. input.js-orgWebsite(type="text" value="")
  359. label
  360. | {{_ 'active'}}
  361. select.select-active.js-profile-isactive
  362. option(value="false" selected="selected") {{_ 'yes'}}
  363. option(value="true") {{_ 'no'}}
  364. hr
  365. div.buttonsContainer
  366. input.primary.wide(type="submit" value="{{_ 'save'}}")
  367. template(name="newTeamPopup")
  368. form
  369. //label.hide.teamId(type="text" value=team._id)
  370. label
  371. | {{_ 'displayName'}}
  372. input.js-teamDisplayName(type="text" value="" required)
  373. label
  374. | {{_ 'desc'}}
  375. input.js-teamDesc(type="text" value="" required)
  376. label
  377. | {{_ 'shortName'}}
  378. input.js-teamName(type="text" value="")
  379. label
  380. | {{_ 'website'}}
  381. input.js-teamWebsite(type="text" value="")
  382. label
  383. | {{_ 'active'}}
  384. select.select-active.js-profile-isactive
  385. option(value="false" selected="selected") {{_ 'yes'}}
  386. option(value="true") {{_ 'no'}}
  387. hr
  388. div.buttonsContainer
  389. input.primary.wide(type="submit" value="{{_ 'save'}}")
  390. template(name="newUserPopup")
  391. form
  392. //label.hide.userId(type="text" value=user._id)
  393. label
  394. | {{_ 'fullname'}}
  395. input.js-profile-fullname(type="text" value="" required)
  396. label
  397. | {{_ 'username'}}
  398. span.error.hide.username-taken
  399. | {{_ 'error-username-taken'}}
  400. //if isLdap
  401. // input.js-profile-username(type="text" value=user.username readonly)
  402. //else
  403. input.js-profile-username(type="text" value="" required)
  404. label
  405. | {{_ 'email'}}
  406. span.error.hide.email-taken
  407. | {{_ 'error-email-taken'}}
  408. //if isLdap
  409. // input.js-profile-email(type="email" value="{{user.emails.[0].address}}" readonly)
  410. //else
  411. input.js-profile-email(type="email" value="" required)
  412. label
  413. | {{_ 'admin'}}
  414. select.select-role.js-profile-isadmin
  415. option(value="false" selected="selected") {{_ 'no'}}
  416. option(value="true") {{_ 'yes'}}
  417. label
  418. | {{_ 'active'}}
  419. select.select-active.js-profile-isactive
  420. option(value="false" selected="selected") {{_ 'yes'}}
  421. option(value="true") {{_ 'no'}}
  422. label
  423. | {{_ 'authentication-type'}}
  424. select.select-authenticationMethod.js-authenticationMethod
  425. each authentications
  426. if isSelected value
  427. option(value="{{value}}" selected) {{_ value}}
  428. else
  429. option(value="{{value}}") {{_ value}}
  430. hr
  431. label
  432. | {{_ 'password'}}
  433. input.js-profile-password(type="password" required)
  434. div.buttonsContainer
  435. input.primary.wide(type="submit" value="{{_ 'save'}}")
  436. template(name="settingsOrgPopup")
  437. ul.pop-over-list
  438. li
  439. a.impersonate-org
  440. i.fa.fa-user
  441. | {{_ 'impersonate-org'}}
  442. // Delete is not enabled yet, because it does leave empty user avatars
  443. // to boards: boards members, card members and assignees have
  444. // empty users. See:
  445. // - wekan/client/components/settings/peopleBody.jade deleteButton
  446. // - wekan/client/components/settings/peopleBody.js deleteButton
  447. // - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
  448. // that does now remove member from board, card members and assignees correctly,
  449. // but that should be used to remove user from all boards similarly
  450. // - wekan/models/users.js Delete is not enabled
  451. //li
  452. // br
  453. // br
  454. // hr
  455. //li
  456. // form
  457. // label.hide.userId(type="text" value=user._id)
  458. // div.buttonsContainer
  459. // input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
  460. template(name="settingsUserPopup")
  461. ul.pop-over-list
  462. li
  463. a.impersonate-user
  464. i.fa.fa-user
  465. | {{_ 'impersonate-user'}}
  466. // Delete is not enabled yet, because it does leave empty user avatars
  467. // to boards: boards members, card members and assignees have
  468. // empty users. See:
  469. // - wekan/client/components/settings/peopleBody.jade deleteButton
  470. // - wekan/client/components/settings/peopleBody.js deleteButton
  471. // - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
  472. // that does now remove member from board, card members and assignees correctly,
  473. // but that should be used to remove user from all boards similarly
  474. // - wekan/models/users.js Delete is not enabled
  475. //li
  476. // br
  477. // br
  478. // hr
  479. //li
  480. // form
  481. // label.hide.userId(type="text" value=user._id)
  482. // div.buttonsContainer
  483. // input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")