@concretecms/bedrock 1.1.0 → 1.1.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/.idea/bedrock.iml +8 -0
- package/.idea/codeStyles/Project.xml +48 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/assets/cms/components/file-manager/Chooser/FileManager.vue +75 -72
- package/assets/cms/components/file-manager/Chooser/FileSets.vue +11 -7
- package/assets/cms/components/file-manager/Chooser/FileUpload.vue +3 -1
- package/assets/cms/components/file-manager/Chooser/Files.vue +38 -4
- package/assets/cms/components/file-manager/Chooser/FolderBookmark.vue +4 -0
- package/assets/cms/components/file-manager/Chooser/RecentUploads.vue +4 -0
- package/assets/cms/components/file-manager/Chooser/SavedSearch.vue +11 -7
- package/assets/cms/components/file-manager/Chooser/Search.vue +13 -8
- package/assets/cms/components/file-manager/Chooser.vue +18 -0
- package/assets/cms/components/file-manager/Uploader/UploadFromComputer.vue +3 -2
- package/assets/cms/components/file-manager/Uploader.vue +1 -0
- package/assets/cms/components/form/ConcreteFileInput.vue +8 -1
- package/assets/cms/js/file-manager/file-manager.js +1 -8
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="WEB_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$" />
|
|
5
|
+
<orderEntry type="inheritedJdk" />
|
|
6
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
7
|
+
</component>
|
|
8
|
+
</module>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
+
<code_scheme name="Project" version="173">
|
|
3
|
+
<PHPCodeStyleSettings>
|
|
4
|
+
<option name="BLANK_LINES_BETWEEN_IMPORTS" value="1" />
|
|
5
|
+
<option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
|
|
6
|
+
<option name="LOWER_CASE_NULL_CONST" value="true" />
|
|
7
|
+
<option name="ELSE_IF_STYLE" value="COMBINE" />
|
|
8
|
+
<option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
|
|
9
|
+
<option name="BLANK_LINES_AFTER_OPENING_TAG" value="1" />
|
|
10
|
+
<option name="KEEP_BLANK_LINES_AFTER_LBRACE" value="0" />
|
|
11
|
+
<option name="NEW_LINE_AFTER_PHP_OPENING_TAG" value="true" />
|
|
12
|
+
</PHPCodeStyleSettings>
|
|
13
|
+
<codeStyleSettings language="JavaScript">
|
|
14
|
+
<option name="INDENT_CASE_FROM_SWITCH" value="false" />
|
|
15
|
+
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
|
16
|
+
<option name="ALIGN_MULTILINE_FOR" value="false" />
|
|
17
|
+
</codeStyleSettings>
|
|
18
|
+
<codeStyleSettings language="PHP">
|
|
19
|
+
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
|
|
20
|
+
<option name="BLANK_LINES_AFTER_PACKAGE" value="1" />
|
|
21
|
+
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
|
22
|
+
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
|
23
|
+
<option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
|
|
24
|
+
<option name="CALL_PARAMETERS_WRAP" value="5" />
|
|
25
|
+
<option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
|
|
26
|
+
<option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
|
|
27
|
+
<option name="METHOD_PARAMETERS_WRAP" value="5" />
|
|
28
|
+
<option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
|
|
29
|
+
<option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
|
|
30
|
+
<option name="EXTENDS_LIST_WRAP" value="5" />
|
|
31
|
+
<option name="FOR_STATEMENT_LPAREN_ON_NEXT_LINE" value="true" />
|
|
32
|
+
<option name="FOR_STATEMENT_RPAREN_ON_NEXT_LINE" value="true" />
|
|
33
|
+
<option name="ARRAY_INITIALIZER_WRAP" value="5" />
|
|
34
|
+
<option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
|
|
35
|
+
<option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
|
|
36
|
+
<option name="IF_BRACE_FORCE" value="3" />
|
|
37
|
+
<option name="DOWHILE_BRACE_FORCE" value="3" />
|
|
38
|
+
<option name="WHILE_BRACE_FORCE" value="3" />
|
|
39
|
+
<option name="FOR_BRACE_FORCE" value="3" />
|
|
40
|
+
</codeStyleSettings>
|
|
41
|
+
<codeStyleSettings language="Vue">
|
|
42
|
+
<indentOptions>
|
|
43
|
+
<option name="INDENT_SIZE" value="4" />
|
|
44
|
+
<option name="TAB_SIZE" value="4" />
|
|
45
|
+
</indentOptions>
|
|
46
|
+
</codeStyleSettings>
|
|
47
|
+
</code_scheme>
|
|
48
|
+
</component>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<component name="InspectionProjectProfileManager">
|
|
2
|
+
<profile version="1.0">
|
|
3
|
+
<option name="myName" value="Project Default" />
|
|
4
|
+
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
5
|
+
<inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
|
|
6
|
+
</profile>
|
|
7
|
+
</component>
|
package/.idea/vcs.xml
ADDED
|
@@ -1,92 +1,95 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
<div>
|
|
3
|
+
<chooser-header :resultsFormFactor.sync="formFactor"
|
|
4
|
+
:breadcrumb-items="breadcrumbItems"
|
|
5
|
+
@breadcrumbItemClick="activeFolder = $event.folderId"
|
|
6
|
+
:title="title"/>
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
<files :selectedFiles.sync="selectedFiles"
|
|
9
|
+
:resultsFormFactor="formFactor"
|
|
10
|
+
:routePath="routePath + activeFolder"
|
|
11
|
+
:enable-pagination="true"
|
|
12
|
+
:enable-sort="true"
|
|
13
|
+
:filters="filters"
|
|
14
|
+
:multipleSelection="multipleSelection"
|
|
15
|
+
@folderClick="activeFolder = $event"/>
|
|
16
|
+
</div>
|
|
16
17
|
</template>
|
|
17
18
|
|
|
18
19
|
<script>
|
|
19
20
|
/* global CCM_DISPATCHER_FILENAME, ConcreteAjaxRequest */
|
|
20
|
-
/* eslint indent: [2, 2, {"SwitchCase": 1}] */
|
|
21
21
|
/* eslint-disable no-new */
|
|
22
22
|
import ChooserHeader from './Header'
|
|
23
23
|
import Files from './Files'
|
|
24
24
|
|
|
25
25
|
export default {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
data: () => ({
|
|
31
|
-
activeFolder: '',
|
|
32
|
-
selectedFiles: [],
|
|
33
|
-
breadcrumbItems: [],
|
|
34
|
-
routePath: '/ccm/system/file/chooser/get_folder_files/',
|
|
35
|
-
formFactor: 'grid'
|
|
36
|
-
}),
|
|
37
|
-
props: {
|
|
38
|
-
resultsFormFactor: {
|
|
39
|
-
type: String,
|
|
40
|
-
required: false,
|
|
41
|
-
default: 'grid', // grid | list
|
|
42
|
-
validator: value => ['grid', 'list'].indexOf(value) !== -1
|
|
26
|
+
components: {
|
|
27
|
+
ChooserHeader,
|
|
28
|
+
Files
|
|
43
29
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
data: () => ({
|
|
31
|
+
activeFolder: '',
|
|
32
|
+
selectedFiles: [],
|
|
33
|
+
breadcrumbItems: [],
|
|
34
|
+
routePath: '/ccm/system/file/chooser/get_folder_files/',
|
|
35
|
+
formFactor: 'grid'
|
|
36
|
+
}),
|
|
37
|
+
props: {
|
|
38
|
+
resultsFormFactor: {
|
|
39
|
+
type: String,
|
|
40
|
+
required: false,
|
|
41
|
+
default: 'grid', // grid | list
|
|
42
|
+
validator: value => ['grid', 'list'].indexOf(value) !== -1
|
|
43
|
+
},
|
|
44
|
+
startFolder: {
|
|
45
|
+
type: String,
|
|
46
|
+
required: true
|
|
47
|
+
},
|
|
48
|
+
title: {
|
|
49
|
+
type: String,
|
|
50
|
+
required: true
|
|
51
|
+
},
|
|
52
|
+
multipleSelection: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
default: true
|
|
55
|
+
},
|
|
56
|
+
filters: {
|
|
57
|
+
type: Array
|
|
58
|
+
}
|
|
47
59
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
60
|
+
created() {
|
|
61
|
+
this.activeFolder = this.$props.startFolder
|
|
62
|
+
this.fetchBreadcrumb(this.activeFolder)
|
|
51
63
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
},
|
|
61
|
-
methods: {
|
|
62
|
-
fetchBreadcrumb(folderId = '') {
|
|
63
|
-
new ConcreteAjaxRequest({
|
|
64
|
-
url: `${CCM_DISPATCHER_FILENAME}/ccm/system/file/chooser/get_breadcrumb/${folderId}`,
|
|
65
|
-
success: r => {
|
|
66
|
-
this.breadcrumbItems = r.data
|
|
64
|
+
methods: {
|
|
65
|
+
fetchBreadcrumb(folderId = '') {
|
|
66
|
+
new ConcreteAjaxRequest({
|
|
67
|
+
url: `${CCM_DISPATCHER_FILENAME}/ccm/system/file/chooser/get_breadcrumb/${folderId}`,
|
|
68
|
+
success: r => {
|
|
69
|
+
this.breadcrumbItems = r.data
|
|
70
|
+
}
|
|
71
|
+
})
|
|
67
72
|
}
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
watch: {
|
|
72
|
-
activeFolder(value) {
|
|
73
|
-
this.fetchBreadcrumb(value)
|
|
74
73
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
watch: {
|
|
75
|
+
activeFolder(value) {
|
|
76
|
+
this.fetchBreadcrumb(value)
|
|
77
|
+
},
|
|
78
|
+
selectedFiles(value) {
|
|
79
|
+
this.$emit('update:selectedFiles', value)
|
|
80
|
+
},
|
|
81
|
+
formFactor(value) {
|
|
82
|
+
this.$emit('update:resultsFormFactor', value)
|
|
83
|
+
},
|
|
84
|
+
startFolder(value) {
|
|
85
|
+
this.activeFolder = value
|
|
86
|
+
this.fetchBreadcrumb(value)
|
|
87
|
+
}
|
|
80
88
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
89
|
+
mounted() {
|
|
90
|
+
this.formFactor = this.resultsFormFactor
|
|
91
|
+
this.activeFolder = this.$props.startFolder
|
|
92
|
+
this.fetchBreadcrumb(this.activeFolder)
|
|
84
93
|
}
|
|
85
|
-
},
|
|
86
|
-
mounted() {
|
|
87
|
-
this.formFactor = this.resultsFormFactor
|
|
88
|
-
this.activeFolder = this.$props.startFolder
|
|
89
|
-
this.fetchBreadcrumb(this.activeFolder)
|
|
90
|
-
}
|
|
91
94
|
}
|
|
92
95
|
</script>
|
|
@@ -10,19 +10,20 @@
|
|
|
10
10
|
<select id="fileSetSelector" class="form-select file-set-menu" v-model="activeSet">
|
|
11
11
|
<option value="" selected>{{ i18n.selectFileSet }}</option>
|
|
12
12
|
<option v-for="set in sets" :key="set.id" :value="set.id">
|
|
13
|
-
{{set.name}}
|
|
13
|
+
{{ set.name }}
|
|
14
14
|
</option>
|
|
15
15
|
</select>
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
<div class="mt-3" v-show="activeSet">
|
|
19
19
|
<files v-if="activeSet"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
:selectedFiles.sync="selectedFiles"
|
|
21
|
+
:resultsFormFactor="formFactor"
|
|
22
|
+
:routePath="routePath + activeSet"
|
|
23
|
+
:enable-pagination="true"
|
|
24
|
+
:enable-sort="true"
|
|
25
|
+
:filters="filters"
|
|
26
|
+
:multipleSelection="multipleSelection"/>
|
|
26
27
|
</div>
|
|
27
28
|
</div>
|
|
28
29
|
</template>
|
|
@@ -69,6 +70,9 @@ export default {
|
|
|
69
70
|
multipleSelection: {
|
|
70
71
|
type: Boolean,
|
|
71
72
|
default: true
|
|
73
|
+
},
|
|
74
|
+
filters: {
|
|
75
|
+
type: Array
|
|
72
76
|
}
|
|
73
77
|
},
|
|
74
78
|
methods: {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<label class="form-label" :for="'file-' + (file.fID || file.treeNodeID)"><span v-html="file.resultsThumbnailImg"></span></label>
|
|
10
10
|
<div class="ccm-image-cell-title pt-1">
|
|
11
11
|
<div class="form-check form-check-inline">
|
|
12
|
-
<input class="form-check-input" type="checkbox" v-if="multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
13
|
-
<input class="form-check-input" type="radio" v-if="!multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
12
|
+
<input :disabled="!canChooseFile(file)" class="form-check-input" type="checkbox" v-if="multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
13
|
+
<input :disabled="!canChooseFile(file)" class="form-check-input" type="radio" v-if="!multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
14
14
|
<label class="form-check-label" :for="'file-' + (file.fID || file.treeNodeID)">{{file.title}}</label>
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
<tbody>
|
|
39
39
|
<tr v-for="file in fileList" :key="(file.fID || file.treeNodeID) + 'list'" @click="onItemClick(file)">
|
|
40
40
|
<td>
|
|
41
|
-
<input type="checkbox" v-if="multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
42
|
-
<input type="radio" v-if="!multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
41
|
+
<input type="checkbox" :disabled="!canChooseFile(file)" v-if="multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
42
|
+
<input type="radio" :disabled="!canChooseFile(file)" v-if="!multipleSelection && !file.isFolder" v-model="selectedFiles" :id="'file-' + file.fID" :value="file.fID">
|
|
43
43
|
</td>
|
|
44
44
|
<td class="ccm-image-chooser-icon"><span v-html="file.resultsThumbnailImg" width="32" height="32"></span></td>
|
|
45
45
|
<td>{{file.fID}}</td>
|
|
@@ -100,6 +100,9 @@ export default {
|
|
|
100
100
|
viewIsLoading: false
|
|
101
101
|
}),
|
|
102
102
|
props: {
|
|
103
|
+
filters: {
|
|
104
|
+
type: Array
|
|
105
|
+
},
|
|
103
106
|
enableSort: {
|
|
104
107
|
type: Boolean,
|
|
105
108
|
required: false,
|
|
@@ -171,6 +174,37 @@ export default {
|
|
|
171
174
|
}
|
|
172
175
|
},
|
|
173
176
|
methods: {
|
|
177
|
+
canChooseFile(file) {
|
|
178
|
+
var canChooseFile = -1
|
|
179
|
+
if (this.filters) {
|
|
180
|
+
var fileExtension = file.extension
|
|
181
|
+
var fileType = file.genericType
|
|
182
|
+
this.filters.forEach(function(filter) {
|
|
183
|
+
if (filter.filter === 'extension') {
|
|
184
|
+
if (filter.extensions.includes(fileExtension)) {
|
|
185
|
+
canChooseFile = true
|
|
186
|
+
} else {
|
|
187
|
+
canChooseFile = false
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (canChooseFile !== false) {
|
|
191
|
+
if (filter.filter === 'type') {
|
|
192
|
+
if (filter.type === fileType) {
|
|
193
|
+
canChooseFile = true
|
|
194
|
+
} else {
|
|
195
|
+
canChooseFile = false
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (canChooseFile === -1) {
|
|
203
|
+
return true
|
|
204
|
+
} else {
|
|
205
|
+
return canChooseFile
|
|
206
|
+
}
|
|
207
|
+
},
|
|
174
208
|
getFiles() {
|
|
175
209
|
const my = this
|
|
176
210
|
my.rows = false
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
:routePath="routePath + activeFolder"
|
|
11
11
|
:enable-pagination="true"
|
|
12
12
|
:enable-sort="true"
|
|
13
|
+
:filters="filters"
|
|
13
14
|
:multipleSelection="multipleSelection"
|
|
14
15
|
@folderClick="activeFolder = $event"/>
|
|
15
16
|
</div>
|
|
@@ -51,6 +52,9 @@ export default {
|
|
|
51
52
|
multipleSelection: {
|
|
52
53
|
type: Boolean,
|
|
53
54
|
default: true
|
|
55
|
+
},
|
|
56
|
+
filters: {
|
|
57
|
+
type: Array
|
|
54
58
|
}
|
|
55
59
|
},
|
|
56
60
|
created() {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<files :selectedFiles.sync="selectedFiles"
|
|
6
6
|
:resultsFormFactor="formFactor"
|
|
7
|
+
:filters="filters"
|
|
7
8
|
routePath="/ccm/system/file/chooser/recent"
|
|
8
9
|
:multipleSelection="multipleSelection"/>
|
|
9
10
|
</div>
|
|
@@ -37,6 +38,9 @@ export default {
|
|
|
37
38
|
multipleSelection: {
|
|
38
39
|
type: Boolean,
|
|
39
40
|
default: true
|
|
41
|
+
},
|
|
42
|
+
filters: {
|
|
43
|
+
type: Array
|
|
40
44
|
}
|
|
41
45
|
},
|
|
42
46
|
watch: {
|
|
@@ -13,19 +13,20 @@
|
|
|
13
13
|
<select id="searchPresets" class="form-select search-presets-menu" v-model="activeSearchPreset">
|
|
14
14
|
<option value="" selected>{{ i18n.selectPreset }}</option>
|
|
15
15
|
<option v-for="searchPreset in searchPresets" :key="searchPreset.id" :value="searchPreset.id">
|
|
16
|
-
{{searchPreset.presetName}}
|
|
16
|
+
{{ searchPreset.presetName }}
|
|
17
17
|
</option>
|
|
18
18
|
</select>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="mt-3" v-show="activeSearchPreset">
|
|
22
22
|
<files v-if="activeSearchPreset"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
:selectedFiles.sync="selectedFiles"
|
|
24
|
+
:resultsFormFactor="formFactor"
|
|
25
|
+
:filters="filters"
|
|
26
|
+
:routePath="routePath + activeSearchPreset"
|
|
27
|
+
:enable-pagination="true"
|
|
28
|
+
:multipleSelection="multipleSelection"
|
|
29
|
+
@folderClick="activeFolder = $event"/>
|
|
29
30
|
</div>
|
|
30
31
|
</div>
|
|
31
32
|
</template>
|
|
@@ -74,6 +75,9 @@ export default {
|
|
|
74
75
|
multipleSelection: {
|
|
75
76
|
type: Boolean,
|
|
76
77
|
default: true
|
|
78
|
+
},
|
|
79
|
+
filters: {
|
|
80
|
+
type: Array
|
|
77
81
|
}
|
|
78
82
|
},
|
|
79
83
|
methods: {
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
<div class="col-md-4 ms-auto">
|
|
7
7
|
<form @submit.prevent="search">
|
|
8
8
|
<div class="ccm-header-search-form-input input-group">
|
|
9
|
-
<input type="text" class="form-control border-end-0" :placeholder="i18n.search"
|
|
9
|
+
<input type="text" class="form-control border-end-0" :placeholder="i18n.search"
|
|
10
|
+
autocomplete="false" v-model="searchText">
|
|
10
11
|
<button type="submit" class="input-group-icon">
|
|
11
12
|
<svg width="16" height="16">
|
|
12
13
|
<use xlink:href="#icon-search"/>
|
|
@@ -24,12 +25,13 @@
|
|
|
24
25
|
</div>
|
|
25
26
|
<div>
|
|
26
27
|
<files v-if="keywords"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
:selectedFiles.sync="selectedFiles"
|
|
29
|
+
:resultsFormFactor="formFactor"
|
|
30
|
+
:routePath="routePath + keywords"
|
|
31
|
+
:enable-pagination="true"
|
|
32
|
+
:enable-sort="true"
|
|
33
|
+
:filters="filters"
|
|
34
|
+
:multipleSelection="multipleSelection"/>
|
|
33
35
|
</div>
|
|
34
36
|
</div>
|
|
35
37
|
</template>
|
|
@@ -71,10 +73,13 @@ export default {
|
|
|
71
73
|
multipleSelection: {
|
|
72
74
|
type: Boolean,
|
|
73
75
|
default: true
|
|
76
|
+
},
|
|
77
|
+
filters: {
|
|
78
|
+
type: Array
|
|
74
79
|
}
|
|
75
80
|
},
|
|
76
81
|
methods: {
|
|
77
|
-
search
|
|
82
|
+
search() {
|
|
78
83
|
this.keywords = this.searchText
|
|
79
84
|
}
|
|
80
85
|
},
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
:selectedFiles.sync="selectedFiles"
|
|
35
35
|
:resultsFormFactor.sync="resultsFormFactor"
|
|
36
36
|
:filesReadyToUpload.sync="filesReadyToUpload"
|
|
37
|
+
:filters="filters"
|
|
38
|
+
@upload-complete="activateTabByKey('recent-uploads')"
|
|
37
39
|
ref="c"
|
|
38
40
|
/>
|
|
39
41
|
</transition>
|
|
@@ -125,6 +127,9 @@ export default {
|
|
|
125
127
|
multipleSelection: {
|
|
126
128
|
type: Boolean,
|
|
127
129
|
default: true
|
|
130
|
+
},
|
|
131
|
+
filters: {
|
|
132
|
+
type: Array
|
|
128
133
|
}
|
|
129
134
|
},
|
|
130
135
|
created() {
|
|
@@ -192,6 +197,19 @@ export default {
|
|
|
192
197
|
isChooseFilesMode() {
|
|
193
198
|
return this.activeNavItem.componentKey !== 'file-upload' && this.activeNavItem.componentKey !== 'external-file-provider'
|
|
194
199
|
},
|
|
200
|
+
activateTabByKey(key) {
|
|
201
|
+
var my = this
|
|
202
|
+
this.choosers.forEach(function(chooser) {
|
|
203
|
+
if (chooser.id === key) {
|
|
204
|
+
my.activateTab(chooser)
|
|
205
|
+
}
|
|
206
|
+
})
|
|
207
|
+
this.uploaders.forEach(function(uploader) {
|
|
208
|
+
if (uploader.id === key) {
|
|
209
|
+
my.activateTab(uploader)
|
|
210
|
+
}
|
|
211
|
+
})
|
|
212
|
+
},
|
|
195
213
|
activateTab(item) {
|
|
196
214
|
this.activeNavItem = item
|
|
197
215
|
|
|
@@ -131,7 +131,8 @@ export default {
|
|
|
131
131
|
me.uploadedFiles.forEach(function(file) {
|
|
132
132
|
fileIds.push(file.fID)
|
|
133
133
|
})
|
|
134
|
-
|
|
134
|
+
// Instead of firing this event let's use uploadComplete() below to re-select the Recent Uploads tab.
|
|
135
|
+
// ConcreteEvent.publish('FileManagerSelectFile', { fID: fileIds })
|
|
135
136
|
me.uploadedFiles = []
|
|
136
137
|
}
|
|
137
138
|
me.uploadComplete()
|
|
@@ -222,7 +223,7 @@ export default {
|
|
|
222
223
|
this.dropzone.removeAllFiles(true)
|
|
223
224
|
},
|
|
224
225
|
uploadComplete() {
|
|
225
|
-
this.$emit('
|
|
226
|
+
this.$emit('upload-complete')
|
|
226
227
|
|
|
227
228
|
ConcreteAlert.notify({
|
|
228
229
|
title: 'Complete',
|
|
@@ -52,6 +52,9 @@ export default {
|
|
|
52
52
|
},
|
|
53
53
|
chooseText: {
|
|
54
54
|
type: String
|
|
55
|
+
},
|
|
56
|
+
filters: {
|
|
57
|
+
type: Array
|
|
55
58
|
}
|
|
56
59
|
},
|
|
57
60
|
watch: {
|
|
@@ -84,9 +87,13 @@ export default {
|
|
|
84
87
|
},
|
|
85
88
|
openChooser: function() {
|
|
86
89
|
var my = this
|
|
90
|
+
var options = {}
|
|
91
|
+
if (my.filters) {
|
|
92
|
+
options.filters = my.filters
|
|
93
|
+
}
|
|
87
94
|
ConcreteFileManager.launchDialog(function(r) {
|
|
88
95
|
my.loadFile(r.fID)
|
|
89
|
-
})
|
|
96
|
+
}, options)
|
|
90
97
|
},
|
|
91
98
|
loadFile(fileId) {
|
|
92
99
|
var my = this
|
|
@@ -17,14 +17,7 @@ class ConcreteFileManager {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
if (options.filters.length > 0) {
|
|
20
|
-
data
|
|
21
|
-
|
|
22
|
-
for (i = 0; i < options.filters.length; i++) {
|
|
23
|
-
var filter = $.extend(true, {}, options.filters[i]) // clone
|
|
24
|
-
data['field[]'].push(filter.field)
|
|
25
|
-
delete (filter.field)
|
|
26
|
-
$.extend(data, filter) // add all remaining fields to the data
|
|
27
|
-
}
|
|
20
|
+
data.filters = options.filters
|
|
28
21
|
}
|
|
29
22
|
|
|
30
23
|
$.fn.dialog.open({
|
package/package.json
CHANGED