scrivito_content_browser 0.40.0 → 0.41.0.rc1
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/dist/scrivito_content_browser_pkg.js +325 -172
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7452d19d9b78a7bd3b272a23b2c2c989e03eee49
|
|
4
|
+
data.tar.gz: 7bf2b9950f63a2af06184671a81bbc0d89846ab2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f5f6e66085b4c2c662276be0c745e8e77346373e75be7fa1d8640cc1b2938e122ea4c94d0c958ab8324df8d3b58273aed6e78521bc8f609b90ab6dd57f339f4
|
|
7
|
+
data.tar.gz: 9ade6519c8cf712c250537037e52409d46fd1ab5df5184f96096f46ca265c931388051f3d52616b18bfc4ef7ecaad38290c408c40d966af68d29fb42165e0698
|
|
@@ -22,56 +22,78 @@
|
|
|
22
22
|
components: {},
|
|
23
23
|
models: {},
|
|
24
24
|
base_query: null,
|
|
25
|
-
_center: function(
|
|
26
|
-
|
|
25
|
+
_center: function() {
|
|
26
|
+
var domElement, domElements, _i, _len, _results;
|
|
27
|
+
domElements = $(".scrivito-content-browser");
|
|
28
|
+
_results = [];
|
|
29
|
+
for (_i = 0, _len = domElements.length; _i < _len; _i++) {
|
|
30
|
+
domElement = domElements[_i];
|
|
27
31
|
domElement = $(domElement);
|
|
28
|
-
|
|
32
|
+
_results.push(domElement.css({
|
|
29
33
|
marginLeft: -domElement.innerWidth() / 2,
|
|
30
34
|
marginTop: -domElement.innerHeight() / 2,
|
|
31
35
|
left: '50%'
|
|
32
|
-
});
|
|
36
|
+
}));
|
|
33
37
|
}
|
|
38
|
+
return _results;
|
|
34
39
|
},
|
|
35
40
|
_loadModal: function() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this._center(
|
|
39
|
-
return $(window).resize((function(_this) {
|
|
40
|
-
return function() {
|
|
41
|
-
return _this._center(_this.modal);
|
|
42
|
-
};
|
|
43
|
-
})(this));
|
|
41
|
+
$('<div></div>').addClass('editing-overlay show').appendTo($('body'));
|
|
42
|
+
$('<div></div>').addClass('scrivito-content-browser show').appendTo($('body'));
|
|
43
|
+
return this._center();
|
|
44
44
|
},
|
|
45
45
|
_buildFilter: function(filter_definition) {
|
|
46
46
|
return new models.Filter(filter_definition);
|
|
47
47
|
},
|
|
48
|
-
_startReact: function() {
|
|
48
|
+
_startReact: function(options, promise) {
|
|
49
49
|
var baseQuery, filter, filterConfig;
|
|
50
|
-
filterConfig =
|
|
51
|
-
baseQuery =
|
|
50
|
+
filterConfig = options.filters || this.filters;
|
|
51
|
+
baseQuery = options.base_query || this.base_query;
|
|
52
52
|
filter = this._buildFilter(filterConfig);
|
|
53
53
|
return this._reactApp = React.render(React.createElement(ui.App, {
|
|
54
54
|
"initialFilter": filter,
|
|
55
55
|
"baseQuery": baseQuery,
|
|
56
|
-
"
|
|
57
|
-
|
|
56
|
+
"promise": promise,
|
|
57
|
+
"options": options
|
|
58
|
+
}), this._getLastContentBrowserElement());
|
|
59
|
+
},
|
|
60
|
+
_getLastElementByClassName: function(className) {
|
|
61
|
+
var elements;
|
|
62
|
+
elements = document.getElementsByClassName(className);
|
|
63
|
+
return _.last(elements);
|
|
64
|
+
},
|
|
65
|
+
_getLastOverlayElement: function() {
|
|
66
|
+
return this._getLastElementByClassName('editing-overlay show');
|
|
67
|
+
},
|
|
68
|
+
_getLastContentBrowserElement: function() {
|
|
69
|
+
return this._getLastElementByClassName('scrivito-content-browser show');
|
|
58
70
|
},
|
|
59
71
|
close: function() {
|
|
60
|
-
this.
|
|
61
|
-
return this.
|
|
72
|
+
this._getLastOverlayElement().remove();
|
|
73
|
+
return this._getLastContentBrowserElement().remove();
|
|
62
74
|
},
|
|
63
75
|
open: function(options) {
|
|
76
|
+
var promise;
|
|
64
77
|
if (options == null) {
|
|
65
78
|
options = {};
|
|
66
79
|
}
|
|
67
80
|
if (!options.hasOwnProperty('base_preset')) {
|
|
68
81
|
options.base_preset = this.base_preset;
|
|
69
82
|
}
|
|
70
|
-
|
|
83
|
+
promise = $.Deferred();
|
|
71
84
|
this._loadModal();
|
|
72
|
-
this._startReact();
|
|
73
|
-
|
|
74
|
-
|
|
85
|
+
this._startReact(options, promise);
|
|
86
|
+
$(window).resize((function(_this) {
|
|
87
|
+
return function() {
|
|
88
|
+
return _this._center();
|
|
89
|
+
};
|
|
90
|
+
})(this));
|
|
91
|
+
promise.always((function(_this) {
|
|
92
|
+
return function() {
|
|
93
|
+
return _this.close();
|
|
94
|
+
};
|
|
95
|
+
})(this));
|
|
96
|
+
return promise;
|
|
75
97
|
}
|
|
76
98
|
};
|
|
77
99
|
})();
|
|
@@ -132,7 +154,7 @@
|
|
|
132
154
|
|
|
133
155
|
OptionFilterMixin = {
|
|
134
156
|
mixins: [OptionFilterLabelRenderMixin],
|
|
135
|
-
|
|
157
|
+
optionLabelToggleClick: function() {
|
|
136
158
|
return this.props.filter.toggleActive();
|
|
137
159
|
},
|
|
138
160
|
activeClassName: function() {
|
|
@@ -230,6 +252,137 @@
|
|
|
230
252
|
|
|
231
253
|
})();
|
|
232
254
|
|
|
255
|
+
models.ActiveFilterNodeCollector = (function() {
|
|
256
|
+
function ActiveFilterNodeCollector(filter) {
|
|
257
|
+
this._filter = filter;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
ActiveFilterNodeCollector.prototype.findActiveFilterItems = function() {
|
|
261
|
+
var filterItems, treeFilterItem;
|
|
262
|
+
filterItems = this._findActiveAdditionalFilters();
|
|
263
|
+
treeFilterItem = this._findActiveTreeFilterItem();
|
|
264
|
+
if (treeFilterItem) {
|
|
265
|
+
filterItems.unshift(treeFilterItem);
|
|
266
|
+
}
|
|
267
|
+
return filterItems;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
ActiveFilterNodeCollector.prototype._findActiveTreeFilterItem = function() {
|
|
271
|
+
var activeConfig, subFilter, treeFilter, _i, _j, _len, _len1, _ref, _ref1;
|
|
272
|
+
_ref = this._filter.getTreeFilters();
|
|
273
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
274
|
+
treeFilter = _ref[_i];
|
|
275
|
+
_ref1 = treeFilter.subFilters;
|
|
276
|
+
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
|
277
|
+
subFilter = _ref1[_j];
|
|
278
|
+
activeConfig = this._findActiveSubFilterItem(subFilter);
|
|
279
|
+
if (activeConfig) {
|
|
280
|
+
activeConfig.parents.push(treeFilter.config);
|
|
281
|
+
return new models.ActiveNodeConfig(activeConfig.parents, [activeConfig.node]);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
ActiveFilterNodeCollector.prototype._findActiveAdditionalFilters = function() {
|
|
288
|
+
var activeChildren, activeFilters, additionalFilter, _i, _len, _ref;
|
|
289
|
+
activeFilters = [];
|
|
290
|
+
_ref = this._filter.additionalFilters;
|
|
291
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
292
|
+
additionalFilter = _ref[_i];
|
|
293
|
+
activeChildren = _.filter(additionalFilter.children, function(child) {
|
|
294
|
+
return child.isActive();
|
|
295
|
+
});
|
|
296
|
+
if (activeChildren.length > 0) {
|
|
297
|
+
activeFilters.push(new models.ActiveNodeConfig([additionalFilter], activeChildren));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return activeFilters;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
ActiveFilterNodeCollector.prototype._findActiveSubFilterItem = function(filterNode) {
|
|
304
|
+
var activeConfig, childNode, _i, _len, _ref;
|
|
305
|
+
if (filterNode.isActive()) {
|
|
306
|
+
return {
|
|
307
|
+
node: filterNode,
|
|
308
|
+
parents: []
|
|
309
|
+
};
|
|
310
|
+
} else {
|
|
311
|
+
_ref = filterNode.children;
|
|
312
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
313
|
+
childNode = _ref[_i];
|
|
314
|
+
activeConfig = this._findActiveSubFilterItem(childNode);
|
|
315
|
+
if (activeConfig) {
|
|
316
|
+
activeConfig.parents.push(filterNode);
|
|
317
|
+
return activeConfig;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
return ActiveFilterNodeCollector;
|
|
324
|
+
|
|
325
|
+
})();
|
|
326
|
+
|
|
327
|
+
models.ActiveNodeConfig = (function() {
|
|
328
|
+
function ActiveNodeConfig(parents, nodes) {
|
|
329
|
+
this._parents = parents;
|
|
330
|
+
this._activeNodes = nodes;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
ActiveNodeConfig.prototype.activeNodes = function() {
|
|
334
|
+
return this._activeNodes;
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
ActiveNodeConfig.prototype.values = function() {
|
|
338
|
+
return _.flatten(_.map(this._activeNodes, this._valueForNode));
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
ActiveNodeConfig.prototype.query = function() {
|
|
342
|
+
return this._filter().type !== 'checkbox' && this._activeNodes[0].query;
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
ActiveNodeConfig.prototype.hasQuery = function() {
|
|
346
|
+
return !!this.query();
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
ActiveNodeConfig.prototype.field = function() {
|
|
350
|
+
return this._findConfig('field');
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
ActiveNodeConfig.prototype.hasField = function() {
|
|
354
|
+
return !!this.field();
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
ActiveNodeConfig.prototype.operator = function() {
|
|
358
|
+
return this._findConfig('operator') || 'equals';
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
ActiveNodeConfig.prototype._valueForNode = function(node) {
|
|
362
|
+
return node.value || node.name;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
ActiveNodeConfig.prototype._findConfig = function(attrName) {
|
|
366
|
+
var activeNode, parentWithAttribute;
|
|
367
|
+
activeNode = this._activeNodes[0];
|
|
368
|
+
if (this._filter().type !== 'checkbox' && activeNode[attrName]) {
|
|
369
|
+
return activeNode[attrName];
|
|
370
|
+
} else {
|
|
371
|
+
parentWithAttribute = _.find(this._parents, function(node) {
|
|
372
|
+
return node[attrName];
|
|
373
|
+
});
|
|
374
|
+
return parentWithAttribute && parentWithAttribute[attrName];
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
ActiveNodeConfig.prototype._filter = function() {
|
|
379
|
+
return _.last(this._parents);
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
return ActiveNodeConfig;
|
|
383
|
+
|
|
384
|
+
})();
|
|
385
|
+
|
|
233
386
|
models.CheckboxFilter = (function(_super) {
|
|
234
387
|
__extends(CheckboxFilter, _super);
|
|
235
388
|
|
|
@@ -263,7 +416,7 @@
|
|
|
263
416
|
|
|
264
417
|
function CheckboxOption(filter, name, filterDefinition) {
|
|
265
418
|
CheckboxOption.__super__.constructor.call(this, filter, name, filterDefinition);
|
|
266
|
-
this.value = filterDefinition.value;
|
|
419
|
+
this.value = filterDefinition.value, this.preset = filterDefinition.preset;
|
|
267
420
|
this.active = filterDefinition.selected;
|
|
268
421
|
}
|
|
269
422
|
|
|
@@ -635,9 +788,95 @@
|
|
|
635
788
|
|
|
636
789
|
})();
|
|
637
790
|
|
|
791
|
+
models.PresetBuilder = (function() {
|
|
792
|
+
var Preset;
|
|
793
|
+
|
|
794
|
+
Preset = (function() {
|
|
795
|
+
function Preset() {
|
|
796
|
+
this._errors = {};
|
|
797
|
+
this._values = {};
|
|
798
|
+
this._titles = {};
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
Preset.prototype.isValid = function() {
|
|
802
|
+
return _.keys(this.errors()).length === 0;
|
|
803
|
+
};
|
|
804
|
+
|
|
805
|
+
Preset.prototype.values = function() {
|
|
806
|
+
if (this.isValid()) {
|
|
807
|
+
return this._values;
|
|
808
|
+
} else {
|
|
809
|
+
throw new Error('#values can not be called on an invalid Preset');
|
|
810
|
+
}
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
Preset.prototype.errors = function() {
|
|
814
|
+
return this._errors;
|
|
815
|
+
};
|
|
816
|
+
|
|
817
|
+
Preset.prototype._addValue = function(key, value, title) {
|
|
818
|
+
if (this._values.hasOwnProperty(key)) {
|
|
819
|
+
return this._addError(key, this._titles[key], title);
|
|
820
|
+
} else {
|
|
821
|
+
this._values[key] = value;
|
|
822
|
+
return this._titles[key] = title;
|
|
823
|
+
}
|
|
824
|
+
};
|
|
825
|
+
|
|
826
|
+
Preset.prototype._addError = function(key, previouslySetValue, newValue) {
|
|
827
|
+
if (this._errors[key]) {
|
|
828
|
+
return this._errors[key].push(newValue);
|
|
829
|
+
} else {
|
|
830
|
+
return this._errors[key] = [previouslySetValue, newValue];
|
|
831
|
+
}
|
|
832
|
+
};
|
|
833
|
+
|
|
834
|
+
return Preset;
|
|
835
|
+
|
|
836
|
+
})();
|
|
837
|
+
|
|
838
|
+
function PresetBuilder(filter) {
|
|
839
|
+
this._collector = new models.ActiveFilterNodeCollector(filter);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
PresetBuilder.prototype.generatePreset = function() {
|
|
843
|
+
var activeNodeConfigs, presetCollection;
|
|
844
|
+
presetCollection = new Preset();
|
|
845
|
+
activeNodeConfigs = this._collector.findActiveFilterItems();
|
|
846
|
+
_.each(activeNodeConfigs, (function(_this) {
|
|
847
|
+
return function(activeNodeConfig) {
|
|
848
|
+
var nodesWithPreset;
|
|
849
|
+
nodesWithPreset = _this._nodesWithPreset(activeNodeConfig);
|
|
850
|
+
return _.each(nodesWithPreset, function(filterNode) {
|
|
851
|
+
return _this._addPresetsForFilterNode(filterNode, presetCollection);
|
|
852
|
+
});
|
|
853
|
+
};
|
|
854
|
+
})(this));
|
|
855
|
+
return presetCollection;
|
|
856
|
+
};
|
|
857
|
+
|
|
858
|
+
PresetBuilder.prototype._nodesWithPreset = function(config) {
|
|
859
|
+
return _.select(config.activeNodes(), function(node) {
|
|
860
|
+
return node.preset;
|
|
861
|
+
});
|
|
862
|
+
};
|
|
863
|
+
|
|
864
|
+
PresetBuilder.prototype._addPresetsForFilterNode = function(node, presetCollection) {
|
|
865
|
+
return _.each(node.preset, function(value, key) {
|
|
866
|
+
if (value !== void 0) {
|
|
867
|
+
return presetCollection._addValue(key, value, node.title);
|
|
868
|
+
}
|
|
869
|
+
});
|
|
870
|
+
};
|
|
871
|
+
|
|
872
|
+
return PresetBuilder;
|
|
873
|
+
|
|
874
|
+
})();
|
|
875
|
+
|
|
638
876
|
models.QueryBuilder = (function() {
|
|
639
877
|
function QueryBuilder(filter, baseQuery) {
|
|
640
878
|
this.filter = filter;
|
|
879
|
+
this._collector = new models.ActiveFilterNodeCollector(this.filter);
|
|
641
880
|
if (baseQuery) {
|
|
642
881
|
this._baseQuery = models.QueryBuilder.prepareQuery(baseQuery);
|
|
643
882
|
}
|
|
@@ -646,56 +885,25 @@
|
|
|
646
885
|
QueryBuilder.prototype.searchRequest = function() {
|
|
647
886
|
var query;
|
|
648
887
|
query = this._baseQuery;
|
|
649
|
-
query = this.
|
|
650
|
-
query = this.
|
|
651
|
-
return this._addAdditionalFilters(query);
|
|
888
|
+
query = this._addFilterQueries(query);
|
|
889
|
+
return query = this._addSearchTermQuery(query);
|
|
652
890
|
};
|
|
653
891
|
|
|
654
|
-
QueryBuilder.prototype.
|
|
655
|
-
var
|
|
656
|
-
combinedQuery =
|
|
657
|
-
_ref = this.
|
|
892
|
+
QueryBuilder.prototype._addFilterQueries = function(baseQuery) {
|
|
893
|
+
var activeConfig, combinedQuery, searchQuery, _i, _len, _ref;
|
|
894
|
+
combinedQuery = baseQuery;
|
|
895
|
+
_ref = this._collector.findActiveFilterItems();
|
|
658
896
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
if (activeChildren.length > 0) {
|
|
664
|
-
searchQuery = this._buildActiveChildrenSearchQuery(activeChildren, filter);
|
|
665
|
-
if (searchQuery != null) {
|
|
666
|
-
combinedQuery = this._addOrCreateQuery(combinedQuery, searchQuery);
|
|
667
|
-
}
|
|
897
|
+
activeConfig = _ref[_i];
|
|
898
|
+
searchQuery = this._buildActiveChildrenSearchQuery(activeConfig);
|
|
899
|
+
if (searchQuery) {
|
|
900
|
+
combinedQuery = this._addOrCreateQuery(combinedQuery, searchQuery);
|
|
668
901
|
}
|
|
669
902
|
}
|
|
670
903
|
return combinedQuery;
|
|
671
904
|
};
|
|
672
905
|
|
|
673
|
-
QueryBuilder.prototype.
|
|
674
|
-
if (filter.type === 'checkbox') {
|
|
675
|
-
return this._buildFOVQuery(filter, activeChildren);
|
|
676
|
-
} else {
|
|
677
|
-
return this._buildRadioQuery(filter, activeChildren[0]);
|
|
678
|
-
}
|
|
679
|
-
};
|
|
680
|
-
|
|
681
|
-
QueryBuilder.prototype._buildRadioQuery = function(filter, activeChild) {
|
|
682
|
-
if (activeChild.query) {
|
|
683
|
-
return activeChild.query;
|
|
684
|
-
} else {
|
|
685
|
-
return this._buildFOVQuery(filter, [activeChild]);
|
|
686
|
-
}
|
|
687
|
-
};
|
|
688
|
-
|
|
689
|
-
QueryBuilder.prototype._buildFOVQuery = function(config, activeNodes) {
|
|
690
|
-
var operator, values;
|
|
691
|
-
values = _.flatten(_.map(activeNodes, function(node) {
|
|
692
|
-
return node.value || node.name;
|
|
693
|
-
}));
|
|
694
|
-
operator = config.operator || 'equals';
|
|
695
|
-
return scrivito.obj_where(config.field, operator, values);
|
|
696
|
-
};
|
|
697
|
-
|
|
698
|
-
QueryBuilder.prototype._addSearchTerm = function(query) {
|
|
906
|
+
QueryBuilder.prototype._addSearchTermQuery = function(query) {
|
|
699
907
|
var searchQuery;
|
|
700
908
|
if (this.filter.searchTerm && this.filter.searchTerm.length > 0) {
|
|
701
909
|
searchQuery = scrivito.obj_where('*', 'contains_prefix', this.filter.searchTerm);
|
|
@@ -705,69 +913,17 @@
|
|
|
705
913
|
}
|
|
706
914
|
};
|
|
707
915
|
|
|
708
|
-
QueryBuilder.prototype.
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
return activeConfig.node.query;
|
|
916
|
+
QueryBuilder.prototype._buildActiveChildrenSearchQuery = function(activeConfig) {
|
|
917
|
+
if (activeConfig.hasQuery()) {
|
|
918
|
+
return activeConfig.query();
|
|
712
919
|
} else {
|
|
713
|
-
|
|
714
|
-
if (field) {
|
|
715
|
-
operator = this._findOperator(activeConfig);
|
|
716
|
-
return this._buildFOVQuery({
|
|
717
|
-
field: field,
|
|
718
|
-
operator: operator
|
|
719
|
-
}, [activeConfig.node]);
|
|
720
|
-
}
|
|
920
|
+
return this._buildFOVQuery(activeConfig);
|
|
721
921
|
}
|
|
722
922
|
};
|
|
723
923
|
|
|
724
|
-
QueryBuilder.prototype.
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
if (activeConfig) {
|
|
728
|
-
configuredQuery = this._createQueryByActiveConfig(activeConfig);
|
|
729
|
-
if (configuredQuery) {
|
|
730
|
-
return this._addOrCreateQuery(baseQuery, configuredQuery);
|
|
731
|
-
}
|
|
732
|
-
} else {
|
|
733
|
-
return baseQuery;
|
|
734
|
-
}
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
QueryBuilder.prototype._findActiveTreeFilterItem = function() {
|
|
738
|
-
var activeConfig, subFilter, treeFilter, _i, _j, _len, _len1, _ref, _ref1;
|
|
739
|
-
_ref = this.filter.getTreeFilters();
|
|
740
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
741
|
-
treeFilter = _ref[_i];
|
|
742
|
-
_ref1 = treeFilter.subFilters;
|
|
743
|
-
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
|
744
|
-
subFilter = _ref1[_j];
|
|
745
|
-
activeConfig = this._findActiveSubFilterItem(subFilter);
|
|
746
|
-
if (activeConfig) {
|
|
747
|
-
activeConfig.parents.push(treeFilter.config);
|
|
748
|
-
return activeConfig;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
QueryBuilder.prototype._findActiveSubFilterItem = function(filterNode) {
|
|
755
|
-
var activeConfig, childNode, _i, _len, _ref;
|
|
756
|
-
if (filterNode.isActive()) {
|
|
757
|
-
return {
|
|
758
|
-
node: filterNode,
|
|
759
|
-
parents: []
|
|
760
|
-
};
|
|
761
|
-
} else {
|
|
762
|
-
_ref = filterNode.children;
|
|
763
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
764
|
-
childNode = _ref[_i];
|
|
765
|
-
activeConfig = this._findActiveSubFilterItem(childNode);
|
|
766
|
-
if (activeConfig) {
|
|
767
|
-
activeConfig.parents.push(filterNode);
|
|
768
|
-
return activeConfig;
|
|
769
|
-
}
|
|
770
|
-
}
|
|
924
|
+
QueryBuilder.prototype._buildFOVQuery = function(activeConfig) {
|
|
925
|
+
if (activeConfig.hasField()) {
|
|
926
|
+
return scrivito.obj_where(activeConfig.field(), activeConfig.operator(), activeConfig.values());
|
|
771
927
|
}
|
|
772
928
|
};
|
|
773
929
|
|
|
@@ -779,26 +935,6 @@
|
|
|
779
935
|
}
|
|
780
936
|
};
|
|
781
937
|
|
|
782
|
-
QueryBuilder.prototype._findOperator = function(config) {
|
|
783
|
-
return this._findAttributeInConfig('operator', config);
|
|
784
|
-
};
|
|
785
|
-
|
|
786
|
-
QueryBuilder.prototype._findField = function(config) {
|
|
787
|
-
return this._findAttributeInConfig('field', config);
|
|
788
|
-
};
|
|
789
|
-
|
|
790
|
-
QueryBuilder.prototype._findAttributeInConfig = function(attributeName, config) {
|
|
791
|
-
var parentWithAttribute;
|
|
792
|
-
if (config.node[attributeName]) {
|
|
793
|
-
return config.node[attributeName];
|
|
794
|
-
} else {
|
|
795
|
-
parentWithAttribute = _.find(config.parents, function(node) {
|
|
796
|
-
return node[attributeName];
|
|
797
|
-
});
|
|
798
|
-
return parentWithAttribute && parentWithAttribute[attributeName];
|
|
799
|
-
}
|
|
800
|
-
};
|
|
801
|
-
|
|
802
938
|
return QueryBuilder;
|
|
803
939
|
|
|
804
940
|
})();
|
|
@@ -847,7 +983,7 @@
|
|
|
847
983
|
function RadioOption(group, name, filterDefinition) {
|
|
848
984
|
this.group = group;
|
|
849
985
|
RadioOption.__super__.constructor.call(this, this.group.filter, name, filterDefinition);
|
|
850
|
-
this.value = filterDefinition.value, this.query = filterDefinition.query;
|
|
986
|
+
this.value = filterDefinition.value, this.query = filterDefinition.query, this.preset = filterDefinition.preset;
|
|
851
987
|
this.active = filterDefinition.selected;
|
|
852
988
|
}
|
|
853
989
|
|
|
@@ -870,7 +1006,7 @@
|
|
|
870
1006
|
var childrenDefinition;
|
|
871
1007
|
TreeFilter.__super__.constructor.call(this, filter, name, filterDefinition);
|
|
872
1008
|
this.type = 'tree';
|
|
873
|
-
this.icon = filterDefinition.icon, this.query = filterDefinition.query, this.expanded = filterDefinition.expanded, this.value = filterDefinition.value, this.field = filterDefinition.field, this.operator = filterDefinition.operator;
|
|
1009
|
+
this.icon = filterDefinition.icon, this.query = filterDefinition.query, this.expanded = filterDefinition.expanded, this.value = filterDefinition.value, this.field = filterDefinition.field, this.operator = filterDefinition.operator, this.preset = filterDefinition.preset;
|
|
874
1010
|
this.active = filterDefinition.selected;
|
|
875
1011
|
childrenDefinition = filterDefinition.options || [];
|
|
876
1012
|
this.children = _.map(childrenDefinition, function(definition, name) {
|
|
@@ -890,7 +1026,7 @@
|
|
|
890
1026
|
return !!this.active;
|
|
891
1027
|
};
|
|
892
1028
|
|
|
893
|
-
TreeFilter.prototype.
|
|
1029
|
+
TreeFilter.prototype.toggleActive = function() {
|
|
894
1030
|
if (this.isActive()) {
|
|
895
1031
|
this.active = false;
|
|
896
1032
|
} else {
|
|
@@ -920,12 +1056,12 @@
|
|
|
920
1056
|
models.UploadSet = (function(_super) {
|
|
921
1057
|
__extends(UploadSet, _super);
|
|
922
1058
|
|
|
923
|
-
function UploadSet(
|
|
924
|
-
if (
|
|
925
|
-
|
|
1059
|
+
function UploadSet(basePreset) {
|
|
1060
|
+
if (basePreset == null) {
|
|
1061
|
+
basePreset = {};
|
|
926
1062
|
}
|
|
927
1063
|
UploadSet.__super__.constructor.call(this);
|
|
928
|
-
this.
|
|
1064
|
+
this._basePreset = basePreset;
|
|
929
1065
|
this._uploads = [];
|
|
930
1066
|
}
|
|
931
1067
|
|
|
@@ -933,10 +1069,14 @@
|
|
|
933
1069
|
return this._uploads;
|
|
934
1070
|
};
|
|
935
1071
|
|
|
936
|
-
UploadSet.prototype.addFiles = function(files) {
|
|
1072
|
+
UploadSet.prototype.addFiles = function(files, presets) {
|
|
1073
|
+
if (presets == null) {
|
|
1074
|
+
presets = {};
|
|
1075
|
+
}
|
|
1076
|
+
presets = _.extend(_.clone(this._basePreset), presets);
|
|
937
1077
|
_.each(files, (function(_this) {
|
|
938
1078
|
return function(file) {
|
|
939
|
-
return _this._uploads.unshift(new models.ObjUpload(_this, file,
|
|
1079
|
+
return _this._uploads.unshift(new models.ObjUpload(_this, file, presets));
|
|
940
1080
|
};
|
|
941
1081
|
})(this));
|
|
942
1082
|
return this.changed();
|
|
@@ -1028,9 +1168,9 @@
|
|
|
1028
1168
|
},
|
|
1029
1169
|
getInitialState: function() {
|
|
1030
1170
|
var basePreset, initialSelection, selectionMode;
|
|
1031
|
-
initialSelection = this.props.
|
|
1032
|
-
selectionMode = this.props.
|
|
1033
|
-
basePreset = this.props.
|
|
1171
|
+
initialSelection = this.props.options.selection || [];
|
|
1172
|
+
selectionMode = this.props.options.selection_mode;
|
|
1173
|
+
basePreset = this.props.options.base_preset;
|
|
1034
1174
|
return {
|
|
1035
1175
|
filter: this.props.initialFilter,
|
|
1036
1176
|
objs: [],
|
|
@@ -1059,11 +1199,12 @@
|
|
|
1059
1199
|
"objCollection": this.state.objCollection,
|
|
1060
1200
|
"viewMode": this.state.viewMode,
|
|
1061
1201
|
"uploadSet": this.state.uploadSet,
|
|
1062
|
-
"inspector": this.state.inspector
|
|
1202
|
+
"inspector": this.state.inspector,
|
|
1203
|
+
"filter": this.state.filter
|
|
1063
1204
|
})), React.createElement(ui.Inspector, {
|
|
1064
1205
|
"inspector": this.state.inspector
|
|
1065
1206
|
})), React.createElement(ui.Footer, {
|
|
1066
|
-
"
|
|
1207
|
+
"promise": this.props.promise,
|
|
1067
1208
|
"objCollection": this.state.objCollection
|
|
1068
1209
|
}));
|
|
1069
1210
|
}
|
|
@@ -1202,7 +1343,7 @@
|
|
|
1202
1343
|
render: function() {
|
|
1203
1344
|
return React.createElement("li", {
|
|
1204
1345
|
"className": this.activeClassName(),
|
|
1205
|
-
"onClick": this.
|
|
1346
|
+
"onClick": this.optionLabelToggleClick
|
|
1206
1347
|
}, React.createElement("div", {
|
|
1207
1348
|
"className": "scrivito-content-browser-hierarchy-checkbox"
|
|
1208
1349
|
}), this.renderOptionFilterTitle());
|
|
@@ -1248,7 +1389,7 @@
|
|
|
1248
1389
|
ui.Filter.RadioOptionFilter = React.createClass({
|
|
1249
1390
|
displayName: 'RadioOptionFilter',
|
|
1250
1391
|
mixins: [OptionFilterMixin],
|
|
1251
|
-
|
|
1392
|
+
labelToggleClick: function() {
|
|
1252
1393
|
if (!this.props.filter.isActive()) {
|
|
1253
1394
|
return this.props.filter.setActive();
|
|
1254
1395
|
}
|
|
@@ -1256,7 +1397,7 @@
|
|
|
1256
1397
|
render: function() {
|
|
1257
1398
|
return React.createElement("li", {
|
|
1258
1399
|
"className": this.activeClassName(),
|
|
1259
|
-
"onClick": this.
|
|
1400
|
+
"onClick": this.labelToggleClick
|
|
1260
1401
|
}, React.createElement("div", {
|
|
1261
1402
|
"className": "scrivito-content-browser-hierarchy-radio"
|
|
1262
1403
|
}), this.renderOptionFilterTitle());
|
|
@@ -1326,8 +1467,8 @@
|
|
|
1326
1467
|
}
|
|
1327
1468
|
return _results;
|
|
1328
1469
|
},
|
|
1329
|
-
|
|
1330
|
-
return this.props.filter.
|
|
1470
|
+
labelToggleClick: function() {
|
|
1471
|
+
return this.props.filter.toggleActive();
|
|
1331
1472
|
},
|
|
1332
1473
|
render: function() {
|
|
1333
1474
|
var labelClasses;
|
|
@@ -1336,7 +1477,7 @@
|
|
|
1336
1477
|
"className": labelClasses
|
|
1337
1478
|
}, (!this.props.filter.isLeaf() ? this.renderArrowTag() : void 0), React.createElement("div", {
|
|
1338
1479
|
"className": "scrivito-content-browser-hierarchy-label",
|
|
1339
|
-
"onClick": this.
|
|
1480
|
+
"onClick": this.labelToggleClick
|
|
1340
1481
|
}, this.renderIconTag(), React.createElement("span", null, this.props.filter.title)), (!this.props.filter.isLeaf() ? React.createElement("ul", null, this.renderSubTrees()) : void 0));
|
|
1341
1482
|
}
|
|
1342
1483
|
});
|
|
@@ -1347,12 +1488,10 @@
|
|
|
1347
1488
|
return this.props.objCollection.selectedObjs().length;
|
|
1348
1489
|
},
|
|
1349
1490
|
cancelClick: function() {
|
|
1350
|
-
this.props.
|
|
1351
|
-
return this.props.container.close();
|
|
1491
|
+
return this.props.promise.reject();
|
|
1352
1492
|
},
|
|
1353
1493
|
doneClick: function() {
|
|
1354
|
-
this.props.
|
|
1355
|
-
return this.props.container.close();
|
|
1494
|
+
return this.props.promise.resolve(this.props.objCollection.selectedObjs());
|
|
1356
1495
|
},
|
|
1357
1496
|
deleteClick: function() {
|
|
1358
1497
|
return this.props.objCollection.destroySelectedObjs();
|
|
@@ -1422,7 +1561,7 @@
|
|
|
1422
1561
|
});
|
|
1423
1562
|
},
|
|
1424
1563
|
uploadFiles: function(event) {
|
|
1425
|
-
var dataTransfer, files;
|
|
1564
|
+
var dataTransfer, files, message, preset;
|
|
1426
1565
|
this.changeDragState(false)(event);
|
|
1427
1566
|
dataTransfer = event.dataTransfer;
|
|
1428
1567
|
if (dataTransfer == null) {
|
|
@@ -1430,9 +1569,23 @@
|
|
|
1430
1569
|
}
|
|
1431
1570
|
files = dataTransfer.files;
|
|
1432
1571
|
if (files.length > 0) {
|
|
1433
|
-
|
|
1572
|
+
preset = this.buildPreset();
|
|
1573
|
+
if (preset.isValid()) {
|
|
1574
|
+
return this.props.uploadSet.addFiles(files, preset.values());
|
|
1575
|
+
} else {
|
|
1576
|
+
message = 'The selected filter options cannot be applied to the file(s) you wanted to upload. Please select only one of the following options, then try again:\n';
|
|
1577
|
+
_.each(preset.errors(), function(values, field) {
|
|
1578
|
+
return message += "\n" + field + ": " + (values.join(', '));
|
|
1579
|
+
});
|
|
1580
|
+
return alert(message);
|
|
1581
|
+
}
|
|
1434
1582
|
}
|
|
1435
1583
|
},
|
|
1584
|
+
buildPreset: function() {
|
|
1585
|
+
var presetBuilder;
|
|
1586
|
+
presetBuilder = new models.PresetBuilder(this.props.filter);
|
|
1587
|
+
return presetBuilder.generatePreset();
|
|
1588
|
+
},
|
|
1436
1589
|
changeDragState: function(toValue) {
|
|
1437
1590
|
return (function(_this) {
|
|
1438
1591
|
return function(event) {
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scrivito_content_browser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.41.0.rc1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Scrivito
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: coffee-rails
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
47
|
+
version: 0.41.0.rc1
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
54
|
+
version: 0.41.0.rc1
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: pry
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|