plugin updates
This commit is contained in:
@@ -1,279 +0,0 @@
|
||||
/* eslint-env jquery */
|
||||
(function ($) {
|
||||
const initTargetRuleSelect2 = function (selector) {
|
||||
$(selector).select2({
|
||||
placeholder: 'Search pages / post / archives',
|
||||
|
||||
ajax: {
|
||||
url: ajaxurl,
|
||||
dataType: 'json',
|
||||
method: 'post',
|
||||
delay: 250,
|
||||
data(params) {
|
||||
return {
|
||||
q: params.term, // search term
|
||||
page: params.page,
|
||||
action: 'bsf_get_posts_by_query',
|
||||
nonce: Targetrule.security,
|
||||
};
|
||||
},
|
||||
processResults(data) {
|
||||
// console.log(data);
|
||||
// console.log("inside");
|
||||
// parse the results into the format expected by Select2.
|
||||
// since we are using custom formatting functions we do not need to
|
||||
// alter the remote JSON data
|
||||
|
||||
return {
|
||||
results: data,
|
||||
};
|
||||
},
|
||||
cache: true,
|
||||
},
|
||||
minimumInputLength: 2,
|
||||
});
|
||||
};
|
||||
|
||||
const updateTargetRuleInput = function (wrapper) {
|
||||
const ruleInput = wrapper.find('.bsf-target_rule-input');
|
||||
const newValue = [];
|
||||
|
||||
wrapper.find('.bsf-target-rule-condition').each(function () {
|
||||
const $this = $(this);
|
||||
let tempObj = {};
|
||||
const ruleCondition = $this.find('select.target_rule-condition');
|
||||
const specificPage = $this.find('select.target_rule-specific-page');
|
||||
|
||||
const ruleConditionVal = ruleCondition.val();
|
||||
const specificPageVal = specificPage.val();
|
||||
|
||||
if ('' !== ruleConditionVal) {
|
||||
tempObj = {
|
||||
type: ruleConditionVal,
|
||||
specific: specificPageVal,
|
||||
};
|
||||
|
||||
newValue.push(tempObj);
|
||||
}
|
||||
});
|
||||
|
||||
const rulesString = JSON.stringify(newValue);
|
||||
ruleInput.val(rulesString);
|
||||
};
|
||||
|
||||
const updateCloseButton = function (wrapper) {
|
||||
const type = wrapper
|
||||
.closest('.bsf-target-rule-wrapper')
|
||||
.attr('data-type');
|
||||
const rules = wrapper.find('.bsf-target-rule-condition');
|
||||
let showClose = false;
|
||||
|
||||
if ('display' === type) {
|
||||
if (rules.length > 1) {
|
||||
showClose = true;
|
||||
}
|
||||
} else {
|
||||
showClose = true;
|
||||
}
|
||||
|
||||
rules.each(function () {
|
||||
if (showClose) {
|
||||
jQuery(this)
|
||||
.find('.target_rule-condition-delete')
|
||||
.removeClass('bsf-hidden');
|
||||
} else {
|
||||
jQuery(this)
|
||||
.find('.target_rule-condition-delete')
|
||||
.addClass('bsf-hidden');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const updateExclusionButton = function (forceShow, forceHide) {
|
||||
const displayOn = $('.bsf-target-rule-display-on-wrap');
|
||||
const excludeOn = $('.bsf-target-rule-exclude-on-wrap');
|
||||
|
||||
const excludeFieldWrap = excludeOn.closest('tr');
|
||||
const addExcludeBlock = displayOn.find(
|
||||
'.target_rule-add-exclusion-rule'
|
||||
);
|
||||
const excludeConditions = excludeOn.find('.bsf-target-rule-condition');
|
||||
|
||||
if (true === forceHide) {
|
||||
excludeFieldWrap.addClass('bsf-hidden');
|
||||
addExcludeBlock.removeClass('bsf-hidden');
|
||||
} else if (true === forceShow) {
|
||||
excludeFieldWrap.removeClass('bsf-hidden');
|
||||
addExcludeBlock.addClass('bsf-hidden');
|
||||
} else if (
|
||||
1 === excludeConditions.length &&
|
||||
'' ===
|
||||
$(excludeConditions[0])
|
||||
.find('select.target_rule-condition')
|
||||
.val()
|
||||
) {
|
||||
excludeFieldWrap.addClass('bsf-hidden');
|
||||
addExcludeBlock.removeClass('bsf-hidden');
|
||||
} else {
|
||||
excludeFieldWrap.removeClass('bsf-hidden');
|
||||
addExcludeBlock.addClass('bsf-hidden');
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function () {
|
||||
jQuery('.bsf-target-rule-condition').each(function () {
|
||||
const $this = $(this),
|
||||
condition = $this.find('select.target_rule-condition'),
|
||||
conditionVal = condition.val(),
|
||||
specificPage = $this.next('.target_rule-specific-page-wrap');
|
||||
|
||||
if ('specifics' === conditionVal) {
|
||||
specificPage.slideDown(300);
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(
|
||||
'.bsf-target-rule-selector-wrapper select.target-rule-select2'
|
||||
).each(function (index, el) {
|
||||
initTargetRuleSelect2(el);
|
||||
});
|
||||
|
||||
jQuery('.bsf-target-rule-selector-wrapper').each(function () {
|
||||
updateCloseButton(jQuery(this));
|
||||
});
|
||||
|
||||
jQuery(document).on(
|
||||
'change',
|
||||
'.bsf-target-rule-condition select.target_rule-condition',
|
||||
function () {
|
||||
const $this = jQuery(this),
|
||||
thisVal = $this.val(),
|
||||
fieldWrap = $this.closest('.bsf-target-rule-wrapper');
|
||||
|
||||
if ('specifics' === thisVal) {
|
||||
$this
|
||||
.closest('.bsf-target-rule-condition')
|
||||
.next('.target_rule-specific-page-wrap')
|
||||
.slideDown(300);
|
||||
} else {
|
||||
$this
|
||||
.closest('.bsf-target-rule-condition')
|
||||
.next('.target_rule-specific-page-wrap')
|
||||
.slideUp(300);
|
||||
}
|
||||
|
||||
updateTargetRuleInput(fieldWrap);
|
||||
}
|
||||
);
|
||||
|
||||
jQuery('.bsf-target-rule-selector-wrapper').on(
|
||||
'change',
|
||||
'.target-rule-select2',
|
||||
function () {
|
||||
const $this = jQuery(this),
|
||||
fieldWrap = $this.closest('.bsf-target-rule-wrapper');
|
||||
|
||||
updateTargetRuleInput(fieldWrap);
|
||||
}
|
||||
);
|
||||
|
||||
jQuery('.bsf-target-rule-selector-wrapper').on(
|
||||
'click',
|
||||
'.target_rule-add-rule-wrap a',
|
||||
function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
const $this = jQuery(this),
|
||||
id = $this.attr('data-rule-id'),
|
||||
newId = parseInt(id) + 1,
|
||||
type = $this.attr('data-rule-type'),
|
||||
ruleWrap = $this
|
||||
.closest('.bsf-target-rule-selector-wrapper')
|
||||
.find('.target_rule-builder-wrap'),
|
||||
template = wp.template(
|
||||
'bsf-target-rule-' + type + '-condition'
|
||||
),
|
||||
fieldWrap = $this.closest('.bsf-target-rule-wrapper');
|
||||
|
||||
ruleWrap.append(template({ id: newId, type }));
|
||||
|
||||
initTargetRuleSelect2(
|
||||
'.bsf-target-rule-' + type + '-on .target-rule-select2'
|
||||
);
|
||||
|
||||
$this.attr('data-rule-id', newId);
|
||||
|
||||
updateCloseButton(fieldWrap);
|
||||
}
|
||||
);
|
||||
|
||||
jQuery('.bsf-target-rule-selector-wrapper').on(
|
||||
'click',
|
||||
'.target_rule-condition-delete',
|
||||
function () {
|
||||
const $this = jQuery(this),
|
||||
ruleCondition = $this.closest('.bsf-target-rule-condition'),
|
||||
fieldWrap = $this.closest('.bsf-target-rule-wrapper');
|
||||
let cnt = 0;
|
||||
const dataType = fieldWrap.attr('data-type');
|
||||
if (
|
||||
'exclude' === dataType &&
|
||||
fieldWrap.find('.bsf-target-rule-condition').length === 1
|
||||
) {
|
||||
fieldWrap.find('.target_rule-condition').val('');
|
||||
fieldWrap.find('.target_rule-specific-page').val('');
|
||||
fieldWrap.find('.target_rule-condition').trigger('change');
|
||||
updateExclusionButton(false, true);
|
||||
} else {
|
||||
$this
|
||||
.parent('.bsf-target-rule-condition')
|
||||
.next('.target_rule-specific-page-wrap')
|
||||
.remove();
|
||||
ruleCondition.remove();
|
||||
}
|
||||
|
||||
fieldWrap.find('.bsf-target-rule-condition').each(function (i) {
|
||||
const condition = jQuery(this),
|
||||
oldRuleId = condition.attr('data-rule'),
|
||||
selectLocation = condition.find(
|
||||
'.target_rule-condition'
|
||||
),
|
||||
locationName = selectLocation.attr('name');
|
||||
|
||||
condition.attr('data-rule', i);
|
||||
|
||||
selectLocation.attr(
|
||||
'name',
|
||||
locationName.replace(
|
||||
'[' + oldRuleId + ']',
|
||||
'[' + i + ']'
|
||||
)
|
||||
);
|
||||
|
||||
condition
|
||||
.removeClass('bsf-target-rule-' + oldRuleId)
|
||||
.addClass('bsf-target-rule-' + i);
|
||||
|
||||
cnt = i;
|
||||
});
|
||||
|
||||
fieldWrap
|
||||
.find('.target_rule-add-rule-wrap a')
|
||||
.attr('data-rule-id', cnt);
|
||||
|
||||
updateCloseButton(fieldWrap);
|
||||
updateTargetRuleInput(fieldWrap);
|
||||
}
|
||||
);
|
||||
|
||||
jQuery('.bsf-target-rule-selector-wrapper').on(
|
||||
'click',
|
||||
'.target_rule-add-exclusion-rule a',
|
||||
function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
updateExclusionButton(true);
|
||||
}
|
||||
);
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user