@girder/core 3.2.3 → 5.0.0-beta.1
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.
- package/README.md +61 -0
- package/package.json +79 -31
- package/assets/Girder_Mark.png +0 -0
- package/auth.js +0 -152
- package/collections/ApiKeyCollection.js +0 -9
- package/collections/AssetstoreCollection.js +0 -9
- package/collections/Collection.js +0 -295
- package/collections/CollectionCollection.js +0 -9
- package/collections/FileCollection.js +0 -11
- package/collections/FolderCollection.js +0 -11
- package/collections/GroupCollection.js +0 -9
- package/collections/ItemCollection.js +0 -11
- package/collections/UserCollection.js +0 -24
- package/collections/index.js +0 -21
- package/constants.js +0 -33
- package/dialog.js +0 -128
- package/events.js +0 -6
- package/index.js +0 -31
- package/main.js +0 -21
- package/misc.js +0 -260
- package/models/AccessControlledModel.js +0 -76
- package/models/ApiKeyModel.js +0 -31
- package/models/AssetstoreModel.js +0 -43
- package/models/CollectionCreationPolicyModel.js +0 -20
- package/models/CollectionModel.js +0 -12
- package/models/FileModel.js +0 -310
- package/models/FolderModel.js +0 -33
- package/models/GroupModel.js +0 -197
- package/models/ItemModel.js +0 -72
- package/models/MetadataMixin.js +0 -88
- package/models/Model.js +0 -187
- package/models/UserModel.js +0 -189
- package/models/index.js +0 -25
- package/pluginUtils.js +0 -11
- package/rest.js +0 -216
- package/router.js +0 -58
- package/routes.js +0 -231
- package/stylesheets/apidocs/apidocs.styl +0 -50
- package/stylesheets/body/adminConsole.styl +0 -21
- package/stylesheets/body/assetstores.styl +0 -46
- package/stylesheets/body/collectionList.styl +0 -39
- package/stylesheets/body/collectionPage.styl +0 -6
- package/stylesheets/body/frontPage.styl +0 -48
- package/stylesheets/body/groupList.styl +0 -43
- package/stylesheets/body/groupPage.styl +0 -116
- package/stylesheets/body/itemPage.styl +0 -81
- package/stylesheets/body/plugins.styl +0 -61
- package/stylesheets/body/searchResultsList.styl +0 -51
- package/stylesheets/body/systemConfig.styl +0 -56
- package/stylesheets/body/userAccount.styl +0 -57
- package/stylesheets/body/userList.styl +0 -79
- package/stylesheets/body/userPage.styl +0 -6
- package/stylesheets/layout/footer.styl +0 -19
- package/stylesheets/layout/global.styl +0 -154
- package/stylesheets/layout/globalNav.styl +0 -89
- package/stylesheets/layout/header.styl +0 -29
- package/stylesheets/layout/headerUser.styl +0 -33
- package/stylesheets/layout/layout.styl +0 -75
- package/stylesheets/layout/layoutVars.styl +0 -9
- package/stylesheets/layout/loading.styl +0 -37
- package/stylesheets/layout/progressArea.styl +0 -17
- package/stylesheets/widgets/accessWidget.styl +0 -106
- package/stylesheets/widgets/browserWidget.styl +0 -9
- package/stylesheets/widgets/hierarchyWidget.styl +0 -188
- package/stylesheets/widgets/markdownWidget.styl +0 -92
- package/stylesheets/widgets/metadataWidget.styl +0 -92
- package/stylesheets/widgets/searchFieldWidget.styl +0 -70
- package/stylesheets/widgets/taskProgress.styl +0 -41
- package/stylesheets/widgets/timelineWidget.styl +0 -41
- package/stylesheets/widgets/uploadWidget.styl +0 -43
- package/stylesheets/widgets/userOtpManagementWidget.styl +0 -159
- package/templates/body/adminConsole.pug +0 -13
- package/templates/body/assetstores.pug +0 -98
- package/templates/body/collectionList.pug +0 -40
- package/templates/body/collectionPage.pug +0 -36
- package/templates/body/filesystemImport.pug +0 -41
- package/templates/body/frontPage.pug +0 -84
- package/templates/body/groupList.pug +0 -30
- package/templates/body/groupPage.pug +0 -116
- package/templates/body/itemPage.pug +0 -61
- package/templates/body/plugins.pug +0 -20
- package/templates/body/s3Import.pug +0 -35
- package/templates/body/searchResults.pug +0 -15
- package/templates/body/searchResultsType.pug +0 -13
- package/templates/body/systemConfiguration.pug +0 -221
- package/templates/body/userAccount.pug +0 -83
- package/templates/body/userList.pug +0 -43
- package/templates/body/userPage.pug +0 -40
- package/templates/layout/alert.pug +0 -5
- package/templates/layout/layout.pug +0 -12
- package/templates/layout/layoutFooter.pug +0 -11
- package/templates/layout/layoutGlobalNav.pug +0 -7
- package/templates/layout/layoutHeader.pug +0 -8
- package/templates/layout/layoutHeaderUser.pug +0 -26
- package/templates/layout/layoutProgressArea.pug +0 -1
- package/templates/layout/loginDialog.pug +0 -30
- package/templates/layout/registerDialog.pug +0 -35
- package/templates/layout/resetPasswordDialog.pug +0 -25
- package/templates/widgets/accessEditor.pug +0 -23
- package/templates/widgets/accessEditorMixins.pug +0 -57
- package/templates/widgets/accessEditorNonModal.pug +0 -11
- package/templates/widgets/accessEntry.pug +0 -32
- package/templates/widgets/apiKeyList.pug +0 -50
- package/templates/widgets/browserWidget.pug +0 -32
- package/templates/widgets/checkedActionsMenu.pug +0 -46
- package/templates/widgets/collectionInfoDialog.pug +0 -37
- package/templates/widgets/confirmDialog.pug +0 -14
- package/templates/widgets/dateTimeRangeWidget.pug +0 -20
- package/templates/widgets/dateTimeWidget.pug +0 -8
- package/templates/widgets/editApiKeyWidget.pug +0 -43
- package/templates/widgets/editAssetstoreWidget.pug +0 -78
- package/templates/widgets/editCollectionWidget.pug +0 -27
- package/templates/widgets/editFileWidget.pug +0 -21
- package/templates/widgets/editFolderWidget.pug +0 -27
- package/templates/widgets/editGroupWidget.pug +0 -54
- package/templates/widgets/editItemWidget.pug +0 -27
- package/templates/widgets/fileInfoDialog.pug +0 -33
- package/templates/widgets/fileList.pug +0 -33
- package/templates/widgets/folderInfoDialog.pug +0 -42
- package/templates/widgets/folderList.pug +0 -21
- package/templates/widgets/groupAdminList.pug +0 -33
- package/templates/widgets/groupInviteDialog.pug +0 -76
- package/templates/widgets/groupInviteList.pug +0 -14
- package/templates/widgets/groupMemberList.pug +0 -39
- package/templates/widgets/groupModList.pug +0 -23
- package/templates/widgets/hierarchyBreadcrumb.pug +0 -37
- package/templates/widgets/hierarchyPaginated.pug +0 -19
- package/templates/widgets/hierarchyWidget.pug +0 -96
- package/templates/widgets/itemBreadcrumb.pug +0 -16
- package/templates/widgets/itemList.pug +0 -27
- package/templates/widgets/jsonMetadatumEditWidget.pug +0 -13
- package/templates/widgets/jsonMetadatumView.pug +0 -6
- package/templates/widgets/loadingAnimation.pug +0 -4
- package/templates/widgets/markdownWidget.pug +0 -34
- package/templates/widgets/metadataWidget.pug +0 -16
- package/templates/widgets/metadatumEditWidget.pug +0 -15
- package/templates/widgets/metadatumView.pug +0 -5
- package/templates/widgets/newAssetstore.pug +0 -118
- package/templates/widgets/paginateWidget.pug +0 -7
- package/templates/widgets/pluginConfigBreadcrumb.pug +0 -13
- package/templates/widgets/rootSelectorWidget.pug +0 -13
- package/templates/widgets/searchField.pug +0 -10
- package/templates/widgets/searchHelp.pug +0 -12
- package/templates/widgets/searchModeSelect.pug +0 -9
- package/templates/widgets/searchResults.pug +0 -14
- package/templates/widgets/sortCollectionWidget.pug +0 -14
- package/templates/widgets/taskProgress.pug +0 -16
- package/templates/widgets/timeline.pug +0 -15
- package/templates/widgets/uploadWidget.pug +0 -15
- package/templates/widgets/uploadWidgetMixins.pug +0 -31
- package/templates/widgets/uploadWidgetNonModal.pug +0 -10
- package/templates/widgets/userOtpBegin.pug +0 -4
- package/templates/widgets/userOtpDisable.pug +0 -6
- package/templates/widgets/userOtpEnable.pug +0 -44
- package/utilities/EventStream.js +0 -177
- package/utilities/PluginUtils.js +0 -36
- package/utilities/S3UploadHandler.js +0 -303
- package/utilities/index.js +0 -9
- package/utilities/jquery/girderEnable.js +0 -19
- package/utilities/jquery/girderModal.js +0 -48
- package/version.js +0 -10
- package/views/App.js +0 -359
- package/views/View.js +0 -78
- package/views/body/AdminView.js +0 -29
- package/views/body/AssetstoresView.js +0 -235
- package/views/body/CollectionView.js +0 -188
- package/views/body/CollectionsView.js +0 -120
- package/views/body/FilesystemImportView.js +0 -83
- package/views/body/FolderView.js +0 -54
- package/views/body/FrontPageView.js +0 -47
- package/views/body/GroupView.js +0 -336
- package/views/body/GroupsView.js +0 -106
- package/views/body/ItemView.js +0 -177
- package/views/body/PluginsView.js +0 -73
- package/views/body/S3ImportView.js +0 -80
- package/views/body/SearchResultsView.js +0 -162
- package/views/body/SystemConfigurationView.js +0 -196
- package/views/body/UserAccountView.js +0 -179
- package/views/body/UserView.js +0 -165
- package/views/body/UsersView.js +0 -124
- package/views/body/index.js +0 -37
- package/views/index.js +0 -13
- package/views/layout/FooterView.js +0 -29
- package/views/layout/GlobalNavView.js +0 -103
- package/views/layout/HeaderUserView.js +0 -45
- package/views/layout/HeaderView.js +0 -83
- package/views/layout/LoginView.js +0 -100
- package/views/layout/ProgressListView.js +0 -70
- package/views/layout/RegisterView.js +0 -101
- package/views/layout/ResetPasswordView.js +0 -70
- package/views/layout/index.js +0 -19
- package/views/widgets/AccessWidget.js +0 -427
- package/views/widgets/ApiKeyListWidget.js +0 -140
- package/views/widgets/BrowserWidget.js +0 -317
- package/views/widgets/CheckedMenuWidget.js +0 -68
- package/views/widgets/CollectionInfoWidget.js +0 -40
- package/views/widgets/DateTimeRangeWidget.js +0 -179
- package/views/widgets/DateTimeWidget.js +0 -109
- package/views/widgets/EditApiKeyWidget.js +0 -122
- package/views/widgets/EditAssetstoreWidget.js +0 -148
- package/views/widgets/EditCollectionWidget.js +0 -93
- package/views/widgets/EditFileWidget.js +0 -56
- package/views/widgets/EditFolderWidget.js +0 -116
- package/views/widgets/EditGroupWidget.js +0 -125
- package/views/widgets/EditItemWidget.js +0 -110
- package/views/widgets/FileInfoWidget.js +0 -26
- package/views/widgets/FileListWidget.js +0 -151
- package/views/widgets/FolderInfoWidget.js +0 -39
- package/views/widgets/FolderListWidget.js +0 -106
- package/views/widgets/GroupAdminsWidget.js +0 -88
- package/views/widgets/GroupInvitesWidget.js +0 -56
- package/views/widgets/GroupMembersWidget.js +0 -185
- package/views/widgets/GroupModsWidget.js +0 -77
- package/views/widgets/HierarchyWidget.js +0 -1097
- package/views/widgets/ItemBreadcrumbWidget.js +0 -38
- package/views/widgets/ItemListWidget.js +0 -345
- package/views/widgets/LoadingAnimation.js +0 -17
- package/views/widgets/MarkdownWidget.js +0 -217
- package/views/widgets/MetadataWidget.js +0 -504
- package/views/widgets/NewAssetstoreWidget.js +0 -81
- package/views/widgets/PaginateWidget.js +0 -37
- package/views/widgets/PluginConfigBreadcrumbWidget.js +0 -33
- package/views/widgets/RootSelectorWidget.js +0 -192
- package/views/widgets/SearchFieldWidget.js +0 -365
- package/views/widgets/SearchPaginateWidget.js +0 -149
- package/views/widgets/SortCollectionWidget.js +0 -53
- package/views/widgets/TaskProgressWidget.js +0 -91
- package/views/widgets/TimelineWidget.js +0 -155
- package/views/widgets/UploadWidget.js +0 -340
- package/views/widgets/UserOtpManagementWidget.js +0 -105
- package/views/widgets/index.js +0 -75
|
@@ -1,32 +0,0 @@
|
|
|
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
|
|
@@ -1,50 +0,0 @@
|
|
|
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
|
|
@@ -1,32 +0,0 @@
|
|
|
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
|
|
@@ -1,46 +0,0 @@
|
|
|
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
|
|
@@ -1,37 +0,0 @@
|
|
|
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
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
|
@@ -1,20 +0,0 @@
|
|
|
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")
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
|
@@ -1,78 +0,0 @@
|
|
|
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.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
|
-
if assetstore.get('type') === types.S3
|
|
33
|
-
.form-group
|
|
34
|
-
label.control-label(for="g-edit-s3-bucket") S3 bucket name
|
|
35
|
-
input#g-edit-s3-bucket.input-sm.form-control(type="text", placeholder="Bucket")
|
|
36
|
-
.form-group
|
|
37
|
-
label.control-label(for="g-edit-s3-prefix") Path prefix (optional)
|
|
38
|
-
input#g-edit-s3-prefix.input-sm.form-control(type="text", placeholder="Prefix")
|
|
39
|
-
.form-group
|
|
40
|
-
label.control-label(for="g-edit-s3-access-key-id") Access key ID
|
|
41
|
-
input#g-edit-s3-access-key-id.input-sm.form-control(type="text", placeholder="Access key ID")
|
|
42
|
-
.form-group
|
|
43
|
-
label.control-label(for="g-edit-s3-secret") Secret access key
|
|
44
|
-
input#g-edit-s3-secret.input-sm.form-control(type="text", placeholder="Secret access key")
|
|
45
|
-
.form-group
|
|
46
|
-
label.control-label(for="g-edit-s3-service") Service
|
|
47
|
-
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.")
|
|
48
|
-
.form-group
|
|
49
|
-
label.control-label(for="g-edit-s3-region") Region
|
|
50
|
-
input#g-edit-s3-region.input-sm.form-control(type="text", placeholder="Region")
|
|
51
|
-
.checkbox
|
|
52
|
-
label
|
|
53
|
-
input#g-edit-s3-infercredentials(type="checkbox")
|
|
54
|
-
| Infer Credentials
|
|
55
|
-
.checkbox
|
|
56
|
-
label
|
|
57
|
-
input#g-edit-s3-readonly(type="checkbox")
|
|
58
|
-
| Read only
|
|
59
|
-
.checkbox
|
|
60
|
-
label
|
|
61
|
-
input#g-edit-s3-sse(type="checkbox")
|
|
62
|
-
| Server side encryption
|
|
63
|
-
if assetstore.get('hasFiles')
|
|
64
|
-
div
|
|
65
|
-
i.icon-attention
|
|
66
|
-
| #[b Warning:] This assetstore contains files. If you edit where the assetstore is located or how it is reached, those files may become unreachable.
|
|
67
|
-
.g-validation-failed-message
|
|
68
|
-
.modal-footer
|
|
69
|
-
a.btn.btn-small.btn-default(data-dismiss="modal") Cancel
|
|
70
|
-
if !assetstore.get('hasFiles')
|
|
71
|
-
button.g-save-assetstore.btn.btn-small.btn-primary(type="submit")
|
|
72
|
-
i.icon-edit
|
|
73
|
-
| Save
|
|
74
|
-
else
|
|
75
|
-
button.g-save-assetstore.btn.btn-small.btn-primary.btn-danger(type="submit")
|
|
76
|
-
i.icon-edit
|
|
77
|
-
| Save
|
|
78
|
-
i.icon-attention
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
|
@@ -1,21 +0,0 @@
|
|
|
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
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
|
@@ -1,54 +0,0 @@
|
|
|
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
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1,33 +0,0 @@
|
|
|
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...
|
|
@@ -1,42 +0,0 @@
|
|
|
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
|
|
@@ -1,21 +0,0 @@
|
|
|
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...
|