@concretecms/bedrock 1.0.2 → 1.1.2
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/codeStyles/Project.xml +33 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/assets/account/js/frontend/components/Avatar/Cropper.js +12 -4
- package/assets/bedrock/scss/_theme-grid.scss +4 -2
- package/assets/ckeditor/js/concrete/link.js +5 -4
- package/assets/ckeditor/js/concrete/styles.js +2 -2
- package/assets/cms/components/BoardInstanceRule.vue +16 -3
- package/assets/cms/components/BoardInstanceRuleList.vue +24 -7
- package/assets/cms/components/CompletedProcessList.vue +28 -9
- package/assets/cms/components/Icon.vue +16 -1
- package/assets/cms/components/Pagination.vue +45 -8
- package/assets/cms/components/customizer/ColorPageCustomizerWidget.vue +7 -0
- package/assets/cms/components/customizer/FontWeightPageCustomizerWidget.vue +7 -1
- package/assets/cms/components/customizer/ImagePageCustomizerWidget.vue +13 -3
- package/assets/cms/components/customizer/TextTransformPageCustomizerWidget.vue +7 -1
- package/assets/cms/components/customizer/ThemeCustomizer.vue +36 -15
- package/assets/cms/components/customizer/ThemeCustomizerPreview.vue +11 -1
- package/assets/cms/components/customizer/TypePageCustomizerWidget.vue +21 -6
- package/assets/cms/components/express/Selector.vue +21 -6
- package/assets/cms/components/file-manager/Chooser/ExternalFileProvider.vue +13 -2
- package/assets/cms/components/file-manager/Chooser/FileManager.vue +75 -72
- package/assets/cms/components/file-manager/Chooser/FileSets.vue +24 -9
- package/assets/cms/components/file-manager/Chooser/FileUpload.vue +3 -1
- package/assets/cms/components/file-manager/Chooser/Files.vue +57 -9
- 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 +24 -9
- package/assets/cms/components/file-manager/Chooser/Search.vue +25 -9
- package/assets/cms/components/file-manager/Chooser.vue +82 -8
- 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/ConcreteFileDirectoryInput.vue +17 -4
- package/assets/cms/components/form/ConcreteFileInput.vue +8 -1
- package/assets/cms/components/gallery/GalleryEdit.vue +20 -5
- package/assets/cms/components/gallery/ImageDetail.vue +22 -5
- package/assets/cms/components/groups/Chooser.vue +17 -4
- package/assets/cms/components/page/Chooser/ChooserSearch.vue +15 -2
- package/assets/cms/components/page/PageList.vue +15 -3
- package/assets/cms/components/user/Chooser/Search.vue +15 -2
- package/assets/cms/components/user/Chooser/Users.vue +19 -5
- package/assets/cms/components/user/Chooser.vue +15 -2
- package/assets/cms/js/edit-mode/layouts.js +4 -4
- package/assets/cms/js/edit-mode/style-customizer/color.js +10 -3
- package/assets/cms/js/edit-mode/style-customizer/custom.js +1 -1
- package/assets/cms/js/edit-mode/style-customizer/typography.js +8 -1
- package/assets/cms/js/file-manager/file-manager.js +1 -8
- package/assets/cms/scss/_inline-toolbar.scss +10 -179
- package/assets/cms/scss/panels/_shared.scss +1 -1
- package/package.json +2 -2
- package/.idea/dataSources.local.xml +0 -4
- package/.idea/misc.xml +0 -6
- package/.idea/workspace.xml +0 -317
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
@click="$emit('delete')"
|
|
11
11
|
type="outline"
|
|
12
12
|
>
|
|
13
|
-
|
|
13
|
+
{{ i18n.removeFromGallery }}
|
|
14
14
|
</IconButton>
|
|
15
|
-
<!-- <button type="button" class="btn btn-secondary" @click="$emit('delete')">
|
|
15
|
+
<!-- <button type="button" class="btn btn-secondary" @click="$emit('delete')">{{ i18n.removeFromGallery }}</button> -->
|
|
16
16
|
</div>
|
|
17
17
|
<div class="image-details">
|
|
18
18
|
<section>
|
|
19
|
-
<strong>
|
|
19
|
+
<strong>{{ i18n.customAttributes }}</strong>
|
|
20
20
|
|
|
21
21
|
<p class="image-title">{{this.$props.image.title}}</p>
|
|
22
22
|
<p class="image-description">{{this.$props.image.description}}</p>
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
type="outline"
|
|
33
33
|
v-if="$props.image.detailUrl"
|
|
34
34
|
>
|
|
35
|
-
|
|
35
|
+
{{ i18n.editAttributes }}
|
|
36
36
|
</IconButton>
|
|
37
37
|
</div>
|
|
38
38
|
</section>
|
|
39
39
|
|
|
40
40
|
<section v-if="!this.$props.image.displayChoices.length">
|
|
41
41
|
<div class="mb-2">
|
|
42
|
-
<strong>
|
|
42
|
+
<strong>{{ i18n.displayOptions }}</strong>
|
|
43
43
|
</div>
|
|
44
44
|
<div v-for="(choice, index) in this.$props.image.displayChoices" :key="index">
|
|
45
45
|
<input v-if="choice.type === 'text'"
|
|
@@ -123,6 +123,23 @@ export default {
|
|
|
123
123
|
IconButton,
|
|
124
124
|
...IconButton.components
|
|
125
125
|
},
|
|
126
|
+
data: () => ({
|
|
127
|
+
i18n: {
|
|
128
|
+
removeFromGallery: 'Remove from Gallery',
|
|
129
|
+
customAttributes: 'Custom Attributes',
|
|
130
|
+
editAttributes: 'Edit Attributes',
|
|
131
|
+
displayOptions: 'Display Options'
|
|
132
|
+
}
|
|
133
|
+
}),
|
|
134
|
+
mounted() {
|
|
135
|
+
if (window.ccmi18n_gallery) {
|
|
136
|
+
for (const key in this.i18n) {
|
|
137
|
+
if (window.ccmi18n_gallery[key]) {
|
|
138
|
+
this.i18n[key] = window.ccmi18n_gallery[key]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
},
|
|
126
143
|
props: {
|
|
127
144
|
image: {
|
|
128
145
|
type: Object,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="mb-3 ccm-header-search-form">
|
|
4
4
|
<form method="get" @submit="performSearch">
|
|
5
5
|
<div class="input-group">
|
|
6
|
-
<input type="search" v-model="searchKeywords" placeholder="
|
|
6
|
+
<input type="search" v-model="searchKeywords" :placeholder="i18n.search" class="form-control border-end-0" autocomplete="off">
|
|
7
7
|
<button type="submit" class="input-group-icon">
|
|
8
8
|
<svg width="16" height="16">
|
|
9
9
|
<use xlink:href="#icon-search"/>
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
<table class="border-top ccm-search-results-table">
|
|
19
19
|
<thead>
|
|
20
20
|
<tr>
|
|
21
|
-
<th>
|
|
22
|
-
<th class="w-100">
|
|
21
|
+
<th>{{ i18n.id }}</th>
|
|
22
|
+
<th class="w-100">{{ i18n.name }}</th>
|
|
23
23
|
</tr>
|
|
24
24
|
</thead>
|
|
25
25
|
<tbody>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
</table>
|
|
32
32
|
</div>
|
|
33
33
|
<div v-else>
|
|
34
|
-
|
|
34
|
+
{{ i18n.noResults }}
|
|
35
35
|
</div>
|
|
36
36
|
</div>
|
|
37
37
|
<div v-show="searchSubmitted === 'searching'">
|
|
@@ -65,6 +65,12 @@ export default {
|
|
|
65
65
|
},
|
|
66
66
|
data() {
|
|
67
67
|
return {
|
|
68
|
+
i18n: {
|
|
69
|
+
search: 'Search',
|
|
70
|
+
id: 'ID',
|
|
71
|
+
name: 'Name',
|
|
72
|
+
noResults: 'No results found.'
|
|
73
|
+
},
|
|
68
74
|
searchKeywords: '',
|
|
69
75
|
searchResults: [],
|
|
70
76
|
searchSubmitted: false,
|
|
@@ -91,6 +97,13 @@ export default {
|
|
|
91
97
|
}
|
|
92
98
|
},
|
|
93
99
|
mounted() {
|
|
100
|
+
if (window.ccmi18n_groups) {
|
|
101
|
+
for (const key in this.i18n) {
|
|
102
|
+
if (window.ccmi18n_groups[key]) {
|
|
103
|
+
this.i18n[key] = window.ccmi18n_groups[key]
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
94
107
|
var my = this
|
|
95
108
|
new ConcreteAjaxRequest({
|
|
96
109
|
method: 'POST',
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div class="col-md-4 ms-auto">
|
|
5
5
|
<form @submit.prevent="search">
|
|
6
6
|
<div class="ccm-header-search-form-input input-group">
|
|
7
|
-
<input type="text" class="form-control border-end-0" placeholder="
|
|
7
|
+
<input type="text" class="form-control border-end-0" :placeholder="i18n.search" autocomplete="false" v-model="searchText">
|
|
8
8
|
<button type="submit" class="input-group-icon">
|
|
9
9
|
<svg width="16" height="16">
|
|
10
10
|
<use xlink:href="#icon-search"/>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<span class="search-icon my-4">
|
|
19
19
|
<Icon icon="search" type="fas" color="#f4f4f4"/>
|
|
20
20
|
</span>
|
|
21
|
-
<p><b>
|
|
21
|
+
<p><b>{{ i18n.initialPageSearchChooserTip }}</b></p>
|
|
22
22
|
</div>
|
|
23
23
|
<div v-if="keywords">
|
|
24
24
|
<PageList
|
|
@@ -37,6 +37,10 @@ import PageList from './../PageList'
|
|
|
37
37
|
export default {
|
|
38
38
|
components: { Icon, PageList },
|
|
39
39
|
data: () => ({
|
|
40
|
+
i18n: {
|
|
41
|
+
search: 'Search',
|
|
42
|
+
initialPageSearchChooserTip: "Let's get some info on what you're looking for."
|
|
43
|
+
},
|
|
40
44
|
searchText: '',
|
|
41
45
|
keywords: '',
|
|
42
46
|
routePath: '/ccm/system/page/chooser/search/'
|
|
@@ -52,6 +56,15 @@ export default {
|
|
|
52
56
|
title: page.name
|
|
53
57
|
})
|
|
54
58
|
}
|
|
59
|
+
},
|
|
60
|
+
mounted() {
|
|
61
|
+
if (window.ccmi18n_sitemap) {
|
|
62
|
+
for (const key in this.i18n) {
|
|
63
|
+
if (window.ccmi18n_sitemap[key]) {
|
|
64
|
+
this.i18n[key] = window.ccmi18n_sitemap[key]
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
55
68
|
}
|
|
56
69
|
}
|
|
57
70
|
</script>
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
<thead>
|
|
9
9
|
<tr>
|
|
10
10
|
<th><span>Type</span></th>
|
|
11
|
-
<th :class="orderBy === 'cv.cvName' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvName', 'asc', $event)">
|
|
12
|
-
<th :class="orderBy === 'cv.cvDatePublic' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvDatePublic', 'asc', $event)">
|
|
13
|
-
<th :class="orderBy === 'c.cDateModified' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('c.cDateModified', 'desc', $event)">
|
|
11
|
+
<th :class="orderBy === 'cv.cvName' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvName', 'asc', $event)">{{ i118n.name }}</a></th>
|
|
12
|
+
<th :class="orderBy === 'cv.cvDatePublic' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('cv.cvDatePublic', 'asc', $event)">{{ i18n.date }}</a></th>
|
|
13
|
+
<th :class="orderBy === 'c.cDateModified' ? 'ccm-results-list-active-sort-' + orderByDirection : ''"><a href="#" @click="sortResults('c.cDateModified', 'desc', $event)">{{ i18n.lastModified }}</a></th>
|
|
14
14
|
<th><span>Author</span></th>
|
|
15
15
|
</tr>
|
|
16
16
|
</thead>
|
|
@@ -58,6 +58,11 @@ import Pagination from '../Pagination'
|
|
|
58
58
|
export default {
|
|
59
59
|
components: { Pagination },
|
|
60
60
|
data: () => ({
|
|
61
|
+
i18n: {
|
|
62
|
+
name: 'Name',
|
|
63
|
+
date: 'Date',
|
|
64
|
+
lastModified: 'Last Modified'
|
|
65
|
+
},
|
|
61
66
|
currentPage: -1,
|
|
62
67
|
latestSearchID: null,
|
|
63
68
|
mouseOver: 0,
|
|
@@ -190,6 +195,13 @@ export default {
|
|
|
190
195
|
}
|
|
191
196
|
},
|
|
192
197
|
mounted () {
|
|
198
|
+
if (window.ccmi18n_sitemap) {
|
|
199
|
+
for (const key in this.i18n) {
|
|
200
|
+
if (window.ccmi18n_sitemap[key]) {
|
|
201
|
+
this.i18n[key] = window.ccmi18n_sitemap[key]
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
193
205
|
this.fetchPages()
|
|
194
206
|
}
|
|
195
207
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div class="col-md-6 ms-auto">
|
|
5
5
|
<form @submit.prevent="search">
|
|
6
6
|
<div class="ccm-header-search-form-input input-group">
|
|
7
|
-
<input type="text" class="form-control border-end-0" placeholder="
|
|
7
|
+
<input type="text" class="form-control border-end-0" :placeholder="i18n.search" autocomplete="false" v-model="searchText">
|
|
8
8
|
<button type="submit" class="input-group-icon">
|
|
9
9
|
<svg width="16" height="16">
|
|
10
10
|
<use xlink:href="#icon-search"/>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<span class="search-icon my-4">
|
|
19
19
|
<Icon icon="search" type="fas" color="#f4f4f4"/>
|
|
20
20
|
</span>
|
|
21
|
-
<p><b>
|
|
21
|
+
<p><b>{{ i18n.initialUserSearchChooserTip }}</b></p>
|
|
22
22
|
</div>
|
|
23
23
|
<div>
|
|
24
24
|
<users v-if="keywords"
|
|
@@ -39,6 +39,10 @@ export default {
|
|
|
39
39
|
Users
|
|
40
40
|
},
|
|
41
41
|
data: () => ({
|
|
42
|
+
i18n: {
|
|
43
|
+
search: 'Search',
|
|
44
|
+
initialUserSearchChooserTip: "Let's get some info on what you're looking for."
|
|
45
|
+
},
|
|
42
46
|
keywords: '',
|
|
43
47
|
searchText: '',
|
|
44
48
|
selectedUsers: [],
|
|
@@ -59,6 +63,15 @@ export default {
|
|
|
59
63
|
selectedUsers: function(value) {
|
|
60
64
|
this.$emit('update:selectedUsers', value)
|
|
61
65
|
}
|
|
66
|
+
},
|
|
67
|
+
mounted() {
|
|
68
|
+
if (window.ccmi18n_users) {
|
|
69
|
+
for (const key in this.i18n) {
|
|
70
|
+
if (window.ccmi18n_users[key]) {
|
|
71
|
+
this.i18n[key] = window.ccmi18n_users[key]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
62
75
|
}
|
|
63
76
|
}
|
|
64
77
|
</script>
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<thead>
|
|
7
7
|
<tr>
|
|
8
8
|
<th></th>
|
|
9
|
-
<th @click="sortBy('name')" :class="getSortColumnClassName('name')"><a href="javascript:void(0)">
|
|
10
|
-
<th @click="sortBy('email')" :class="getSortColumnClassName('email')"><a href="javascript:void(0)">
|
|
11
|
-
<th @click="sortBy('dateAdded')" :class="getSortColumnClassName('dateAdded')"><a href="javascript:void(0)">
|
|
12
|
-
<th>
|
|
13
|
-
<th @click="sortBy('totalLogins')" :class="getSortColumnClassName('totalLogins')"><a href="javascript:void(0)"
|
|
9
|
+
<th @click="sortBy('name')" :class="getSortColumnClassName('name')"><a href="javascript:void(0)">{{ i18n.username }}</a></th>
|
|
10
|
+
<th @click="sortBy('email')" :class="getSortColumnClassName('email')"><a href="javascript:void(0)">{{ i18n.email }}</a></th>
|
|
11
|
+
<th @click="sortBy('dateAdded')" :class="getSortColumnClassName('dateAdded')"><a href="javascript:void(0)">{{ i18n.date }}</a></th>
|
|
12
|
+
<th>{{ i18n.status }}</th>
|
|
13
|
+
<th @click="sortBy('totalLogins')" :class="getSortColumnClassName('totalLogins')"><a href="javascript:void(0)">{{ i18n.numLogins }}</a></th>
|
|
14
14
|
</tr>
|
|
15
15
|
</thead>
|
|
16
16
|
<tbody>
|
|
@@ -36,6 +36,13 @@
|
|
|
36
36
|
export default {
|
|
37
37
|
data() {
|
|
38
38
|
return {
|
|
39
|
+
i18n: {
|
|
40
|
+
username: 'Username',
|
|
41
|
+
email: 'Email',
|
|
42
|
+
date: 'Date',
|
|
43
|
+
status: 'Status',
|
|
44
|
+
numLogins: '# Logins'
|
|
45
|
+
},
|
|
39
46
|
isLoading: true,
|
|
40
47
|
userList: [],
|
|
41
48
|
selectedUsers: [],
|
|
@@ -111,6 +118,13 @@ export default {
|
|
|
111
118
|
}
|
|
112
119
|
},
|
|
113
120
|
mounted() {
|
|
121
|
+
if (window.ccmi18n_users) {
|
|
122
|
+
for (const key in this.i18n) {
|
|
123
|
+
if (window.ccmi18n_users[key]) {
|
|
124
|
+
this.i18n[key] = window.ccmi18n_users[key]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
114
128
|
this.getUsers()
|
|
115
129
|
}
|
|
116
130
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<search :selectedUsers.sync="selectedUsers" :multiple-selection="multipleSelection"/>
|
|
4
4
|
<div class="dialog-buttons">
|
|
5
|
-
<button class="btn btn-secondary" data-dialog-action="cancel">
|
|
6
|
-
<button type="button" @click="chooseUsers" :disabled="selectedUsers.length === 0" class="btn btn-primary">
|
|
5
|
+
<button class="btn btn-secondary" data-dialog-action="cancel">{{ i18n.cancel }}</button>
|
|
6
|
+
<button type="button" @click="chooseUsers" :disabled="selectedUsers.length === 0" class="btn btn-primary">{{ i18n.choose }}</button>
|
|
7
7
|
</div>
|
|
8
8
|
</div>
|
|
9
9
|
</template>
|
|
@@ -25,6 +25,10 @@ export default {
|
|
|
25
25
|
},
|
|
26
26
|
data() {
|
|
27
27
|
return {
|
|
28
|
+
i18n: {
|
|
29
|
+
cancel: 'Cancel',
|
|
30
|
+
choose: 'Choose'
|
|
31
|
+
},
|
|
28
32
|
selectedUsers: []
|
|
29
33
|
}
|
|
30
34
|
},
|
|
@@ -32,6 +36,15 @@ export default {
|
|
|
32
36
|
chooseUsers() {
|
|
33
37
|
window.ConcreteEvent.publish('UserSearchDialogSelectUser.core', { users: this.selectedUsers })
|
|
34
38
|
}
|
|
39
|
+
},
|
|
40
|
+
mounted() {
|
|
41
|
+
if (window.ccmi18n_users) {
|
|
42
|
+
for (const key in this.i18n) {
|
|
43
|
+
if (window.ccmi18n_users[key]) {
|
|
44
|
+
this.i18n[key] = window.ccmi18n_users[key]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
35
48
|
}
|
|
36
49
|
}
|
|
37
50
|
</script>
|
|
@@ -173,8 +173,8 @@ ConcreteLayout.prototype._setupFormEvents = function () {
|
|
|
173
173
|
ConcreteLayout.prototype.buildThemeGridGrid = function () {
|
|
174
174
|
this.$element.html('')
|
|
175
175
|
|
|
176
|
-
var row =
|
|
177
|
-
row +=
|
|
176
|
+
var row = '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
|
|
177
|
+
row += this.options.rowstart
|
|
178
178
|
|
|
179
179
|
var columnSpans = this._getThemeGridColumnSpan(this.columns)
|
|
180
180
|
$.each(columnSpans, function (i, spanInfo) {
|
|
@@ -213,8 +213,8 @@ ConcreteLayout.prototype._updateThemeGridView = function (presetLoad) {
|
|
|
213
213
|
|
|
214
214
|
ConcreteLayout.prototype._buildThemeGridGridFromPresetColumns = function (arLayoutColumns) {
|
|
215
215
|
this.$element.html('')
|
|
216
|
-
var row =
|
|
217
|
-
row +=
|
|
216
|
+
var row = '<div id="ccm-theme-grid-edit-mode-row-wrapper">'
|
|
217
|
+
row += this.options.rowstart
|
|
218
218
|
$.each(arLayoutColumns, function (i, column) {
|
|
219
219
|
var columnHTML = '<div id="ccm-edit-layout-column-' + i + '" class="ccm-theme-grid-column" ' +
|
|
220
220
|
'data-offset="' + column.arLayoutColumnOffset + '" data-span="' + column.arLayoutColumnSpan + '"><div class="ccm-layout-column-highlight">' +
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
function ConcreteStyleCustomizerColorPicker($element, options) {
|
|
4
4
|
var my = this
|
|
5
5
|
my.$element = $element
|
|
6
|
+
const defaulti18n = window.ccmi18n_styleCustomizer || null
|
|
6
7
|
my.options = $.extend(true, {
|
|
7
8
|
initialColor: '',
|
|
8
9
|
i18n: {
|
|
9
|
-
cancel: 'Cancel',
|
|
10
|
-
choose: 'Choose',
|
|
11
|
-
clear: '
|
|
10
|
+
cancel: defaulti18n && defaulti18n.cancel ? defaulti18n.cancel : 'Cancel',
|
|
11
|
+
choose: defaulti18n && defaulti18n.choose ? defaulti18n.choose : 'Choose',
|
|
12
|
+
clear: defaulti18n && defaulti18n.clearColorSelection ? defaulti18n.clearColorSelection : 'Clear Color Selection',
|
|
13
|
+
noColorSelected: defaulti18n && defaulti18n.noColorSelected ? defaulti18n.noColorSelected : 'No Color Selected',
|
|
14
|
+
togglePaletteMore: defaulti18n && defaulti18n.togglePaletteMore ? defaulti18n.togglePaletteMore : 'More',
|
|
15
|
+
togglePaletteLess: defaulti18n && defaulti18n.togglePaletteLess ? defaulti18n.togglePaletteLess : 'Less'
|
|
12
16
|
}
|
|
13
17
|
}, options || {})
|
|
14
18
|
$element.spectrum({
|
|
@@ -22,6 +26,9 @@ function ConcreteStyleCustomizerColorPicker($element, options) {
|
|
|
22
26
|
cancelText: my.options.i18n.cancel,
|
|
23
27
|
chooseText: my.options.i18n.choose,
|
|
24
28
|
clearText: my.options.i18n.clear,
|
|
29
|
+
noColorSelectedText: my.options.i18n.noColorSelected,
|
|
30
|
+
togglePaletteMoreText: my.options.i18n.togglePaletteMore,
|
|
31
|
+
togglePaletteLessText: my.options.i18n.togglePaletteLess,
|
|
25
32
|
change: function() {
|
|
26
33
|
ConcreteEvent.publish('StyleCustomizerControlUpdate')
|
|
27
34
|
}
|
|
@@ -16,7 +16,7 @@ function ConcreteStyleCustomizerCustomCss($element, options) {
|
|
|
16
16
|
url: ''
|
|
17
17
|
},
|
|
18
18
|
i18n: {
|
|
19
|
-
editTitle: 'Custom CSS'
|
|
19
|
+
editTitle: window.ccmi18n_styleCustomizer && window.ccmi18n_styleCustomizer.customCSS ? window.ccmi18n_styleCustomizer.customCSS : 'Custom CSS'
|
|
20
20
|
}
|
|
21
21
|
}, options || {})
|
|
22
22
|
$element
|
|
@@ -46,12 +46,19 @@ function ConcreteTypographySelector($element, options) {
|
|
|
46
46
|
})
|
|
47
47
|
|
|
48
48
|
my.$colorpicker = my.$widget.find('input[data-style-customizer-field=color]')
|
|
49
|
+
const i18n = window.ccmi18n_styleCustomizer || null
|
|
49
50
|
my.$colorpicker.spectrum({
|
|
50
51
|
preferredFormat: 'rgb',
|
|
51
52
|
showAlpha: true,
|
|
52
53
|
className: 'ccm-widget-colorpicker',
|
|
53
54
|
showInitial: true,
|
|
54
|
-
showInput: true
|
|
55
|
+
showInput: true,
|
|
56
|
+
cancelText: i18n && i18n.cancel ? i18n.cancel : 'Cancel',
|
|
57
|
+
chooseText: i18n && i18n.choose ? i18n.choose : 'Choose',
|
|
58
|
+
clearText: i18n && i18n.clearColorSelection ? i18n.clearColorSelection : 'Clear Color Selection',
|
|
59
|
+
noColorSelectedText: i18n && i18n.noColorSelected ? i18n.noColorSelected : 'No Color Selected',
|
|
60
|
+
togglePaletteMoreText: i18n && i18n.togglePaletteMore ? i18n.togglePaletteMore : 'More',
|
|
61
|
+
togglePaletteLessText: i18n && i18n.togglePaletteLess ? i18n.togglePaletteLess : 'Less'
|
|
55
62
|
})
|
|
56
63
|
|
|
57
64
|
my.$fontMenu.on('change', function() {
|
|
@@ -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({
|
|
@@ -1,181 +1,7 @@
|
|
|
1
|
-
.ccm-inline-toolbar {
|
|
2
|
-
border-radius: 3px;
|
|
3
|
-
box-shadow: 0 0 6px rgba(200, 200, 200, 0.5);
|
|
4
|
-
font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif !important;
|
|
5
|
-
height: 31px;
|
|
6
|
-
line-height: 0;
|
|
7
|
-
list-style: none;
|
|
8
|
-
margin: 0 !important;
|
|
9
|
-
opacity: 0;
|
|
10
|
-
padding: 0 !important;
|
|
11
|
-
position: relative;
|
|
12
|
-
z-index: $index-level-inline-toolbar;
|
|
13
|
-
|
|
14
|
-
/* stylelint-disable selector-class-pattern */
|
|
15
|
-
&.redactor_toolbar {
|
|
16
|
-
background: transparent;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/* stylelint-enable selector-class-pattern */
|
|
20
|
-
|
|
21
|
-
> li {
|
|
22
|
-
background: #fff;
|
|
23
|
-
border-bottom: 1px solid #c4c4c4;
|
|
24
|
-
border-right: 1px solid #e1e1e1;
|
|
25
|
-
border-top: 1px solid #c4c4c4;
|
|
26
|
-
display: table-cell;
|
|
27
|
-
font-size: $font-size-base !important;
|
|
28
|
-
list-style: none;
|
|
29
|
-
outline: none;
|
|
30
|
-
padding: 3px 8px;
|
|
31
|
-
vertical-align: middle;
|
|
32
|
-
|
|
33
|
-
label {
|
|
34
|
-
display: inline;
|
|
35
|
-
font-size: $font-size-sm;
|
|
36
|
-
margin: 0 0 8px;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&.ccm-inline-toolbar-inverse-cell {
|
|
40
|
-
background-color: #555;
|
|
41
|
-
|
|
42
|
-
a {
|
|
43
|
-
color: #fff;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
> li:first-child {
|
|
51
|
-
border-bottom-left-radius: 3px;
|
|
52
|
-
border-left: 1px solid #c4c4c4;
|
|
53
|
-
border-top-left-radius: 3px;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
> li:last-child {
|
|
57
|
-
border-bottom-right-radius: 3px;
|
|
58
|
-
border-right: 0;
|
|
59
|
-
border-top-right-radius: 3px;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
> li.ccm-inline-toolbar-icon-cell {
|
|
63
|
-
@include gradient-y(#fff, #f1f1f1);
|
|
64
|
-
padding: 0;
|
|
65
|
-
position: relative;
|
|
66
|
-
text-align: center;
|
|
67
|
-
width: 30px;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
> li.ccm-inline-toolbar-icon-cell > a {
|
|
71
|
-
color: #333;
|
|
72
|
-
cursor: pointer;
|
|
73
|
-
display: block;
|
|
74
|
-
height: 100%;
|
|
75
|
-
opacity: 0.7;
|
|
76
|
-
text-decoration: none;
|
|
77
|
-
|
|
78
|
-
i {
|
|
79
|
-
display: inline-block;
|
|
80
|
-
font-size: $font-size-sm;
|
|
81
|
-
line-height: 33px;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
> li.ccm-inline-toolbar-icon-cell.ccm-inline-toolbar-icon-selected {
|
|
86
|
-
@include gradient-y(#e1e1e1, #cbcbcb);
|
|
87
|
-
border-right: 1px solid #c5c5c5;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
> li.ccm-inline-toolbar-icon-cell.ccm-inline-toolbar-icon-selected > a {
|
|
91
|
-
opacity: 1;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
> li.ccm-inline-toolbar-icon-cell > a:hover {
|
|
95
|
-
opacity: 1;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
> li.ccm-inline-toolbar-button {
|
|
99
|
-
background: transparent;
|
|
100
|
-
|
|
101
|
-
padding: 0;
|
|
102
|
-
|
|
103
|
-
button {
|
|
104
|
-
background: #f3f3f3;
|
|
105
|
-
border: 0;
|
|
106
|
-
border-radius: 0;
|
|
107
|
-
color: #333;
|
|
108
|
-
display: inline-block;
|
|
109
|
-
font-size: $font-size-sm;
|
|
110
|
-
height: 33px;
|
|
111
|
-
padding: 0 20px;
|
|
112
|
-
text-align: center;
|
|
113
|
-
width: 100%;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
> li.ccm-inline-toolbar-select {
|
|
118
|
-
select {
|
|
119
|
-
background-position: right 5px top 5px;
|
|
120
|
-
border: 0;
|
|
121
|
-
height: 27px;
|
|
122
|
-
padding: 2px 28px 2px 2px;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
> li.ccm-inline-toolbar-button-cancel button {
|
|
127
|
-
@include gradient-y(#f3f3f3, #eaeaea);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
> li.ccm-inline-toolbar-button-cancel button:hover {
|
|
131
|
-
background-color: #fff;
|
|
132
|
-
background-image: none;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
> li.ccm-inline-toolbar-button-save {
|
|
136
|
-
border: 1px solid #007cce !important;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
> li.ccm-inline-toolbar-button-save button {
|
|
140
|
-
@include gradient-y(#09f, #0094f6);
|
|
141
|
-
background: #09f;
|
|
142
|
-
color: #fff;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
> li.ccm-inline-toolbar-button-save button:hover {
|
|
146
|
-
background-color: #007cce;
|
|
147
|
-
background-image: none;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
li.ccm-inline-toolbar-icon-cell > div.ccm-dropdown-menu {
|
|
151
|
-
display: none;
|
|
152
|
-
|
|
153
|
-
&::before {
|
|
154
|
-
border-color: transparent transparent #000;
|
|
155
|
-
border-style: solid;
|
|
156
|
-
border-width: 0 5px 5px;
|
|
157
|
-
content: ' ';
|
|
158
|
-
height: 0;
|
|
159
|
-
left: 11px;
|
|
160
|
-
position: absolute;
|
|
161
|
-
top: -5px;
|
|
162
|
-
width: 0;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
&.active {
|
|
166
|
-
box-shadow: 2px 2px 5px 0 rgba(0, 0, 0, 0.43);
|
|
167
|
-
display: block;
|
|
168
|
-
margin-top: 1px;
|
|
169
|
-
position: absolute;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
1
|
#ccm-inline-toolbar-container {
|
|
175
2
|
box-sizing: border-box;
|
|
176
3
|
left: 0;
|
|
177
4
|
opacity: 0;
|
|
178
|
-
padding: 10px 20px 0;
|
|
179
5
|
position: absolute;
|
|
180
6
|
top: 0;
|
|
181
7
|
transition: opacity 0.3s ease-in;
|
|
@@ -185,10 +11,15 @@
|
|
|
185
11
|
|
|
186
12
|
#ccm-inline-toolbar-container.ccm-inline-toolbar-affixed {
|
|
187
13
|
background-color: rgba(0, 0, 0, 0.4);
|
|
14
|
+
padding: 10px 0;
|
|
188
15
|
position: fixed;
|
|
189
16
|
top: 0 !important;
|
|
190
17
|
}
|
|
191
18
|
|
|
19
|
+
/*
|
|
20
|
+
old customizer. delete.
|
|
21
|
+
*/
|
|
22
|
+
/*
|
|
192
23
|
.ccm-panel-left {
|
|
193
24
|
.sp-container {
|
|
194
25
|
background-color: rgba(0, 0, 0, 0.95);
|
|
@@ -309,6 +140,7 @@
|
|
|
309
140
|
}
|
|
310
141
|
|
|
311
142
|
}
|
|
143
|
+
*/
|
|
312
144
|
|
|
313
145
|
.ccm-ui {
|
|
314
146
|
div.dropdown-menu.ccm-inline-design-dropdown-menu,
|
|
@@ -470,15 +302,13 @@
|
|
|
470
302
|
}
|
|
471
303
|
|
|
472
304
|
/* new styles for new the area and block style customizer toolbar */
|
|
473
|
-
.ccm-
|
|
474
|
-
border-radius:
|
|
475
|
-
|
|
476
|
-
font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif !important;
|
|
305
|
+
.ccm-inline-toolbar {
|
|
306
|
+
border-radius: 2px;
|
|
307
|
+
display: table;
|
|
477
308
|
height: 31px;
|
|
478
309
|
line-height: 0;
|
|
479
310
|
list-style: none;
|
|
480
311
|
margin: 0 !important;
|
|
481
|
-
min-width: 600px;
|
|
482
312
|
padding: 0 !important;
|
|
483
313
|
position: relative;
|
|
484
314
|
z-index: $index-level-inline-toolbar;
|
|
@@ -580,6 +410,7 @@
|
|
|
580
410
|
display: table-cell;
|
|
581
411
|
font-size: $font-size-base !important;
|
|
582
412
|
list-style: none;
|
|
413
|
+
margin: 0;
|
|
583
414
|
outline: none;
|
|
584
415
|
padding: 3px 8px;
|
|
585
416
|
vertical-align: middle;
|
|
@@ -14,12 +14,12 @@ html.ccm-panel-detail-open {
|
|
|
14
14
|
div.ccm-panel {
|
|
15
15
|
background-color: $panel-background-color;
|
|
16
16
|
height: 100%;
|
|
17
|
-
/* overflow: hidden; */ /* This causes problems with floating palettes inside the panels. So let's only apply this during transitions */
|
|
18
17
|
position: fixed;
|
|
19
18
|
top: 0;
|
|
20
19
|
user-select: none;
|
|
21
20
|
width: 320px;
|
|
22
21
|
z-index: $index-level-panel; // has to come above the detail actions wrapper
|
|
22
|
+
/* overflow: hidden; */ /* This causes problems with floating palettes inside the panels. So let's only apply this during transitions */
|
|
23
23
|
div.ccm-panel-close {
|
|
24
24
|
position: absolute;
|
|
25
25
|
right: 17px;
|