settingBody.jade 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. template(name="setting")
  2. .setting-content
  3. unless currentUser.isAdmin
  4. | {{_ 'error-notAuthorized'}}
  5. else
  6. .content-title
  7. i.fa.fa-cog
  8. span {{_ 'settings'}}
  9. .content-body
  10. .side-menu
  11. ul
  12. li.active
  13. a.js-setting-menu(data-id="registration-setting")
  14. i.fa.fa-sign-in
  15. | {{_ 'registration'}}
  16. unless isSandstorm
  17. li
  18. a.js-setting-menu(data-id="email-setting")
  19. i.fa.fa-envelope
  20. | {{_ 'email'}}
  21. li
  22. a.js-setting-menu(data-id="account-setting")
  23. i.fa.fa-users
  24. | {{_ 'accounts'}}
  25. li
  26. a.js-setting-menu(data-id="tableVisibilityMode-setting")
  27. i.fa.fa-eye
  28. | {{_ 'tableVisibilityMode'}}
  29. li
  30. a.js-setting-menu(data-id="announcement-setting")
  31. i.fa.fa-bullhorn
  32. | {{_ 'admin-announcement'}}
  33. li
  34. a.js-setting-menu(data-id="accessibility-setting")
  35. i.fa.fa-universal-access
  36. | {{_ 'accessibility'}}
  37. li
  38. a.js-setting-menu(data-id="layout-setting")
  39. i.fa.fa-object-group
  40. | {{_ 'layout'}}
  41. li
  42. a.js-setting-menu(data-id="webhook-setting")
  43. i.fa.fa-globe
  44. | {{_ 'global-webhook'}}
  45. li
  46. a.js-setting-menu(data-id="attachment-settings")
  47. i.fa.fa-paperclip
  48. | {{_ 'attachment-settings'}}
  49. li
  50. a.js-setting-menu(data-id="cron-settings")
  51. i.fa.fa-clock-o
  52. | {{_ 'cron-settings'}}
  53. .main-body
  54. if loading.get
  55. +spinner
  56. else if generalSetting.get
  57. +general
  58. else if emailSetting.get
  59. unless isSandstorm
  60. +email
  61. else if accountSetting.get
  62. +accountSettings
  63. else if tableVisibilityModeSetting.get
  64. +tableVisibilityModeSettings
  65. else if announcementSetting.get
  66. +announcementSettings
  67. else if accessibilitySetting.get
  68. +accessibilitySettings
  69. else if layoutSetting.get
  70. +layoutSettings
  71. else if webhookSetting.get
  72. +webhookSettings
  73. else if attachmentSettings.get
  74. +attachmentSettings
  75. else if cronSettings.get
  76. +cronSettings
  77. template(name="webhookSettings")
  78. span
  79. +outgoingWebhooksPopup
  80. template(name="general")
  81. ul#registration-setting.setting-detail
  82. li
  83. a.flex.js-toggle-forgot-password
  84. .materialCheckBox(class="{{#if currentSetting.disableForgotPassword}}is-checked{{/if}}")
  85. span {{_ 'disable-forgot-password'}}
  86. li
  87. a.flex.js-toggle-registration
  88. .materialCheckBox(class="{{#if currentSetting.disableRegistration}}is-checked{{/if}}")
  89. span {{_ 'disable-self-registration'}}
  90. li
  91. .invite-people(class="{{#if currentSetting.disableRegistration}}{{else}}hide{{/if}}")
  92. ul
  93. li
  94. .title {{_ 'invite-people'}}
  95. textarea#email-to-invite.wekan-form-control(rows='5', placeholder="{{_ 'email-addresses'}}")
  96. li
  97. .title {{_ 'to-boards'}}
  98. .bg-white
  99. each boards
  100. a.option.flex.js-toggle-board-choose(id= _id)
  101. .materialCheckBox(data-id= _id)
  102. span= title
  103. li
  104. button.js-email-invite.primary {{_ 'invite'}}
  105. template(name='email')
  106. ul#email-setting.setting-detail
  107. //if isSandstorm
  108. // li.smtp-form
  109. // .title {{_ 'smtp-host'}}
  110. // .description {{_ 'smtp-host-description'}}
  111. // .form-group
  112. // input.wekan-form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}")
  113. // li.smtp-form
  114. // .title {{_ 'smtp-port'}}
  115. // .description {{_ 'smtp-port-description'}}
  116. // .form-group
  117. // input.wekan-form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}")
  118. // li.smtp-form
  119. // .title {{_ 'smtp-username'}}
  120. // .form-group
  121. // input.wekan-form-control#mail-server-u"accounts-allowUserNameChange": "Allow Username Change",sername(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}")
  122. // li.smtp-form
  123. // .title {{_ 'smtp-password'}}
  124. // .form-group
  125. // input.wekan-form-control#mail-server-password(type="password", placeholder="{{_ 'password'}}" value="")
  126. // li.smtp-form
  127. // .title {{_ 'smtp-tls'}}
  128. // .form-group
  129. // a.flex.js-toggle-tls
  130. // .materialCheckBox#mail-server-tls(class="{{#if currentSetting.mailServer.enableTLS}}is-checked{{/if}}")
  131. //
  132. // span {{_ 'smtp-tls-description'}}
  133. //
  134. // li.smtp-form
  135. // .title {{_ 'send-from'}}
  136. // .form-group
  137. // input.wekan-form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}")
  138. //
  139. // li
  140. // button.js-save.primary {{_ 'save'}}
  141. li
  142. button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}}
  143. template(name='tableVisibilityModeSettings')
  144. ul#tableVisibilityMode-setting.setting-detail
  145. li.tableVisibilityMode-form
  146. .title {{_ 'tableVisibilityMode-allowPrivateOnly'}}
  147. .form-group.flex
  148. input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="true" checked="{{#if allowPrivateOnly}}checked{{/if}}")
  149. label {{_ 'yes'}}
  150. input.wekan-form-control#accounts-allowPrivateOnly(type="radio" name="allowPrivateOnly" value="false" checked="{{#unless allowPrivateOnly}}checked{{/unless}}")
  151. label {{_ 'no'}}
  152. button.js-tableVisibilityMode-save.primary {{_ 'save'}}
  153. template(name='accountSettings')
  154. ul#account-setting.setting-detail
  155. li.accounts-form
  156. .title {{_ 'accounts-allowEmailChange'}}
  157. .form-group.flex
  158. input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="true" checked="{{#if allowEmailChange}}checked{{/if}}")
  159. label {{_ 'yes'}}
  160. input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}")
  161. label {{_ 'no'}}
  162. .title {{_ 'accounts-allowUserNameChange'}}
  163. .form-group.flex
  164. input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="true" checked="{{#if allowUserNameChange}}checked{{/if}}")
  165. label {{_ 'yes'}}
  166. input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}")
  167. label {{_ 'no'}}
  168. .title {{_ 'accounts-allowUserDelete'}}
  169. .form-group.flex
  170. input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}")
  171. label {{_ 'yes'}}
  172. input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}")
  173. label {{_ 'no'}}
  174. button.js-accounts-save.primary {{_ 'save'}}
  175. // Brute force lockout settings moved to People/Locked Users section
  176. template(name='announcementSettings')
  177. ul#announcement-setting.setting-detail
  178. li
  179. a.flex.js-toggle-activemessage
  180. .materialCheckBox(class="{{#if currentAnnouncements.enabled}}is-checked{{/if}}")
  181. span {{_ 'admin-announcement-active'}}
  182. li
  183. .admin-announcement(class="{{#if currentAnnouncements.enabled}}{{else}}hide{{/if}}")
  184. ul
  185. li
  186. .title {{_ 'admin-announcement-title'}}
  187. textarea#admin-announcement.wekan-form-control= currentAnnouncements.body
  188. li
  189. button.js-announcement-save.primary {{_ 'save'}}
  190. template(name='accessibilitySettings')
  191. ul#accessibility-setting.setting-detail
  192. li
  193. a(href="/accessibility" style="text-decoration: underline; color: blue;") {{_ 'accessibility'}}
  194. li
  195. a.flex.js-toggle-accessibility
  196. .materialCheckBox(class="{{#if currentAccessibility.enabled}}is-checked{{/if}}")
  197. span {{_ 'accessibility-page-enabled'}}
  198. li
  199. .accessibility-content(class="{{#if currentAccessibility.enabled}}{{else}}hide{{/if}}")
  200. ul
  201. li
  202. .title {{_ 'accessibility-title'}}
  203. textarea#admin-accessibility-title.wekan-form-control= currentAccessibility.title
  204. li
  205. .title {{_ 'accessibility-content'}}
  206. textarea#admin-accessibility-content.wekan-form-control= currentAccessibility.body
  207. li
  208. button.js-accessibility-save.primary {{_ 'save'}}
  209. template(name='layoutSettings')
  210. ul#layout-setting.setting-detail
  211. li
  212. button.js-all-boards-hide-activities.primary {{_ 'hide-activities-of-all-boards'}}
  213. li.layout-form
  214. .title {{_ 'oidc-button-text'}}
  215. .form-group
  216. input.wekan-form-control#oidcBtnTextvalue(type="text", placeholder="" value="{{currentSetting.oidcBtnText}}")
  217. li.layout-form
  218. .title {{_ 'can-invite-if-same-mailDomainName'}}
  219. .form-group
  220. input.wekan-form-control#mailDomainNamevalue(type="text", placeholder="" value="{{currentSetting.mailDomainName}}")
  221. li.layout-form
  222. .title {{_ 'custom-legal-notice-link-url'}}
  223. .form-group
  224. input.wekan-form-control#legalNoticevalue(type="text", placeholder="" value="{{currentSetting.legalNotice}}")
  225. li.layout-form
  226. .title {{_ 'display-authentication-method'}}
  227. .form-group.flex
  228. input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="true" checked="{{#if currentSetting.displayAuthenticationMethod}}checked{{/if}}")
  229. label {{_ 'yes'}}
  230. input.wekan-form-control#display-authentication-method(type="radio" name="displayAuthenticationMethod" value="false" checked="{{#unless currentSetting.displayAuthenticationMethod}}checked{{/unless}}")
  231. label {{_ 'no'}}
  232. li.layout-form
  233. .title {{_ 'default-authentication-method'}}
  234. +selectAuthenticationMethod(authenticationMethod=currentSetting.defaultAuthenticationMethod)
  235. li.layout-form
  236. .title {{_ 'wait-spinner'}}
  237. +selectSpinnerName(spinnerName=currentSetting.spinnerName)
  238. li.layout-form
  239. .title {{_ 'custom-product-name'}}
  240. .form-group
  241. input.wekan-form-control#product-name(type="text", placeholder="" value="{{currentSetting.productName}}")
  242. li.layout-form
  243. .title {{_ 'hide-logo'}}
  244. .form-group.flex
  245. input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="true" checked="{{#if currentSetting.hideLogo}}checked{{/if}}")
  246. label {{_ 'yes'}}
  247. input.wekan-form-control#hide-logo(type="radio" name="hideLogo" value="false" checked="{{#unless currentSetting.hideLogo}}checked{{/unless}}")
  248. label {{_ 'no'}}
  249. li.layout-form
  250. .title {{_ 'custom-login-logo-image-url'}}
  251. .form-group
  252. input.wekan-form-control#custom-login-logo-image-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoImageUrl}}")
  253. li.layout-form
  254. .title {{_ 'custom-login-logo-link-url'}}
  255. .form-group
  256. input.wekan-form-control#custom-login-logo-link-url(type="text", placeholder="" value="{{currentSetting.customLoginLogoLinkUrl}}")
  257. li.layout-form
  258. .title {{_ 'custom-help-link-url'}}
  259. .form-group
  260. input.wekan-form-control#custom-help-link-url(type="text", placeholder="" value="{{currentSetting.customHelpLinkUrl}}")
  261. li.layout-form
  262. .title {{_ 'text-below-custom-login-logo'}}
  263. .form-group
  264. textarea#text-below-custom-login-logo.wekan-form-control= currentSetting.textBelowCustomLoginLogo
  265. li.layout-form
  266. .title {{_ 'custom-top-left-corner-logo-image-url'}}
  267. .form-group
  268. input.wekan-form-control#custom-top-left-corner-logo-image-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoImageUrl}}")
  269. li.layout-form
  270. .title {{_ 'custom-top-left-corner-logo-link-url'}}
  271. .form-group
  272. input.wekan-form-control#custom-top-left-corner-logo-link-url(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoLinkUrl}}")
  273. li.layout-form
  274. .title {{_ 'custom-top-left-corner-logo-height'}}
  275. .form-group
  276. input.wekan-form-control#custom-top-left-corner-logo-height(type="text", placeholder="" value="{{currentSetting.customTopLeftCornerLogoHeight}}")
  277. li.layout-form
  278. .title {{_ 'automatic-linked-url-schemes'}}
  279. .form-group
  280. textarea#automatic-linked-url-schemes.wekan-form-control= currentSetting.automaticLinkedUrlSchemes
  281. li.layout-form
  282. .title {{_ 'hide-card-counter-list'}}
  283. .form-group.flex
  284. input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="true" checked="{{#if currentSetting.hideCardCounterList}}checked{{/if}}")
  285. label {{_ 'yes'}}
  286. input.wekan-form-control#hide-card-counter-list(type="radio" name="hideCardCounterList" value="false" checked="{{#unless currentSetting.hideCardCounterList}}checked{{/unless}}")
  287. label {{_ 'no'}}
  288. li.layout-form
  289. .title {{_ 'hide-board-member-list'}}
  290. .form-group.flex
  291. input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="true" checked="{{#if currentSetting.hideBoardMemberList}}checked{{/if}}")
  292. label {{_ 'yes'}}
  293. input.wekan-form-control#hide-board-member-list(type="radio" name="hideBoardMemberList" value="false" checked="{{#unless currentSetting.hideBoardMemberList}}checked{{/unless}}")
  294. label {{_ 'no'}}
  295. li
  296. button.js-save-layout.primary {{_ 'save'}}
  297. template(name='selectAuthenticationMethod')
  298. select#defaultAuthenticationMethod
  299. each authentications
  300. if isSelected value
  301. option(value="{{value}}" selected) {{_ value}}
  302. else
  303. option(value="{{value}}") {{_ value}}
  304. template(name='selectSpinnerName')
  305. select#spinnerName
  306. each spinner in spinners
  307. if isSelected spinner
  308. option(value="{{spinner}}" selected) {{_ spinner}}
  309. else
  310. option(value="{{spinner}}") {{_ spinner}}