@girder/core 3.2.8 → 5.0.0-a10

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 (257) hide show
  1. package/README.md +61 -0
  2. package/dist-lib/Girder_Favicon.png +0 -0
  3. package/dist-lib/fontello/node_modules/ansi-regex/index.d.ts +37 -0
  4. package/dist-lib/fontello/node_modules/ansi-styles/index.d.ts +345 -0
  5. package/dist-lib/fontello/node_modules/big-integer/BigInteger.d.ts +2393 -0
  6. package/dist-lib/fontello/node_modules/fontello-cli/node_modules/colors/safe.d.ts +48 -0
  7. package/dist-lib/fontello/node_modules/has-flag/index.d.ts +39 -0
  8. package/dist-lib/fontello/node_modules/iconv-lite/lib/index.d.ts +24 -0
  9. package/dist-lib/fontello/node_modules/is-docker/index.d.ts +15 -0
  10. package/dist-lib/fontello/node_modules/is-plain-object/index.d.ts +5 -0
  11. package/dist-lib/fontello/node_modules/is-wsl/index.d.ts +15 -0
  12. package/dist-lib/fontello/node_modules/isobject/index.d.ts +5 -0
  13. package/dist-lib/fontello/node_modules/open/index.d.ts +88 -0
  14. package/dist-lib/fontello/node_modules/safe-buffer/index.d.ts +187 -0
  15. package/dist-lib/fontello/node_modules/strip-ansi/index.d.ts +17 -0
  16. package/dist-lib/girder-core.js +57770 -0
  17. package/dist-lib/girder-core.js.map +1 -0
  18. package/dist-lib/girder-core.umd.cjs +1572 -0
  19. package/dist-lib/girder-core.umd.cjs.map +1 -0
  20. package/dist-lib/index.d.ts +1 -0
  21. package/{auth.js → dist-lib/src/auth.js} +1 -41
  22. package/{collections → dist-lib/src/collections}/AssetstoreCollection.js +2 -1
  23. package/{constants.js → dist-lib/src/constants.js} +0 -1
  24. package/dist-lib/src/index.d.ts +23 -0
  25. package/dist-lib/src/index.ts +80 -0
  26. package/dist-lib/src/main.ts +46 -0
  27. package/{models → dist-lib/src/models}/FolderModel.js +1 -1
  28. package/{rest.js → dist-lib/src/rest.js} +12 -7
  29. package/{routes.js → dist-lib/src/routes.js} +65 -67
  30. package/{templates → dist-lib/src/templates}/body/assetstores.pug +0 -15
  31. package/{templates → dist-lib/src/templates}/body/frontPage.pug +1 -1
  32. package/{templates → dist-lib/src/templates}/body/systemConfiguration.pug +37 -42
  33. package/{templates → dist-lib/src/templates}/widgets/editAssetstoreWidget.pug +4 -12
  34. package/{templates → dist-lib/src/templates}/widgets/newAssetstore.pug +4 -35
  35. package/dist-lib/src/utilities/EventStream.js +111 -0
  36. package/{utilities → dist-lib/src/utilities}/S3UploadHandler.js +4 -44
  37. package/dist-lib/src/version.js +6 -0
  38. package/{views → dist-lib/src/views}/View.js +2 -1
  39. package/{views → dist-lib/src/views}/body/AssetstoresView.js +24 -26
  40. package/{views → dist-lib/src/views}/body/SystemConfigurationView.js +1 -20
  41. package/{views → dist-lib/src/views}/body/index.js +2 -1
  42. package/{views → dist-lib/src/views}/layout/LoginView.js +1 -1
  43. package/{views → dist-lib/src/views}/widgets/ApiKeyListWidget.js +1 -1
  44. package/{views → dist-lib/src/views}/widgets/DateTimeRangeWidget.js +2 -1
  45. package/{views → dist-lib/src/views}/widgets/DateTimeWidget.js +2 -1
  46. package/{views → dist-lib/src/views}/widgets/EditApiKeyWidget.js +3 -1
  47. package/{views → dist-lib/src/views}/widgets/EditAssetstoreWidget.js +4 -16
  48. package/{views → dist-lib/src/views}/widgets/ItemListWidget.js +1 -1
  49. package/{views → dist-lib/src/views}/widgets/MetadataWidget.js +7 -3
  50. package/{views → dist-lib/src/views}/widgets/NewAssetstoreWidget.js +2 -11
  51. package/{views → dist-lib/src/views}/widgets/PaginateWidget.js +2 -2
  52. package/{views → dist-lib/src/views}/widgets/RootSelectorWidget.js +1 -1
  53. package/{views → dist-lib/src/views}/widgets/SearchPaginateWidget.js +2 -2
  54. package/{views → dist-lib/src/views}/widgets/SortCollectionWidget.js +1 -1
  55. package/{views → dist-lib/src/views}/widgets/index.js +7 -1
  56. package/dist-lib/src/vite-env.d.ts +5 -0
  57. package/dist-lib/style.css +16 -0
  58. package/package.json +80 -31
  59. package/index.js +0 -31
  60. package/main.js +0 -21
  61. package/utilities/EventStream.js +0 -177
  62. package/version.js +0 -10
  63. /package/{assets → dist-lib}/Girder_Mark.png +0 -0
  64. /package/{collections → dist-lib/src/collections}/ApiKeyCollection.js +0 -0
  65. /package/{collections → dist-lib/src/collections}/Collection.js +0 -0
  66. /package/{collections → dist-lib/src/collections}/CollectionCollection.js +0 -0
  67. /package/{collections → dist-lib/src/collections}/FileCollection.js +0 -0
  68. /package/{collections → dist-lib/src/collections}/FolderCollection.js +0 -0
  69. /package/{collections → dist-lib/src/collections}/GroupCollection.js +0 -0
  70. /package/{collections → dist-lib/src/collections}/ItemCollection.js +0 -0
  71. /package/{collections → dist-lib/src/collections}/UserCollection.js +0 -0
  72. /package/{collections → dist-lib/src/collections}/index.js +0 -0
  73. /package/{dialog.js → dist-lib/src/dialog.js} +0 -0
  74. /package/{events.js → dist-lib/src/events.js} +0 -0
  75. /package/{misc.js → dist-lib/src/misc.js} +0 -0
  76. /package/{models → dist-lib/src/models}/AccessControlledModel.js +0 -0
  77. /package/{models → dist-lib/src/models}/ApiKeyModel.js +0 -0
  78. /package/{models → dist-lib/src/models}/AssetstoreModel.js +0 -0
  79. /package/{models → dist-lib/src/models}/CollectionCreationPolicyModel.js +0 -0
  80. /package/{models → dist-lib/src/models}/CollectionModel.js +0 -0
  81. /package/{models → dist-lib/src/models}/FileModel.js +0 -0
  82. /package/{models → dist-lib/src/models}/GroupModel.js +0 -0
  83. /package/{models → dist-lib/src/models}/ItemModel.js +0 -0
  84. /package/{models → dist-lib/src/models}/MetadataMixin.js +0 -0
  85. /package/{models → dist-lib/src/models}/Model.js +0 -0
  86. /package/{models → dist-lib/src/models}/UserModel.js +0 -0
  87. /package/{models → dist-lib/src/models}/index.js +0 -0
  88. /package/{pluginUtils.js → dist-lib/src/pluginUtils.js} +0 -0
  89. /package/{router.js → dist-lib/src/router.js} +0 -0
  90. /package/{stylesheets → dist-lib/src/stylesheets}/apidocs/apidocs.styl +0 -0
  91. /package/{stylesheets → dist-lib/src/stylesheets}/body/adminConsole.styl +0 -0
  92. /package/{stylesheets → dist-lib/src/stylesheets}/body/assetstores.styl +0 -0
  93. /package/{stylesheets → dist-lib/src/stylesheets}/body/collectionList.styl +0 -0
  94. /package/{stylesheets → dist-lib/src/stylesheets}/body/collectionPage.styl +0 -0
  95. /package/{stylesheets → dist-lib/src/stylesheets}/body/frontPage.styl +0 -0
  96. /package/{stylesheets → dist-lib/src/stylesheets}/body/groupList.styl +0 -0
  97. /package/{stylesheets → dist-lib/src/stylesheets}/body/groupPage.styl +0 -0
  98. /package/{stylesheets → dist-lib/src/stylesheets}/body/itemPage.styl +0 -0
  99. /package/{stylesheets → dist-lib/src/stylesheets}/body/plugins.styl +0 -0
  100. /package/{stylesheets → dist-lib/src/stylesheets}/body/searchResultsList.styl +0 -0
  101. /package/{stylesheets → dist-lib/src/stylesheets}/body/systemConfig.styl +0 -0
  102. /package/{stylesheets → dist-lib/src/stylesheets}/body/userAccount.styl +0 -0
  103. /package/{stylesheets → dist-lib/src/stylesheets}/body/userList.styl +0 -0
  104. /package/{stylesheets → dist-lib/src/stylesheets}/body/userPage.styl +0 -0
  105. /package/{stylesheets → dist-lib/src/stylesheets}/layout/footer.styl +0 -0
  106. /package/{stylesheets → dist-lib/src/stylesheets}/layout/global.styl +0 -0
  107. /package/{stylesheets → dist-lib/src/stylesheets}/layout/globalNav.styl +0 -0
  108. /package/{stylesheets → dist-lib/src/stylesheets}/layout/header.styl +0 -0
  109. /package/{stylesheets → dist-lib/src/stylesheets}/layout/headerUser.styl +0 -0
  110. /package/{stylesheets → dist-lib/src/stylesheets}/layout/layout.styl +0 -0
  111. /package/{stylesheets → dist-lib/src/stylesheets}/layout/layoutVars.styl +0 -0
  112. /package/{stylesheets → dist-lib/src/stylesheets}/layout/loading.styl +0 -0
  113. /package/{stylesheets → dist-lib/src/stylesheets}/layout/progressArea.styl +0 -0
  114. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/accessWidget.styl +0 -0
  115. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/browserWidget.styl +0 -0
  116. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/hierarchyWidget.styl +0 -0
  117. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/markdownWidget.styl +0 -0
  118. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/metadataWidget.styl +0 -0
  119. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/searchFieldWidget.styl +0 -0
  120. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/taskProgress.styl +0 -0
  121. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/timelineWidget.styl +0 -0
  122. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/uploadWidget.styl +0 -0
  123. /package/{stylesheets → dist-lib/src/stylesheets}/widgets/userOtpManagementWidget.styl +0 -0
  124. /package/{templates → dist-lib/src/templates}/body/adminConsole.pug +0 -0
  125. /package/{templates → dist-lib/src/templates}/body/collectionList.pug +0 -0
  126. /package/{templates → dist-lib/src/templates}/body/collectionPage.pug +0 -0
  127. /package/{templates → dist-lib/src/templates}/body/filesystemImport.pug +0 -0
  128. /package/{templates → dist-lib/src/templates}/body/groupList.pug +0 -0
  129. /package/{templates → dist-lib/src/templates}/body/groupPage.pug +0 -0
  130. /package/{templates → dist-lib/src/templates}/body/itemPage.pug +0 -0
  131. /package/{templates → dist-lib/src/templates}/body/plugins.pug +0 -0
  132. /package/{templates → dist-lib/src/templates}/body/s3Import.pug +0 -0
  133. /package/{templates → dist-lib/src/templates}/body/searchResults.pug +0 -0
  134. /package/{templates → dist-lib/src/templates}/body/searchResultsType.pug +0 -0
  135. /package/{templates → dist-lib/src/templates}/body/userAccount.pug +0 -0
  136. /package/{templates → dist-lib/src/templates}/body/userList.pug +0 -0
  137. /package/{templates → dist-lib/src/templates}/body/userPage.pug +0 -0
  138. /package/{templates → dist-lib/src/templates}/layout/alert.pug +0 -0
  139. /package/{templates → dist-lib/src/templates}/layout/layout.pug +0 -0
  140. /package/{templates → dist-lib/src/templates}/layout/layoutFooter.pug +0 -0
  141. /package/{templates → dist-lib/src/templates}/layout/layoutGlobalNav.pug +0 -0
  142. /package/{templates → dist-lib/src/templates}/layout/layoutHeader.pug +0 -0
  143. /package/{templates → dist-lib/src/templates}/layout/layoutHeaderUser.pug +0 -0
  144. /package/{templates → dist-lib/src/templates}/layout/layoutProgressArea.pug +0 -0
  145. /package/{templates → dist-lib/src/templates}/layout/loginDialog.pug +0 -0
  146. /package/{templates → dist-lib/src/templates}/layout/registerDialog.pug +0 -0
  147. /package/{templates → dist-lib/src/templates}/layout/resetPasswordDialog.pug +0 -0
  148. /package/{templates → dist-lib/src/templates}/widgets/accessEditor.pug +0 -0
  149. /package/{templates → dist-lib/src/templates}/widgets/accessEditorMixins.pug +0 -0
  150. /package/{templates → dist-lib/src/templates}/widgets/accessEditorNonModal.pug +0 -0
  151. /package/{templates → dist-lib/src/templates}/widgets/accessEntry.pug +0 -0
  152. /package/{templates → dist-lib/src/templates}/widgets/apiKeyList.pug +0 -0
  153. /package/{templates → dist-lib/src/templates}/widgets/browserWidget.pug +0 -0
  154. /package/{templates → dist-lib/src/templates}/widgets/checkedActionsMenu.pug +0 -0
  155. /package/{templates → dist-lib/src/templates}/widgets/collectionInfoDialog.pug +0 -0
  156. /package/{templates → dist-lib/src/templates}/widgets/confirmDialog.pug +0 -0
  157. /package/{templates → dist-lib/src/templates}/widgets/dateTimeRangeWidget.pug +0 -0
  158. /package/{templates → dist-lib/src/templates}/widgets/dateTimeWidget.pug +0 -0
  159. /package/{templates → dist-lib/src/templates}/widgets/editApiKeyWidget.pug +0 -0
  160. /package/{templates → dist-lib/src/templates}/widgets/editCollectionWidget.pug +0 -0
  161. /package/{templates → dist-lib/src/templates}/widgets/editFileWidget.pug +0 -0
  162. /package/{templates → dist-lib/src/templates}/widgets/editFolderWidget.pug +0 -0
  163. /package/{templates → dist-lib/src/templates}/widgets/editGroupWidget.pug +0 -0
  164. /package/{templates → dist-lib/src/templates}/widgets/editItemWidget.pug +0 -0
  165. /package/{templates → dist-lib/src/templates}/widgets/fileInfoDialog.pug +0 -0
  166. /package/{templates → dist-lib/src/templates}/widgets/fileList.pug +0 -0
  167. /package/{templates → dist-lib/src/templates}/widgets/folderInfoDialog.pug +0 -0
  168. /package/{templates → dist-lib/src/templates}/widgets/folderList.pug +0 -0
  169. /package/{templates → dist-lib/src/templates}/widgets/groupAdminList.pug +0 -0
  170. /package/{templates → dist-lib/src/templates}/widgets/groupInviteDialog.pug +0 -0
  171. /package/{templates → dist-lib/src/templates}/widgets/groupInviteList.pug +0 -0
  172. /package/{templates → dist-lib/src/templates}/widgets/groupMemberList.pug +0 -0
  173. /package/{templates → dist-lib/src/templates}/widgets/groupModList.pug +0 -0
  174. /package/{templates → dist-lib/src/templates}/widgets/hierarchyBreadcrumb.pug +0 -0
  175. /package/{templates → dist-lib/src/templates}/widgets/hierarchyPaginated.pug +0 -0
  176. /package/{templates → dist-lib/src/templates}/widgets/hierarchyWidget.pug +0 -0
  177. /package/{templates → dist-lib/src/templates}/widgets/itemBreadcrumb.pug +0 -0
  178. /package/{templates → dist-lib/src/templates}/widgets/itemList.pug +0 -0
  179. /package/{templates → dist-lib/src/templates}/widgets/jsonMetadatumEditWidget.pug +0 -0
  180. /package/{templates → dist-lib/src/templates}/widgets/jsonMetadatumView.pug +0 -0
  181. /package/{templates → dist-lib/src/templates}/widgets/loadingAnimation.pug +0 -0
  182. /package/{templates → dist-lib/src/templates}/widgets/markdownWidget.pug +0 -0
  183. /package/{templates → dist-lib/src/templates}/widgets/metadataWidget.pug +0 -0
  184. /package/{templates → dist-lib/src/templates}/widgets/metadatumEditWidget.pug +0 -0
  185. /package/{templates → dist-lib/src/templates}/widgets/metadatumView.pug +0 -0
  186. /package/{templates → dist-lib/src/templates}/widgets/paginateWidget.pug +0 -0
  187. /package/{templates → dist-lib/src/templates}/widgets/pluginConfigBreadcrumb.pug +0 -0
  188. /package/{templates → dist-lib/src/templates}/widgets/rootSelectorWidget.pug +0 -0
  189. /package/{templates → dist-lib/src/templates}/widgets/searchField.pug +0 -0
  190. /package/{templates → dist-lib/src/templates}/widgets/searchHelp.pug +0 -0
  191. /package/{templates → dist-lib/src/templates}/widgets/searchModeSelect.pug +0 -0
  192. /package/{templates → dist-lib/src/templates}/widgets/searchResults.pug +0 -0
  193. /package/{templates → dist-lib/src/templates}/widgets/sortCollectionWidget.pug +0 -0
  194. /package/{templates → dist-lib/src/templates}/widgets/taskProgress.pug +0 -0
  195. /package/{templates → dist-lib/src/templates}/widgets/timeline.pug +0 -0
  196. /package/{templates → dist-lib/src/templates}/widgets/uploadWidget.pug +0 -0
  197. /package/{templates → dist-lib/src/templates}/widgets/uploadWidgetMixins.pug +0 -0
  198. /package/{templates → dist-lib/src/templates}/widgets/uploadWidgetNonModal.pug +0 -0
  199. /package/{templates → dist-lib/src/templates}/widgets/userOtpBegin.pug +0 -0
  200. /package/{templates → dist-lib/src/templates}/widgets/userOtpDisable.pug +0 -0
  201. /package/{templates → dist-lib/src/templates}/widgets/userOtpEnable.pug +0 -0
  202. /package/{utilities → dist-lib/src/utilities}/PluginUtils.js +0 -0
  203. /package/{utilities → dist-lib/src/utilities}/index.js +0 -0
  204. /package/{utilities → dist-lib/src/utilities}/jquery/girderEnable.js +0 -0
  205. /package/{utilities → dist-lib/src/utilities}/jquery/girderModal.js +0 -0
  206. /package/{views → dist-lib/src/views}/App.js +0 -0
  207. /package/{views → dist-lib/src/views}/body/AdminView.js +0 -0
  208. /package/{views → dist-lib/src/views}/body/CollectionView.js +0 -0
  209. /package/{views → dist-lib/src/views}/body/CollectionsView.js +0 -0
  210. /package/{views → dist-lib/src/views}/body/FilesystemImportView.js +0 -0
  211. /package/{views → dist-lib/src/views}/body/FolderView.js +0 -0
  212. /package/{views → dist-lib/src/views}/body/FrontPageView.js +0 -0
  213. /package/{views → dist-lib/src/views}/body/GroupView.js +0 -0
  214. /package/{views → dist-lib/src/views}/body/GroupsView.js +0 -0
  215. /package/{views → dist-lib/src/views}/body/ItemView.js +0 -0
  216. /package/{views → dist-lib/src/views}/body/PluginsView.js +0 -0
  217. /package/{views → dist-lib/src/views}/body/S3ImportView.js +0 -0
  218. /package/{views → dist-lib/src/views}/body/SearchResultsView.js +0 -0
  219. /package/{views → dist-lib/src/views}/body/UserAccountView.js +0 -0
  220. /package/{views → dist-lib/src/views}/body/UserView.js +0 -0
  221. /package/{views → dist-lib/src/views}/body/UsersView.js +0 -0
  222. /package/{views → dist-lib/src/views}/index.js +0 -0
  223. /package/{views → dist-lib/src/views}/layout/FooterView.js +0 -0
  224. /package/{views → dist-lib/src/views}/layout/GlobalNavView.js +0 -0
  225. /package/{views → dist-lib/src/views}/layout/HeaderUserView.js +0 -0
  226. /package/{views → dist-lib/src/views}/layout/HeaderView.js +0 -0
  227. /package/{views → dist-lib/src/views}/layout/ProgressListView.js +0 -0
  228. /package/{views → dist-lib/src/views}/layout/RegisterView.js +0 -0
  229. /package/{views → dist-lib/src/views}/layout/ResetPasswordView.js +0 -0
  230. /package/{views → dist-lib/src/views}/layout/index.js +0 -0
  231. /package/{views → dist-lib/src/views}/widgets/AccessWidget.js +0 -0
  232. /package/{views → dist-lib/src/views}/widgets/BrowserWidget.js +0 -0
  233. /package/{views → dist-lib/src/views}/widgets/CheckedMenuWidget.js +0 -0
  234. /package/{views → dist-lib/src/views}/widgets/CollectionInfoWidget.js +0 -0
  235. /package/{views → dist-lib/src/views}/widgets/EditCollectionWidget.js +0 -0
  236. /package/{views → dist-lib/src/views}/widgets/EditFileWidget.js +0 -0
  237. /package/{views → dist-lib/src/views}/widgets/EditFolderWidget.js +0 -0
  238. /package/{views → dist-lib/src/views}/widgets/EditGroupWidget.js +0 -0
  239. /package/{views → dist-lib/src/views}/widgets/EditItemWidget.js +0 -0
  240. /package/{views → dist-lib/src/views}/widgets/FileInfoWidget.js +0 -0
  241. /package/{views → dist-lib/src/views}/widgets/FileListWidget.js +0 -0
  242. /package/{views → dist-lib/src/views}/widgets/FolderInfoWidget.js +0 -0
  243. /package/{views → dist-lib/src/views}/widgets/FolderListWidget.js +0 -0
  244. /package/{views → dist-lib/src/views}/widgets/GroupAdminsWidget.js +0 -0
  245. /package/{views → dist-lib/src/views}/widgets/GroupInvitesWidget.js +0 -0
  246. /package/{views → dist-lib/src/views}/widgets/GroupMembersWidget.js +0 -0
  247. /package/{views → dist-lib/src/views}/widgets/GroupModsWidget.js +0 -0
  248. /package/{views → dist-lib/src/views}/widgets/HierarchyWidget.js +0 -0
  249. /package/{views → dist-lib/src/views}/widgets/ItemBreadcrumbWidget.js +0 -0
  250. /package/{views → dist-lib/src/views}/widgets/LoadingAnimation.js +0 -0
  251. /package/{views → dist-lib/src/views}/widgets/MarkdownWidget.js +0 -0
  252. /package/{views → dist-lib/src/views}/widgets/PluginConfigBreadcrumbWidget.js +0 -0
  253. /package/{views → dist-lib/src/views}/widgets/SearchFieldWidget.js +0 -0
  254. /package/{views → dist-lib/src/views}/widgets/TaskProgressWidget.js +0 -0
  255. /package/{views → dist-lib/src/views}/widgets/TimelineWidget.js +0 -0
  256. /package/{views → dist-lib/src/views}/widgets/UploadWidget.js +0 -0
  257. /package/{views → dist-lib/src/views}/widgets/UserOtpManagementWidget.js +0 -0
@@ -1,40 +1,48 @@
1
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.
2
6
  form.g-settings-form(role="form")
3
7
  .g-settings-form-container
4
8
  h4 Instance Branding
5
9
  .form-group
6
10
  label(for="g-core-brand-name") Brand Name
7
11
  input#g-core-brand-name.form-control.input-sm(
12
+ disabled=true,
8
13
  type="text", value=settings['core.brand_name'] || '',
9
14
  title="The brand name of the application.")
10
15
  .form-group
11
16
  label(for="g-core-contact-email-address") Contact email address
12
17
  input#g-core-contact-email-address.form-control.input-sm(
18
+ disabled=true,
13
19
  type="text", value=settings['core.contact_email_address'] || '',
14
20
  title="The contact email address for users to obtain support with this instance.")
15
21
  .form-group
16
22
  label(for="g-core-banner-color") Banner Color
17
23
  #g-core-banner-color-container
18
24
  input#g-core-banner-color.form-control.input-sm(
25
+ disabled=true,
19
26
  type="color", value=settings['core.banner_color'],
20
27
  title="The banner color of the application.")
21
- button#g-core-banner-default-color.form-control.input-sm(
22
- type="button", title="Default color") default
23
28
  .form-group
24
29
  label(for="g-core-privacy-notice") Privacy Notice Link
25
30
  input#g-core-privacy-notice.form-control.input-sm(
31
+ disabled=true,
26
32
  type="text", value=settings['core.privacy_notice'] || '',
27
33
  title="The privacy notice link.")
28
34
  .form-group
29
35
  label(for="g-core-cookie-lifetime") Cookie duration (days)
30
36
  input#g-core-cookie-lifetime.form-control.input-sm(
37
+ disabled=true,
31
38
  type="text", value=settings['core.cookie_lifetime'] || '',
32
39
  title="How long users will stay logged in.")
33
40
  .g-settings-form-container
34
41
  h4 Administrative Policy
35
42
  .form-group
36
43
  label(for="g-core-registration-policy") Registration policy
37
- select#g-core-registration-policy.form-control.input-sm
44
+ select#g-core-registration-policy.form-control.input-sm(
45
+ disabled=true)
38
46
  option(value="open",
39
47
  selected=(settings['core.registration_policy'] === "open")) Open registration
40
48
  option(value="closed",
@@ -43,7 +51,8 @@ form.g-settings-form(role="form")
43
51
  selected=(settings['core.registration_policy'] === "approve")) Admin approval required
44
52
  .form-group
45
53
  label(for="g-core-email-verification") Email verification
46
- select#g-core-email-verification.form-control.input-sm
54
+ select#g-core-email-verification.form-control.input-sm(
55
+ disabled=true)
47
56
  option(value="required",
48
57
  selected=(settings['core.email_verification'] === "required")) Required
49
58
  option(value="optional",
@@ -52,7 +61,8 @@ form.g-settings-form(role="form")
52
61
  selected=(settings['core.email_verification'] === "disabled")) Disabled
53
62
  .form-group
54
63
  label(for="g-core-add-to-group-policy") Allow members to be directly added to groups
55
- select#g-core-add-to-group-policy.form-control.input-sm
64
+ select#g-core-add-to-group-policy.form-control.input-sm(
65
+ disabled=true)
56
66
  option(value="never",
57
67
  selected=(settings['core.add_to_group_policy'] === "never"))
58
68
  | No, members must be invited and accept invitations
@@ -73,13 +83,15 @@ form.g-settings-form(role="form")
73
83
  p.
74
84
  Allow additional users and groups to create collections.
75
85
  input.g-setting-switch(type="checkbox",
76
- checked="checked", data-size="mini", data-on-color="primary")
86
+ checked="checked", data-size="mini", data-on-color="primary",
87
+ disabled=true)
77
88
  .access-widget-container
78
89
  textarea#g-core-collection-create-policy.hide
79
90
  = JSON.stringify(settings['core.collection_create_policy'])
80
91
  .form-group
81
92
  label(for="g-core-user-default-folders") Create default folders for new users
82
- select#g-core-user-default-folders.form-control.input-sm
93
+ select#g-core-user-default-folders.form-control.input-sm(
94
+ disabled=true)
83
95
  option(value="none",
84
96
  selected=(settings['core.user_default_folders'] === "none")) No
85
97
  option(value="public_private",
@@ -87,24 +99,28 @@ form.g-settings-form(role="form")
87
99
  .form-group
88
100
  .checkbox
89
101
  label(for="g-core-api-keys")
90
- input#g-core-api-keys(type="checkbox", checked=settings['core.api_keys'])
102
+ input#g-core-api-keys(type="checkbox", checked=settings['core.api_keys'],
103
+ disabled=true)
91
104
  | Enable API keys
92
105
  .form-group
93
106
  .checkbox
94
107
  label(for="g-core-enable-password-login")
95
108
  input#g-core-enable-password-login(
96
- type="checkbox", checked=settings['core.enable_password_login'])
109
+ type="checkbox", checked=settings['core.enable_password_login'],
110
+ disabled=true)
97
111
  | Enable password login
98
112
  .g-settings-form-container
99
113
  h4 Email Creation
100
114
  .form-group
101
115
  label(for="g-core-email-from-address") Email from address
102
116
  input#g-core-email-from-address.form-control.input-sm(
117
+ disabled=true,
103
118
  type="text", value=settings['core.email_from_address'] || '',
104
119
  title="The email address the system will use when sending emails.")
105
120
  .form-group
106
121
  label(for="g-core-email-host") Email host
107
122
  input#g-core-email-host.form-control.input-sm(
123
+ disabled=true,
108
124
  type="text", value=settings['core.email_host'] || '',
109
125
  title="The host email server that is shown as a link in the footer of emails.")
110
126
  .g-settings-form-container
@@ -112,16 +128,19 @@ form.g-settings-form(role="form")
112
128
  .form-group
113
129
  label(for="g-core-smtp-host") SMTP host
114
130
  input#g-core-smtp-host.form-control.input-sm(
131
+ disabled=true,
115
132
  type="text", value=settings['core.smtp_host'] || '',
116
133
  title="The hostname of the SMTP server used to send emails.")
117
134
  .form-group
118
135
  label(for="g-core-smtp-port") SMTP port
119
136
  input#g-core-smtp-port.form-control.input-sm(
137
+ disabled=true,
120
138
  type="text", value=settings['core.smtp.port'] || '',
121
139
  title="The port number of the SMTP server used to send emails.")
122
140
  .form-group
123
141
  label(for="g-core-smtp-encryption") SMTP encryption
124
- select#g-core-smtp-encryption.form-control.input-sm
142
+ select#g-core-smtp-encryption.form-control.input-sm(
143
+ disabled=true)
125
144
  option(value="none",
126
145
  selected=(settings['core.smtp.encryption'] === "none")) None
127
146
  option(value="starttls",
@@ -131,36 +150,16 @@ form.g-settings-form(role="form")
131
150
  .form-group
132
151
  label(for="g-core-smtp-username") SMTP username
133
152
  input#g-core-smtp-username.form-control.input-sm(
153
+ disabled=true,
134
154
  type="text", value=settings['core.smtp.username'] || '',
135
155
  title="The username, if any, used to authenticate to the SMTP server used to send emails.")
136
156
  .form-group
137
157
  label(for="g-core-smtp-password") SMTP password
138
158
  input#g-core-smtp-password.form-control.input-sm(
159
+ disabled=true,
139
160
  type="password", value=settings['core.smtp.password'] || '',
140
161
  title="The password, if any, used to authenticate to the SMTP server used to send emails.")
141
162
 
142
- .g-settings-form-container
143
- h4 Routing
144
- p.
145
- Altering routes requires a restart of the Girder server to take effect.
146
- .g-settings-form-container
147
- h5 Core Routes
148
- label core_girder
149
- input.g-core-route-table.form-control.input-sm(
150
- type="text",
151
- value=routes['core_girder'] || '',
152
- data-webroot-name="core_girder",
153
- title="The path to place core_girder.")
154
- if routeKeys.length > 2
155
- .form-group
156
- h5 Other Routes
157
- each name in routeKeys.slice(2)
158
- label= name
159
- input.g-core-route-table.form-control.input-sm(
160
- type="text",
161
- value=routes[name] || '',
162
- data-webroot-name=name,
163
- title="The path to place ${name}.")
164
163
  #g-configuration-accordion.panel-group
165
164
  .panel.panel-default
166
165
  .panel-heading(data-toggle="collapse",
@@ -175,24 +174,17 @@ form.g-settings-form(role="form")
175
174
  .form-group
176
175
  label(for="g-core-server-root") Server root URL
177
176
  input#g-core-server-root.form-control.input-sm(
177
+ disabled=true,
178
178
  type="text", value=settings['core.server_root'] || '',
179
179
  placeholder='Detect automatically')
180
180
  .form-group
181
181
  label(for="g-core-upload-minimum-chunk-size") Upload minimum chunk size (bytes)
182
182
  br
183
- span This applies to Filesystem and GridFS assetstores.
183
+ span This applies to Filesystem assetstores.
184
184
  input#g-core-upload-minimum-chunk-size.form-control.input-sm(
185
+ disabled=true,
185
186
  type="text", value=settings['core.upload_minimum_chunk_size'] || '',
186
187
  title="For large files, the minimum size of all but the last chunk.")
187
- .form-group
188
- label Server Notification Stream
189
- br
190
- span Disabling this may improve server performance with many concurrent web client users.
191
- .checkbox
192
- label(for="g-core-enable-notification-stream")
193
- input#g-core-enable-notification-stream(
194
- type="checkbox", checked=(settings['core.enable_notification_stream']))
195
- | Enabled
196
188
  .g-settings-form-container
197
189
  h4 CORS
198
190
  p.
@@ -202,17 +194,20 @@ form.g-settings-form(role="form")
202
194
  .form-group
203
195
  label(for="g-core-cors-allow-origin") CORS Allowed Origins
204
196
  input#g-core-cors-allow-origin.form-control.input-sm(
197
+ disabled=true,
205
198
  type="text", value=settings['core.cors.allow_origin'] || '',
206
199
  title="A comma-separated list of allowed base URLs that can make cross-site requests. This may include *.")
207
200
  .form-group
208
201
  label(for="g-core-cors-allow-methods") CORS Allowed Methods
209
202
  input#g-core-cors-allow-methods.form-control.input-sm(
203
+ disabled=true,
210
204
  type="text", value=settings['core.cors.allow_methods'] || '',
211
205
  placeholder="Default: allow all methods",
212
206
  title="A comma-separated list of allowed methods")
213
207
  .form-group
214
208
  label(for="g-core-cors-allow-headers") CORS Allowed Headers
215
209
  input#g-core-cors-allow-headers.form-control.input-sm(
210
+ disabled=true,
216
211
  type="text", value=settings['core.cors.allow_headers'] || '',
217
212
  title="A comma-separated list of allowed headers.")
218
213
  p
@@ -17,18 +17,6 @@
17
17
  .form-group
18
18
  label.control-label(for="g-edit-fs-perms") File creation permissions (octal)
19
19
  input#g-edit-fs-perms.input-sm.form-control(type="text", placeholder="600")
20
- if assetstore.get('type') === types.GRIDFS
21
- .form-group
22
- label.control-label(for="g-edit-gridfs-db") Database name
23
- input#g-edit-gridfs-db.input-sm.form-control(type="text", placeholder="Database name")
24
- .form-group
25
- label.control-label(for="g-edit-gridfs-mongohost") Mongo Host URI
26
- input#g-edit-gridfs-mongohost.input-sm.form-control(
27
- type="text", placeholder="Mongo host uri (defaults to the main Girder database)",
28
- title="The URI is of the form mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]")
29
- .form-group
30
- label.control-label(for="g-edit-gridfs-replicaset") Replica Set
31
- input#g-edit-gridfs-replicaset.input-sm.form-control(type="text", placeholder="Replica set name (blank if not using a replica set)")
32
20
  if assetstore.get('type') === types.S3
33
21
  .form-group
34
22
  label.control-label(for="g-edit-s3-bucket") S3 bucket name
@@ -60,6 +48,10 @@
60
48
  label
61
49
  input#g-edit-s3-sse(type="checkbox")
62
50
  | Server side encryption
51
+ .checkbox
52
+ label
53
+ input#g-edit-s3-accelerated-endpoint(type="checkbox")
54
+ | Allow S3 accelerated endpoint
63
55
  if assetstore.get('hasFiles')
64
56
  div
65
57
  i.icon-attention
@@ -28,41 +28,6 @@
28
28
  p#g-new-fs-error.g-validation-failed-message
29
29
  input.g-new-assetstore-submit.btn.btn-sm.btn-primary(type="submit", value="Create")
30
30
 
31
- .panel.panel-default
32
- .panel-heading(data-toggle="collapse",
33
- data-parent="#g-assetstore-accordion",
34
- data-target="#g-create-gridfs-tab")
35
- .panel-title
36
- a
37
- i.icon-leaf
38
- span Create new #[b GridFS] assetstore
39
- #g-create-gridfs-tab.panel-collapse.collapse
40
- .panel-body
41
- p.
42
- This type of assetstore uses
43
- MongoDB's #[a(target="_blank", href="http://docs.mongodb.org/manual/core/gridfs/") GridFS]
44
- storage engine. The files should be stored in a separate database
45
- from the rest of the server's information to avoid locking issues.
46
- form#g-new-gridfs-form(role="form")
47
- .form-group
48
- label.control-label(for="g-new-gridfs-name") Assetstore name
49
- input#g-new-gridfs-name.input-sm.form-control(type="text", placeholder="Name")
50
- .form-group
51
- label.control-label(for="g-new-gridfs-db") Database name
52
- input#g-new-gridfs-db.input-sm.form-control(
53
- type="text", placeholder="Database name")
54
- .form-group
55
- label.control-label(for="g-new-gridfs-mongohost") Mongo Host URI
56
- input#g-new-gridfs-mongohost.input-sm.form-control(
57
- type="text", placeholder="Mongo host uri (defaults to the main Girder database)",
58
- title="The URI is of the form mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]")
59
- .form-group
60
- label.control-label(for="g-new-gridfs-replicaset") Replica Set
61
- input#g-new-gridfs-replicaset.input-sm.form-control(
62
- type="text", placeholder="Replica set name (blank if not using a replica set)")
63
- p#g-new-gridfs-error.g-validation-failed-message
64
- input.g-new-assetstore-submit.btn.btn-sm.btn-primary(type="submit", value="Create")
65
-
66
31
  .panel.panel-default
67
32
  .panel-heading(data-toggle="collapse",
68
33
  data-parent="#g-assetstore-accordion",
@@ -113,6 +78,10 @@
113
78
  label
114
79
  input#g-new-s3-sse(type="checkbox")
115
80
  | Server side encryption
81
+ .checkbox
82
+ label
83
+ input#g-new-s3-accelerated-endpoint(type="checkbox")
84
+ | Allow S3 accelerated endpoint
116
85
 
117
86
  p#g-new-s3-error.g-validation-failed-message
118
87
  input.g-new-assetstore-submit.btn.btn-sm.btn-primary(type="submit", value="Create")
@@ -0,0 +1,111 @@
1
+ import _ from 'underscore';
2
+ import Backbone from 'backbone';
3
+
4
+ import { getCurrentToken } from '@girder/core/auth';
5
+
6
+ /**
7
+ * The EventStream is an abstraction for server-sent events / long-polling via a
8
+ * per-user event channel endpoint using a WebSocket. When events are
9
+ * received on the websocket channel, this triggers a Backbone event of the form
10
+ * 'g:event.<type>' where <type> is the value of the event type field.
11
+ * Listeners can bind to specific event types on the channel.
12
+ */
13
+ function EventStream(settings) {
14
+ // Possible states are 'closed', 'stopped', 'started'
15
+ this._state = 'closed';
16
+
17
+ // Create context bindings only once, so they can be referenced when unbinding events
18
+ this._onVisibilityStateChange = _.bind(this._onVisibilityStateChange, this);
19
+ this._onMessage = _.bind(this._onMessage, this);
20
+ this._onError = _.bind(this._onError, this);
21
+
22
+ return _.extend(this, Backbone.Events);
23
+ }
24
+
25
+ EventStream.prototype._onVisibilityStateChange = function () {
26
+ if (document.visibilityState === 'visible' && this._state === 'stopped') {
27
+ this._start();
28
+ } else if (document.visibilityState === 'hidden' && this._state === 'started') {
29
+ this._stop();
30
+ }
31
+ };
32
+
33
+ EventStream.prototype._onMessage = function (e) {
34
+ let obj;
35
+ try {
36
+ obj = window.JSON.parse(e.data);
37
+ } catch (err) {
38
+ console.error('Invalid JSON from notification stream: ' + e.data + ',' + err);
39
+ this.trigger('g:error', e);
40
+ return;
41
+ }
42
+ this.trigger('g:event.' + obj.type, obj);
43
+ };
44
+
45
+ EventStream.prototype._onError = function () {
46
+ // TODO: Handle error
47
+ };
48
+
49
+ EventStream.prototype.open = function () {
50
+ if (!window.EventSource) {
51
+ console.error('EventSource is not supported on this platform.');
52
+ this.trigger('g:eventStream.disable');
53
+ return;
54
+ }
55
+ if (this._state !== 'closed') {
56
+ console.warn('EventStream should be closed.');
57
+ return;
58
+ }
59
+
60
+ this._state = 'stopped';
61
+ this._start();
62
+
63
+ document.addEventListener('visibilitychange', this._onVisibilityStateChange);
64
+ };
65
+
66
+ EventStream.prototype._start = function () {
67
+ if (this._state !== 'stopped') {
68
+ console.warn('EventStream should be stopped');
69
+ return;
70
+ }
71
+
72
+ this._websocket = new WebSocket(`/notifications/me?token=${getCurrentToken()}`);
73
+ this._websocket.onmessage = this._onMessage;
74
+ this._websocket.onerror = this._onError;
75
+
76
+ this._state = 'started';
77
+ this.trigger('g:eventStream.start');
78
+ };
79
+
80
+ EventStream.prototype._stop = function () {
81
+ if (this._state !== 'started') {
82
+ console.warn('EventStream should be started');
83
+ return;
84
+ }
85
+
86
+ this._websocket.close();
87
+ this._websocket = null;
88
+
89
+ this._state = 'stopped';
90
+ this.trigger('g:eventStream.stop');
91
+ };
92
+
93
+ EventStream.prototype.close = function () {
94
+ if (this._state === 'closed') {
95
+ console.warn('EventStream should not be closed');
96
+ return;
97
+ }
98
+
99
+ document.removeEventListener('visibilitychange', this._onVisibilityStateChange);
100
+
101
+ if (this._state === 'started') {
102
+ this._stop();
103
+ }
104
+
105
+ this._state = 'closed';
106
+ this.trigger('g:eventStream.close');
107
+ };
108
+
109
+ const eventStream = new EventStream();
110
+
111
+ export default eventStream;
@@ -251,51 +251,11 @@ prototype._finalizeMultiChunkUpload = function () {
251
251
  },
252
252
  error: null
253
253
  }).done((resp) => {
254
- // Create the XML document that will be the request body to S3
255
- var doc = document.implementation.createDocument(null, null, null);
256
- var root = doc.createElement('CompleteMultipartUpload');
257
-
258
- _.each(this.eTagList, (etag, partNumber) => {
259
- var partEl = doc.createElement('Part');
260
- var partNumberEl = doc.createElement('PartNumber');
261
- var etagEl = doc.createElement('ETag');
262
-
263
- partNumberEl.appendChild(doc.createTextNode(partNumber));
264
- etagEl.appendChild(doc.createTextNode(etag));
265
- partEl.appendChild(partNumberEl);
266
- partEl.appendChild(etagEl);
267
- root.appendChild(partEl);
268
- });
269
-
270
- var req = resp.s3FinalizeRequest;
271
- var xhr = new XMLHttpRequest();
272
-
273
- xhr.open(req.method, req.url);
274
-
275
- _.each(req.headers, (v, k) => {
276
- xhr.setRequestHeader(k, v);
277
- });
278
-
279
- xhr.onload = () => {
280
- if (xhr.status === 200) {
281
- delete resp.s3FinalizeRequest;
282
- this.trigger('g:upload.complete', resp);
283
- } else {
284
- this.trigger('g:upload.error', {
285
- message: 'Error occurred uploading to S3 (' + xhr.status + ').'
286
- });
287
- }
288
- };
289
-
290
- xhr.send(new window.XMLSerializer().serializeToString(root));
254
+ this.trigger('g:upload.complete', resp);
291
255
  }).fail((resp) => {
292
- var msg;
293
-
294
- if (resp.status === 0) {
295
- msg = 'Could not connect to the server.';
296
- } else {
297
- msg = 'Upload error during finalize, check console.';
298
- }
256
+ const msg = resp.status === 0
257
+ ? 'Could not connect to the server.'
258
+ : 'Upload error during finalize, check console.';
299
259
  this.trigger('g:upload.error', {
300
260
  message: msg
301
261
  });
@@ -0,0 +1,6 @@
1
+ const versionRaw = import.meta.env.GIRDER_VERSION || null;
2
+
3
+ // Enforce that it's a string or null to make TypeScript happy
4
+ const version = versionRaw === null ? null : `${versionRaw}`;
5
+
6
+ export default version;
@@ -5,7 +5,8 @@ import events from '@girder/core/events';
5
5
  import eventStream from '@girder/core/utilities/EventStream';
6
6
 
7
7
  var View = Backbone.View.extend({
8
- constructor: function (opts) { // eslint-disable-line backbone/no-constructor
8
+ // eslint-disable-next-line backbone/no-constructor
9
+ constructor: function (opts) {
9
10
  if (opts && _.has(opts, 'parentView')) {
10
11
  if (opts.parentView) {
11
12
  opts.parentView.registerChildView(this);
@@ -17,9 +17,7 @@ import AssetstoresTemplate from '@girder/core/templates/body/assetstores.pug';
17
17
 
18
18
  import '@girder/core/stylesheets/body/assetstores.styl';
19
19
 
20
- import 'as-jqplot/dist/jquery.jqplot.js';
21
- import 'as-jqplot/dist/jquery.jqplot.css'; // jquery.jqplot.min.css
22
- import 'as-jqplot/dist/plugins/jqplot.pieRenderer.js';
20
+ import ApexCharts from 'apexcharts';
23
21
 
24
22
  /**
25
23
  * This private data structure is a dynamic way to map assetstore types to the views
@@ -68,7 +66,7 @@ var AssetstoresView = View.extend({
68
66
 
69
67
  _destroyPlots: function () {
70
68
  for (const plot of this.plots) {
71
- plot.data('jqplot').destroy();
69
+ plot.destroy();
72
70
  }
73
71
  this.plots = [];
74
72
  },
@@ -116,32 +114,32 @@ var AssetstoresView = View.extend({
116
114
  ['Used (' + formatSize(used) + ')', used],
117
115
  ['Free (' + formatSize(capacity.free) + ')', capacity.free]
118
116
  ];
119
- var plot = $(el).jqplot([data], {
120
- seriesDefaults: {
121
- renderer: $.jqplot.PieRenderer,
122
- rendererOptions: {
123
- sliceMargin: 2,
124
- shadow: false,
125
- highlightMouseOver: false,
126
- showDataLabels: true,
127
- padding: 5,
128
- startAngle: 180
129
- }
117
+ var plot = new ApexCharts(el, {
118
+ series: data.map(d => d[1]),
119
+ chart: {
120
+ type: 'pie',
121
+ animations: { enabled: false }
130
122
  },
131
- legend: {
132
- show: true,
133
- location: 'e',
134
- background: 'transparent',
135
- border: 'none'
123
+ labels: data.map(d => d[0]),
124
+ plotOptions: {
125
+ pie: {
126
+ startAngle: -90,
127
+ endAngle: 270,
128
+ expandOnClick: false,
129
+ dataLabels: {
130
+ enabled: true
131
+ }
132
+ }
136
133
  },
137
- grid: {
138
- background: 'transparent',
139
- border: 'none',
140
- borderWidth: 0,
141
- shadow: false
134
+ dataLabels: {
135
+ style: {
136
+ colors: ['#000', '#000']
137
+ },
138
+ dropShadow: {enabled: false},
142
139
  },
143
- gridPadding: { top: 10, right: 10, bottom: 10, left: 10 }
140
+ legend: { position: 'right' }
144
141
  });
142
+ plot.render();
145
143
  this.plots.push(plot);
146
144
  },
147
145
 
@@ -1,4 +1,3 @@
1
- import $ from 'jquery';
2
1
  import _ from 'underscore';
3
2
 
4
3
  import AccessWidget from '@girder/core/views/widgets/AccessWidget';
@@ -30,18 +29,10 @@ var SystemConfigurationView = View.extend({
30
29
  var settings = _.map(this.settingsKeys, (key) => {
31
30
  const element = this.$('#g-' + key.replace(/[_.]/g, '-'));
32
31
 
33
- if (key === 'core.route_table') {
34
- return {
35
- key,
36
- value: _.object(_.map($('.g-core-route-table'), function (el) {
37
- return [$(el).data('webrootName'), $(el).val()];
38
- }))
39
- };
40
- } else if (_.contains(
32
+ if (_.contains(
41
33
  [
42
34
  'core.api_keys',
43
35
  'core.enable_password_login',
44
- 'core.enable_notification_stream'
45
36
  ],
46
37
  key
47
38
  )) { // booleans via checkboxes
@@ -77,9 +68,6 @@ var SystemConfigurationView = View.extend({
77
68
  this.$('#g-settings-error-message').text(resp.responseJSON.message);
78
69
  });
79
70
  },
80
- 'click #g-core-banner-default-color': function () {
81
- this.$('#g-core-banner-color').val(this.defaults['core.banner_color']);
82
- }
83
71
  },
84
72
 
85
73
  initialize: function () {
@@ -104,14 +92,12 @@ var SystemConfigurationView = View.extend({
104
92
  'core.smtp.username',
105
93
  'core.smtp.password',
106
94
  'core.upload_minimum_chunk_size',
107
- 'core.enable_notification_stream',
108
95
  'core.cors.allow_origin',
109
96
  'core.cors.allow_methods',
110
97
  'core.cors.allow_headers',
111
98
  'core.add_to_group_policy',
112
99
  'core.collection_create_policy',
113
100
  'core.user_default_folders',
114
- 'core.route_table'
115
101
  ];
116
102
  this.settingsKeys = keys;
117
103
  restRequest({
@@ -129,11 +115,6 @@ var SystemConfigurationView = View.extend({
129
115
  render: function () {
130
116
  this.$el.html(SystemConfigurationTemplate({
131
117
  settings: this.settings,
132
- routes: this.settings['core.route_table'],
133
- routeKeys: _.sortBy(
134
- _.keys(this.settings['core.route_table']),
135
- (a) => a.indexOf('core_') === 0 ? -1 : 0
136
- ),
137
118
  JSON: window.JSON
138
119
  }));
139
120
 
@@ -1,5 +1,5 @@
1
1
  import AdminView from './AdminView';
2
- import AssetstoresView from './AssetstoresView';
2
+ import AssetstoresView, { assetstoreImportViewMap } from './AssetstoresView';
3
3
  import CollectionView from './CollectionView';
4
4
  import CollectionsView from './CollectionsView';
5
5
  import FilesystemImportView from './FilesystemImportView';
@@ -19,6 +19,7 @@ import UsersView from './UsersView';
19
19
  export {
20
20
  AdminView,
21
21
  AssetstoresView,
22
+ assetstoreImportViewMap,
22
23
  CollectionView,
23
24
  CollectionsView,
24
25
  FilesystemImportView,
@@ -26,7 +26,7 @@ var LoginView = View.extend({
26
26
  const loginName = this.$('#g-login').val();
27
27
  const password = this.$('#g-password').val();
28
28
  const otpToken = this.$('#g-login-otp-group').hasClass('hidden') ? null : this.$('#g-login-otp').val();
29
- login(loginName, password, undefined, otpToken)
29
+ login(loginName, password, otpToken)
30
30
  .done(() => {
31
31
  this.$el.modal('hide');
32
32
  })
@@ -38,7 +38,7 @@ var ApiKeyListWidget = View.extend({
38
38
  }
39
39
  },
40
40
 
41
- 'click .g-api-key-new': function (e) {
41
+ 'click .g-api-key-new': function () {
42
42
  this._renderEditWidget();
43
43
  },
44
44