/*!
* Filter Everything set admin 1.2.3
*/
(function($) {
"use strict";
let filtersFormValid = false;
function validateFiltersForm( $el )
{
let $spinner = $('#publishing-action .spinner');
let requestParams = {};
$spinner.addClass( 'is-active' );
/**
* @todo checkboxes does not validates correctly because they send the same value !!! IMPORTANT
* independently from checked status
*/
requestParams.validateData = wpcSerialize( $el );
wp.ajax.post( 'wpc-validate-filters', requestParams )
.always( function() {
$spinner.removeClass( 'is-active' );
})
.done( function( response ) {
filtersFormValid = true;
$el.submit();
})
.fail( function( response ) {
let notices = [];
let filterContainer = '';
if( typeof response.errors !== 'undefined' ){
$.each( response.errors, function ( index, error ){
if( typeof error.id !== 'undefined'){
addFieldError( error.id, error.message );
// Open filter container to show error
filterContainer = $('#'+error.id).parents('.wpc-filter-item');
openFilter(filterContainer);
// Open additional fields if errors are there
if( $('#'+error.id).parents('.wpc-filter-additional-fields').length > 0 ){
openAdditional(filterContainer);
}
}else{
notices.push( error.message );
}
});
if( notices.length < 1 ){
notices.push( 'Error: Set was not saved.' );
}
addNotice( notices );
}
});
return false;
}
function removeElement($el)
{
$el.fadeTo(100, 0, function() {
$el.slideUp(100, function() {
$el.remove();
});
});
}
function addFieldError( fieldId, message )
{
let target = $('#'+fieldId);
let html = '
';
if( typeof target !== 'undefined' ){
target.before( html );
}
}
function addNotice( messages )
{
let target = $('form#post');
let text = '';
$.each( messages, function ( index, message ) {
text += '' + message + '
';
});
let html = ''
+ text +
'' +
'
';
if( typeof target !== 'undefined' ){
if( $("#message").length > 0 ){
$("#message").remove();
}
target.before( html );
}
}
function openFilter($el)
{
let head = $el.find('.wpc-filter-head'),
body = head.next('.wpc-filter-body');
head.addClass('wpc-opened');
body.slideDown({
duration: 200,
complete: function (){
body.addClass('wpc-opened');
}
});
}
function closeFilter($el)
{
let head = $el.find('.wpc-filter-head'),
body = head.next('.wpc-filter-body');
head.removeClass('wpc-opened');
body.slideUp({
duration: 200,
complete: function (){
body.removeClass('wpc-opened');
}
});
}
function closeAdditional($el)
{
$el.find('.wpc-filter-additional-fields').slideUp({
duration: 200,
complete: function (){
$(this).removeClass('wpc-opened');
}
});
}
function openAdditional($el)
{
$el.find('.wpc-filter-additional-fields').slideDown({
duration: 200,
complete: function (){
$(this).addClass('wpc-opened');
}
});
}
function getForbiddenTaxes()
{
if( typeof wpcSetVars.postTypesTaxList !== 'undefined'){
let postType = $('#wpc_set_fields-post_type').val();
let allowedTaxes = [];
let forbiddenTaxes = [];
if( typeof wpcSetVars.postTypesTaxList[postType] !== 'undefined' ){
$.each( wpcSetVars.postTypesTaxList[postType], function ( iNdex, taxProps ){
allowedTaxes.push(taxProps['name']);
});
}
$.each( wpcSetVars.postTypesTaxList, function ( pType, taxesArray ){
if( pType !== postType ){
$.each( taxesArray, function ( index, theTax ){
if( allowedTaxes.includes(theTax['name']) === false ){
forbiddenTaxes.push(theTax['name']);
}
} )
}
});
return forbiddenTaxes;
}
return [];
}
function getUsedEntities( $inputs, excludeInput )
{
let usedEntities = [];
let currentVal = '';
let doNotInclude = ['post_meta', 'post_meta_num', 'post_meta_exists'];
if( $inputs.length > 0 ){
$inputs.each(function(){
currentVal = $(this).val();
if( $(this).attr('id') == excludeInput.attr('id') ){
return;
}
if( doNotInclude.includes( currentVal ) ){
return;
}
usedEntities.push( $(this).val() );
});
return usedEntities;
}
return false;
}
function setAvailableEntities( $el, noChange )
{
let currentVal = '';
let exclude = getUsedEntities( $('.wpc-field-entity'), $el );
let forbiddenTaxes = getForbiddenTaxes();
$el.find('option').each( function (){
currentVal = $(this).val();
if( currentVal === 'post_meta_exists' && ( wpcSetVars.filtersPro < 1) ){
return;
}
if( exclude.includes( currentVal ) || forbiddenTaxes.includes(currentVal) ){
$(this).attr( 'disabled', 'disabled' );
}else{
$(this).removeAttr( 'disabled' );
}
} );
// If currently selected option is disabled, make first available option selected.
let disabled = $el.find('option:selected').attr('disabled');
if( disabled === 'disabled' && ! noChange ){
$el.find('option:not([disabled]):first').prop('selected', true)
.trigger('change');
}
return true;
}
function passNewEntities(select)
{
let time = 0;
$('.wpc-new-filter-item .wpc-field-entity').each(function (){
let select = $(this);
let noChange = false;
if( $(this).attr('id') == select.attr('id') ){
noChange = true;
}
setTimeout( function(){ setAvailableEntities( select, noChange ); }, time);
time += 100;
});
}
$(document).ready(function (){
$('form#post').on('submit', function(e){
// Clear all errors
removeElement( $('.wpc-field-notice') );
// Clear Notice
removeElement( $('#message') );
// Close All Filters
closeFilter( $(".wpc-filter-item") );
if( ! filtersFormValid ){
e.preventDefault();
// Validate form. We will submit it from validation method
validateFiltersForm($(this));
}
});
$('.wpc-add-filter').on('click', function (e){
e.preventDefault();
var html = $('#wpc-new-filter').html();
var $el = $(html);
var search = 'wpc_new_id';
var replace = uniqId('filter_');
var replaceAttr = function(i, value){
return value.replace( search, replace );
}
$el.find('[id*="' + search + '"]').attr('id', replaceAttr);
$el.find('[for*="' + search + '"]').attr('for', replaceAttr);
$el.find('[name*="' + search + '"]').attr('name', replaceAttr);
$el.data('fid', replace);
$el.attr('id', 'wpc-filter-id-'+replace);
$('.wpc-filters-list').append($el);
let select = $el.find('.wpc-field-entity');
syncEntityWithPrefix(select);
handleMetaKeyField(select);
setEntityTableClass(select);
syncEntityWithView(select);
syncEntityWithSortTerms(select);
// Make already used entities unavailable to selection
setAvailableEntities( select );
handleHierarchyField( select );
$el.find('.wpc-field-exclude').select2({
width: '100%',
placeholder: wpcSelect2Vars.excludePlaceholder,
});
$el.find('.wpc-field-ename').select2({
width: '100%',
tags: true,
placeholder: wpcSelect2Vars.enamePlaceHolder
});
// Fire this event to load exclude terms for first filter
if( $('.wpc-filter-item').length === 1 ){
select.trigger('change');
}
$('.wpc-help-tip').tipTip({
'attribute': 'data-tip',
'fadeIn': 50,
'fadeOut': 50,
'delay': 200,
'keepAlive': true,
'maxWidth': "220px",
});
openFilter($el);
renderMenuOrder();
handleNoFiltersMessage();
/**
* @todo There is problem with down arrow when we adding new filter !!! IMPORTANT
*/
});
$('.wpc-form-fields-table:not(.wpc-filter-post_meta_num) .wpc-field-exclude, .wpc-form-fields-table:not(.wpc-filter-post_meta_exists) .wpc-field-exclude').select2({
width: '100%',
placeholder: wpcSelect2Vars.excludePlaceholder
});
$('body').on('click', '.notice-dismiss', function(e){
e.preventDefault();
removeElement( $('#message') );
});
// Show delete buttons
$('body').on('click', '.wpc-button-link-delete', function(e){
e.preventDefault();
$(this).parents('.wpc-filter-label-td')
.next('.wpc-filter-field-td')
.children('.wpc-filter-delete-wrapper').css('visibility', 'visible');
});
$('body').on('click', '.wpc-filter-delete-cancel', function(e){
e.preventDefault();
removeElement( $('.wpc-field-notice') );
$(this).parents('.wpc-filter-delete-wrapper').css('visibility', 'hidden');
});
$('body').on('click', '.wpc-done-action', function(e){
$(this).parents('.wpc-filter-body').slideToggle(200)
.toggleClass('wpc-opened')
.children('.wpc-filter-additional-fields').removeClass('wpc-additional-opened')
.hide();
$(this).parents('.wpc-filter-body').prev('.wpc-filter-head').toggleClass('wpc-opened');
// Hide delete buttons
$(this).parents('.wpc-filter-field-td')
.next('.wpc-filter-field-td')
.find('.wpc-filter-delete-wrapper').css('visibility', 'hidden');
});
$('body').on('click', '.wpc-title-action', function(e){
let head = $(this).parent('.wpc-filter-head'),
body = head.next('.wpc-filter-body');
head.toggleClass('wpc-opened');
body.slideToggle(200)
.toggleClass('wpc-opened')
.children('.wpc-filter-additional-fields').removeClass('wpc-additional-opened')
.hide();
body.find('.wpc-filter-delete-wrapper').css('visibility', 'hidden');
let moreOptions = body.find('.wpc-more-options-toggle');
if( moreOptions.hasClass('wpc-opened') ){
moreOptions.trigger('click');
}
});
$('body').on('click', '.wpc-more-options-toggle', function(e){
e.preventDefault();
let moreText = $(this).text();
if( moreText === wpcSetVars.moreOptions ){
$(this).text( wpcSetVars.lessOptions);
}else{
$(this).text( wpcSetVars.moreOptions);
}
$(this).toggleClass('wpc-opened');
$(this).parents('.wpc-filter-body').find('.wpc-filter-additional-fields').slideToggle(200)
.toggleClass('wpc-additional-opened');
});
$('body').on('change', '.wpc-field-entity', function(e){
let select = $(this);
// Set available entities again
passNewEntities(select);
syncEntityWithPrefix(select);
handleMetaKeyField(select);
handleLogicField(select);
setEntityTableClass(select);
syncEntityWithView(select);
syncEntityWithSortTerms(select);
handleHierarchyField(select);
// Load terms for exclude
let entity = $(this).val();
let fid = $(this).parents('.wpc-filter-item').data('fid');
if( entity === 'post_meta' || entity === 'post_meta_num' || entity === 'post_meta_exists' ){
let target = $('#wpc_filter_fields-'+fid+'-exclude');
target.select2({
disabled: true,
width: '100%'
});
}else{
loadExcludeItems(entity, fid);
}
let entityLabel = $(this).find('option:selected').text();
let target = $(this).parents('.wpc-filter-item').find('.wpc-filter-head li.wpc-filter-entity');
target.text(entityLabel);
});
// Try to prepend slug if it already exists
$('body').on('input change', '.wpc-field-ename', function(){
let ename = $(this).val();
let fid = $(this).parents('.wpc-filter-item').data('fid');
let entity = $('#wpc_filter_fields-'+fid+'-entity').val();
let val = '';
let slugs = wpcSetVars.filterSlugs;
if( entity === 'post_meta_num' ){
val = 'post_meta_num_' + ename;
}else if( entity === 'post_meta_exists' ){
val = 'post_meta_exists_' + ename;
}else{
val = 'post_meta_' + ename;
}
if( typeof slugs[val] !== 'undefined' ){
$('#wpc_filter_fields-'+fid+'-slug').val( slugs[val] )
.trigger('input');
// Do not load exclude terms for Post Meta Num and Post Meta Exists
if( entity !== 'post_meta_num' ){
loadExcludeItems(entity, fid, ename);
}
}else{
$('#wpc_filter_fields-'+fid+'-slug').val('')
.trigger('input');
$('#wpc_filter_fields-'+fid+'-exclude').select2({
disabled: true,
width: '100%',
});
}
});
$('body').on('input', '.wpc-field-value-step', function (){
$(this).val( $(this).val().replace(/,/g, '.') );
$(this).val( $(this).val().replace(/[^\d\.]/g, '') );
});
$('body').on('input', '.wpc-field-slug', function (){
let target = $(this).parents('.wpc-filter-item').find('.wpc-filter-head li.wpc-filter-slug');
cpaLiveWrite( $(this), target );
});
$('body').on('input', '.wpc-field-label', function (){
let target = $(this).parents('.wpc-filter-item').find('.wpc-filter-head li.wpc-filter-label');
cpaLiveWrite( $(this), target );
});
$('body').on('change', '.wpc-field-view', function(){
let val = $(this).find('option:selected').text();
let target = $(this).parents('.wpc-filter-item').find('.wpc-filter-head li.wpc-filter-view');
target.text(val);
});
$( '.wpc-filter-set-wrapper .wpc-filters-list' ).sortable({
items: "> div.wpc-filter-item",
delay: 150,
placeholder: "wpc-filter-item-shadow",
refreshPositions: true,
cursor: 'move',
handle: ".wpc-filter-order",
axis: 'y',
update: function( event, ui ) {
renderMenuOrder();
},
start: function ( event, ui ){
var height, $this = $(this), // .wpc-filters-list
head = ui.item.children('.wpc-filter-head'),
inside = ui.item.children('.wpc-filter-body');
if (inside.hasClass('wpc-opened') ) {
inside.removeClass('wpc-opened')
.hide();
head.removeClass('wpc-opened');
$(this).sortable('refreshPositions');
}
$('.wpc-filter-item-shadow').css('min-height', head.height() + 'px');
}
});
$('.wpc-filter-set-wrapper .wpc-filters-list').keydown(function(e){
if (e.keyCode == 65 && (e.ctrlKey || e.metaKey) ) {
e.target.select()
}
})
$( ".wpc-filters-list" ).disableSelection();
// Deleter filter
$('body').on('click', '.wpc-filter-delete', function (){
removeElement( $('.wpc-field-notice') );
let $spinner = $(this).prev('.spinner');
$spinner.addClass( 'is-active' );
let requestParams = {};
requestParams._wpnonce = $("#wpc_set_nonce").val();
requestParams.fid = $(this).data('fid');
// @feature localize this var
if( requestParams.fid === 'wpc_new_id' ){
let $filterItem = $(this).parents('.wpc-filter-item');
$filterItem.slideUp({
duration: 200,
complete: function (){
$(this).remove();
renderMenuOrder();
handleNoFiltersMessage();
}
})
}
wp.ajax.post( 'wpc-delete-filter', requestParams )
.always( function() {
$spinner.removeClass( 'is-active' );
})
.done( function( response ) {
if( typeof response !== 'undefined' && typeof response.fid !== 'undefined' ){
$("#wpc-filter-id-"+response.fid).slideUp({
duration: 200,
complete: function (){
$(this).remove();
renderMenuOrder();
handleNoFiltersMessage();
// Set available entities again
// @todo doesn't work properly if there are several new filters exists on a page !!! IMPORTANT
// doesn't make some entities available, but should.
passNewEntities();
}
})
}
})
.fail( function(response) {
if( typeof response !== 'undefined'){
addFieldError( 'wpc-filter-delete-wrapper-'+response.fid, response.message );
}
});
});
// Get set location fields
$('body').on('change', '#wpc_set_fields-post_type', function (){
if( wpcSetVars.filtersPro < 1){
return true;
}
setAvailableEntities( $('.wpc-new-filter-item .wpc-field-entity') );
removeElement( $('.wpc-field-notice') );
// Update Post type related location terms
let selected = $('#wpc_set_fields-wp_page_type').val();
if( typeof selected !== 'undefined' /*&& selected === 'common:common'*/ ){
wpcGetLocationTerms( selected );
}
});
$('body').on('change', '#wpc_set_fields-wp_page_type', function(){
wpcGetLocationTerms( $(this).val() );
});
makeNoticesDismissible();
$('body').on('change', '#wpc_set_fields-post_name', function (e){
let filterPagelink = $('option:selected', this).data('link');
if( typeof filterPagelink !== 'undefined'){
wpcGetWpQueries( filterPagelink );
}
});
let filterPagelink = $('option:selected', $('#wpc_set_fields-post_name')).data('link');
if( typeof filterPagelink !== 'undefined' && filterPagelink ){
wpcGetWpQueries( filterPagelink );
}
});
function wpcGetWpQueries( filterPagelink ){
if( wpcSetVars.filtersPro < 1){
return true;
}
if( filterPagelink === '' ){
return true;
}
removeElement( $('.wpc-field-notice') );
// 1 Get current Post type to try to find its query
// let selected = $('#wpc_set_fields-post_type').val();
let $spinner = $( '.wpc_set_fields-wp_filter_query-wrap' ).children( '.spinner' );
let postType = $("#wpc_set_fields-post_type").val();
// Set up AJAX request
let requestParams = {};
requestParams._wpnonce = $("#wpc_set_nonce").val();
requestParams.wpPageType = $('#wpc_set_fields-wp_page_type').val();
requestParams.postType = postType;
requestParams.postId = $("#post_ID").val();
requestParams.action = 'wpc_get_wp_queries';
$.ajax({
'method': 'POST',
'data': requestParams,
'url': filterPagelink,
'dataType': 'html',
beforeSend: function () {
$spinner.addClass( 'is-active' );
},
complete: function () {
$spinner.removeClass( 'is-active' );
},
success: function (response) {
let wpcWpQueriesSelect = $(response).find('#wpc_set_fields-wp_filter_query');
let wpcWpQueriesHidden = $(response).find('#wpc_query_vars');
if( wpcWpQueriesSelect !== '' && wpcWpQueriesSelect.length > 0 ){
$("#"+wpcSetVars.wPQuerySelectId).replaceWith(wpcWpQueriesSelect);
}
if( wpcWpQueriesHidden.length > 0 ){
$('#wpc_query_vars').replaceWith(wpcWpQueriesHidden);
}
},
error: function (response) {
//
}
});
}
function wpcGetLocationTerms( selected ){
let $spinner = $( '.wpc_set_fields-post_name-wrap' ).children( '.spinner' );
$spinner.addClass( 'is-active' );
// Clear all errors
removeElement( $('.wpc-field-notice') );
let postType = $("#wpc_set_fields-post_type").val();
// Set up AJAX request
let requestParams = {};
requestParams._wpnonce = $("#wpc_set_nonce").val();
requestParams.wpPageType = selected;
requestParams.postType = postType;
requestParams.postId = $("#post_ID").val();
wp.ajax.post( 'wpc-get-set-location-terms', requestParams )
.always( function() {
$spinner.removeClass( 'is-active' );
})
.done( function( response ) {
//
let locationTermsSelect = $(response.html).find('#wpc_set_fields-post_name');
$( '#wpc_set_fields-post_name' ).replaceWith(locationTermsSelect);
let filterPagelink = $('option:selected', $('#wpc_set_fields-post_name') ).data('link');
if( typeof filterPagelink !== 'undefined'){
wpcGetWpQueries( filterPagelink );
}
})
.fail( function(response) {
// {"success":false}
if( typeof response !== 'undefined'){
addFieldError('wpc_set_fields-post_name', response.message);
}
});
}
function cpaLiveWrite( readFrom, writeTo ) {
let cpaText;
readFrom.on('input', function() {
cpaText = $(this).val();
writeTo.text(cpaText);
});
}
/**
* Calculates correct menu order in accordance with filter position in list
*/
function renderMenuOrder()
{
$(".wpc-filter-item").each( function ( index, element ) {
var num = index + 1;
$(element).find('.wpc-menu-order-field').attr('value', num );
$(element).find('.wpc-filter-sortable-handle').text(num);
});
}
function handleNoFiltersMessage()
{
if( $(".wpc-filter-item").length > 0 ){
$('.wpc-no-filters').hide();
}else{
$('.wpc-no-filters').show();
}
}
function setEntityTableClass( entitySelect )
{
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( val.indexOf('taxonomy') !== -1 ){
val = 'taxonomy';
}
$("#wpc-filter-id-"+fid+" .wpc-form-fields-table").attr('class', 'wpc-form-fields-table wpc-filter-'+val);
}
function syncEntityWithPrefix( entitySelect )
{
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( typeof wpcSetVars.filterSlugs[val] !== 'undefined'){
let prefix = wpcSetVars.filterSlugs[val];
$('#wpc_filter_fields-'+fid+'-slug').val(prefix)
.attr('readonly', 'readonly')
.trigger('input');
} else {
$('#wpc_filter_fields-'+fid+'-slug').val('')
.removeAttr('readonly')
.trigger('input');
}
}
function syncEntityWithSortTerms( entitySelect ){
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( ! val.includes('taxonomy_pa') ) {
$('#wpc_filter_fields-'+fid+'-orderby option[value="menuasc"]').attr('disabled', 'disabled');
$('#wpc_filter_fields-'+fid+'-orderby option[value="menudesc"]').attr('disabled', 'disabled');
}else{
$('#wpc_filter_fields-'+fid+'-orderby option[value="menuasc"]').removeAttr('disabled');
$('#wpc_filter_fields-'+fid+'-orderby option[value="menudesc"]').removeAttr('disabled');
}
}
function syncEntityWithView( entitySelect ){
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( val === 'post_meta_num' ) {
$('#wpc_filter_fields-'+fid+'-view option:not([value="range"])').attr('disabled', 'disabled');
$('#wpc_filter_fields-'+fid+'-view option[value="range"]').removeAttr('disabled')
.prop('selected', true);
}else{
$('#wpc_filter_fields-'+fid+'-view option').removeAttr('disabled')
$('#wpc_filter_fields-'+fid+'-view option:not([disabled]):first').prop('selected', true);
$('#wpc_filter_fields-'+fid+'-view option[value="range"]').attr('disabled', 'disabled');
}
}
function handleLogicField( entitySelect )
{
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( val === 'author_author' || val === 'post_meta_exists' ) {
$('#wpc_filter_fields-' + fid + '-logic option[value="and"]').attr('disabled', 'disabled');
$('#wpc_filter_fields-' + fid + '-logic option[value="or"]').prop('selected', true);
}else if( val === 'post_meta_num' ){
$('#wpc_filter_fields-' + fid + '-logic option[value="or"]').attr('disabled', 'disabled');
$('#wpc_filter_fields-' + fid + '-logic option[value="and"]').prop('selected', true);
}else{
$('#wpc_filter_fields-'+fid+'-logic option[value="and"]').removeAttr('disabled');
$('#wpc_filter_fields-'+fid+'-logic option[value="or"]').removeAttr('disabled');
}
return true;
}
function handleHierarchyField( entitySelect )
{
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( val.indexOf('taxonomy') !== -1 ){
$.each( wpcSetVars.postTypesTaxList, function ( pType, taxesArray ){
$.each( taxesArray, function ( index, theTax ){
if( theTax['name'] === val ){
if( theTax['hierarchical'] ){
$("#wpc-filter-id-"+fid+" .wpc-field-hierarchy-tr").show();
}else{
$("#wpc-filter-id-"+fid+" .wpc-field-hierarchy-tr").hide();
}
return;
}
});
});
}
}
function handleMetaKeyField( entitySelect )
{
let val = entitySelect.val();
let fid = entitySelect.parents('.wpc-filter-item').data('fid');
if( val === 'post_meta' || val === 'post_meta_num' || val === 'post_meta_exists' ){
$('#wpc_filter_fields-'+fid+'-e_name').val('')
.removeAttr('readonly')
.parents('.wpc-field-ename-tr').show();
}else{
$('#wpc_filter_fields-'+fid+'-e_name').parents('.wpc-field-ename-tr').hide();
}
if( val === 'post_meta_num' ){
$('#wpc_filter_fields-'+fid+'-in_path').prop( "checked", false );
// $('#wpc_filter_fields-'+fid+'-show_chips').prop( "checked", false );
}else{
$('#wpc_filter_fields-'+fid+'-in_path').prop( "checked", true );
// $('#wpc_filter_fields-'+fid+'-show_chips').prop( "checked", true );
}
}
function loadExcludeItems( entity, fid, ename )
{
// let val = entitySelect.val();
// let fid = entitySelect.parents('.wpc-filter-item').data('fid');
removeElement( $('.wpc-field-notice') );
let requestParams = {};
let target = $('#wpc_filter_fields-'+fid+'-exclude');
requestParams._wpnonce = $("#wpc_set_nonce").val();
requestParams.fid = fid;
requestParams.entity = entity;
if( typeof ename !== 'undefined' ){
requestParams.ename = ename;
}
let $spinner = target.parent('.wpc-after-spinner-container').prev( '.spinner' );
$spinner.addClass( 'is-active' );
wp.ajax.post( 'wpc-load-exclude-terms', requestParams )
.always( function() {
$spinner.removeClass( 'is-active' );
})
.done( function( response ) {
if( typeof response.fid !== 'undefined' ){
target.select2('destroy');
target.html('');
target.select2({
width: '100%',
placeholder: wpcSelect2Vars.excludePlaceholder,
data: response.terms,
disabled: false
})
}
})
.fail( function(response) {
// if( typeof response !== 'undefined'){
// addFieldError( 'wpc_filter_fields-'+response.fid+'-exclude', response.message );
// }
});
}
function makeNoticesDismissible() {
$( '.wpc-error.is-dismissible' ).each( function() {
var $el = $( this ),
$button = $el.find('.notice-dismiss');
// Ensure plain text.
$button.on( 'click', function( event ) {
event.preventDefault();
$el.fadeTo( 100, 0, function() {
$el.slideUp( 100, function() {
$el.remove();
});
});
});
$el.append( $button );
});
}
function wpcSerialize( $el ){
var obj = {};
var inputs = $el.find('select, textarea, input').serializeArray();
for( var i = 0; i < inputs.length; i++ ) {
wpcBuildObject( obj, inputs[i].name, inputs[i].value );
}
return obj;
};
function wpcBuildObject( obj, name, value ){
name = name.replace('[]', '[%%index%%]');
var keys = name.match(/([^\[\]])+/g);
if( !keys ) return;
var length = keys.length;
var ref = obj;
for( var i = 0; i < length; i++ ) {
var key = String( keys[i] );
if( i == length - 1 ) {
if( key === '%%index%%' ) {
ref.push( value );
} else {
ref[ key ] = value;
}
} else {
if( keys[i+1] === '%%index%%' ) {
if( !wpcIsArray(ref[ key ]) ) {
ref[ key ] = [];
}
} else {
if( !wpcIsObject(ref[ key ]) ) {
ref[ key ] = {};
}
}
ref = ref[ key ];
}
}
};
function wpcIsArray( a ){
return Array.isArray(a);
};
function wpcIsObject( a ){
return ( typeof a === 'object' );
}
})(jQuery);
// Important!!!
// When field Filter by is selected, it is required to make AJAX request to find the same
// entity in filters already. And if it is exists, to predefine field "slug" defined in previous
// selection of
function uniqId (prefix, moreEntropy) {
// discuss at: https://locutus.io/php/uniqid/
// original by: Kevin van Zonneveld (https://kvz.io)
// revised by: Kankrelune (https://www.webfaktory.info/)
// note 1: Uses an internal counter (in locutus global) to avoid collision
// example 1: var $id = uniqid()
// example 1: var $result = $id.length === 13
// returns 1: true
// example 2: var $id = uniqid('foo')
// example 2: var $result = $id.length === (13 + 'foo'.length)
// returns 2: true
// example 3: var $id = uniqid('bar', true)
// example 3: var $result = $id.length === (23 + 'bar'.length)
// returns 3: true
if (typeof prefix === 'undefined') {
prefix = '';
}
var retId;
var _formatSeed = function (seed, reqWidth) {
seed = parseInt(seed, 10).toString(16); // to hex str
if (reqWidth < seed.length) {
// so long we split
return seed.slice(seed.length - reqWidth);
}
if (reqWidth > seed.length) {
// so short we pad
return Array(1 + (reqWidth - seed.length)).join('0') + seed;
}
return seed;
}
var $global = (typeof window !== 'undefined' ? window : global);
$global.$locutus = $global.$locutus || {}
var $locutus = $global.$locutus;
$locutus.php = $locutus.php || {}
if (!$locutus.php.uniqidSeed) {
// init seed with big random int
$locutus.php.uniqidSeed = Math.floor(Math.random() * 0x75bcd15);
}
$locutus.php.uniqidSeed++;
// start with prefix, add current milliseconds hex string
retId = prefix;
retId += _formatSeed(parseInt(new Date().getTime() / 1000, 10), 8);
// add seed hex string
retId += _formatSeed($locutus.php.uniqidSeed, 5);
if (moreEntropy) {
// for more entropy we add a float lower to 10
retId += (Math.random() * 10).toFixed(8).toString();
}
return retId;
}