Store additional criterias in advanced search #32781
- text - date(s) - multiple selections - folder
This commit is contained in:
parent
46a76a1fa0
commit
957199c000
|
@ -264,8 +264,14 @@ function get_history_parameter(name, default_value) {
|
|||
$(window).find('.contentTreeAdd').unbind('click').click(function() {
|
||||
var contenttree_window = $(this).parents(".contenttreeWindow");
|
||||
contenttree_window.find('.navTreeCurrentItem > a').each(function () {
|
||||
$(initial_input).val($(this).data('intid'));
|
||||
$(input).val($.trim($(this).text()));
|
||||
var folder_intid = $(this).data('intid');
|
||||
var folder_label = $.trim($(this).text());
|
||||
$(initial_input).val(folder_intid);
|
||||
$(input).val(folder_label);
|
||||
var multi = get_history_parameter('multi', {});
|
||||
multi[index].value = folder_intid;
|
||||
multi[index].label = folder_label;
|
||||
store_history_parameter('multi', multi);
|
||||
});
|
||||
$(this).contentTreeCancel();
|
||||
$.querywidget.updateSearch();
|
||||
|
@ -467,6 +473,10 @@ function select_metatype(elem)
|
|||
$('option[data-index]').parents('select').change(function() {
|
||||
index = $(this).find('option[data-index]:selected').data('index');
|
||||
if ($('.addIndex option[value="' + index + '"]:selected').length == 0) {
|
||||
var multi = get_history_parameter('multi', {});
|
||||
multi[index] = {};
|
||||
store_history_parameter('multi', multi);
|
||||
console.log("option[data-index] change (L493), storing fresh multi index: " + index);
|
||||
$('.addIndex option[value="' + index + '"]').prop('selected', true);
|
||||
$('.addIndex').trigger('change');
|
||||
var criteria_div = $('#formfield-form-widgets-query div.criteria option[value="' + index + '"]:selected').parents('select').parent().detach();
|
||||
|
@ -601,6 +611,80 @@ function select_metatype(elem)
|
|||
$('fieldset.text-fieldset div.criteria-content').show();
|
||||
$('fieldset.text-fieldset legend').addClass('expanded');
|
||||
}
|
||||
|
||||
var multi = get_history_parameter('multi', {});
|
||||
var index_name;
|
||||
for (index_name in multi) { // hack to emulate (.length > 0) for an object
|
||||
$('fieldset.more-fieldset div.criteria-content').show();
|
||||
$('fieldset.more-fieldset legend').addClass('expanded');
|
||||
break;
|
||||
}
|
||||
|
||||
// create criteria line
|
||||
console.log("restore_ppfwbged_search, adding new criteria lines");
|
||||
for (index_name in multi) {
|
||||
if ($('.addIndex option[value="' + index_name + '"]:selected').length == 0) {
|
||||
console.log("restore_ppfwbged_search, adding new criteria line for " + index_name);
|
||||
$('.addIndex option[value="' + index_name + '"]').prop('selected', true);
|
||||
$('.addIndex').trigger('change');
|
||||
var criteria_div = $('#formfield-form-widgets-query div.criteria option[value="' + index_name + '"]:selected').parents('select').parent().detach();
|
||||
criteria_div.appendTo('.more-fieldset .criteria-content');
|
||||
criteria_div.find('select.queryindex').prop('disabled', true);
|
||||
$($(this).find('option[data-index]').parents('select').find('option')[0]).prop('selected', true);
|
||||
}
|
||||
}
|
||||
|
||||
// set operator, if needed
|
||||
console.log("restore_ppfwbged_search, setting operators");
|
||||
for (index_name in multi) {
|
||||
var index_params = multi[index_name];
|
||||
if (index_params.hasOwnProperty("operator")) {
|
||||
var operator = $('option[value="' + index_name + '"]:selected').parents('select').parent().find(".queryoperator");
|
||||
if (operator.find("option:selected").val() != index_params.operator) {
|
||||
console.log("restore_ppfwbged_search, setting operator " + index_params.operator);
|
||||
operator.find("option[value='" + index_params.operator + "']").prop('selected', true);
|
||||
operator.trigger("change");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// set values, if needed
|
||||
console.log("restore_ppfwbged_search, setting values");
|
||||
for (index_name in multi) {
|
||||
var index_params = multi[index_name];
|
||||
if (index_params.hasOwnProperty("value")) {
|
||||
console.log("restore_ppfwbged_search, setting value for " + index_params.value.toString());
|
||||
var stored_value = index_params.value;
|
||||
var criteria = $('option[value="' + index_name + '"]:selected').parents('select').parent();
|
||||
var querywidget = criteria.find(".querywidget");
|
||||
var operator_value = criteria.find(".queryoperator").val();
|
||||
var widget_type = $.querywidget.config.indexes[index_name].operators[operator_value].widget;
|
||||
switch (widget_type) {
|
||||
case 'DateRangeWidget':
|
||||
$(querywidget.children('input')[0]).val(stored_value[0]);
|
||||
$(querywidget.children('input')[1]).val(stored_value[1]);
|
||||
break;
|
||||
case 'MultipleSelectionWidget':
|
||||
var selected_titles = [];
|
||||
$.each(stored_value, function(i, element_value) {
|
||||
var input = querywidget.find('input[value="' + element_value + '"]');
|
||||
input.prop('checked', true);
|
||||
selected_titles.push(input.parent().children('span').html());
|
||||
});
|
||||
querywidget.find('.multipleSelectionWidgetTitle')
|
||||
.attr('title', selected_titles.join(', '))
|
||||
.html(selected_titles.join(', '));
|
||||
break;
|
||||
default:
|
||||
querywidget.val(stored_value);
|
||||
if (index_name === 'object_folders') {
|
||||
querywidget.next("input").val(index_params.label);
|
||||
}
|
||||
break;
|
||||
}
|
||||
$.querywidget.updateSearch();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Reference in New Issue