@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,32 @@
1
+ div(class=`g-${type}-access-entry`, resourceid=entry.id)
2
+ .g-access-col-left
3
+ - var icon = type === 'group' ? 'users' : 'user';
4
+ .g-access-icon
5
+ i(class=`icon-${icon}`)
6
+ .g-access-desc
7
+ .g-desc-title= entry.title
8
+ .g-desc-subtitle= entry.subtitle
9
+ .g-access-col-right
10
+ if !hideAccessType
11
+ select.form-control.input-sm
12
+ option(value=accessTypes.READ, selected=(entry.level === accessTypes.READ ? 'selected' : null)) Can view
13
+ option(value=accessTypes.WRITE, selected=(entry.level === accessTypes.WRITE ? 'selected' : null)) Can edit
14
+ option(value=accessTypes.ADMIN, selected=(entry.level === accessTypes.ADMIN ? 'selected' : null)) Is owner
15
+ .g-access-action-container
16
+ if !noAccessFlag && _.keys(flagList).length
17
+ a.g-action-manage-flags(title="Access flags")
18
+ i.g-flag-icon.icon-flag
19
+ .g-flag-count-indicator(class=(entry.flags && entry.flags.length ? null : "hide"))= (entry.flags || []).length
20
+ .g-flags-popover-container.hide(resourcetype=type, resourceid=entry.id, title="Access flags")
21
+ each flag, key in flagList
22
+ - var checked = _.contains(entry.flags, key) ? 'checked' : null;
23
+ - var disabled = (!isAdmin && flag.admin) ? 'disabled' : null;
24
+ .checkbox(class=disabled)
25
+ label.g-flag-label(title=flag.description)
26
+ input.g-flag-checkbox(resourcetype=type, resourceid=entry.id, flag=key, type="checkbox",
27
+ checked=checked, disabled=disabled)
28
+ span= flag.name
29
+ button.g-close-flags-popover.btn.btn-xs.btn-default Close
30
+
31
+ a.g-action-remove-access(title="Remove access")
32
+ i.icon-cancel
@@ -0,0 +1,50 @@
1
+ if apiKeys.length === 0
2
+ .g-api-keys-empty-message You have no existing API keys. Click the button below to create one.
3
+ else
4
+ .g-api-key-list-header Your API keys
5
+ table.g-api-key-table
6
+ thead: tr
7
+ th(col="name") Name
8
+ th(col="key") Key
9
+ th(col="scope") Scope
10
+ th(col="active") Active
11
+ th(col="tokenDuration") Token duration
12
+ th(col="lastUse") Last used
13
+ th(col="actions") Actions
14
+ tbody
15
+ each apiKey in apiKeys
16
+ tr.g-api-key-container(api-key-id=apiKey.id, cid=apiKey.cid)
17
+ td(col="name")= apiKey.get('name')
18
+ td(col="key"): a.g-show-api-key(data-toggle="popover", data-content=apiKey.get('key')) show
19
+ td(col="scope")
20
+ if apiKey.get('scope')
21
+ span Custom scopes
22
+ else
23
+ span Full access
24
+ td(col="active")= apiKey.get('active') ? 'Yes' : 'No'
25
+ td(col="tokenDuration")
26
+ if apiKey.get('tokenDuration')
27
+ span #{apiKey.get('tokenDuration')} days
28
+ else
29
+ span Default
30
+ td(col="lastUse")
31
+ if apiKey.get('lastUse')
32
+ - var lastUse = moment(apiKey.get('lastUse'))
33
+ span(title=lastUse)= lastUse.fromNow()
34
+ else
35
+ span Never
36
+ td(col="actions")
37
+ button.btn.btn-sm.btn-primary.g-api-key-edit(title="Edit")
38
+ i.icon-edit
39
+ if apiKey.get('active')
40
+ button.btn.btn-sm.btn-warning.g-api-key-toggle-active(title="Deactivate")
41
+ i.icon-minus-circled
42
+ else
43
+ button.btn.btn-sm.btn-success.g-api-key-toggle-active(title="Activate")
44
+ i.icon-plus-circled
45
+ button.btn.btn-sm.btn-danger.g-api-key-delete(title="Delete key")
46
+ i.icon-cancel
47
+
48
+ .g-paginate-container
49
+ .g-api-key-list-bottom-buttons
50
+ button.btn.btn-default.g-api-key-new Create new key
@@ -0,0 +1,32 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ .modal-header
4
+ button.close(data-dismiss='modal', aria-hidden='true', type='button') ×
5
+ h4.modal-title
6
+ = title
7
+
8
+ .modal-body.g-browser-widget
9
+ .g-hierarchy-root-container.form-group
10
+ .g-hierarchy-widget-container.g-wait-for-root.form-group.hidden
11
+
12
+ if input
13
+ .g-input-element.form-group
14
+ label.control-label(for='g-input-element') #{input.label}
15
+ input#g-input-element.form-control(
16
+ type='text', placeholder=input.placeholder, value=input.default)
17
+
18
+ .help-block.g-wait-for-root.hidden
19
+ = help
20
+
21
+ if preview
22
+ .g-selected-model.g-wait-for-root.form-group.hidden
23
+ label.control-label(for='g-selected-model') Selected #{selectItem ? 'item' : 'folder'}
24
+ input#g-selected-model.form-control(type='text', readonly, value=defaultSelectedResource)
25
+
26
+ .g-validation-failed-message.hidden
27
+
28
+ .modal-footer
29
+ a.btn.btn-small.btn-default(data-dismiss='modal') Cancel
30
+ button.g-submit-button.btn.btn-small.btn-primary(type='submit')
31
+ i.icon-edit
32
+ = submit
@@ -0,0 +1,46 @@
1
+ li.g-checked-menu-header.dropdown-header(role="presentation")
2
+ if folderCount
3
+ i.icon-folder
4
+ span.g-checked-folder-count #{folderCount}
5
+ if itemCount
6
+ i.icon-doc-text-inv
7
+ span.g-checked-item-count #{itemCount}
8
+ if pickedCount
9
+ i.icon-plus-circled
10
+ span.g-checked-picked-count #{pickedCount}
11
+ if folderCount || itemCount
12
+ li
13
+ a.g-download-checked
14
+ i.icon-download
15
+ | Download checked resources
16
+ li
17
+ a.g-pick-checked
18
+ i.icon-plus-circled
19
+ | Pick checked resources for Move or Copy
20
+
21
+ if HierarchyWidget.getPickedResources()
22
+ li.g-admin.divider
23
+ if pickedMoveAllowed
24
+ li
25
+ a.g-move-picked
26
+ i.icon-move
27
+ | Move picked resources here
28
+ if pickedCopyAllowed
29
+ li
30
+ a.g-copy-picked
31
+ i.icon-paste
32
+ | Copy picked resources here
33
+ li
34
+ a.g-clear-picked
35
+ i.icon-minus-circled
36
+ | Clear picked resources
37
+ if pickedDesc
38
+ | (#{pickedDesc})
39
+
40
+ if folderCount || itemCount
41
+ if (minFolderLevel >= AccessType.ADMIN && minItemLevel >= AccessType.WRITE)
42
+ li.g-admin.divider
43
+ li.g-admin
44
+ a.g-delete-checked
45
+ i.icon-trash
46
+ | Delete checked resources
@@ -0,0 +1,37 @@
1
+ mixin dateInfo(intro, property)
2
+ .g-collection-info-line(property=property)
3
+ i.icon-clock
4
+ span= intro
5
+ span.g-bold-part= formatDate(collection.get(property), DATE_SECOND)
6
+
7
+ .modal-dialog
8
+ .modal-content
9
+ .modal-header
10
+ button.close(data-dismiss="modal", aria-hidden="true") ×
11
+ h4.modal-title Collection information
12
+ .g-dialog-subtitle
13
+ i.icon-sitemap
14
+ span= collection.name()
15
+ .modal-body
16
+ if collection.get('description')
17
+ .g-info-dialog-description!= renderMarkdown(collection.get('description'))
18
+
19
+ .g-collection-info-lines
20
+ +dateInfo('Created ', 'created')
21
+ if collection.get('created') !== collection.get('updated')
22
+ +dateInfo('Last updated ', 'updated')
23
+
24
+ .g-collection-info-line(property="size")
25
+ i.icon-floppy
26
+ | Total size: #[span.g-bold-part= formatSize(collection.get('size'))]
27
+
28
+ .g-collection-info-line(property="nFolders")
29
+ i.icon-folder
30
+ | Contains #[span.g-bold-part= collection.get('nFolders')] subfolders
31
+
32
+ .g-collection-info-line(property="id")
33
+ i.icon-share
34
+ | Unique ID: #[span.g-bold-part= collection.id]
35
+
36
+ .modal-footer
37
+ a.btn.btn-small.btn-default(data-dismiss="modal") Close
@@ -0,0 +1,14 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ .modal-body
4
+ p
5
+ if params.msgConfirmation
6
+ p.g-additional-text
7
+ p.g-additional-instruction
8
+ | You need to enter '#{params.yesText.toUpperCase()} #{params.name}'
9
+ | and then click on the "#{params.yesText}" button
10
+ input#g-confirm-text.input-sm.form-control(type='text', name='confirmMsg')
11
+ spam.g-msg-error
12
+ .modal-footer
13
+ a.btn.btn-small.btn-default(data-dismiss="modal")= params.noText
14
+ a#g-confirm-button.btn.btn-small(class=params.yesClass)= params.yesText
@@ -0,0 +1,20 @@
1
+ .form-group
2
+ label.control-label= fromLabel
3
+ if showIcon
4
+ .input-group.date.g-datetime-widget-from
5
+ input.input-sm.form-control(type="text")
6
+ .input-group-addon
7
+ span.icon-calendar
8
+ else
9
+ .input-group.date
10
+ input.input-sm.form-control.g-datetime-widget-from(type="text")
11
+ .form-group
12
+ label.control-label= toLabel
13
+ if showIcon
14
+ .input-group.date.g-datetime-widget-to
15
+ input.input-sm.form-control(type="text")
16
+ .input-group-addon
17
+ span.icon-calendar
18
+ else
19
+ .input-group.date
20
+ input.input-sm.form-control.g-datetime-widget-to(type="text")
@@ -0,0 +1,8 @@
1
+ if showIcon
2
+ .input-group.date.g-datetime-widget
3
+ input.input-sm.form-control(type="text")
4
+ span.input-group-addon
5
+ span.icon-calendar
6
+ else
7
+ .input-group
8
+ input.input-sm.form-control.g-datetime-widget(type="text")
@@ -0,0 +1,43 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-api-key-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ if apiKey
8
+ | Edit API key
9
+ else
10
+ | Create new API key
11
+ .modal-body
12
+ .form-group
13
+ label.control-label(for="g-api-key-name") Name
14
+ input#g-api-key-name.input-sm.form-control(type="text", placeholder="Enter a name for this API key")
15
+ .form-group
16
+ label.control-label(for="g-api-key-token-duration") Token duration in days (optional)
17
+ input#g-api-key-token-duration.input-sm.form-control(placeholder="Enter number of days")
18
+
19
+ label.control-label Permission scope for this key
20
+ .g-scope-selection-container
21
+ .radio
22
+ label
23
+ input#g-scope-mode-full(type="radio", name="scopeType", value="full", checked)
24
+ | Allow all actions on behalf of my user
25
+ .radio
26
+ label
27
+ input#g-scope-mode-custom(type="radio", name="scopeType", value="custom")
28
+ | Only allow specific permissions for this key:
29
+ each tokenScope in tokenScopes
30
+ .checkbox.disabled
31
+ label.g-custom-scope-description(title=tokenScope.description)
32
+ input.g-custom-scope-checkbox(type="checkbox", value=tokenScope.id, disabled)
33
+ span= tokenScope.name
34
+ .g-validation-failed-message
35
+ .modal-footer
36
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
37
+ button.g-save-api-key.btn.btn-small.btn-primary(type="submit")
38
+ if apiKey
39
+ i.icon-edit
40
+ | Save
41
+ else
42
+ i.icon-plus-squared
43
+ | Create
@@ -0,0 +1,70 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-assetstore-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ | Edit assetstore
8
+ .modal-body
9
+ .g-assetstore-form-fields
10
+ .form-group
11
+ label.control-label(for="g-edit-name") Assetstore Name
12
+ input#g-edit-name.input-sm.form-control(type="text", placeholder="Name")
13
+ if assetstore.get('type') === types.FILESYSTEM
14
+ .form-group
15
+ label.control-label(for="g-edit-fs-root") Root directory
16
+ input#g-edit-fs-root.input-sm.form-control(type="text", placeholder="Root directory")
17
+ .form-group
18
+ label.control-label(for="g-edit-fs-perms") File creation permissions (octal)
19
+ input#g-edit-fs-perms.input-sm.form-control(type="text", placeholder="600")
20
+ if assetstore.get('type') === types.S3
21
+ .form-group
22
+ label.control-label(for="g-edit-s3-bucket") S3 bucket name
23
+ input#g-edit-s3-bucket.input-sm.form-control(type="text", placeholder="Bucket")
24
+ .form-group
25
+ label.control-label(for="g-edit-s3-prefix") Path prefix (optional)
26
+ input#g-edit-s3-prefix.input-sm.form-control(type="text", placeholder="Prefix")
27
+ .form-group
28
+ label.control-label(for="g-edit-s3-access-key-id") Access key ID
29
+ input#g-edit-s3-access-key-id.input-sm.form-control(type="text", placeholder="Access key ID")
30
+ .form-group
31
+ label.control-label(for="g-edit-s3-secret") Secret access key
32
+ input#g-edit-s3-secret.input-sm.form-control(type="text", placeholder="Secret access key")
33
+ .form-group
34
+ label.control-label(for="g-edit-s3-service") Service
35
+ input#g-edit-s3-service.input-sm.form-control(type="text", placeholder="Service", title="The service if different from s3.amazonaws.com, such as storage.googleapis.com.")
36
+ .form-group
37
+ label.control-label(for="g-edit-s3-region") Region
38
+ input#g-edit-s3-region.input-sm.form-control(type="text", placeholder="Region")
39
+ .checkbox
40
+ label
41
+ input#g-edit-s3-infercredentials(type="checkbox")
42
+ | Infer Credentials
43
+ .checkbox
44
+ label
45
+ input#g-edit-s3-readonly(type="checkbox")
46
+ | Read only
47
+ .checkbox
48
+ label
49
+ input#g-edit-s3-sse(type="checkbox")
50
+ | Server side encryption
51
+ .checkbox
52
+ label
53
+ input#g-edit-s3-accelerated-endpoint(type="checkbox")
54
+ | Allow S3 accelerated endpoint
55
+ if assetstore.get('hasFiles')
56
+ div
57
+ i.icon-attention
58
+ | #[b Warning:] This assetstore contains files. If you edit where the assetstore is located or how it is reached, those files may become unreachable.
59
+ .g-validation-failed-message
60
+ .modal-footer
61
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
62
+ if !assetstore.get('hasFiles')
63
+ button.g-save-assetstore.btn.btn-small.btn-primary(type="submit")
64
+ i.icon-edit
65
+ | Save
66
+ else
67
+ button.g-save-assetstore.btn.btn-small.btn-primary.btn-danger(type="submit")
68
+ i.icon-edit
69
+ | Save
70
+ i.icon-attention
@@ -0,0 +1,27 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-collection-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ if (create)
8
+ | Create collection
9
+ else
10
+ | Edit collection
11
+ .modal-body
12
+ .form-group
13
+ label.control-label(for="g-name") Name
14
+ input#g-name.input-sm.form-control(type="text", placeholder="Enter collection name")
15
+ .form-group
16
+ label.control-label Description (optional)
17
+ .g-description-editor-container
18
+ .g-validation-failed-message
19
+ .modal-footer
20
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
21
+ button.g-save-collection.btn.btn-small.btn-primary(type="submit")
22
+ if (create)
23
+ i.icon-plus-squared
24
+ | Create
25
+ else
26
+ i.icon-edit
27
+ | Save
@@ -0,0 +1,21 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-file-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title Edit file
7
+ .modal-body
8
+ .form-group
9
+ label.control-label(for="g-name") Name
10
+ input#g-name.input-sm.form-control(
11
+ type="text", placeholder="Enter file name", value=file.name())
12
+ .form-group
13
+ label.control-label(for="g-mimetype") MIME type
14
+ input#g-mimetype.input-sm.form-control(
15
+ type="text", placeholder="Enter MIME type", value=file.get('mimeType'))
16
+ .g-validation-failed-message
17
+ .modal-footer
18
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
19
+ button.g-save-file.btn.btn-small.btn-primary(type="submit")
20
+ i.icon-edit
21
+ | Save
@@ -0,0 +1,27 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-folder-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ if (folder)
8
+ | Edit folder
9
+ else
10
+ | Create folder
11
+ .modal-body
12
+ .form-group
13
+ label.control-label(for="g-name") Name
14
+ input#g-name.input-sm.form-control(type="text", placeholder="Enter folder name")
15
+ .form-group
16
+ label.control-label Description (optional)
17
+ .g-description-editor-container
18
+ .g-validation-failed-message
19
+ .modal-footer
20
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
21
+ button.g-save-folder.btn.btn-small.btn-primary(type="submit")
22
+ if (folder)
23
+ i.icon-edit
24
+ | Save
25
+ else
26
+ i.icon-plus-squared
27
+ | Create
@@ -0,0 +1,54 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-group-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ if (group)
8
+ | Edit group
9
+ else
10
+ | Create group
11
+ .modal-body
12
+ .g-public-container
13
+ .radio
14
+ label
15
+ input#g-access-private(type="radio", name="privacy",
16
+ checked=(publicFlag ? undefined : "checked"))
17
+ i.icon-lock
18
+ | Private — Only members can see this group
19
+ .radio
20
+ label
21
+ input#g-access-public(type="radio", name="privacy",
22
+ checked=(publicFlag ? "checked" : undefined))
23
+ i.icon-globe
24
+ | Public — Anyone can see this group
25
+ .form-group
26
+ label.control-label(for="g-name") Name
27
+ input#g-name.input-sm.form-control(type="text", placeholder="Enter group name")
28
+ .form-group
29
+ label.control-label(for="g-description") Description (optional)
30
+ textarea#g-description.input-sm.form-control(placeholder="Enter group description")
31
+ if groupAddAllowed
32
+ .form-group
33
+ label.control-label(for="g-add-to-group") Allow members to be directly added to this group
34
+ select#g-add-to-group.form-control.input-sm
35
+ if addToGroupPolicy === 'yesadmin'
36
+ option(value='default', selected=(addAllowed === 'default')) Default - Yes, allow group administrators to add members
37
+ else if addToGroupPolicy === 'yesmod'
38
+ option(value='default', selected=(addAllowed === 'default')) Default - Yes, allow group administrators and moderators to add members
39
+ else
40
+ option(value='default', selected=(addAllowed === 'default')) Default - No
41
+ option(value='no', selected=(addAllowed === 'no')) No - members must be invited and accept invitations
42
+ if groupAddAllowed === 'mod'
43
+ option(value='yesmod', selected=(addAllowed === 'yesmod')) Yes - allow group administrators and moderators to directly add members
44
+ option(value='yesadmin', selected=(addAllowed === 'yesadmin')) Yes - allow group administrators to directly add members
45
+ .g-validation-failed-message
46
+ .modal-footer
47
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
48
+ button.g-save-group.btn.btn-small.btn-primary(type="submit")
49
+ if (group)
50
+ i.icon-edit
51
+ | Save
52
+ else
53
+ i.icon-plus-squared
54
+ | Create
@@ -0,0 +1,27 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ form#g-item-edit-form.modal-form(role="form")
4
+ .modal-header
5
+ button.close(data-dismiss="modal", aria-hidden="true", type="button") ×
6
+ h4.modal-title
7
+ if (item)
8
+ | Edit item
9
+ else
10
+ | Create item
11
+ .modal-body
12
+ .form-group
13
+ label.control-label(for="g-name") Name
14
+ input#g-name.input-sm.form-control(type="text", placeholder="Enter item name")
15
+ .form-group
16
+ label.control-label Description (optional)
17
+ .g-description-editor-container
18
+ .g-validation-failed-message
19
+ .modal-footer
20
+ a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
21
+ button.g-save-item.btn.btn-small.btn-primary(type="submit")
22
+ if (item)
23
+ i.icon-edit
24
+ | Save
25
+ else
26
+ i.icon-plus-squared
27
+ | Create
@@ -0,0 +1,33 @@
1
+ .modal-dialog
2
+ .modal-content
3
+ .modal-header
4
+ button.close(data-dismiss="modal", aria-hidden="true") ×
5
+ h4.modal-title File information
6
+ .g-dialog-subtitle
7
+ i.icon-doc-inv
8
+ span= file.name()
9
+ .modal-body
10
+ .g-file-info-lines
11
+ .g-file-info-line(property="created")
12
+ i.icon-clock
13
+ span= 'Created '
14
+ span.g-bold-part= formatDate(file.get('created'), DATE_SECOND)
15
+
16
+ .g-file-info-line(property="mimeType")
17
+ i.icon-info
18
+ span MIME type:
19
+ span.g-bold-part #{file.get('mimeType') || 'unknown'}
20
+
21
+ if file.has('size')
22
+ .g-file-info-line(property="size")
23
+ i.icon-hdd
24
+ span Size:
25
+ span.g-bold-part #{file.get('size')} bytes
26
+
27
+ .g-file-info-line(property="id")
28
+ i.icon-share
29
+ span Unique ID:
30
+ span.g-bold-part #{file.id}
31
+
32
+ .modal-footer
33
+ a.btn.btn-small.btn-default(data-dismiss="modal") Close
@@ -0,0 +1,33 @@
1
+ ul.g-file-list
2
+ each file in files
3
+ li.g-file-list-entry
4
+ a.g-file-list-link(cid=file.cid, title="Download file",
5
+ target=file.get('linkUrl') ? '_blank' : '_self', href=file.downloadUrl(),
6
+ rel="noopener noreferrer")
7
+ if file.get('linkUrl')
8
+ i.icon-link
9
+ span.g-file-name= file.name()
10
+ i.icon-link-ext
11
+ else
12
+ i.icon-doc-inv
13
+ = file.name()
14
+ a.g-view-inline(title="View in browser", target="_blank", rel="noopener noreferrer",
15
+ href=file.downloadUrl({contentDisposition: 'inline'}))
16
+ i.icon-eye
17
+ a.g-show-info(file-cid=file.cid, title="Show info")
18
+ i.icon-info
19
+ if file.has('size')
20
+ .g-file-size= formatSize(file.get('size'))
21
+ .g-file-actions-container(file-cid=file.cid)
22
+ if parentItem && parentItem.get('_accessLevel') >= AccessType.WRITE
23
+ a.g-update-info(title="Edit file info")
24
+ i.icon-edit
25
+ a.g-update-contents(title="Replace file contents")
26
+ i.icon-upload
27
+ a.g-delete-file(title="Delete file")
28
+ i.icon-cancel
29
+ if hasMore
30
+ li.g-show-more
31
+ a.g-show-more-files
32
+ i.icon-level-down
33
+ | Show more files...
@@ -0,0 +1,42 @@
1
+ mixin dateInfo(intro, property)
2
+ .g-folder-info-line(property=property)
3
+ i.icon-clock
4
+ span= intro
5
+ span.g-bold-part= formatDate(folder.get(property), DATE_SECOND)
6
+
7
+ .modal-dialog
8
+ .modal-content
9
+ .modal-header
10
+ button.close(data-dismiss="modal", aria-hidden="true") ×
11
+ h4.modal-title Folder information
12
+ .g-dialog-subtitle
13
+ i.icon-folder
14
+ span= folder.name()
15
+ .modal-body
16
+ if folder.get('description')
17
+ .g-info-dialog-description.g-folder-description!= renderMarkdown(folder.get('description'))
18
+
19
+ .g-folder-info-lines
20
+ +dateInfo('Created ', 'created')
21
+ if folder.get('created') !== folder.get('updated')
22
+ +dateInfo('Last updated ', 'updated')
23
+
24
+ .g-folder-info-line(property="nItems")
25
+ i.icon-doc-text-inv
26
+ span Contains
27
+ span.g-bold-part #{folder.get('nItems')} items
28
+ span totaling
29
+ span.g-bold-part #{formatSize(folder.get('size'))}
30
+
31
+ .g-folder-info-line(property="nFolders")
32
+ i.icon-folder
33
+ span Contains
34
+ span.g-bold-part #{folder.get('nFolders')} subfolders
35
+
36
+ .g-folder-info-line(property="id")
37
+ i.icon-share
38
+ span Unique ID:
39
+ span.g-bold-part #{folder.id}
40
+
41
+ .modal-footer
42
+ a.btn.btn-small.btn-default(data-dismiss="modal") Close
@@ -0,0 +1,21 @@
1
+ ul.g-folder-list
2
+ each folder in folders
3
+ li.g-folder-list-entry(public=(folder.get('public') ? 'true' : 'false'))
4
+ if checkboxes
5
+ input.g-list-checkbox(type="checkbox", g-folder-cid=folder.cid)
6
+ a.g-folder-list-link(g-folder-cid=folder.cid, href=`#folder/${folder.id}`)
7
+ i.icon-folder
8
+ = folder.get('name')
9
+ i.icon-right-dir
10
+ .g-folder-privacy
11
+ if folder.get('public')
12
+ i.icon-globe
13
+ | Public
14
+ else
15
+ i.icon-lock
16
+ | Private
17
+ if hasMore
18
+ li.g-show-more
19
+ a.g-show-more-folders
20
+ i.icon-level-down
21
+ | Show more folders...