@concretecms/bedrock 1.3.7 → 1.4.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/.eslintrc.yml +2 -0
- package/assets/account/js/frontend/components/AvatarCropper.vue +159 -0
- package/assets/account/js/frontend.js +1 -1
- package/assets/account/scss/frontend/_frontend.scss +2 -0
- package/assets/account/scss/frontend/avatar/_avatar-cropper.scss +82 -0
- package/assets/account/scss/frontend/avatar/_avatar.scss +6 -0
- package/assets/bedrock/scss/_frontend.scss +0 -1
- package/assets/calendar/js/backend/duration.js +13 -13
- package/assets/calendar/js/vendor/fullcalendar.js +1 -0
- package/assets/cms/components/Announcement/Action/ExternalLinkAction.vue +25 -0
- package/assets/cms/components/Announcement/Action/GuideAction.vue +36 -0
- package/assets/cms/components/Announcement/Action/VideoAction.vue +31 -0
- package/assets/cms/components/Announcement/Broadcast.vue +63 -0
- package/assets/cms/components/Announcement/Button/ExternalLinkButton.vue +26 -0
- package/assets/cms/components/Announcement/Header/Header.vue +33 -0
- package/assets/cms/components/Announcement/Item/Item.vue +50 -0
- package/assets/cms/components/Announcement/Modal/Modal.vue +77 -0
- package/assets/cms/components/Announcement/Slide/CollectSiteInformationSlide.vue +61 -0
- package/assets/cms/components/Announcement/Slide/FeatureSlide.vue +81 -0
- package/assets/cms/components/Announcement/Slide/WelcomeSlide.vue +87 -0
- package/assets/cms/components/Help/Modal.vue +48 -0
- package/assets/cms/components/Image/ThumbnailEditor.vue +117 -0
- package/assets/cms/components/RunningProcessList.vue +6 -1
- package/assets/cms/components/customizer/FontFamilyPageCustomizerWidget.vue +27 -7
- package/assets/cms/components/file-manager/Chooser/FileManager.vue +0 -1
- package/assets/cms/components/file-manager/Chooser/FolderBookmark.vue +0 -1
- package/assets/cms/components/file-manager/Chooser.vue +1 -1
- package/assets/cms/components/form/ConcreteAjaxSelect.vue +173 -0
- package/assets/cms/components/form/ConcreteExpressEntrySelect.vue +74 -0
- package/assets/cms/components/form/ConcreteFileDirectoryInput.vue +28 -26
- package/assets/cms/components/form/ConcreteFileInput.vue +17 -5
- package/assets/cms/components/form/ConcreteGroupInput.vue +134 -0
- package/assets/cms/components/form/ConcreteLocaleSelect.vue +58 -0
- package/assets/cms/components/form/ConcreteOptionSelect.vue +92 -0
- package/assets/cms/components/form/ConcretePageSelect.vue +67 -0
- package/assets/cms/components/form/ConcreteSelect.vue +75 -0
- package/assets/cms/components/form/ConcreteThemeColorInput.vue +19 -14
- package/assets/cms/components/form/ConcreteUserInput.vue +24 -4
- package/assets/cms/components/form/ConcreteUserSelect.vue +126 -0
- package/assets/cms/components/form/IconSelector.vue +14 -5
- package/assets/cms/components/form/PasswordInput.vue +141 -24
- package/assets/cms/components/groups/Chooser.vue +6 -5
- package/assets/cms/components/index.js +24 -0
- package/assets/cms/components/toolbar/ConcreteToolbarSiteList.vue +62 -0
- package/assets/cms/components/user/Chooser/Search.vue +5 -0
- package/assets/cms/components/user/Chooser/Users.vue +6 -2
- package/assets/cms/components/user/Chooser.vue +9 -3
- package/assets/cms/js/ajax-request/base.js +13 -4
- package/assets/cms/js/alert.js +2 -1
- package/assets/cms/js/base.js +3 -10
- package/assets/cms/js/edit-mode/area.js +0 -35
- package/assets/cms/js/edit-mode/block.js +27 -0
- package/assets/cms/js/edit-mode/containerblock.js +33 -3
- package/assets/cms/js/edit-mode/editmode.js +12 -0
- package/assets/cms/js/edit-mode/layout.js +56 -0
- package/assets/cms/js/edit-mode/style-customizer/style-customizer.js +0 -1
- package/assets/cms/js/file-manager/uploader.js +30 -206
- package/assets/cms/js/help/help.js +11 -8
- package/assets/cms/js/in-context-menu.js +5 -0
- package/assets/cms/js/jquery-vue.js +22 -0
- package/assets/cms/js/legacy-dialog.js +74 -65
- package/assets/cms/js/modal.js +73 -0
- package/assets/cms/js/panels.js +8 -0
- package/assets/cms/js/search/base.js +0 -18
- package/assets/cms/js/search/field-selector.js +6 -14
- package/assets/cms/js/select-combo-box.js +2 -0
- package/assets/cms/js/sitemap/sitemap-selector.js +2 -2
- package/assets/cms/js/sitemap/sitemap.js +15 -20
- package/assets/cms/js/toolbar.js +25 -2
- package/assets/cms/js/tree.js +7 -7
- package/assets/cms/js/users/group-manager.js +55 -0
- package/assets/cms/js/users/user-manager.js +2 -1
- package/assets/cms/js/users.js +1 -0
- package/assets/cms/js/vue/Manager.js +6 -3
- package/assets/cms/scss/_base.scss +2 -8
- package/assets/cms/scss/_cards.scss +7 -0
- package/assets/cms/scss/_file-manager.scss +1 -0
- package/assets/cms/scss/_file-uploader.scss +13 -3
- package/assets/cms/scss/_help.scss +11 -2
- package/assets/cms/scss/_item-selector.scss +10 -0
- package/assets/cms/scss/_layouts.scss +16 -0
- package/assets/cms/scss/_page-areas.scss +524 -245
- package/assets/cms/scss/_popover.scss +5 -0
- package/assets/cms/scss/_select-combo-box.scss +18 -0
- package/assets/cms/scss/_toolbar.scss +5 -14
- package/assets/cms/scss/_transitions.scss +13 -0
- package/assets/cms/scss/_variables.scss +18 -7
- package/assets/cms/scss/bootstrap/_reboot-tags.scss +17 -32
- package/assets/cms/scss/bootstrap/_reboot.scss +17 -7
- package/assets/cms/scss/bootstrap/_root-modified.scss +41 -20
- package/assets/cms/scss/file-manager/_thumbnail-image-editor.scss +45 -0
- package/assets/cms/scss/panels/_help.scss +0 -10
- package/assets/staging/scss/frontend/_frontend.scss +12 -0
- package/assets/staging/scss/frontend.scss +4 -0
- package/package.json +9 -9
- package/assets/account/js/frontend/components/Avatar/Avatar.js +0 -270
- package/assets/account/js/frontend/components/Avatar/Avatar.scss +0 -17
- package/assets/account/js/frontend/components/Avatar/Avatar.vue +0 -18
- package/assets/account/js/frontend/components/Avatar/Cropper.js +0 -202
- package/assets/account/js/frontend/components/Avatar/Cropper.scss +0 -136
- package/assets/account/js/frontend/components/Avatar/Cropper.vue +0 -40
- package/assets/bedrock/scss/_theme-grid.scss +0 -7
- package/assets/cms/js/edit-mode/style-customizer/inline-toolbar.js +0 -279
- package/assets/cms/js/modifiable-ajax-bootstrap-select.js +0 -78
- package/assets/cms/js/modifiable-bootstrap-select.js +0 -112
|
@@ -54,7 +54,6 @@
|
|
|
54
54
|
this.setupCheckboxes()
|
|
55
55
|
this.setupSort()
|
|
56
56
|
this.setupPagination()
|
|
57
|
-
this.setupSelectize()
|
|
58
57
|
this.setupAdvancedSearch()
|
|
59
58
|
this.setupCustomizeColumns()
|
|
60
59
|
this.updateResults(options.result)
|
|
@@ -120,23 +119,6 @@
|
|
|
120
119
|
return data
|
|
121
120
|
}
|
|
122
121
|
|
|
123
|
-
ConcreteAjaxSearch.prototype.setupSelectize = function() {
|
|
124
|
-
var selects = this.$element.find('.ccm-enhanced-select')
|
|
125
|
-
console.log('base')
|
|
126
|
-
if (selects.length) {
|
|
127
|
-
selects.selectpicker({
|
|
128
|
-
liveSearch: true,
|
|
129
|
-
width: '100%'
|
|
130
|
-
})
|
|
131
|
-
}
|
|
132
|
-
// var selects = this.$element.find('.selectize-select')
|
|
133
|
-
// if (selects.length) {
|
|
134
|
-
// selects.selectize({
|
|
135
|
-
// plugins: ['remove_button']
|
|
136
|
-
// })
|
|
137
|
-
// }
|
|
138
|
-
}
|
|
139
|
-
|
|
140
122
|
/**
|
|
141
123
|
* The legacy create menu function for simple list items without multiple selection
|
|
142
124
|
* @param $selector
|
|
@@ -36,13 +36,9 @@
|
|
|
36
36
|
var $content = $container.append(
|
|
37
37
|
renderFieldRowTemplate({ field: r })
|
|
38
38
|
)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
liveSearch: true,
|
|
43
|
-
width: '100%'
|
|
44
|
-
})
|
|
45
|
-
}
|
|
39
|
+
$content.find('[data-vue]').each(function() {
|
|
40
|
+
$(this).concreteVue({ context: $(this).attr('data-vue') })
|
|
41
|
+
})
|
|
46
42
|
}
|
|
47
43
|
})
|
|
48
44
|
}
|
|
@@ -73,13 +69,9 @@
|
|
|
73
69
|
})
|
|
74
70
|
}
|
|
75
71
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
liveSearch: true,
|
|
80
|
-
width: '100%'
|
|
81
|
-
})
|
|
82
|
-
}
|
|
72
|
+
$container.find('[data-vue]').each(function() {
|
|
73
|
+
$(this).concreteVue({ context: $(this).attr('data-vue') })
|
|
74
|
+
})
|
|
83
75
|
}
|
|
84
76
|
|
|
85
77
|
// jQuery Plugin
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
if (options.selected) {
|
|
36
36
|
if (options.mode == 'multiple') {
|
|
37
37
|
$.each(options.selected, function(i, cID) {
|
|
38
|
-
var node = my.$element.find('.ccm-sitemap-tree')
|
|
38
|
+
var node = $.ui.fancytree.getTree(my.$element.find('.ccm-sitemap-tree')).getNodeByKey(String(cID))
|
|
39
39
|
if (node) {
|
|
40
40
|
node.setSelected(true)
|
|
41
41
|
}
|
|
42
42
|
})
|
|
43
43
|
} else {
|
|
44
|
-
var tree = my.$element.find('.ccm-sitemap-tree')
|
|
44
|
+
var tree = $.ui.fancytree.getTree(my.$element.find('.ccm-sitemap-tree'))
|
|
45
45
|
var node = tree.getNodeByKey(String(options.selected))
|
|
46
46
|
if (node) {
|
|
47
47
|
node.setSelected(true)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-new, no-unused-vars, camelcase, eqeqeq */
|
|
2
|
-
/* global _, ccmi18n_sitemap, CCM_DISPATCHER_FILENAME, CCM_SECURITY_TOKEN, CCM_REL, Concrete, ConcreteAlert, ConcretePageMenu, ccm_parseJSON, ConcreteProgressiveOperation, ConcreteEvent */
|
|
2
|
+
/* global TomSelect, _, ccmi18n_sitemap, CCM_DISPATCHER_FILENAME, CCM_SECURITY_TOKEN, CCM_REL, Concrete, ConcreteAlert, ConcretePageMenu, ccm_parseJSON, ConcreteProgressiveOperation, ConcreteEvent */
|
|
3
3
|
|
|
4
4
|
/* Base search class for AJAX forms in the UI */
|
|
5
5
|
;(function(global, $) {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
getTree: function() {
|
|
49
49
|
var my = this
|
|
50
|
-
return my.$sitemap
|
|
50
|
+
return $.ui.fancytree.getTree(my.$sitemap)
|
|
51
51
|
},
|
|
52
52
|
|
|
53
53
|
setupSiteTreeSelector: function(tree) {
|
|
@@ -60,13 +60,14 @@
|
|
|
60
60
|
my.$element.find('div.ccm-sitemap-tree-selector-wrapper').append($(my.localesWrapperTemplate))
|
|
61
61
|
var $menu = my.$element.find('div.ccm-sitemap-tree-selector-wrapper select')
|
|
62
62
|
|
|
63
|
+
// @todo - refactor TomSelect to bring back nice styling of flags, etc...
|
|
63
64
|
if (tree.entryGroups && tree.entryGroups.length) {
|
|
64
65
|
$.each(tree.entryGroups, function (gi, group) {
|
|
65
66
|
var $optgroup = $('<optgroup label="' + group.label + '">')
|
|
66
67
|
|
|
67
68
|
$.each(tree.entries, function (ti, entry) {
|
|
68
69
|
if (entry.class == group.value) {
|
|
69
|
-
var $option = '<option value="' + entry.siteTreeID + '"
|
|
70
|
+
var $option = '<option value="' + entry.siteTreeID + '"'
|
|
70
71
|
|
|
71
72
|
if (entry.isSelected) {
|
|
72
73
|
$option += ' selected'
|
|
@@ -81,7 +82,7 @@
|
|
|
81
82
|
})
|
|
82
83
|
} else {
|
|
83
84
|
$.each(tree.entries, function (ti, entry) {
|
|
84
|
-
var $option = '<option value="' + entry.siteTreeID + '"
|
|
85
|
+
var $option = '<option value="' + entry.siteTreeID + '"'
|
|
85
86
|
|
|
86
87
|
if (entry.isSelected) {
|
|
87
88
|
$option += ' selected'
|
|
@@ -92,19 +93,13 @@
|
|
|
92
93
|
})
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
$menu.
|
|
96
|
-
liveSearch: true,
|
|
97
|
-
maxOptions: 1
|
|
98
|
-
})
|
|
96
|
+
var menuSelect = new TomSelect($menu.get(0))
|
|
99
97
|
|
|
100
|
-
|
|
101
|
-
var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
source.data.siteTreeID = treeID
|
|
106
|
-
my.getTree().reload(source)
|
|
107
|
-
}
|
|
98
|
+
menuSelect.on('change', function (treeID) {
|
|
99
|
+
var source = my.getTree().options.source
|
|
100
|
+
my.options.siteTreeID = treeID
|
|
101
|
+
source.data.siteTreeID = treeID
|
|
102
|
+
my.getTree().reload(source)
|
|
108
103
|
})
|
|
109
104
|
}
|
|
110
105
|
}
|
|
@@ -340,10 +335,10 @@
|
|
|
340
335
|
}
|
|
341
336
|
ConcreteEvent.unsubscribe('SitemapDeleteRequestComplete.sitemap')
|
|
342
337
|
ConcreteEvent.subscribe('SitemapDeleteRequestComplete.sitemap', function(e) {
|
|
343
|
-
var node = my.$sitemap.
|
|
338
|
+
var node = $.ui.fancytree.getTree($(my.$sitemap)).getActiveNode()
|
|
344
339
|
var parent = node.parent
|
|
345
340
|
my.reloadNode(parent)
|
|
346
|
-
$(my.$sitemap)
|
|
341
|
+
$.ui.fancytree.getTree($(my.$sitemap)).visit(function(node) {
|
|
347
342
|
// update the trash node when a page is deleted
|
|
348
343
|
if (node.data.isTrash) {
|
|
349
344
|
var isTrashNodeExpanded = node.expanded
|
|
@@ -456,7 +451,7 @@
|
|
|
456
451
|
if (pg.length) {
|
|
457
452
|
pg.find('a:not([disabled])').unbind('click').on('click', function() {
|
|
458
453
|
var href = $(this).attr('href')
|
|
459
|
-
var root = my.$sitemap.
|
|
454
|
+
var root = $.ui.fancytree.getTree(my.$sitemap).getRootNode()
|
|
460
455
|
jQuery.fn.dialog.showLoader()
|
|
461
456
|
$.ajax({
|
|
462
457
|
dataType: 'json',
|
|
@@ -482,7 +477,7 @@
|
|
|
482
477
|
|
|
483
478
|
(my.options.onDisplaySingleLevel || $.noop).call(this, node)
|
|
484
479
|
|
|
485
|
-
var root = my.$sitemap.
|
|
480
|
+
var root = $.ui.fancytree.getTree(my.$sitemap).getRootNode()
|
|
486
481
|
// my.$sitemap.fancytree('option', 'minExpandLevel', minExpandLevel);
|
|
487
482
|
var ajaxData = $.extend({
|
|
488
483
|
dataType: 'json',
|
package/assets/cms/js/toolbar.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-new, no-unused-vars, camelcase, eqeqeq */
|
|
2
|
-
/* global CCM_DISPATCHER_FILENAME, ConcreteEvent, ConcreteHelpGuideManager, ConcretePanelManager, bootstrap */
|
|
2
|
+
/* global CCM_DISPATCHER_FILENAME, ConcreteModal, ConcreteEvent, ConcreteHelpGuideManager, ConcretePanelManager, bootstrap */
|
|
3
3
|
|
|
4
4
|
/* Basic toolbar class */
|
|
5
5
|
;(function(global, $) {
|
|
@@ -14,6 +14,28 @@
|
|
|
14
14
|
$searchResults.css('right', $(window).width() - $searchInput.offset().left - $searchResults.width() - 1)
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
function setupAnnouncementAndHelp() {
|
|
18
|
+
if (document.querySelectorAll('div[data-wrapper=concrete-announcement-broadcast]').length) {
|
|
19
|
+
Concrete.Vue.activateContext('cms', function (Vue, config) {
|
|
20
|
+
new Vue({
|
|
21
|
+
el: 'div[data-wrapper=concrete-announcement-broadcast]',
|
|
22
|
+
components: config.components
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
$(document.body).on('click', 'a[data-launch=help-modal]', function (e) {
|
|
28
|
+
e.stopPropagation()
|
|
29
|
+
e.preventDefault()
|
|
30
|
+
|
|
31
|
+
const modal = new ConcreteModal()
|
|
32
|
+
const url = new URL($(this).attr('href'))
|
|
33
|
+
modal.openExternal(url, ccmi18n.helpPopup, {
|
|
34
|
+
size: 'lg'
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
17
39
|
function setupHelpNotifications() {
|
|
18
40
|
var manager = ConcreteHelpGuideManager.get()
|
|
19
41
|
if (manager.getGuideToLaunchOnRefresh()) {
|
|
@@ -62,7 +84,7 @@
|
|
|
62
84
|
|
|
63
85
|
const tooltipTriggerList = [].slice.call(document.querySelectorAll('.launch-tooltip'))
|
|
64
86
|
tooltipTriggerList.map(function (tooltipTriggerEl) {
|
|
65
|
-
return new bootstrap.Tooltip(tooltipTriggerEl, {
|
|
87
|
+
return bootstrap.Tooltip.getInstance(tooltipTriggerEl) || new bootstrap.Tooltip(tooltipTriggerEl, {
|
|
66
88
|
container: '#ccm-tooltip-holder',
|
|
67
89
|
delay: {
|
|
68
90
|
show: 500,
|
|
@@ -324,6 +346,7 @@
|
|
|
324
346
|
setupTooltips()
|
|
325
347
|
setupPageAlerts()
|
|
326
348
|
setupHelpNotifications()
|
|
349
|
+
setupAnnouncementAndHelp()
|
|
327
350
|
setupMobileNav()
|
|
328
351
|
}
|
|
329
352
|
},
|
package/assets/cms/js/tree.js
CHANGED
|
@@ -155,7 +155,7 @@ ConcreteTree.prototype = {
|
|
|
155
155
|
if (options.removeNodesByKey.length) {
|
|
156
156
|
for (var i = 0; i < options.removeNodesByKey.length; i++) {
|
|
157
157
|
var nodeID = options.removeNodesByKey[i]
|
|
158
|
-
var node =
|
|
158
|
+
var node = $.ui.fancytree.getTree($tree).getNodeByKey(String(nodeID))
|
|
159
159
|
if (node) {
|
|
160
160
|
node.remove()
|
|
161
161
|
}
|
|
@@ -168,7 +168,7 @@ ConcreteTree.prototype = {
|
|
|
168
168
|
|
|
169
169
|
var selectedNodes
|
|
170
170
|
if (options.chooseNodeInForm) {
|
|
171
|
-
selectedNodes =
|
|
171
|
+
selectedNodes = $.ui.fancytree.getTree($tree)
|
|
172
172
|
selectedNodes = selectedNodes.getSelectedNodes()
|
|
173
173
|
if (selectedNodes.length) {
|
|
174
174
|
var keys = $.map(selectedNodes, function (node) {
|
|
@@ -332,7 +332,7 @@ ConcreteTree.prototype = {
|
|
|
332
332
|
ConcreteAlert.dialog(ccmi18n.error, r.errors.join('<br>'))
|
|
333
333
|
} else {
|
|
334
334
|
jQuery.fn.dialog.closeTop()
|
|
335
|
-
var node =
|
|
335
|
+
var node = $.ui.fancytree.getTree($tree).getNodeByKey(String(r.treeNodeParentID))
|
|
336
336
|
jQuery.fn.dialog.showLoader()
|
|
337
337
|
my.reloadNode(node, function () {
|
|
338
338
|
jQuery.fn.dialog.hideLoader()
|
|
@@ -411,23 +411,23 @@ ConcreteTree.setupTreeEvents = function (my) {
|
|
|
411
411
|
var node
|
|
412
412
|
if (nodes.length) {
|
|
413
413
|
for (var i = 0; i < nodes.length; i++) {
|
|
414
|
-
node =
|
|
414
|
+
node = $.ui.fancytree.getTree($tree).getNodeByKey(String(nodes[i].treeNodeParentID))
|
|
415
415
|
node.addChildren(nodes)
|
|
416
416
|
}
|
|
417
417
|
} else {
|
|
418
|
-
node =
|
|
418
|
+
node = $.ui.fancytree.getTree($tree).getNodeByKey(String(nodes.treeNodeParentID))
|
|
419
419
|
node.addChildren(nodes)
|
|
420
420
|
}
|
|
421
421
|
})
|
|
422
422
|
ConcreteEvent.subscribe('ConcreteTreeUpdateTreeNode.concreteTree', function (e, r) {
|
|
423
423
|
var $tree = $('[data-tree=' + my.options.treeID + ']')
|
|
424
|
-
var node =
|
|
424
|
+
var node = $.ui.fancytree.getTree($tree).getNodeByKey(String(r.node.key))
|
|
425
425
|
node.fromDict(r.node)
|
|
426
426
|
node.render()
|
|
427
427
|
})
|
|
428
428
|
ConcreteEvent.subscribe('ConcreteTreeDeleteTreeNode.concreteTree', function (e, r) {
|
|
429
429
|
var $tree = $('[data-tree=' + my.options.treeID + ']')
|
|
430
|
-
var node =
|
|
430
|
+
var node = $.ui.fancytree.getTree($tree).getNodeByKey(String(r.node.treeNodeID))
|
|
431
431
|
node.remove()
|
|
432
432
|
})
|
|
433
433
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* global ccmi18n, CCM_DISPATCHER_FILENAME, ConcreteAjaxRequest, ConcreteEvent */
|
|
2
|
+
class ConcreteUserGroupManager {
|
|
3
|
+
static launchDialog(callback, opts) {
|
|
4
|
+
const options = {
|
|
5
|
+
displayDialogButtons: true
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
$.extend(options, opts)
|
|
9
|
+
|
|
10
|
+
$.fn.dialog.open({
|
|
11
|
+
title: ccmi18n.chooseGroup,
|
|
12
|
+
href: `${CCM_DISPATCHER_FILENAME}/ccm/system/dialogs/groups/search`,
|
|
13
|
+
width: '740px',
|
|
14
|
+
modal: true,
|
|
15
|
+
height: '600px',
|
|
16
|
+
data: options,
|
|
17
|
+
onOpen: function() {
|
|
18
|
+
ConcreteEvent.unsubscribe('SelectGroup.core')
|
|
19
|
+
ConcreteEvent.subscribe('SelectGroup.core', function (e, response) {
|
|
20
|
+
$.fn.dialog.closeTop()
|
|
21
|
+
callback(response)
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static getGroupDetails(groupID, callbackSuccess, callbackFailure) {
|
|
28
|
+
const options = {
|
|
29
|
+
url: `${CCM_DISPATCHER_FILENAME}/ccm/system/group/get_json`,
|
|
30
|
+
data: { gID: groupID },
|
|
31
|
+
skipResponseValidation: true,
|
|
32
|
+
success(r) {
|
|
33
|
+
if (r.error) {
|
|
34
|
+
if (callbackFailure) {
|
|
35
|
+
callbackFailure(r)
|
|
36
|
+
} else {
|
|
37
|
+
ConcreteAjaxRequest.validateResponse(r)
|
|
38
|
+
}
|
|
39
|
+
} else if (callbackSuccess) {
|
|
40
|
+
callbackSuccess(r)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (callbackFailure) {
|
|
45
|
+
options.error = function(r) {
|
|
46
|
+
callbackFailure(r)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/* eslint-disable no-new */
|
|
50
|
+
new ConcreteAjaxRequest(options)
|
|
51
|
+
/* eslint-enable no-new */
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
global.ConcreteUserGroupManager = ConcreteUserGroupManager
|
package/assets/cms/js/users.js
CHANGED
|
@@ -51,9 +51,12 @@ export default class Manager {
|
|
|
51
51
|
* @param {Function} callback (Vue, options) => new Vue(options)
|
|
52
52
|
*/
|
|
53
53
|
activateContext(context, callback) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
// This is stupid but sometimes activateContext and extendContext are called essentially simultaneously and we need this to fire after
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
return callback(Vue, {
|
|
57
|
+
components: this.getContext(context)
|
|
58
|
+
})
|
|
59
|
+
}, 10)
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
/**
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
@import 'buttons';
|
|
5
5
|
@import 'tables';
|
|
6
6
|
@import 'breadcrumb';
|
|
7
|
+
@import 'cards';
|
|
7
8
|
@import 'list-group';
|
|
8
9
|
|
|
9
10
|
// Support classes
|
|
@@ -65,10 +66,6 @@
|
|
|
65
66
|
// File Uploader
|
|
66
67
|
@import './file-uploader';
|
|
67
68
|
|
|
68
|
-
// Bootstrap Select
|
|
69
|
-
@import 'bootstrap-select/sass/bootstrap-select';
|
|
70
|
-
@import 'ajax-bootstrap-select/dist/css/ajax-bootstrap-select';
|
|
71
|
-
|
|
72
69
|
// Forms
|
|
73
70
|
@import './forms';
|
|
74
71
|
|
|
@@ -77,10 +74,6 @@
|
|
|
77
74
|
// Previously wasn't throwing the error because Selectize includes the BS mixins
|
|
78
75
|
@import '~bootstrap/scss/mixins';
|
|
79
76
|
|
|
80
|
-
//TODO: Check Selectize replacement
|
|
81
|
-
//@import '~selectize-bootstrap4-theme/scss/selectize.bootstrap4';
|
|
82
|
-
//@import './selectize';
|
|
83
|
-
|
|
84
77
|
// Miscellaneous components
|
|
85
78
|
@import './vue';
|
|
86
79
|
@import './boards';
|
|
@@ -90,6 +83,7 @@
|
|
|
90
83
|
@import './tabs';
|
|
91
84
|
@import './item-selector';
|
|
92
85
|
@import './item-select-list';
|
|
86
|
+
@import './select-combo-box';
|
|
93
87
|
@import './permission-grid';
|
|
94
88
|
@import './tooltips';
|
|
95
89
|
@import 'spectrum-colorpicker2/dist/spectrum';
|
|
@@ -30,16 +30,26 @@
|
|
|
30
30
|
|
|
31
31
|
.ccm-incoming-files-container {
|
|
32
32
|
margin-bottom: 15px;
|
|
33
|
-
max-height:
|
|
33
|
+
max-height: 280px;
|
|
34
34
|
overflow-y: scroll;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.ccm-directory-selector-container {
|
|
38
38
|
margin-top: 15px;
|
|
39
39
|
|
|
40
|
-
.
|
|
40
|
+
.item {
|
|
41
|
+
i {
|
|
42
|
+
margin-right: 10px;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.option {
|
|
41
47
|
padding-left: 204px; // We need this default in order to handle the many levels of sub-nodes.
|
|
42
48
|
|
|
49
|
+
i {
|
|
50
|
+
margin-right: 5px; // item and option require diferent margins because one is flexbox and the other is not
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
&.level-1 {
|
|
44
54
|
padding-left: 12px;
|
|
45
55
|
}
|
|
@@ -77,7 +87,7 @@
|
|
|
77
87
|
|
|
78
88
|
.ccm-file-upload-container {
|
|
79
89
|
display: block;
|
|
80
|
-
height:
|
|
90
|
+
height: 280px;
|
|
81
91
|
overflow-y: auto;
|
|
82
92
|
position: relative;
|
|
83
93
|
user-select: none;
|
|
@@ -18,6 +18,7 @@ div#ccm-toolbar {
|
|
|
18
18
|
.ccm-ui {
|
|
19
19
|
.ccm-help-tour {
|
|
20
20
|
background-color: $help-tour-background-color;
|
|
21
|
+
border-color: $help-tour-background-color;
|
|
21
22
|
font-size: 1rem;
|
|
22
23
|
padding: $help-tour-padding;
|
|
23
24
|
|
|
@@ -127,9 +128,8 @@ div#ccm-toolbar {
|
|
|
127
128
|
color: $help-tour-position-color !important;
|
|
128
129
|
margin-left: 1rem;
|
|
129
130
|
|
|
130
|
-
&,
|
|
131
131
|
&:hover {
|
|
132
|
-
text-decoration:
|
|
132
|
+
text-decoration: underline;
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -144,3 +144,12 @@ div#ccm-toolbar {
|
|
|
144
144
|
padding: 10px 20px;
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
+
|
|
148
|
+
.ccm-help-media {
|
|
149
|
+
display: flex;
|
|
150
|
+
margin-top: 0.5rem;
|
|
151
|
+
|
|
152
|
+
> div {
|
|
153
|
+
margin-right: 1rem;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
* New selector style
|
|
3
3
|
*/
|
|
4
4
|
.ccm-item-selector-group {
|
|
5
|
+
.btn-group {
|
|
6
|
+
max-width: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
5
9
|
.btn {
|
|
6
10
|
padding-left: 1rem;
|
|
7
11
|
padding-right: 1rem;
|
|
@@ -31,6 +35,12 @@
|
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
|
|
38
|
+
&.is-invalid {
|
|
39
|
+
.btn {
|
|
40
|
+
border-color: $danger;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
}
|
|
35
45
|
|
|
36
46
|
|
|
@@ -88,3 +88,19 @@ div.ccm-area-layout-control-bar i {
|
|
|
88
88
|
position: absolute;
|
|
89
89
|
top: -2px;
|
|
90
90
|
}
|
|
91
|
+
|
|
92
|
+
// Ensure that many grids will display properly within our layout tools.
|
|
93
|
+
// NOTE: If you implement a custom grid framework you must ensure that your row DIVs appear
|
|
94
|
+
// with position: relative within the following two IDs.
|
|
95
|
+
// This ensures that the layout tools work with this theme grid.
|
|
96
|
+
// Note: This HAD been a part of the bedrock frontend toolkit, meant to be included by themes when they include
|
|
97
|
+
// Bedrock. However, if a theme wasn't built on bedrock then it was borking in the layout tools, including Elemental
|
|
98
|
+
// So instead, let's include the very basic implementation of this here, with div.row (which should catch BS4, BS5
|
|
99
|
+
// and other derived grid frameworks). If you have a different series of classes you'll have to figure out your own
|
|
100
|
+
// implementation based on this.
|
|
101
|
+
div#ccm-theme-grid-temp,
|
|
102
|
+
div#ccm-theme-grid-edit-mode-row-wrapper {
|
|
103
|
+
div.row {
|
|
104
|
+
position: relative; // This is necessary in order for the javascript to correctly use jquery position() calls
|
|
105
|
+
}
|
|
106
|
+
}
|