@girder/core 5.0.0-beta.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist-lib/Girder_Favicon.png +0 -0
  2. package/dist-lib/Girder_Mark.png +0 -0
  3. package/dist-lib/girder-core.css +2 -0
  4. package/dist-lib/girder-core.js +60421 -0
  5. package/dist-lib/girder-core.js.map +1 -0
  6. package/dist-lib/girder-core.umd.cjs +1484 -0
  7. package/dist-lib/girder-core.umd.cjs.map +1 -0
  8. package/dist-lib/index.d.ts +1 -0
  9. package/dist-lib/src/auth.js +112 -0
  10. package/dist-lib/src/collections/ApiKeyCollection.js +9 -0
  11. package/dist-lib/src/collections/AssetstoreCollection.js +10 -0
  12. package/dist-lib/src/collections/Collection.js +295 -0
  13. package/dist-lib/src/collections/CollectionCollection.js +9 -0
  14. package/dist-lib/src/collections/FileCollection.js +11 -0
  15. package/dist-lib/src/collections/FolderCollection.js +11 -0
  16. package/dist-lib/src/collections/GroupCollection.js +9 -0
  17. package/dist-lib/src/collections/ItemCollection.js +11 -0
  18. package/dist-lib/src/collections/UserCollection.js +24 -0
  19. package/dist-lib/src/collections/index.js +21 -0
  20. package/dist-lib/src/constants.js +32 -0
  21. package/dist-lib/src/dialog.js +128 -0
  22. package/dist-lib/src/events.js +6 -0
  23. package/dist-lib/src/index.ts +80 -0
  24. package/dist-lib/src/main.ts +61 -0
  25. package/dist-lib/src/misc.js +260 -0
  26. package/dist-lib/src/models/AccessControlledModel.js +76 -0
  27. package/dist-lib/src/models/ApiKeyModel.js +31 -0
  28. package/dist-lib/src/models/AssetstoreModel.js +43 -0
  29. package/dist-lib/src/models/CollectionCreationPolicyModel.js +20 -0
  30. package/dist-lib/src/models/CollectionModel.js +12 -0
  31. package/dist-lib/src/models/FileModel.js +310 -0
  32. package/dist-lib/src/models/FolderModel.js +33 -0
  33. package/dist-lib/src/models/GroupModel.js +197 -0
  34. package/dist-lib/src/models/ItemModel.js +72 -0
  35. package/dist-lib/src/models/MetadataMixin.js +88 -0
  36. package/dist-lib/src/models/Model.js +187 -0
  37. package/dist-lib/src/models/UserModel.js +189 -0
  38. package/dist-lib/src/models/index.js +25 -0
  39. package/dist-lib/src/pluginUtils.js +11 -0
  40. package/dist-lib/src/rest.js +221 -0
  41. package/dist-lib/src/router.js +58 -0
  42. package/dist-lib/src/routes.js +229 -0
  43. package/dist-lib/src/stylesheets/apidocs/apidocs.styl +50 -0
  44. package/dist-lib/src/stylesheets/body/adminConsole.styl +21 -0
  45. package/dist-lib/src/stylesheets/body/assetstores.styl +46 -0
  46. package/dist-lib/src/stylesheets/body/collectionList.styl +39 -0
  47. package/dist-lib/src/stylesheets/body/collectionPage.styl +6 -0
  48. package/dist-lib/src/stylesheets/body/frontPage.styl +48 -0
  49. package/dist-lib/src/stylesheets/body/groupList.styl +43 -0
  50. package/dist-lib/src/stylesheets/body/groupPage.styl +116 -0
  51. package/dist-lib/src/stylesheets/body/itemPage.styl +81 -0
  52. package/dist-lib/src/stylesheets/body/plugins.styl +61 -0
  53. package/dist-lib/src/stylesheets/body/searchResultsList.styl +51 -0
  54. package/dist-lib/src/stylesheets/body/systemConfig.styl +56 -0
  55. package/dist-lib/src/stylesheets/body/userAccount.styl +57 -0
  56. package/dist-lib/src/stylesheets/body/userList.styl +79 -0
  57. package/dist-lib/src/stylesheets/body/userPage.styl +6 -0
  58. package/dist-lib/src/stylesheets/layout/footer.styl +19 -0
  59. package/dist-lib/src/stylesheets/layout/global.styl +154 -0
  60. package/dist-lib/src/stylesheets/layout/globalNav.styl +89 -0
  61. package/dist-lib/src/stylesheets/layout/header.styl +29 -0
  62. package/dist-lib/src/stylesheets/layout/headerUser.styl +33 -0
  63. package/dist-lib/src/stylesheets/layout/layout.styl +75 -0
  64. package/dist-lib/src/stylesheets/layout/layoutVars.styl +9 -0
  65. package/dist-lib/src/stylesheets/layout/loading.styl +37 -0
  66. package/dist-lib/src/stylesheets/layout/progressArea.styl +17 -0
  67. package/dist-lib/src/stylesheets/widgets/accessWidget.styl +106 -0
  68. package/dist-lib/src/stylesheets/widgets/browserWidget.styl +9 -0
  69. package/dist-lib/src/stylesheets/widgets/hierarchyWidget.styl +188 -0
  70. package/dist-lib/src/stylesheets/widgets/markdownWidget.styl +92 -0
  71. package/dist-lib/src/stylesheets/widgets/metadataWidget.styl +92 -0
  72. package/dist-lib/src/stylesheets/widgets/searchFieldWidget.styl +70 -0
  73. package/dist-lib/src/stylesheets/widgets/taskProgress.styl +41 -0
  74. package/dist-lib/src/stylesheets/widgets/timelineWidget.styl +41 -0
  75. package/dist-lib/src/stylesheets/widgets/uploadWidget.styl +43 -0
  76. package/dist-lib/src/stylesheets/widgets/userOtpManagementWidget.styl +159 -0
  77. package/dist-lib/src/templates/body/adminConsole.pug +13 -0
  78. package/dist-lib/src/templates/body/assetstores.pug +83 -0
  79. package/dist-lib/src/templates/body/collectionList.pug +40 -0
  80. package/dist-lib/src/templates/body/collectionPage.pug +36 -0
  81. package/dist-lib/src/templates/body/filesystemImport.pug +41 -0
  82. package/dist-lib/src/templates/body/frontPage.pug +83 -0
  83. package/dist-lib/src/templates/body/groupList.pug +30 -0
  84. package/dist-lib/src/templates/body/groupPage.pug +116 -0
  85. package/dist-lib/src/templates/body/itemPage.pug +61 -0
  86. package/dist-lib/src/templates/body/plugins.pug +20 -0
  87. package/dist-lib/src/templates/body/s3Import.pug +35 -0
  88. package/dist-lib/src/templates/body/searchResults.pug +15 -0
  89. package/dist-lib/src/templates/body/searchResultsType.pug +13 -0
  90. package/dist-lib/src/templates/body/systemConfiguration.pug +215 -0
  91. package/dist-lib/src/templates/body/userAccount.pug +83 -0
  92. package/dist-lib/src/templates/body/userList.pug +43 -0
  93. package/dist-lib/src/templates/body/userPage.pug +40 -0
  94. package/dist-lib/src/templates/layout/alert.pug +5 -0
  95. package/dist-lib/src/templates/layout/layout.pug +12 -0
  96. package/dist-lib/src/templates/layout/layoutFooter.pug +11 -0
  97. package/dist-lib/src/templates/layout/layoutGlobalNav.pug +7 -0
  98. package/dist-lib/src/templates/layout/layoutHeader.pug +8 -0
  99. package/dist-lib/src/templates/layout/layoutHeaderUser.pug +26 -0
  100. package/dist-lib/src/templates/layout/layoutProgressArea.pug +1 -0
  101. package/dist-lib/src/templates/layout/loginDialog.pug +30 -0
  102. package/dist-lib/src/templates/layout/registerDialog.pug +35 -0
  103. package/dist-lib/src/templates/layout/resetPasswordDialog.pug +25 -0
  104. package/dist-lib/src/templates/widgets/accessEditor.pug +23 -0
  105. package/dist-lib/src/templates/widgets/accessEditorMixins.pug +57 -0
  106. package/dist-lib/src/templates/widgets/accessEditorNonModal.pug +11 -0
  107. package/dist-lib/src/templates/widgets/accessEntry.pug +32 -0
  108. package/dist-lib/src/templates/widgets/apiKeyList.pug +50 -0
  109. package/dist-lib/src/templates/widgets/browserWidget.pug +32 -0
  110. package/dist-lib/src/templates/widgets/checkedActionsMenu.pug +46 -0
  111. package/dist-lib/src/templates/widgets/collectionInfoDialog.pug +37 -0
  112. package/dist-lib/src/templates/widgets/confirmDialog.pug +14 -0
  113. package/dist-lib/src/templates/widgets/dateTimeRangeWidget.pug +20 -0
  114. package/dist-lib/src/templates/widgets/dateTimeWidget.pug +8 -0
  115. package/dist-lib/src/templates/widgets/editApiKeyWidget.pug +43 -0
  116. package/dist-lib/src/templates/widgets/editAssetstoreWidget.pug +70 -0
  117. package/dist-lib/src/templates/widgets/editCollectionWidget.pug +27 -0
  118. package/dist-lib/src/templates/widgets/editFileWidget.pug +21 -0
  119. package/dist-lib/src/templates/widgets/editFolderWidget.pug +27 -0
  120. package/dist-lib/src/templates/widgets/editGroupWidget.pug +54 -0
  121. package/dist-lib/src/templates/widgets/editItemWidget.pug +27 -0
  122. package/dist-lib/src/templates/widgets/fileInfoDialog.pug +33 -0
  123. package/dist-lib/src/templates/widgets/fileList.pug +33 -0
  124. package/dist-lib/src/templates/widgets/folderInfoDialog.pug +42 -0
  125. package/dist-lib/src/templates/widgets/folderList.pug +21 -0
  126. package/dist-lib/src/templates/widgets/groupAdminList.pug +33 -0
  127. package/dist-lib/src/templates/widgets/groupInviteDialog.pug +76 -0
  128. package/dist-lib/src/templates/widgets/groupInviteList.pug +14 -0
  129. package/dist-lib/src/templates/widgets/groupMemberList.pug +39 -0
  130. package/dist-lib/src/templates/widgets/groupModList.pug +23 -0
  131. package/dist-lib/src/templates/widgets/hierarchyBreadcrumb.pug +37 -0
  132. package/dist-lib/src/templates/widgets/hierarchyPaginated.pug +19 -0
  133. package/dist-lib/src/templates/widgets/hierarchyWidget.pug +96 -0
  134. package/dist-lib/src/templates/widgets/itemBreadcrumb.pug +16 -0
  135. package/dist-lib/src/templates/widgets/itemList.pug +27 -0
  136. package/dist-lib/src/templates/widgets/jsonMetadatumEditWidget.pug +13 -0
  137. package/dist-lib/src/templates/widgets/jsonMetadatumView.pug +6 -0
  138. package/dist-lib/src/templates/widgets/loadingAnimation.pug +4 -0
  139. package/dist-lib/src/templates/widgets/markdownWidget.pug +34 -0
  140. package/dist-lib/src/templates/widgets/metadataWidget.pug +16 -0
  141. package/dist-lib/src/templates/widgets/metadatumEditWidget.pug +15 -0
  142. package/dist-lib/src/templates/widgets/metadatumView.pug +5 -0
  143. package/dist-lib/src/templates/widgets/newAssetstore.pug +87 -0
  144. package/dist-lib/src/templates/widgets/paginateWidget.pug +7 -0
  145. package/dist-lib/src/templates/widgets/pluginConfigBreadcrumb.pug +13 -0
  146. package/dist-lib/src/templates/widgets/rootSelectorWidget.pug +13 -0
  147. package/dist-lib/src/templates/widgets/searchField.pug +10 -0
  148. package/dist-lib/src/templates/widgets/searchHelp.pug +12 -0
  149. package/dist-lib/src/templates/widgets/searchModeSelect.pug +9 -0
  150. package/dist-lib/src/templates/widgets/searchResults.pug +14 -0
  151. package/dist-lib/src/templates/widgets/sortCollectionWidget.pug +14 -0
  152. package/dist-lib/src/templates/widgets/taskProgress.pug +16 -0
  153. package/dist-lib/src/templates/widgets/timeline.pug +15 -0
  154. package/dist-lib/src/templates/widgets/uploadWidget.pug +15 -0
  155. package/dist-lib/src/templates/widgets/uploadWidgetMixins.pug +31 -0
  156. package/dist-lib/src/templates/widgets/uploadWidgetNonModal.pug +10 -0
  157. package/dist-lib/src/templates/widgets/userOtpBegin.pug +4 -0
  158. package/dist-lib/src/templates/widgets/userOtpDisable.pug +6 -0
  159. package/dist-lib/src/templates/widgets/userOtpEnable.pug +44 -0
  160. package/dist-lib/src/utilities/EventStream.js +119 -0
  161. package/dist-lib/src/utilities/PluginUtils.js +36 -0
  162. package/dist-lib/src/utilities/S3UploadHandler.js +263 -0
  163. package/dist-lib/src/utilities/index.js +9 -0
  164. package/dist-lib/src/utilities/jquery/girderEnable.js +19 -0
  165. package/dist-lib/src/utilities/jquery/girderModal.js +48 -0
  166. package/dist-lib/src/version.js +6 -0
  167. package/dist-lib/src/views/App.js +359 -0
  168. package/dist-lib/src/views/View.js +79 -0
  169. package/dist-lib/src/views/body/AdminView.js +29 -0
  170. package/dist-lib/src/views/body/AssetstoresView.js +233 -0
  171. package/dist-lib/src/views/body/CollectionView.js +188 -0
  172. package/dist-lib/src/views/body/CollectionsView.js +120 -0
  173. package/dist-lib/src/views/body/FilesystemImportView.js +83 -0
  174. package/dist-lib/src/views/body/FolderView.js +54 -0
  175. package/dist-lib/src/views/body/FrontPageView.js +47 -0
  176. package/dist-lib/src/views/body/GroupView.js +336 -0
  177. package/dist-lib/src/views/body/GroupsView.js +106 -0
  178. package/dist-lib/src/views/body/ItemView.js +177 -0
  179. package/dist-lib/src/views/body/PluginsView.js +73 -0
  180. package/dist-lib/src/views/body/S3ImportView.js +80 -0
  181. package/dist-lib/src/views/body/SearchResultsView.js +162 -0
  182. package/dist-lib/src/views/body/SystemConfigurationView.js +177 -0
  183. package/dist-lib/src/views/body/UserAccountView.js +179 -0
  184. package/dist-lib/src/views/body/UserView.js +165 -0
  185. package/dist-lib/src/views/body/UsersView.js +124 -0
  186. package/dist-lib/src/views/body/index.js +38 -0
  187. package/dist-lib/src/views/index.js +13 -0
  188. package/dist-lib/src/views/layout/FooterView.js +29 -0
  189. package/dist-lib/src/views/layout/GlobalNavView.js +103 -0
  190. package/dist-lib/src/views/layout/HeaderUserView.js +45 -0
  191. package/dist-lib/src/views/layout/HeaderView.js +83 -0
  192. package/dist-lib/src/views/layout/LoginView.js +100 -0
  193. package/dist-lib/src/views/layout/ProgressListView.js +70 -0
  194. package/dist-lib/src/views/layout/RegisterView.js +101 -0
  195. package/dist-lib/src/views/layout/ResetPasswordView.js +70 -0
  196. package/dist-lib/src/views/layout/index.js +19 -0
  197. package/dist-lib/src/views/widgets/AccessWidget.js +427 -0
  198. package/dist-lib/src/views/widgets/ApiKeyListWidget.js +140 -0
  199. package/dist-lib/src/views/widgets/BrowserWidget.js +317 -0
  200. package/dist-lib/src/views/widgets/CheckedMenuWidget.js +68 -0
  201. package/dist-lib/src/views/widgets/CollectionInfoWidget.js +40 -0
  202. package/dist-lib/src/views/widgets/DateTimeRangeWidget.js +180 -0
  203. package/dist-lib/src/views/widgets/DateTimeWidget.js +110 -0
  204. package/dist-lib/src/views/widgets/EditApiKeyWidget.js +124 -0
  205. package/dist-lib/src/views/widgets/EditAssetstoreWidget.js +136 -0
  206. package/dist-lib/src/views/widgets/EditCollectionWidget.js +93 -0
  207. package/dist-lib/src/views/widgets/EditFileWidget.js +56 -0
  208. package/dist-lib/src/views/widgets/EditFolderWidget.js +116 -0
  209. package/dist-lib/src/views/widgets/EditGroupWidget.js +125 -0
  210. package/dist-lib/src/views/widgets/EditItemWidget.js +110 -0
  211. package/dist-lib/src/views/widgets/FileInfoWidget.js +26 -0
  212. package/dist-lib/src/views/widgets/FileListWidget.js +151 -0
  213. package/dist-lib/src/views/widgets/FolderInfoWidget.js +39 -0
  214. package/dist-lib/src/views/widgets/FolderListWidget.js +106 -0
  215. package/dist-lib/src/views/widgets/GroupAdminsWidget.js +88 -0
  216. package/dist-lib/src/views/widgets/GroupInvitesWidget.js +56 -0
  217. package/dist-lib/src/views/widgets/GroupMembersWidget.js +185 -0
  218. package/dist-lib/src/views/widgets/GroupModsWidget.js +77 -0
  219. package/dist-lib/src/views/widgets/HierarchyWidget.js +1097 -0
  220. package/dist-lib/src/views/widgets/ItemBreadcrumbWidget.js +38 -0
  221. package/dist-lib/src/views/widgets/ItemListWidget.js +345 -0
  222. package/dist-lib/src/views/widgets/LoadingAnimation.js +17 -0
  223. package/dist-lib/src/views/widgets/MarkdownWidget.js +217 -0
  224. package/dist-lib/src/views/widgets/MetadataWidget.js +508 -0
  225. package/dist-lib/src/views/widgets/NewAssetstoreWidget.js +72 -0
  226. package/dist-lib/src/views/widgets/PaginateWidget.js +37 -0
  227. package/dist-lib/src/views/widgets/PluginConfigBreadcrumbWidget.js +33 -0
  228. package/dist-lib/src/views/widgets/RootSelectorWidget.js +192 -0
  229. package/dist-lib/src/views/widgets/SearchFieldWidget.js +365 -0
  230. package/dist-lib/src/views/widgets/SearchPaginateWidget.js +149 -0
  231. package/dist-lib/src/views/widgets/SortCollectionWidget.js +53 -0
  232. package/dist-lib/src/views/widgets/TaskProgressWidget.js +91 -0
  233. package/dist-lib/src/views/widgets/TimelineWidget.js +155 -0
  234. package/dist-lib/src/views/widgets/UploadWidget.js +340 -0
  235. package/dist-lib/src/views/widgets/UserOtpManagementWidget.js +105 -0
  236. package/dist-lib/src/views/widgets/index.js +81 -0
  237. package/dist-lib/src/vite-env.d.ts +5 -0
  238. package/package.json +17 -15
@@ -0,0 +1,215 @@
1
+ .g-body-title System configuration
2
+ .g-body-subtitle
3
+ p
4
+ | Note: all settings other than those referencing data in the database should be set as
5
+ | environment variables in the execution environment.
6
+ form.g-settings-form(role="form")
7
+ .g-settings-form-container
8
+ h4 Instance Branding
9
+ .form-group
10
+ label(for="g-core-brand-name") Brand Name
11
+ input#g-core-brand-name.form-control.input-sm(
12
+ disabled=true,
13
+ type="text", value=settings['core.brand_name'] || '',
14
+ title="The brand name of the application.")
15
+ .form-group
16
+ label(for="g-core-contact-email-address") Contact email address
17
+ input#g-core-contact-email-address.form-control.input-sm(
18
+ disabled=true,
19
+ type="text", value=settings['core.contact_email_address'] || '',
20
+ title="The contact email address for users to obtain support with this instance.")
21
+ .form-group
22
+ label(for="g-core-banner-color") Banner Color
23
+ #g-core-banner-color-container
24
+ input#g-core-banner-color.form-control.input-sm(
25
+ disabled=true,
26
+ type="color", value=settings['core.banner_color'],
27
+ title="The banner color of the application.")
28
+ .form-group
29
+ label(for="g-core-privacy-notice") Privacy Notice Link
30
+ input#g-core-privacy-notice.form-control.input-sm(
31
+ disabled=true,
32
+ type="text", value=settings['core.privacy_notice'] || '',
33
+ title="The privacy notice link.")
34
+ .form-group
35
+ label(for="g-core-cookie-lifetime") Cookie duration (days)
36
+ input#g-core-cookie-lifetime.form-control.input-sm(
37
+ disabled=true,
38
+ type="text", value=settings['core.cookie_lifetime'] || '',
39
+ title="How long users will stay logged in.")
40
+ .g-settings-form-container
41
+ h4 Administrative Policy
42
+ .form-group
43
+ label(for="g-core-registration-policy") Registration policy
44
+ select#g-core-registration-policy.form-control.input-sm(
45
+ disabled=true)
46
+ option(value="open",
47
+ selected=(settings['core.registration_policy'] === "open")) Open registration
48
+ option(value="closed",
49
+ selected=(settings['core.registration_policy'] === "closed")) Closed registration
50
+ option(value="approve",
51
+ selected=(settings['core.registration_policy'] === "approve")) Admin approval required
52
+ .form-group
53
+ label(for="g-core-email-verification") Email verification
54
+ select#g-core-email-verification.form-control.input-sm(
55
+ disabled=true)
56
+ option(value="required",
57
+ selected=(settings['core.email_verification'] === "required")) Required
58
+ option(value="optional",
59
+ selected=(settings['core.email_verification'] === "optional")) Optional
60
+ option(value="disabled",
61
+ selected=(settings['core.email_verification'] === "disabled")) Disabled
62
+ .form-group
63
+ label(for="g-core-add-to-group-policy") Allow members to be directly added to groups
64
+ select#g-core-add-to-group-policy.form-control.input-sm(
65
+ disabled=true)
66
+ option(value="never",
67
+ selected=(settings['core.add_to_group_policy'] === "never"))
68
+ | No, members must be invited and accept invitations
69
+ option(value="noadmin",
70
+ selected=(settings['core.add_to_group_policy'] === "noadmin"))
71
+ | No, except for group administrators when enabled per group
72
+ option(value="nomod",
73
+ selected=(settings['core.add_to_group_policy'] === "nomod"))
74
+ | No, except for group administrators and moderators when enabled per group
75
+ option(value="yesadmin",
76
+ selected=(settings['core.add_to_group_policy'] === "yesadmin"))
77
+ | Yes, by group administrators unless disabled per group
78
+ option(value="yesmod",
79
+ selected=(settings['core.add_to_group_policy'] === "yesmod"))
80
+ | Yes, by group administrators and moderators unless disabled per group
81
+ .g-collection-create-policy-container
82
+ label Collection creation policy
83
+ p.
84
+ Allow additional users and groups to create collections.
85
+ input.g-setting-switch(type="checkbox",
86
+ checked="checked", data-size="mini", data-on-color="primary")
87
+ .access-widget-container
88
+ textarea#g-core-collection-create-policy.hide
89
+ = JSON.stringify(settings['core.collection_create_policy'])
90
+ .form-group
91
+ label(for="g-core-user-default-folders") Create default folders for new users
92
+ select#g-core-user-default-folders.form-control.input-sm(
93
+ disabled=true)
94
+ option(value="none",
95
+ selected=(settings['core.user_default_folders'] === "none")) No
96
+ option(value="public_private",
97
+ selected=(settings['core.user_default_folders'] === "public_private")) Yes, "Public" and "Private"
98
+ .form-group
99
+ .checkbox
100
+ label(for="g-core-api-keys")
101
+ input#g-core-api-keys(type="checkbox", checked=settings['core.api_keys'],
102
+ disabled=true)
103
+ | Enable API keys
104
+ .form-group
105
+ .checkbox
106
+ label(for="g-core-enable-password-login")
107
+ input#g-core-enable-password-login(
108
+ type="checkbox", checked=settings['core.enable_password_login'],
109
+ disabled=true)
110
+ | Enable password login
111
+ .g-settings-form-container
112
+ h4 Email Creation
113
+ .form-group
114
+ label(for="g-core-email-from-address") Email from address
115
+ input#g-core-email-from-address.form-control.input-sm(
116
+ disabled=true,
117
+ type="text", value=settings['core.email_from_address'] || '',
118
+ title="The email address the system will use when sending emails.")
119
+ .form-group
120
+ label(for="g-core-email-host") Email host
121
+ input#g-core-email-host.form-control.input-sm(
122
+ disabled=true,
123
+ type="text", value=settings['core.email_host'] || '',
124
+ title="The host email server that is shown as a link in the footer of emails.")
125
+ .g-settings-form-container
126
+ h4 Email Delivery
127
+ .form-group
128
+ label(for="g-core-smtp-host") SMTP host
129
+ input#g-core-smtp-host.form-control.input-sm(
130
+ disabled=true,
131
+ type="text", value=settings['core.smtp_host'] || '',
132
+ title="The hostname of the SMTP server used to send emails.")
133
+ .form-group
134
+ label(for="g-core-smtp-port") SMTP port
135
+ input#g-core-smtp-port.form-control.input-sm(
136
+ disabled=true,
137
+ type="text", value=settings['core.smtp.port'] || '',
138
+ title="The port number of the SMTP server used to send emails.")
139
+ .form-group
140
+ label(for="g-core-smtp-encryption") SMTP encryption
141
+ select#g-core-smtp-encryption.form-control.input-sm(
142
+ disabled=true)
143
+ option(value="none",
144
+ selected=(settings['core.smtp.encryption'] === "none")) None
145
+ option(value="starttls",
146
+ selected=(settings['core.smtp.encryption'] === "starttls")) Use STARTTLS
147
+ option(value="ssl",
148
+ selected=(settings['core.smtp.encryption'] === "ssl")) Use SSL/TLS
149
+ .form-group
150
+ label(for="g-core-smtp-username") SMTP username
151
+ input#g-core-smtp-username.form-control.input-sm(
152
+ disabled=true,
153
+ type="text", value=settings['core.smtp.username'] || '',
154
+ title="The username, if any, used to authenticate to the SMTP server used to send emails.")
155
+ .form-group
156
+ label(for="g-core-smtp-password") SMTP password
157
+ input#g-core-smtp-password.form-control.input-sm(
158
+ disabled=true,
159
+ type="password", value=settings['core.smtp.password'] || '',
160
+ title="The password, if any, used to authenticate to the SMTP server used to send emails.")
161
+
162
+ #g-configuration-accordion.panel-group
163
+ .panel.panel-default
164
+ .panel-heading(data-toggle="collapse",
165
+ data-parent="#g-configuration-accordion",
166
+ data-target="#g-advanced-settings-tab")
167
+ .panel-title
168
+ a
169
+ b Advanced Settings
170
+ #g-advanced-settings-tab.panel-collapse.collapse
171
+ .panel-body
172
+ p These settings should only be changed if you are certain of what you are doing.
173
+ .form-group
174
+ label(for="g-core-server-root") Server root URL
175
+ input#g-core-server-root.form-control.input-sm(
176
+ disabled=true,
177
+ type="text", value=settings['core.server_root'] || '',
178
+ placeholder='Detect automatically')
179
+ .form-group
180
+ label(for="g-core-upload-minimum-chunk-size") Upload minimum chunk size (bytes)
181
+ br
182
+ span This applies to Filesystem assetstores.
183
+ input#g-core-upload-minimum-chunk-size.form-control.input-sm(
184
+ disabled=true,
185
+ type="text", value=settings['core.upload_minimum_chunk_size'] || '',
186
+ title="For large files, the minimum size of all but the last chunk.")
187
+ .g-settings-form-container
188
+ h4 CORS
189
+ p.
190
+ CORS (Cross-origin resource sharing) allows access from other websites.
191
+ These settings are described in
192
+ detail #[a(href="http://girder.readthedocs.org/en/latest/security.html#cors-cross-origin-resource-sharing", target="_blank") here].
193
+ .form-group
194
+ label(for="g-core-cors-allow-origin") CORS Allowed Origins
195
+ input#g-core-cors-allow-origin.form-control.input-sm(
196
+ disabled=true,
197
+ type="text", value=settings['core.cors.allow_origin'] || '',
198
+ title="A comma-separated list of allowed base URLs that can make cross-site requests. This may include *.")
199
+ .form-group
200
+ label(for="g-core-cors-allow-methods") CORS Allowed Methods
201
+ input#g-core-cors-allow-methods.form-control.input-sm(
202
+ disabled=true,
203
+ type="text", value=settings['core.cors.allow_methods'] || '',
204
+ placeholder="Default: allow all methods",
205
+ title="A comma-separated list of allowed methods")
206
+ .form-group
207
+ label(for="g-core-cors-allow-headers") CORS Allowed Headers
208
+ input#g-core-cors-allow-headers.form-control.input-sm(
209
+ disabled=true,
210
+ type="text", value=settings['core.cors.allow_headers'] || '',
211
+ title="A comma-separated list of allowed headers.")
212
+ p
213
+ .form-group
214
+ button.g-submit-settings.btn.btn-default.btn-sm #[i.icon-ok] Save
215
+ #g-settings-error-message.g-validation-failed-message
@@ -0,0 +1,83 @@
1
+ .g-account-header
2
+ .g-user-name.g-body-title= user.name()
3
+ .g-user-description.g-body-subtitle= user.get('login')
4
+
5
+ ul.g-account-tabs.nav.nav-tabs
6
+ li.active
7
+ a(href="#g-account-tab-info", data-toggle="tab", name="info")
8
+ i.icon-info-circled
9
+ | Profile
10
+ li
11
+ a(href="#g-account-tab-password", data-toggle="tab", name="password")
12
+ i.icon-lock
13
+ | Password
14
+ li
15
+ a(href="#g-account-tab-api-keys", data-toggle="tab", name="apikeys")
16
+ i.icon-key-inv
17
+ | API keys
18
+ li
19
+ a(href="#g-account-tab-otp", data-toggle="tab", name="otp")
20
+ i.icon-mobile
21
+ | Two-factor authentication
22
+
23
+ .tab-content
24
+ #g-account-tab-info.tab-pane.active
25
+ .g-user-info-container.g-user-settings-container
26
+ form#g-user-info-form(role="form")
27
+ .form-group
28
+ label(for="g-login") Login
29
+ p.form-control-static= user.get('login')
30
+ .form-group
31
+ label(for="g-email") Email
32
+ input#g-email.input-sm.form-control(type="text", value=user.get('email'))
33
+ .form-group
34
+ label(for="g-firstName") First name
35
+ input#g-firstName.input-sm.form-control(type="text", value=user.get('firstName'))
36
+ .form-group
37
+ label(for="g-lastName") Last name
38
+ input#g-lastName.input-sm.form-control(type="text", value=user.get('lastName'))
39
+ if getCurrentUser().get('admin')
40
+ .form-group
41
+ label(for="g-admin") User is site admin
42
+ input#g-admin.input-sm-form-control(type="checkbox", checked=user.get('admin'))
43
+ button.btn.btn-default.btn-sm(type="submit")
44
+ i.icon-edit
45
+ | Save
46
+ #g-user-info-error-msg.g-validation-failed-message
47
+
48
+ #g-account-tab-password.tab-pane
49
+ .g-password-change-container.g-user-settings-container
50
+ form#g-password-change-form(role="form")
51
+ if temporaryToken
52
+ input#g-password-old.input-sm.form-control(type="hidden", value=temporaryToken)
53
+ else if isCurrentUser
54
+ .form-group
55
+ label(for="g-password-old") Current password
56
+ input#g-password-old.input-sm.form-control(type="password", placeholder="Enter current password")
57
+ .form-group
58
+ label(for="g-password-new") New password
59
+ input#g-password-new.input-sm.form-control(type="password", placeholder="Enter new password")
60
+ .form-group
61
+ label(for="g-password-retype") Retype new password
62
+ input#g-password-retype.input-sm.form-control(type="password", placeholder="Retype new password")
63
+ button.btn.btn-default.btn-sm(type="submit")
64
+ i.icon-lock
65
+ | Change
66
+ #g-password-change-error-msg.g-validation-failed-message
67
+ #g-account-tab-api-keys.tab-pane
68
+ .g-api-keys-container.g-user-settings-container
69
+ .g-api-keys-info-text.
70
+ API keys can be used to grant limited or total access to client applications on your behalf.
71
+ Clients can use these keys to create tokens that can be used for authenticated access. You may
72
+ limit the tokens created with a given key to certain authorization scopes, or allow the tokens
73
+ complete access to everything your user can do. You may also choose the maximum time that
74
+ tokens created with a given key will last before expiration. If you do not specify a duration,
75
+ the default expiration for user login sessions will be used.
76
+
77
+ .g-api-keys-list-container
78
+ #g-account-tab-otp.tab-pane
79
+ .g-user-settings-container
80
+ .g-account-otp-info-text.
81
+ Two-factor authentication adds another level of authentication to your account log-in.
82
+
83
+ .g-account-otp-container
@@ -0,0 +1,43 @@
1
+ - const isAdmin = currentUser && currentUser.get('admin');
2
+ - const userTooltip = usersCount === 1 ? `${usersCount} total user` : `${usersCount} total users`;
3
+ .g-user-list-header
4
+ .g-user-pagination
5
+ if currentUser
6
+ .g-user-count-container(title=userTooltip)
7
+ i.icon-user
8
+ span.g-user-count= usersCount
9
+
10
+ .g-user-sort
11
+ form.g-user-search-form.form-inline(role="form")
12
+ .form-group.g-users-search-container
13
+ if isAdmin
14
+ button.g-user-create-button.btn.btn-sm.btn-default
15
+ i.icon-plus-squared
16
+ | Create user
17
+
18
+ each user in users
19
+ .g-user-list-entry
20
+ .g-user-right-column
21
+ .g-user-joined
22
+ i.icon-clock
23
+ | Joined on
24
+ span.g-user-joined-date #{formatDate(user.get('created'), DATE_DAY)}
25
+ if user.get('size') !== undefined
26
+ .g-space-used
27
+ i.icon-floppy
28
+ | Currently using
29
+ span.g-user-space-used #{formatSize(user.get('size'))}
30
+ if user.get('status') === 'disabled'
31
+ .g-user-status
32
+ i.icon-cancel-circled
33
+ | Account disabled
34
+ else if user.get('status') === 'pending'
35
+ .g-user-status
36
+ i.icon-attention-circled
37
+ | Account pending approval
38
+ .g-user-title
39
+ a.g-user-link(g-user-cid=user.cid)
40
+ b= user.name()
41
+ .g-user-subtitle
42
+ span.g-user-login #{user.get('login')}
43
+ .g-clear-right
@@ -0,0 +1,40 @@
1
+ .g-user-header
2
+
3
+ if user.getAccessLevel() >= AccessType.WRITE
4
+ .btn-group.pull-right
5
+ button.g-user-actions-button.btn.btn-default.dropdown-toggle(
6
+ data-toggle="dropdown", title="Item actions")
7
+ i.icon-user
8
+ | Actions
9
+ i.icon-down-dir
10
+ ul.g-item-actions-menu.dropdown-menu.pull-right(role="menu")
11
+ li(role="presentation")
12
+ a.g-edit-user(role="menuitem")
13
+ i.icon-edit
14
+ | Edit user
15
+ if user.getAccessLevel() >= AccessType.ADMIN
16
+ li.divider(role="presentation")
17
+ if user.get('status') === 'pending'
18
+ li(role="presentation")
19
+ a.g-approve-user(role="menuitem")
20
+ i.icon-ok-squared
21
+ | Approve account
22
+ else if user.get('status') === 'enabled'
23
+ li(role="presentation")
24
+ a.g-disable-user(role="menuitem")
25
+ i.icon-cancel
26
+ | Disable account
27
+ else if user.get('status') === 'disabled'
28
+ li(role="presentation")
29
+ a.g-enable-user(role="menuitem")
30
+ i.icon-ok
31
+ | Enable account
32
+ li(role="presentation")
33
+ a.g-delete-user(role="menuitem")
34
+ i.icon-trash
35
+ | Delete user
36
+
37
+ .g-user-name.g-body-title #{user.get('firstName')} #{user.get('lastName')}
38
+ .g-user-login.g-body-subtitle #{user.get('login')}
39
+
40
+ .g-user-hierarchy-container
@@ -0,0 +1,5 @@
1
+ .alert.alert-dismissable(class=`alert-${type}`)
2
+ button.close(type="button", data-dismiss="alert", aria-hidden="true") ×
3
+ if icon
4
+ i(class=`icon-${icon}`)
5
+ | #{text}
@@ -0,0 +1,12 @@
1
+ #g-app-header-container
2
+ #g-global-nav-container
3
+ #g-app-body-container.g-default-layout
4
+ #g-app-footer-container
5
+
6
+ #g-app-progress-container
7
+
8
+ //- Set tabindex on modal element to allow closing modal by pressing Escape. See:
9
+ //- - http://getbootstrap.com/javascript/#modals-examples
10
+ //- - http://stackoverflow.com/questions/12630156/
11
+ #g-dialog-container.modal.fade(tabindex="-1")
12
+ #g-alerts-container
@@ -0,0 +1,11 @@
1
+ .g-footer-links
2
+ a#g-about-link(href="http://girder.readthedocs.org/en/latest/user-guide.html") About
3
+ if contactHref
4
+ a#g-contact-link(href=contactHref) Contact
5
+ a(href=apiRoot) Web API
6
+ a#g-bug-link(href="https://github.com/girder/girder/issues/new") Report a bug
7
+ if privacyNoticeLink
8
+ a#g-privacy-notice-link(href=privacyNoticeLink) Privacy Notice
9
+
10
+ .g-footer-info
11
+ | © Kitware, Inc.
@@ -0,0 +1,7 @@
1
+ .g-global-nav-main
2
+ ul.g-global-nav
3
+ each navItem in navItems
4
+ li.g-global-nav-li
5
+ a.g-nav-link(g-target=navItem.target, g-name=navItem.name, href=`#${navItem.target}`)
6
+ i(class=navItem.icon)
7
+ span= navItem.name
@@ -0,0 +1,8 @@
1
+ .g-header-wrapper(style=`background-color: ${bannerColor}; color: ${textColor}`)
2
+ .g-app-title #{brandName}
3
+
4
+ form.g-quick-search-form(role="form")
5
+ .form-group.g-quick-search-container
6
+
7
+ .g-current-user-wrapper
8
+ .g-clear-both
@@ -0,0 +1,26 @@
1
+ .g-user-text
2
+ if user
3
+ a.g-user-dropdown-link(data-toggle="dropdown", data-target="#g-user-action-menu")
4
+ | #[i.icon-user] #{user.get('login')}
5
+ i.icon-down-open
6
+ #g-user-action-menu.dropdown
7
+ ul.dropdown-menu(role="menu")
8
+ li(role="presentation")
9
+ a.g-my-folders(href=`#user/${user.id}`)
10
+ i.icon-folder
11
+ | My folders
12
+ li(role="presentation")
13
+ a.g-my-settings(href=`#useraccount/${user.id}/info`)
14
+ i.icon-cog
15
+ | My account
16
+ li.divider(role="presentation")
17
+ li(role="presentation")
18
+ a.g-logout
19
+ i.icon-logout
20
+ | Log out
21
+ else
22
+ if registrationPolicy !== 'closed'
23
+ a.g-register Register
24
+ .g-or-text or
25
+ a.g-login Log In
26
+ i.icon-login
@@ -0,0 +1 @@
1
+ .g-progress-list-container
@@ -0,0 +1,30 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-login-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title Log in
7
+ .modal-body
8
+ if enablePasswordLogin
9
+ .form-group
10
+ label.control-label(for="g-login") Login or email
11
+ input#g-login.input-sm.form-control(type="text", placeholder="Enter login")
12
+ .form-group
13
+ label.control-label(for="g-password") Password
14
+ input#g-password.input-sm.form-control(type="password", placeholder="Enter password")
15
+ #g-login-otp-group.form-group.hidden
16
+ label.control-label(for="g-login-otp") Two-factor code
17
+ input#g-login-otp.input-sm.form-control(
18
+ type='text', minlength=6, maxlength=6, placeholder="Your 6-digit two-factor authentication code, if enabled")
19
+ .g-validation-failed-message
20
+ .g-bottom-message
21
+ if registrationPolicy !== 'closed'
22
+ | Don't have an account yet?
23
+ a.g-register-link Register here.
24
+ | |
25
+ a.g-forgot-password Forgot your password?
26
+ .modal-footer
27
+ a.btn.btn-default(data-dismiss="modal") Close
28
+ button#g-login-button.btn.btn-primary(type="submit")
29
+ i.icon-login
30
+ | Login
@@ -0,0 +1,35 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-register-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title= title
7
+ .modal-body
8
+ #g-group-login.form-group
9
+ label.control-label(for="g-login") Choose a login name
10
+ input#g-login.input-sm.form-control(type="text", placeholder="Login")
11
+ #g-group-email.form-group
12
+ label.control-label(for="g-email") Enter email address
13
+ input#g-email.input-sm.form-control(type="text", placeholder="Email")
14
+ #g-group-firstName.form-group
15
+ label.control-label(for="g-firstName") Enter first name
16
+ input#g-firstName.input-sm.form-control(type="text", placeholder="First name")
17
+ #g-group-lastName.form-group
18
+ label.control-label(for="g-lastName") Enter last name
19
+ input#g-lastName.input-sm.form-control(type="text", placeholder="Last name")
20
+ #g-group-password.form-group
21
+ label.control-label(for="g-password") Choose a password
22
+ input#g-password.input-sm.form-control(type="password", placeholder="Password")
23
+ #g-group-password2.form-group
24
+ label.control-label(for="g-password2") Retype password
25
+ input#g-password2.input-sm.form-control(type="password", placeholder="Password")
26
+ .g-validation-failed-message
27
+ if !currentUser
28
+ .g-bottom-message
29
+ | Already have an account?
30
+ a.g-login-link Log in here.
31
+ .modal-footer
32
+ a.btn.btn-default(data-dismiss="modal") Close
33
+ button#g-register-button.btn.btn-primary(type="submit")
34
+ i.icon-plus-circled
35
+ | Register
@@ -0,0 +1,25 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-reset-password-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title Forgotten password
7
+ .modal-body
8
+ .g-password-reset-explanation
9
+ | If you have forgotten your password, enter your email address here.
10
+ | You will be sent an email with a temporary access link, from
11
+ | which you can reset your password.
12
+ .form-group
13
+ label.control-label(for="g-email") Email
14
+ input#g-email.input-sm.form-control(type="text", placeholder="Enter your email")
15
+ .g-validation-failed-message
16
+ .g-bottom-message
17
+ if registrationPolicy !== 'closed'
18
+ a.g-register-link Register
19
+ | |
20
+ a.g-login-link Login
21
+ .modal-footer
22
+ a.btn.btn-default(data-dismiss="modal") Close
23
+ button#g-reset-password-button.btn.btn-primary(type="submit")
24
+ i.icon-mail
25
+ | Submit
@@ -0,0 +1,23 @@
1
+ include accessEditorMixins
2
+
3
+ .modal-dialog
4
+ .modal-content
5
+ .modal-header
6
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
7
+ h4.modal-title Access control
8
+ .g-dialog-subtitle
9
+ if (modelType === 'folder')
10
+ i.icon-folder
11
+ else if (modelType === 'collection')
12
+ i.icon-sitemap
13
+ = model.name()
14
+ .modal-body.g-access-modal-body
15
+ if !hidePrivacyEditor
16
+ +privacyEditor(modelType)
17
+ +permissionsEditor
18
+ if !hideRecurseOption
19
+ +recurseOption(modelType)
20
+
21
+ .modal-footer
22
+ a.btn.btn-small.btn-default(data-dismiss="modal") Close
23
+ +saveAccessButton
@@ -0,0 +1,57 @@
1
+ mixin privacyEditor(typeName)
2
+ .g-public-container
3
+ .radio
4
+ label
5
+ input#g-access-private(type="radio", name="privacy",
6
+ checked=(publicFlag ? undefined : "checked"))
7
+ i.icon-lock
8
+ | #[b Private] — Access is required to view this #{typeName}
9
+ .radio
10
+ label
11
+ input#g-access-public(type="radio", name="privacy",
12
+ checked=(publicFlag ? "checked" : undefined))
13
+ i.icon-globe
14
+ | #[b Public] — Anyone can view this #{typeName}
15
+
16
+ if _.keys(flagList).length
17
+ a.g-action-manage-public-flags.hide(title="Public access flags")
18
+ i.g-flag-icon.icon-flag
19
+ - var flagLen = (publicFlags && publicFlags.length) || 0
20
+ .g-flag-count-indicator(class=(flagLen ? null : "hide"))= flagLen
21
+ | Manage public access flags...
22
+ .g-public-flags-popover-container.hide
23
+ each flag, key in flagList
24
+ - var checked = _.contains(publicFlags, key) ? 'checked' : null;
25
+ - var disabled = (!isAdmin && flag.admin) ? 'disabled' : null;
26
+ .checkbox(class=disabled)
27
+ label.g-flag-label(title=flag.description)
28
+ input.g-public-flag-checkbox(flag=key, type="checkbox", checked=checked, disabled=disabled)
29
+ span= flag.name
30
+ button.g-close-public-flags-popover.btn.btn-xs.btn-default Close
31
+
32
+ mixin permissionsEditor
33
+ .g-permissions-editor
34
+ .g-ac-list-title #[i.icon-key-1] Permissions
35
+ .g-ac-list
36
+ #g-ac-list-groups
37
+ #g-ac-list-users
38
+
39
+ .g-grant-access-container
40
+ form(role="form")
41
+ .form-group
42
+ label(for="addAccess") Grant access to another group or user
43
+ .g-search-field-container
44
+
45
+ mixin recurseOption(typeName)
46
+ .g-recursive-container
47
+ .radio
48
+ label
49
+ input#g-apply-nonrecursive(type="radio", name="recurse", checked="checked")
50
+ | Apply permissions only to this #{typeName}, not its subfolders
51
+ .radio
52
+ label
53
+ input#g-apply-recursive(type="radio", name="recurse")
54
+ | Also set permissions on all subfolders to match this #{typeName}'s permissions
55
+
56
+ mixin saveAccessButton
57
+ button.g-save-access-list.btn.btn-small.btn-primary #[i.icon-ok] Save
@@ -0,0 +1,11 @@
1
+ include accessEditorMixins
2
+
3
+ if !hidePrivacyEditor
4
+ +privacyEditor(modelType)
5
+ +permissionsEditor
6
+
7
+ if !hideRecurseOption
8
+ +recurseOption(modelType)
9
+
10
+ if !hideSaveButton
11
+ +saveAccessButton