File: /home/mgawa/public_html/wp-content/plugins/wp-schema-pro/admin/assets/js/settings-script.js
/* eslint-env jquery */
(function ($) {
const { __ } = wp.i18n;
const temp = {
person: __('Website Owner Name'),
organization: __('Organization Name', 'wp-schema-pro'),
Webshop: __('Webshop Name', 'wp-schema-pro'),
personblog: __('Website Owner Name', 'wp-schema-pro'),
Smallbusiness: __('Blog Website Name', 'wp-schema-pro'),
Otherbusiness: __('Business Name', 'wp-schema-pro'),
};
/**
* AIOSRS Frontend
*
* @class WPSchemaProSettings
* @since 1.0
*/
const WPSchemaProSettings = {
init() {
const self = this;
this.customFieldDependecy();
this.customImageSelect();
this.initRepeater();
this.toolTips();
this.regenerateSchema();
$('select.wp-select2').each(function (index, el) {
self.init_target_rule_select2(el);
});
},
regenerateSchema() {
$('#wpsp-regenerate-schema').click(function () {
$(this).next('span.spinner').addClass('is-active');
jQuery
.ajax({
url: ajaxurl,
type: 'post',
dataType: 'json',
data: {
action: 'regenerate_schema',
nonce: $(this).data('nonce'),
},
})
.success(function () {
$('#wpsp-regenerate-schema')
.next('span.spinner')
.removeClass('is-active');
$('#wpsp-regenerate-notice')
.show()
.delay(2000)
.fadeOut();
});
});
},
toolTips() {
$(document).on(
'click',
'.wp-schema-pro-tooltip-icon',
function (e) {
e.preventDefault();
$('.wp-schema-pro-tooltip-wrapper').removeClass('activate');
$(this).parent().addClass('activate');
}
);
$(document).on('click', function (e) {
if (
!$(e.target).hasClass(
'wp-schema-pro-tooltip-description'
) &&
!$(e.target).hasClass('wp-schema-pro-tooltip-icon') &&
$(e.target).closest('.wp-schema-pro-tooltip-description')
.length === 0
) {
$('.wp-schema-pro-tooltip-wrapper').removeClass('activate');
}
});
},
customImageSelect() {
let fileFrame;
window.inputWrapper = '';
$(document.body).on(
'click',
'.image-field-wrap .aiosrs-image-select',
function (e) {
e.preventDefault();
window.inputWrapper = $(this).closest('td');
// Create the media frame.
fileFrame = wp.media({
button: {
text: 'Select Image',
close: false,
},
states: [
new wp.media.controller.Library({
title: 'Select Custom Image',
library: wp.media.query({ type: 'image' }),
multiple: false,
}),
],
});
// When an image is selected, run a callback.
fileFrame.on('select', function () {
const attachment = fileFrame
.state()
.get('selection')
.first()
.toJSON();
const image = window.inputWrapper.find(
'.image-field-wrap img'
);
if (image.length === 0) {
window.inputWrapper
.find('.image-field-wrap')
.append(
'<a href="#" class="aiosrs-image-select img"><img src="' +
attachment.url +
'" /></a>'
);
} else {
image.attr('src', attachment.url);
}
window.inputWrapper
.find('.image-field-wrap')
.addClass('bsf-custom-image-selected');
window.inputWrapper
.find('.single-image-field')
.val(attachment.id);
fileFrame.close();
});
fileFrame.open();
}
);
$(document).on('click', '.aiosrs-image-remove', function (e) {
e.preventDefault();
const parent = $(this).closest('td');
parent
.find('.image-field-wrap')
.removeClass('bsf-custom-image-selected');
parent.find('.single-image-field').val('');
parent.find('.image-field-wrap img').removeAttr('src');
});
window.inputWrapper = '';
},
customFieldDependecy() {
jQuery(document).on(
'change',
'#post-body-content .wp-schema-pro-custom-option-select, .aiosrs-pro-setup-wizard-content.general-setting-content-wrap .wp-schema-pro-custom-option-select',
function () {
const customWrap = jQuery(this).next(
'.custom-field-wrapper'
);
customWrap.css('display', 'none');
if ('custom' === jQuery(this).val()) {
customWrap.css('display', '');
}
}
);
jQuery(document).on(
'change',
'select[name="wp-schema-pro-general-settings[site-represent]"]',
function () {
const wrapper = jQuery(this).closest('table'),
logoWrap = wrapper.find(
'.wp-schema-pro-site-logo-wrap'
),
companyNameWrap = wrapper.find(
'.wp-schema-pro-site-name-wrap'
),
personNameWrap = wrapper.find(
'.wp-schema-pro-person-name-wrap'
);
companyNameWrap.css('display', 'none');
personNameWrap.css('display', 'none');
if ('' !== jQuery(this).val()) {
if (
'organization' === jQuery(this).val() ||
'Webshop' === jQuery(this).val() ||
'Smallbusiness' === jQuery(this).val() ||
'Otherbusiness' === jQuery(this).val()
) {
logoWrap.css('display', '');
companyNameWrap.css('display', '');
} else {
personNameWrap.css('display', '');
logoWrap.css('display', '');
}
}
}
);
jQuery(document).on(
'change',
'select[name="wp-schema-pro-general-settings[site-represent]"]',
function () {
const organizationType = jQuery(this).val();
if ('' !== jQuery(this).val()) {
if (organizationType in temp) {
$('.wpsp-organization-label').text(
temp[organizationType]
);
}
}
}
);
jQuery(document).on(
'change',
'select[name="wp-schema-pro-corporate-contact[contact-type]"]',
function () {
const wrapper = jQuery(this).closest('table'),
contactPointWrap = wrapper.find(
'.wp-schema-pro-other-wrap'
);
contactPointWrap.css('display', 'none');
if ('' !== jQuery(this).val()) {
if ('other' === jQuery(this).val()) {
contactPointWrap.css('display', '');
}
}
}
);
$('#add-row').on('click', function () {
const row = $('.empty-row.screen-reader-text').clone(true);
row.removeClass('empty-row screen-reader-text');
row.insertBefore('#repeatable-fieldset-one >tr:last');
return false;
});
$('.remove-row').on('click', function () {
$(this).parents('tr').remove();
return false;
});
},
initRepeater() {
$(document).on(
'click',
'.bsf-repeater-add-new-btn',
function (event) {
event.preventDefault();
const selector = $(this),
parentWrap = selector.closest(
'.bsf-aiosrs-schema-type-wrap'
),
totalCount = parentWrap.find(
'.aiosrs-pro-repeater-table-wrap'
).length,
template = parentWrap
.find('.aiosrs-pro-repeater-table-wrap')
.first()
.clone();
template.find('input, textarea, select').each(function () {
$(this).val('');
const fieldName =
'undefined' !== typeof $(this).attr('name')
? $(this)
.attr('name')
.replace(
'[0]',
'[' + totalCount + ']'
)
: '',
fieldClass =
'undefined' !== typeof $(this).attr('class')
? $(this)
.attr('class')
.replace(
'-0-',
'-' + totalCount + '-'
)
: '',
fieldId =
'undefined' !== typeof $(this).attr('id')
? $(this)
.attr('id')
.replace(
'-0-',
'-' + totalCount + '-'
)
: '';
$(this).attr('name', fieldName);
$(this).attr('class', fieldClass);
$(this).attr('id', fieldId);
});
template.insertBefore(selector);
}
);
$(document).on('click', '.bsf-repeater-close', function (event) {
event.preventDefault();
const selector = $(this),
parentWrap = selector.closest(
'.bsf-aiosrs-schema-type-wrap'
),
repeaterCount = parentWrap.find(
'> .aiosrs-pro-repeater-table-wrap'
).length;
if (repeaterCount > 1) {
selector
.closest('.aiosrs-pro-repeater-table-wrap')
.remove();
}
});
},
init_target_rule_select2(selector) {
$(selector).select2({
placeholder: 'Search Fields...',
ajax: {
url: ajaxurl,
dataType: 'json',
method: 'post',
delay: 250,
data(params) {
return {
nonce_ajax: AIOSRS_search.search_field,
q: params.term, // search term
page: params.page,
action: 'bsf_get_specific_pages',
};
},
processResults(data) {
return {
results: data,
};
},
cache: true,
},
minimumInputLength: 2,
});
},
};
const loadDefaultValues = function () {
const field = jQuery(
'select[name="wp-schema-pro-general-settings[site-represent]"]'
),
wrapper = field.closest('table'),
logoWrap = wrapper.find('.wp-schema-pro-site-logo-wrap'),
companyNameWrap = wrapper.find('.wp-schema-pro-site-name-wrap'),
personNameWrap = wrapper.find('.wp-schema-pro-person-name-wrap');
companyNameWrap.css('display', 'none');
personNameWrap.css('display', 'none');
if ('' !== field.val()) {
if (
'organization' === field.val() ||
'Webshop' === field.val() ||
'Smallbusiness' === field.val() ||
'Otherbusiness' === field.val()
) {
logoWrap.css('display', '');
companyNameWrap.css('display', '');
} else {
personNameWrap.css('display', '');
logoWrap.css('display', '');
}
}
};
const loadDefaultOrganizationLabel = function () {
const field = jQuery(
'select[name="wp-schema-pro-general-settings[site-represent]"]'
),
organizationType = field.val();
if ('' !== field) {
if (organizationType in temp) {
$('.wpsp-organization-label').text(temp[organizationType]);
}
}
};
$(document).ready(function () {
$('.wp-select2').select2();
$('.wpsp-setup-configuration-settings').select2();
loadDefaultValues();
loadDefaultOrganizationLabel();
$('#add-row').on('click', function () {
const row = $('.empty-row.screen-reader-text').clone(true);
row.removeClass('empty-row screen-reader-text');
row.insertBefore('#repeatable-fieldset-one tbody>tr:last');
return false;
});
$('.remove-row').on('click', function () {
$(this).parents('tr').remove();
return false;
});
});
/* Initializes the AIOSRS Frontend. */
$(function () {
WPSchemaProSettings.init();
});
})(jQuery);