Files
roi-theme/wp-content/plugins/ajax-search-pro/backend/settings/assets/priorities/controllers.js
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

345 lines
12 KiB
JavaScript
Executable File

/**
* Priority groups list controller
*/
window.$ = jQuery;
var listController = {
// Node storage
$container: '',
$noPG: '',
$pgInput: '',
// Others objects
groupsObject: {},
init: function (args) {
// this.$variable = args[variable];
var $this = this;
$.each(args, function (k, v) {
$this[k] = v;
});
$this.$groupSample = $this.$container.find('.pg_rule_group').detach();
},
printGroups: function () {
var $this = this;
$this.$container.html('');
$.each($this.groupsObject, function (i, o) {
var n = $this.$groupSample.clone();
var groupID = i + 1;
n.data('groupid', groupID);
$('span.pg_name', n).html(o.name);
var plural = o.rules.length == 1 ? '' : 's';
$('span.pg_info', n).html(o.rules.length + ' rule' + plural + '. Priority: ' + o.priority);
n.appendTo($this.$container);
});
if ($this.groupsObject.length == 0) {
$this.$noPG.removeClass('hiddend');
} else {
$this.$noPG.addClass('hiddend');
}
},
saveGroups: function () {
var $this = this;
$this.$pgInput.val(WD_Helpers.Base64.encode(JSON.stringify($this.groupsObject)));
},
deleteGroup: function (id) {
var $this = this;
this.groupsObject.splice(id, 1);
this.saveGroups();
},
deleteGroups: function () {
var $this = this;
this.groupsObject = [];
this.saveGroups();
}
};
/**
* Modal window Group and Rule editor controller
*/
var mgController = {
$group: {}, // Group node list (except the rule editor)
$rules: '', // Rules container
$ruleEditor: '', // Rule editor container
$selectedTaxTerms: '', // Selected taxonomy terms container
$fields: '', // Fields in Rule editor
$addRuleBTN: '', // Add Rule button
$ruleSample: '',
// Others objects
groupsObject: {},
modalOriginalStates: {},
editorOriginalStates: {},
openedRuleGroup: {},
defaultRule: {},
_taxTermNames: {}, // Temporary storage for taxonomy term names in use
init: function(args) {
var $this = this;
// this.$variable = args[variable];
$.each(args, function(k, v){
$this[k] = v;
});
$('select, input', $this.$group.editor).each(function(){
$this.modalOriginalStates[$(this).attr('name')] = $(this).val();
});
$this.$ruleEditor.find('select, input').each(function(){
$this.editorOriginalStates[$(this).attr('name')] = $(this).val();
});
$this.$ruleSample = $this.$rules.find('p').detach();
},
resetRuleEditor: function() {
var $this = this;
$.each($this.editorOriginalStates, function(k, o){
$('*[name="' + k + '"]', $this.$ruleEditor).val(o);
});
$this.$selectedTaxTerms.html('');
},
openRuleEditor: function(id) {
var $this = this;
$this.resetRuleEditor();
var rules = $this.openedRuleGroup.rules;
// Set the latest rule, if the id is not defined
id = typeof id == 'undefined' ? rules.length - 1 : id;
if ( id < 0 )
return false;
var name = typeof rules[id] != 'undefined' ? rules[id].name : 'New rule';
if ( id > -1 ) {
$this.loadRule(id);
}
$this.$ruleEditor.data('rule-id', id);
$('.re_label', $this.$ruleEditor).html('Editing: ' + name);
$this.$ruleEditor.removeClass('hiddend');
$this.$rules.addClass('hiddend');
$this.$addRuleBTN.addClass('hiddend');
$('>p', $this.$ruleEditor).addClass('hiddend');
},
closeRuleEditor: function () {
var $this = this;
$this.$rules.removeClass('hiddend');
$this.$ruleEditor.addClass('hiddend');
$this.$addRuleBTN.removeClass('hiddend');
$('>p', $this.$ruleEditor).removeClass('hiddend');
},
printRules: function() {
var $this = this;
var rules = $this.openedRuleGroup.rules;
$this.$rules.html('');
$.each(rules, function(i, r){
var $r = $this.$ruleSample.clone();
var id = i + 0;
$r.addClass('pg_rule_' + id);
$r.data('id', id);
$r.find('span').html(r.name);
$r.appendTo($this.$rules);
});
},
maxRulesCheck: function() {
var $this = this;
var maxRules = 4;
if ( $this.openedRuleGroup.rules.length >= maxRules ) {
$this.$addRuleBTN.attr('disabled', 'disabled');
} else {
$this.$addRuleBTN.removeAttr('disabled');
}
},
loadRule: function(id) {
var $this = this;
var rules = $this.openedRuleGroup.rules;
if (
typeof rules[id] != 'undefined'
) {
var rule = rules[id];
if ( rule.rule_field != 0 ) {
$this.toEditor(rule);
$('.pg_rule_'+rule.field, $this.$ruleEditor).removeClass('hiddend');
}
}
},
saveOpenRule: function() {
var $this = this;
if ( !$this.$ruleEditor.hasClass('hiddend') ) {
var id = $this.$ruleEditor.data('rule-id');
return $this.saveRule(id);
}
},
saveRule: function(id) {
var $this = this;
var rules = $this.openedRuleGroup.rules;
if ( id == -1 ) {
// Safe add new rule
rules.push( JSON.parse(JSON.stringify($this.defaultRule)) );
} else {
var rule = $this.fromEditor();
if ( typeof(rules[id]) != 'undefined' )
rules[id] = rule;
else
rules.push(rule);
}
return rules;
},
deleteRule: function(id) {
var $this = this;
var rules = $this.openedRuleGroup.rules;
if ( typeof(rules[id]) != 'undefined' ) {
rules.splice(id, 1);
}
return rules;
},
fromEditor: function() {
var $this = this;
var rule = $.extend({}, $this.defaultRule);
var $f = $this.$fields;
rule.name = $f.name.val();
rule.field = $f.field.val();
switch(rule.field) {
case 'tax':
rule.operator = $f.termOperator.val();
rule.values = {};
$.each($f.termValues.find('li'), function(i, o){
var tax = $(this).data('taxonomy');
var id = $(this).data('id');
rule.values[tax] = rule.values[tax] || [];
if ( $.inArray(id, rule.values[tax]) )
rule.values[tax].push(id);
$this._taxTermNames[tax] = $this._taxTermNames[tax] || {};
$this._taxTermNames[tax][id] = $(this).text();
});
break;
case 'cf':
rule.operator = $f.cfOperator.val();
rule.values = {};
rule.values[$f.cfField.val()] = [];
if ( $f.cfVal1.val() != '' )
rule.values[$f.cfField.val()].push($f.cfVal1.val());
if ( $f.cfVal2.val() != '' )
rule.values[$f.cfField.val()].push($f.cfVal2.val());
break;
case 'title':
rule.operator = $f.titleOperator.val();
rule.values = [];
if ( $f.titleValue.val() != '' )
rule.values.push($f.titleValue.val());
break;
}
return rule;
},
toEditor: function(rule) {
var $this = this;
// Load rule values to editor
var $f = $this.$fields;
$f.name.val(rule.name).trigger('change');
$f.field.val(rule.field).trigger('change');
switch(rule.field) {
case 'tax':
$f.termOperator.val(rule.operator).trigger('change');
$.each(rule.values, function(tax, ids){
$.each(ids, function(kk, id){
var $li = $('<li>');
$li.html($this._findTermName(rule, tax, id));
$li.addClass('t_'+tax+'_'+id);
$li.data('taxonomy', tax);
$li.data('id', id);
$li.appendTo($this.$selectedTaxTerms);
});
});
break;
case 'cf':
$f.cfOperator.val(rule.operator).trigger('change');
$.each(rule.values, function(k, o){
$f.cfField.val(k);
if ( typeof o[0] !== 'undefined' )
$f.cfVal1.val(o[0]);
if ( typeof o[1] !== 'undefined' )
$f.cfVal2.val(o[1]);
return false;
});
break;
case 'title':
$f.titleOperator.val(rule.operator);
if ( typeof rule.values[0] !== 'undefined' )
$f.titleValue.val(rule.values[0]);
break;
}
},
saveRuleGroup: function(id) {
var $this = this;
$this.openedRuleGroup.name = $this.$group.name.val();
$this.openedRuleGroup.instance = $this.$group.instance.val();
$this.openedRuleGroup.priority = $this.$group.priority.val();
$this.openedRuleGroup.phrase_logic = $this.$group.phraseLogic.val();
$this.openedRuleGroup.logic = $this.$group.ruleLogic.val();
if ( $this.openedRuleGroup.phrase_logic != 'disabled' ) {
$this.openedRuleGroup.phrase = $this.$group.phrase.val();
} else {
$this.openedRuleGroup.phrase = '';
}
if ( id == -1 ) {
$this.groupsObject.push($this.openedRuleGroup);
} else {
$this.groupsObject[id] = $this.openedRuleGroup;
}
},
loadRuleGroup: function(g) {
var $this = this;
if ( typeof g != 'undefined' )
$this.openedRuleGroup = g;
$.each($this.modalOriginalStates, function (k, o) {
$('*[name="' + k + '"]', $this.$group.editor).val(o);
});
if ( typeof $this.openedRuleGroup != 'undefined' ) {
// Group editor stuff
$this.$group.name.val($this.openedRuleGroup.name);
$this.$group.instance.val($this.openedRuleGroup.instance);
$this.$group.priority.val($this.openedRuleGroup.priority);
$this.$group.phrase.val($this.openedRuleGroup.phrase);
$this.$group.phraseLogic.val($this.openedRuleGroup.phrase_logic).trigger('change');
$this.$group.ruleLogic.val($this.openedRuleGroup.logic).trigger('change');
// Rule editor stuff
if ( typeof $this.openedRuleGroup.rules != 'undefined' ) {
$this.closeRuleEditor();
//ruleEditorPrintRules(g.rules);
$this.printRules();
$this.maxRulesCheck();
}
}
},
// ----------------- HELPER PRIVATE METHODS ------------------------
_findTermName: function(rule, tax, id) {
var $this = this;
// Look within recent tax term names
if ( typeof $this._taxTermNames[tax] != 'undefined' &&
typeof $this._taxTermNames[tax][id] != 'undefined'
)
return $this._taxTermNames[tax][id];
// Look within the initial printed tax term names
if ( typeof rule._values != 'undefined' &&
typeof rule._values[tax] != 'undefined' &&
typeof rule._values[tax][id] != 'undefined'
)
return rule._values[tax][id];
return '';
}
};