File: /var/www/karjerosdiena.lt/wp-content/plugins/wp-all-import/static/js/admin.js
/**
* plugin admin area javascript
*/
(function($){$(function () {
if ( ! $('body.wpallimport-plugin').length) return; // do not execute any code if we are not on plugin page
// Handle wizard type switching for import options (only on relevant pages)
function handleWizardTypeChange() {
// Only run on pages that have wizard_type inputs (Step 4 and import edit settings)
var $wizardTypeInputs = $('input[name="wizard_type"]');
if ($wizardTypeInputs.length === 0) {
return; // Not on a page with wizard type options
}
$wizardTypeInputs.on('change', function() {
var wizardType = $(this).val();
var duplicateMatchingInput = $('input[name="duplicate_matching"][type="hidden"]');
if (wizardType === 'new') {
// For new items, set duplicate_matching to auto
duplicateMatchingInput.val('auto');
} else if (wizardType === 'matching') {
// For existing items, set duplicate_matching to manual
duplicateMatchingInput.val('manual');
}
// Update delete missing behavior after duplicate_matching is set
updateDeleteMissingBehavior(true);
});
// Handle duplicate matching radio buttons for existing items
$('input[name="duplicate_indicator"]').on('change', function() {
if ($('input[name="wizard_type"]:checked').val() === 'matching') {
// The duplicate_matching stays as 'manual' for existing items
// The specific matching method is handled by duplicate_indicator
}
});
// Initialize the correct duplicate_matching value on page load
var $duplicateMatchingInput = $('input[name="duplicate_matching"][type="hidden"]');
if ($duplicateMatchingInput.length > 0) {
var initialWizardType = $wizardTypeInputs.filter(':checked').val();
if (initialWizardType === 'new') {
$duplicateMatchingInput.val('auto');
} else if (initialWizardType === 'matching') {
$duplicateMatchingInput.val('manual');
} else {
// Check if 'new' is the default (first radio button)
var $firstRadio = $wizardTypeInputs.first();
if ($firstRadio.val() === 'new') {
$firstRadio.prop('checked', true);
$duplicateMatchingInput.val('auto');
}
}
}
}
// Initialize wizard type handling after a short delay to ensure all elements are loaded
setTimeout(function() {
handleWizardTypeChange();
}, 100);
// Find all Select2 elements and make sure change events propagate
$(document).ready(function() {
// For all existing select2 instances
$('.select2-hidden-accessible').each(function() {
$(this).on('select2:select', function(e) {
// Trigger the native change event
$(this).trigger('change');
});
});
// For any future select2 instances - use event delegation
$(document).on('select2:select', '.select2-hidden-accessible', function(e) {
// Trigger the native change event if it hasn't been triggered already
if (!e.originalEvent) {
$(this).trigger('change');
}
});
});
var fix_tag_position = function(){
if ($('.wpallimport-layout').length && $('.tag').length && $('.wpallimport-content-section').length){
let offset_top = $('.wpallimport-content-section').eq(0).offset().top;
if ($('.xpath_filtering').length) {
offset_top = $('.wpallimport-content-section').eq(2).offset().top;
}
let wordpress_adminbar_height = $('#wpadminbar').height();
let position_top = $(document).scrollTop() + wordpress_adminbar_height + 20;
$('.tag').css('margin-top', '0');
if (position_top > offset_top){
$('.tag').css({'top': position_top - offset_top});
$('.wpallimport-xml').css({'max-height': ($(window).height() - 220) + 'px' });
} else {
$('.tag').css({'top': '0' });
$('.wpallimport-xml').css({'max-height': ($(window).height() - 220) + 'px' });
}
}
}
function overlayDivOverInput($input, divId) {
const $localInput = $($input);
// Get the name of the input/textarea
const inputName = $input.attr('name');
// Check if element is a textarea
const isTextarea = $input.is('textarea');
// Configure width value
const width = isTextarea ? '55%' : '100%';
// Apply position:relative to the parent of the input/textarea
$localInput.parent().css({position: 'relative'});
// Create the overlay div
const $div = $('<div/>', {
id: divId,
'data-input-name': inputName,
css: {position: 'absolute', top: 0, left: 0, 'z-index':-99},
height:$localInput.outerHeight(),
width: width
});
$div.insertAfter($input);
// Returning the jQuery object
return $div;
}
// Global declaration of $wpAllImportDrag and $wpAllImportOriginalColor so we can use them on dynamic elements.
var $wpAllImportDrag = null;
var $wpAllImportOriginalColor = '';
function wpaiMakeDroppable(){
let $targets = $('input, textarea');
$targets.on('click', function (e) {
if (!$wpAllImportDrag) return;
let oldValue = $(this).val();
let newValue = $wpAllImportDrag.data('xpath');
$(this).val(oldValue + newValue);
$wpAllImportDrag.css('color', $wpAllImportOriginalColor).css('font-weight', 'bold');
$wpAllImportDrag = null;
}).droppable({
drop: function (event, ui) {
let oldValue = $(this).val();
let newValue = ui.draggable.data('xpath') || '';
$(this).val(oldValue + newValue);
},
greedy: true,
tolerance: 'touch',
disabled: false
});
}
function wpaiMakeDroppableTinyMce() {
// Ensure tinymce is defined before use.
if (typeof tinymce === 'undefined') {
return;
}
// Get tinymce instance
var ed = tinymce.get('content');
// Function to get current iframe bounds.
function getIframeBounds() {
var tinymceIframe = $('#content_ifr');
if (tinymceIframe.length === 0) {
return null;
}
var iframeOffset = tinymceIframe.offset();
return {
top: iframeOffset.top - $(window).scrollTop(),
left: iframeOffset.left - $(window).scrollLeft(),
bottom: iframeOffset.top + tinymceIframe.height() - $(window).scrollTop(),
right: iframeOffset.left + tinymceIframe.width() - $(window).scrollLeft()
};
}
// Initial drop area coordinates.
var dropArea = getIframeBounds();
if (!dropArea) {
return;
}
// Apply draggable to elements.
$(".ui-draggable").draggable({
helper: function () {
return $('<div>').text($(this).data('xpath'));
},
start: function (event, ui) {
// Create a duplicate node as a proxy
proxy = ui.helper.clone().appendTo('body');
},
drag: function (event, ui) {
// Recalculate drop area for iframe.
dropArea = getIframeBounds();
// Check if draggable is over the tinymce, update proxy to follow cursor and hide the helper
if (
event.clientX >= dropArea.left &&
event.clientX <= dropArea.right &&
event.clientY >= dropArea.top &&
event.clientY <= dropArea.bottom
) {
proxy.css({ top: event.pageY, left: event.pageX });
ui.helper.hide();
} else {
proxy.css({ top: 'auto', left: 'auto' });
ui.helper.show();
}
},
stop: function (event, ui) {
// Recalculate drop area for iframe.
dropArea = getIframeBounds();
// Append to tinymce content if it was dropped on tinymce
if (
event.clientX >= dropArea.left &&
event.clientX <= dropArea.right &&
event.clientY >= dropArea.top &&
event.clientY <= dropArea.bottom
) {
ed.setContent(
ed.getContent() + $(this).data('xpath')
);
}
// Clean up proxy and show the helper again
proxy.remove();
ui.helper.show();
},
});
ed.on('click', function (e) {
if (!$wpAllImportDrag) return;
let oldValue = ed.getContent();
let newValue = $wpAllImportDrag.data('xpath') || '';
ed.setContent(oldValue + newValue);
$wpAllImportDrag.css('color', $wpAllImportOriginalColor).css('font-weight', 'bold');
$wpAllImportDrag = null;
});
}
function wpaiMakeDroppableSingle($parent) {
if($parent.hasClass('dragging')){
return;
}
$parent.on('click', 'input, textarea', function (e) {
if (!$wpAllImportDrag) return;
let oldValue = $(this).val();
let newValue = $wpAllImportDrag.data('xpath') || '';
$(this).val(oldValue + newValue);
$wpAllImportDrag.css('color', $wpAllImportOriginalColor).css('font-weight', 'bold');
$wpAllImportDrag = null;
});
let $targets = $parent.find('input, textarea');
let divCounter = 0; // counter to generate unique ids for divs
$targets.each(function() {
let $input = $(this);
let divId = 'droppableDiv' + divCounter++; // generate a unique id based on the counter
let $div = overlayDivOverInput($input, divId);
// Apply jQuery UI droppable to the div
$div.droppable({
drop: function (event, ui) {
let inputName = $(this).data('input-name');
// Select only the closest sibling input/textarea with provided name
let $inputOrTextarea = $(this).siblings("input[name='" + inputName + "'], textarea[name='" + inputName + "']").first();
let oldValue = $inputOrTextarea.val();
let newValue = ui.draggable.data('xpath') || '';
$inputOrTextarea.val(oldValue + newValue);
}
});
});
}
function wpaiObserveFieldAddition()
{
// Make drag and drop work for dynamically added elements.
// Select the node that will be observed for child addition
let wpaiXmlTargetNode = document.querySelector('.wpallimport-layout');
if(!wpaiXmlTargetNode){
return;
}
// Options for the observer (which mutations to observe)
let wpaiXmlConfig = {childList: true, subtree: true};
// Callback function to execute when mutations are observed
let wpaiXmlCallback = function (mutationsList) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE) {
wpaiMakeDroppableSingle($(node));
wpaiMakeDroppableTinyMce();
}
});
}
}
};
// Create an observer instance linked to the callback function
let wpaiXmlObserver = new MutationObserver(wpaiXmlCallback);
// Start observing the target node for configured mutations
wpaiXmlObserver.observe(wpaiXmlTargetNode, wpaiXmlConfig);
}
wpaiObserveFieldAddition();
function wpai_set_custom_select_image() {
// Only process if custom_type_selector exists
if (!jQuery('#custom_type_selector').length) {
return;
}
// The class name to add to the element.
var $selectedItem = jQuery('#custom_type_selector').next('.select2-container').find('.select2-selection__rendered .dashicon');
if ($selectedItem.length) {
var class_name = $selectedItem.closest('.select2-selection__rendered').text().toLowerCase();
class_name = class_name.replace(/\s+/g, '');
// This gets the image URL out of the class.
var class_check = $selectedItem.attr('class');
if (class_check) {
class_check = class_check.replace("dashicon ", "");
// String of allowed images.
var imgs = ['jpg','jpeg','jpe','gif','png','bmp'], length = imgs.length;
while(length--) {
if (class_check.indexOf(imgs[length]) != -1) {
// They have defined an image URL, which means it's a custom image and we need to add the class.
$selectedItem.addClass("wpaiimgfor" + class_name);
$selectedItem.removeClass(class_check);
}
}
}
}
// The new CSS handles icons automatically for custom_type_selector
// No need for complex JavaScript manipulation
}
// Rapid Add-On API Images
$(document).ready(function($){
var class_check;
var original_class;
var new_class_name;
var allstyles = "<style type='text/css'>";
// Process custom images in the dropdown options
$('#custom_type_selector option').each(function() {
var imagesrc = $(this).attr('data-imagesrc');
if (imagesrc && imagesrc.includes('dashicon')) {
// Extract the custom image class if present
var dashiconClass = imagesrc.replace('dashicon ', '');
// Build the class name based on the option text
new_class_name = $(this).text().toLowerCase();
new_class_name = new_class_name.replace(/\s+/g, '');
var imgs = ['jpg','jpeg','jpe','gif','png','bmp'],
length = imgs.length;
while(length--) {
if (dashiconClass.indexOf(imgs[length]) != -1) {
// They've defined a custom image URL, so we need to append the class to the head
// More specific selectors to ensure styles are applied ONLY to custom_type_selector
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector + .select2-container .wpaiimgfor" + new_class_name + ":before { font-family: 'dashicons'; font-size: 24px; float: left; margin: 2px 5px 2px 2px; background-image: url(" + dashiconClass + "); background-repeat: no-repeat; background-position: center center; content:''; height: 25px; width:24px; }";
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector + .select2-container .select2-selection__rendered .dashicon.wpaiimgfor" + new_class_name + " { position: relative; top: 2px; }";
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector + .select2-container ~ .select2-dropdown .select2-results__option .dashicon.wpaiimgfor" + new_class_name + " { position: relative; top: 2px; }";
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector ~ .wpallimport-select2-dropdown .select2-results__option .dashicon.wpaiimgfor" + new_class_name + " { position: relative; top: 2px; }";
// Add more specific rules for Select2 dropdown - ONLY for custom_type_selector
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector + .select2-container ~ .select2-dropdown .select2-results__option .dashicon.wpaiimgfor" + new_class_name + ":before { background-image: url(" + dashiconClass + "); }";
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector ~ .wpallimport-select2-dropdown .select2-results__option .dashicon.wpaiimgfor" + new_class_name + ":before { background-image: url(" + dashiconClass + "); }";
allstyles = allstyles + ".wpallimport-plugin #custom_type_selector + .select2-container .select2-selection__rendered .dashicon.wpaiimgfor" + new_class_name + ":before { background-image: url(" + dashiconClass + "); }";
// Store the custom class in a data attribute for use by templateResult and templateSelection
$(this).attr('data-custom-image-class', "wpaiimgfor" + new_class_name);
}
}
}
});
// Only append styles if we actually have custom images for custom_type_selector
if (allstyles.length > 25) { // More than just the opening style tag
allstyles = allstyles + "</style>";
$(allstyles).appendTo("head");
}
// Initialize Select2 after processing custom images
setTimeout(function() {
// Trigger a change on the custom_type_selector to ensure proper initialization
if ($('#custom_type_selector').length) {
wpai_set_custom_select_image();
// Handle custom_type_selector dropdown opening
$('#custom_type_selector').on('select2:open', function() {
setTimeout(function() {
var $dropdown = $('.select2-dropdown');
$dropdown.addClass('custom-type-dropdown');
// Add dashicon classes to dropdown options based on data-imagesrc for Select2 v4
$('#custom_type_selector option').each(function(index) {
var $option = $(this);
var imagesrc = $option.attr('data-imagesrc');
if (imagesrc) {
var $dropdownOption = $('.select2-dropdown .select2-results__option:eq(' + index + ')');
if ($dropdownOption.length && !$dropdownOption.find('.dashicon').length) {
// Clear any existing dashicon classes
$dropdownOption.find('.dashicon').remove();
// Add the dashicon span with the appropriate class
var iconClass = imagesrc.replace('dashicon ', '');
$dropdownOption.prepend('<span class="dashicon ' + iconClass + '"></span>');
}
}
});
}, 50); // Small delay to ensure dropdown is rendered
});
// Handle custom_type_selector dropdown closing for Select2 v4
$('#custom_type_selector').on('select2:close', function() {
$('.select2-dropdown').removeClass('custom-type-dropdown');
});
}
}, 100);
});
// fix wpallimport-layout position
setTimeout(function () {
$('table.wpallimport-layout').length && $('table.wpallimport-layout td.left h2:first-child').css('margin-top', $('.wrap').has('.wpallimport-layout').offset().top - $('table.wpallimport-layout').offset().top);
}, 10);
// help icons
$(document).tipsy({
gravity: function() {
var ver = 'n';
if ($(document).scrollTop() < $(this).offset().top - $('.tipsy').height() - 2) {
ver = 's';
}
var hor = '';
if ($(this).offset().left + $('.tipsy').width() < $(window).width() + $(document).scrollLeft()) {
hor = 'w';
} else if ($(this).offset().left - $('.tipsy').width() > $(document).scrollLeft()) {
hor = 'e';
}
return ver + hor;
},
live: 'a.wpallimport-help, .scheduling-help',
html: true,
opacity: 1
}).each(function () { // fix tipsy title for IE
$(this).attr('original-title', $(this).attr('title'));
$(this).removeAttr('title');
});
// help icons
$('.scheduling-disabled').parent().tipsy({
gravity: function() {
var ver = 'n';
if ($(document).scrollTop() < $(this).offset().top - $('.tipsy').height() - 2) {
ver = 's';
}
var hor = '';
if ($(this).offset().left + $('.tipsy').width() < $(window).width() + $(document).scrollLeft()) {
hor = 'w';
} else if ($(this).offset().left - $('.tipsy').width() > $(document).scrollLeft()) {
hor = 'e';
}
return ver + hor;
},
live: '.scheduling-disabled',
html: true,
delayOut: 2000,
opacity: 1,
trigger: "click"
});
// swither show/hide logic
$('input.switcher').on("change", function (e) {
if ($(this).is(':radio:checked')) {
$(this).parents('form').find('input.switcher:radio[name="' + $(this).attr('name') + '"]').not(this).trigger('change');
}
let $targets = $('.switcher-target-' + $(this).attr('id'));
let is_show = $(this).is(':checked'); if ($(this).is('.switcher-reversed')) is_show = ! is_show;
if (is_show) {
$targets.slideDown();
} else {
$targets.slideUp().find('.clear-on-switch').add($targets.filter('.clear-on-switch')).val('');
}
}).trigger('change');
// swither show/hide logic
$('input.switcher-horizontal').on('change', function (e) {
// Prevent recursive animation triggering
if ($(this).data('animating-horizontal')) {
return;
}
if ($(this).is(':checked')) {
// For horizontal switchers, handle all related targets in one go to prevent animation conflicts
let radioName = $(this).attr('name');
let $allRadios = $(this).parents('form').find('input.switcher-horizontal[name="' + radioName + '"]');
// Mark all radios as animating to prevent recursive calls
$allRadios.data('animating-horizontal', true);
// Hide all targets for this radio group first
$allRadios.not(this).each(function() {
let $targets = $('.switcher-target-' + $(this).attr('id'));
if ($targets.width() > 0) {
$targets.animate({width:'0px'}, 1000).find('.clear-on-switch').add($targets.filter('.clear-on-switch')).val('');
}
});
// Then show the target for the selected radio
let $targets = $('.switcher-target-' + $(this).attr('id'));
let is_show = $(this).is(':checked'); if ($(this).is('.switcher-reversed')) is_show = ! is_show;
if (is_show) {
$targets.animate({width:'205px'}, 350);
}
// Clear the animating flag after a delay
setTimeout(function() {
$allRadios.removeData('animating-horizontal');
}, 1200); // Longer delay for horizontal animations
} else {
// Handle non-radio horizontal switchers normally
let $targets = $('.switcher-target-' + $(this).attr('id'));
let is_show = $(this).is(':checked'); if ($(this).is('.switcher-reversed')) is_show = ! is_show;
if (is_show) {
$targets.animate({width:'205px'}, 350);
} else {
$targets.animate({width:'0px'}, 1000).find('.clear-on-switch').add($targets.filter('.clear-on-switch')).val('');
}
}
}).trigger('change');
// autoselect input content on click
$(document).on('click', 'input.selectable', function () {
$(this).select();
});
// input tags with title
$('input[title]').each(function () {
var $this = $(this);
$this.on('focus', function () {
if ('' == $(this).val() || $(this).val() == $(this).attr('title')) {
$(this).removeClass('note').val('');
}
}).on('blur', function () {
if ('' == $(this).val() || $(this).val() == $(this).attr('title')) {
$(this).addClass('note').val($(this).attr('title'));
}
}).trigger('blur');
$this.parents('form').on('submit', function () {
if ($this.val() == $this.attr('title')) {
$this.val('');
}
});
});
// datepicker
$('input.datepicker').datepicker({
dateFormat: 'yy-mm-dd',
showOn: 'button',
buttonText: '',
constrainInput: false,
showAnim: 'fadeIn',
showOptions: 'fast'
}).on('change', function () {
var selectedDate = $(this).val();
var instance = $(this).data('datepicker');
var date = null;
if ('' != selectedDate) {
try {
date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
} catch (e) {
date = null;
}
}
if ($(this).hasClass('range-from')) {
$(this).parent().find('.datepicker.range-to').datepicker("option", "minDate", date);
}
if ($(this).hasClass('range-to')) {
$(this).parent().find('.datepicker.range-from').datepicker("option", "maxDate", date);
}
}).trigger('change');
$('.ui-datepicker').hide(); // fix: make sure datepicker doesn't break wordpress wpallimport-layout upon initialization
// no-enter-submit forms
$('form.no-enter-submit').find('input,select,textarea').not('*[type="submit"]').on('keydown', function (e) {
if (13 == e.keyCode) e.preventDefault();
});
$('a.collapser').each(function(){
if ($(this).html() == "+"){
$(this).parents('div:first').find('.collapser_content:first').hide();
} else {
$(this).parents('div:first').find('.collapser_content:first').fadeIn();
}
$(this).next('h3').css({'cursor':'pointer'});
});
$('a.collapser').on('click', function(){
if ($(this).html() == "+") {
$(this).html("-");
$(this).parents('div:first').find('.collapser_content:first').fadeIn();
} else {
$(this).html("+");
$(this).parents('div:first').find('.collapser_content:first').hide();
}
});
$('a.collapser').each(function(){
$(this).parents('.fieldset:first').find('h3:first').on('click', function(){
$(this).prev('a.collapser').trigger('click');
});
});
// Initialize file selector for main import page (not in .change_file context)
if ($('#file_selector').length && !$('#file_selector').hasClass('select2-hidden-accessible')) {
$('#file_selector').select2({
width: '600px',
minimumResultsForSearch: 10,
theme: 'default',
disabled: true // Completely disable the dropdown in free version
});
// Add click handler to show upgrade notice when trying to interact with disabled dropdown
$('#file_selector').next('.select2-container').on('click', function(e) {
e.preventDefault();
$('.wpallimport-upload-type-container[rel=file_type] .wpallimport-free-edition-notice').show();
return false;
});
}
$('.change_file').each(function(){
let $wrap = $('.wrap').has('.wpallimport-layout');
let formHeight = ($('.wpallimport-layout').height() < 730) ? 730 : $('.wpallimport-layout').height();
$('#file_selector').select2({
width: '600px',
minimumResultsForSearch: 10,
theme: 'default',
disabled: true // Completely disable the dropdown in free version
});
// Add click handler to show upgrade notice when trying to interact with disabled dropdown
$('#file_selector').next('.select2-container').on('click', function(e) {
e.preventDefault();
$('.wpallimport-upload-type-container[rel=file_type] .wpallimport-free-edition-notice').show();
return false;
});
let fixWrapHeight = false;
$('#custom_type_selector').select2({
width: '590px',
minimumResultsForSearch: 10,
theme: 'default',
templateResult: function(data) {
if (!data.id) return data.text;
var $option = $(data.element);
var $result = $('<div class="select2-option-wrapper"></div>');
var imagesrc = $option.attr('data-imagesrc');
var customImageClass = $option.attr('data-custom-image-class');
if (imagesrc) {
var spanClass = imagesrc;
if (customImageClass) {
// If there's a custom image class, add it to the span
spanClass = imagesrc.replace(/dashicon\s+[^\s]+/, 'dashicon ' + customImageClass);
}
// Create the icon with more explicit styling to ensure visibility
var $icon = $('<span class="' + spanClass + '" style="display:inline-block !important; vertical-align:middle !important; margin-right:5px !important; visibility:visible !important; opacity:1 !important; width:24px !important; height:24px !important; position:relative !important; z-index:100 !important;"></span>');
$result.append($icon);
}
$result.append(data.text);
return $result;
},
templateSelection: function(data) {
if (!data.id) return data.text;
var $option = $(data.element);
var $result = $('<div class="select2-selection-wrapper"></div>');
var imagesrc = $option.attr('data-imagesrc');
var customImageClass = $option.attr('data-custom-image-class');
if (imagesrc) {
var spanClass = imagesrc;
if (customImageClass) {
// If there's a custom image class, add it to the span
spanClass = imagesrc.replace(/dashicon\s+[^\s]+/, 'dashicon ' + customImageClass);
}
var $icon = $('<span class="' + spanClass + '" style="display:inline-block !important; vertical-align:middle !important; margin-right:5px !important; visibility:visible !important; opacity:1 !important;"></span>');
$result.append($icon);
}
$result.append(data.text);
// After rendering, trigger the custom image handler
setTimeout(function() {
wpai_set_custom_select_image();
}, 10);
return $result;
}
}).on('select2:opening', function(e){
formHeight = ($('.wpallimport-layout').height() < 730) ? 730 : $('.wpallimport-layout').height();
// Store the original height to restore later
$(this).data('originalHeight', $wrap.height());
}).on('select2:open', function(e){
// Set timeout to allow the dropdown to render before measuring
setTimeout(function() {
$wrap.css({'height': formHeight + $('.select2-dropdown').height() + 'px'});
}, 50);
}).on('select2:closing', function(e){
$wrap.css({'height': 'auto'});
}).on('select2:select', function(e){
let selectedData = e.params.data;
if (fixWrapHeight) {
$wrap.css({'height': 'auto'});
} else {
fixWrapHeight = true;
}
$('.wpallimport-upgrade-notice').hide();
$('input[name=custom_type]').val(selectedData.id);
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
var is_import_denied = $('.wpallimport-upgrade-notice[rel="'+ selectedData.id +'"]').length;
// Free version - also deny taxonomies
var is_taxonomy_import = (selectedData.id === 'taxonomies');
if (is_import_denied){
$('.wpallimport-upgrade-notice[rel="'+ selectedData.id +'"]').slideDown();
$('.wpallimport-submit-buttons').hide();
} else if (is_taxonomy_import) {
// Free version - hide submit buttons for taxonomy imports
$('.wpallimport-submit-buttons').hide();
} else {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-submit-buttons').slideDown();
} else {
$('.wpallimport-submit-buttons').hide();
}
}
// Handle taxonomy_to_import_wrapper and gravity_form_to_import_wrapper visibility
switch (selectedData.id) {
case 'taxonomies':
$('.taxonomy_to_import_wrapper').slideDown();
$('.gravity_form_to_import_wrapper').slideUp();
break;
case 'gf_entries':
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideDown();
break;
default:
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideUp();
break;
}
// Rapid Add-On API Images
wpai_set_custom_select_image();
// Add icon to selected state
var selectedOption = $(this).find('option:selected');
var imagesrc = selectedOption.attr('data-imagesrc');
if (imagesrc) {
var $selectedDisplay = $(this).next('.select2-container').find('.select2-selection__rendered');
// Clear any existing dashicon
$selectedDisplay.find('.dashicon').remove();
// Add the dashicon span with the appropriate class
var iconClass = imagesrc.replace('dashicon ', '');
$selectedDisplay.prepend('<span class="dashicon ' + iconClass + '"></span>');
}
// Trigger native change event to ensure all listeners are notified
$(this).trigger('change');
}).on('change', function() {
// This handler will be triggered by the native change event
// Only proceed if we're not already in the select2:select handler
if (!$(this).data('select2-processing')) {
// Set a flag to prevent infinite loop
$(this).data('select2-processing', true);
var selectedValue = $(this).val();
// Handle taxonomy_to_import_wrapper and gravity_form_to_import_wrapper visibility
switch (selectedValue) {
case 'taxonomies':
$('.taxonomy_to_import_wrapper').slideDown();
$('.gravity_form_to_import_wrapper').slideUp();
break;
case 'gf_entries':
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideDown();
break;
default:
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideUp();
break;
}
// Remove the processing flag
$(this).data('select2-processing', false);
}
});
$('.wpallimport-import-from').on('click', function(){
var showImportType = false;
switch ($(this).attr('rel')){
case 'upload_type':
if ($('input[name=filepath]').val() != '') {
showImportType = true;
}
$('.wpallimport-download-resource').hide();
break;
case 'url_type':
if ($('input[name=url]').val() != '') {
showImportType = true;
}
$('.wpallimport-download-from-checked').trigger('click');
break;
case 'file_type':
// Free version - show interface but don't allow progression
showImportType = false; // This prevents the submit buttons from showing
$('.wpallimport-download-resource').hide();
break;
}
$('.wpallimport-import-from').removeClass('selected').addClass('bind');
$(this).addClass('selected').removeClass('bind');
$('.wpallimport-import-from').removeClass('selected').addClass('bind');
$(this).addClass('selected').removeClass('bind');
$('.change_file').find('.wpallimport-upload-type-container').hide();
$('.change_file').find('.wpallimport-file-upload-result').attr('rel', $(this).attr('rel'));
$('.change_file').find('.wpallimport-upload-type-container[rel=' + $(this).attr('rel') + ']').show();
$('.change_file').find('#wpallimport-url-upload-status').html('');
$('.change_file').find('input[name=new_type]').val( $(this).attr('rel').replace('_type', '') );
//$('.first-step-errors').hide();
});
$('.wpallimport-import-from.selected').trigger('click');
$('.wpallimport-download-from').on('click', function(){
if ($(this).attr('rel') === 'url') {
$('.wpallimport-download-resource-step-two-url').show();
$('.wpallimport-download-resource-step-two-ftp').hide();
// Show upgrade notice for URL download in Free version
$('.wpallimport-download-resource-step-two-url .wpallimport-free-edition-notice').show();
} else {
$('.wpallimport-download-resource-step-two-url').hide();
$('.wpallimport-download-resource-step-two-ftp').show();
// Show upgrade notice for FTP download in Free version
$('.wpallimport-download-resource-step-two-ftp .wpallimport-free-edition-notice').show();
}
$('.wpallimport-download-from').removeClass('wpallimport-download-from-checked');
$(this).addClass('wpallimport-download-from-checked');
$('.change_file').find('input[name=new_type]').val( $(this).attr('rel') );
});
$('.wpallimport-download-from.wpallimport-download-from-checked').trigger('click');
});
// Drag and drop file upload
$(document).ready(function () {
window.dragCounter = 0;
var $overlay = $('#wpallimport-fullscreen-drag-overlay');
var $dragArea = $('#wpallimport-drag-drop-area');
window.isDragDropUpload = false;
// Global drag events for fullscreen drop zone
$(document).on('dragenter', function (e) {
// Only handle file drags
if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.types.indexOf('Files') !== -1) {
window.dragCounter++;
// Show overlay and extend drag area on first drag enter
if (window.dragCounter === 1) {
$dragArea.addClass('fullscreen-active');
$overlay.show();
// Properly select the upload type and show its container
$('.wpallimport-import-from').removeClass('selected').addClass('bind');
$('#file_upload_type').addClass('selected').removeClass('bind');
$('.wpallimport-choose-file').find('.wpallimport-upload-type-container').hide();
$('.wpallimport-choose-file').find('.wpallimport-upload-type-container[rel=upload_type]').show();
$('.wpallimport-choose-file').find('input[name=type]').val('upload');
}
}
});
$(document).on('dragleave', function (e) {
// Only handle file drags
if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.types.indexOf('Files') !== -1) {
window.dragCounter--;
// Hide overlay when completely leaving the window (only if not uploading)
if (window.dragCounter === 0 && !window.isDragDropUpload) {
$dragArea.removeClass('fullscreen-active');
$overlay.hide();
$('#file_upload_type').removeClass('selected');
}
}
});
// Mark as drag-drop upload when files are dropped, but don't hide overlay yet
$(document).on('drop', function (e) {
if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.types.indexOf('Files') !== -1) {
dragCounter = 0;
window.isDragDropUpload = true;
// Don't hide overlay yet - let plupload events handle the UI transitions
}
});
// Original drag and drop area events (keep for backward compatibility)
$('#wpallimport-drag-drop-area').on('dragover', function (e) {
e.preventDefault();
// Add the selected class to the upload a file button.
$('#file_upload_type').addClass('selected');
});
// When the file is dragged out of the drag and drop area
$('#wpallimport-drag-drop-area').on('dragleave', function () {
// Remove the selected class (only if not uploading)
if (!window.isDragDropUpload) {
$('#file_upload_type').removeClass('selected');
}
});
// Handle drop event on drag area to prevent default browser behavior
$('#wpallimport-drag-drop-area').on('drop', function (e) {
e.preventDefault();
e.stopPropagation();
// The actual file handling is done by plupload
});
});
$('input[name=url]').on('change', function(){
}).on('keyup', function (e) {
if ($(this).val() != ''){
$('.wpallimport-url-icon').addClass('focus');
$(this).addClass('focus');
} else {
$('.wpallimport-url-icon').removeClass('focus');
$(this).removeClass('focus');
}
});
$('#taxonomy_to_import').select2({
width: '300px',
minimumResultsForSearch: 10,
theme: 'default'
}).on('select2:select', function(e){
let selectedData = e.params.data;
if (selectedData.id != ""){
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
// Free version - show upgrade notice and don't allow progression for taxonomy imports
$('.wpallimport-upgrade-notice[rel=taxonomies]').show();
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
// Reset the selection
$(this).val('').trigger('change');
} else {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#cfceca'});
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
$('input[name=taxonomy_type]').val(selectedData.id);
// Trigger native change event to ensure all listeners are notified
$(this).trigger('change');
}).on('change', function() {
// This handler will be triggered by the native change event
// Only proceed if we're not already in the select2:select handler
if (!$(this).data('select2-processing')) {
// Set a flag to prevent infinite loop
$(this).data('select2-processing', true);
var selectedValue = $(this).val();
if (selectedValue != "") {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
// Free version - don't allow progression for taxonomy imports
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
} else {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#cfceca'});
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
// Remove the processing flag
$(this).data('select2-processing', false);
}
});
// Add tooltips to select2 options
$('#taxonomy_to_import option').each(function() {
var toolTipText = $(this).val();
$(this).attr('title', toolTipText);
});
// Initialize gravity_form_to_import with Select2
$('#gravity_form_to_import').select2({
width: '300px',
minimumResultsForSearch: 10,
theme: 'default'
}).on('select2:select', function(e){
let selectedData = e.params.data;
if (selectedData.id != ""){
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
// Only show submit buttons if we're in the gravity forms context and upload step is visible
if ($('.gravity_form_to_import_wrapper:visible').length && $('.wpallimport-upload-resource-step-two:visible').length) {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
}
}
} else {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#cfceca'});
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
$('input[name=gravity_form_title]').val(selectedData.id);
}).on('change', function() {
// Handle native change events
if (!$(this).data('select2-processing')) {
$(this).data('select2-processing', true);
var selectedValue = $(this).val();
if (selectedValue != ""){
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
// Only show submit buttons if we're in the gravity forms context and upload step is visible
if ($('.gravity_form_to_import_wrapper:visible').length && $('.wpallimport-upload-resource-step-two:visible').length) {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
}
}
} else {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#cfceca'});
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
$('input[name=gravity_form_title]').val(selectedValue);
$(this).data('select2-processing', false);
}
});
// Add tooltips to gravity form select2 options
$('#gravity_form_to_import option').each(function() {
var toolTipText = $(this).val();
$(this).attr('title', toolTipText);
});
// enter-submit form on step 1
$('.wpallimport-step-1').each(function(){
var $wrap = $('.wrap').has('.wpallimport-layout');
var formHeight = ($('.wpallimport-layout').height() < 730) ? 730 : $('.wpallimport-layout').height();
$('.wpallimport-import-from').on('click', function(){
var showImportType = false;
switch ($(this).attr('rel')){
case 'upload_type':
if ($('input[name=filepath]').val() != '') {
showImportType = true;
}
$('.wpallimport-download-resource').hide();
break;
case 'url_type':
if ($('input[name=url]').val() != '') {
showImportType = true;
}
$('.wpallimport-download-from-checked').trigger('click');
break;
case 'file_type':
// Free version - show interface but don't allow progression
showImportType = false; // This prevents the submit buttons from showing
$('.wpallimport-download-resource').hide();
break;
}
$('.wpallimport-import-from').removeClass('selected').addClass('bind');
$(this).addClass('selected').removeClass('bind');
$('.wpallimport-choose-file').find('.wpallimport-upload-type-container').hide();
$('.wpallimport-choose-file').find('.wpallimport-file-upload-result').attr('rel', $(this).attr('rel'));
$('.wpallimport-choose-file').find('.wpallimport-upload-type-container[rel=' + $(this).attr('rel') + ']').show();
$('.wpallimport-choose-file').find('#wpallimport-url-upload-status').html('');
$('.wpallimport-choose-file').find('input[name=type]').val( $(this).attr('rel').replace('_type', '') );
if ($('.auto-generate-template').attr('rel') == $(this).attr('rel')){
$('.auto-generate-template').css({'display':'inline-block'});
} else {
$('.auto-generate-template').hide();
}
if ($(this).attr('rel') == 'upload_type'){
$('input[type=file]').trigger('click');
}
// Check for denied imports and taxonomies
var selectedPostType = $('input[name=custom_type]').val();
var is_import_denied = $('.wpallimport-upgrade-notice[rel="'+ selectedPostType +'"]').length;
var is_taxonomy_import = (selectedPostType === 'taxonomies');
if ( ! showImportType){
$('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideUp();
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
} else if (is_import_denied || is_taxonomy_import) {
// Show upload step but hide submit buttons for denied/restricted imports
$('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideDown();
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
} else {
$('.wpallimport-choose-file').find('.wpallimport-upload-resource-step-two').slideDown();
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').show();
} else {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
}
});
$('.wpallimport-import-from.selected').trigger('click');
// Hide the H2 when "Download from URL" or "Use existing file" is clicked
$('.wpallimport-url-type').on('click', function () {
$('.wpallimport-import-types').find('h2').slideUp();
});
$('.wpallimport-file-type').on('click', function () {
$('.wpallimport-import-types').find('h2').slideUp();
});
$('.wpallimport-download-from-url').on('click', function(){
// Show upgrade notice for Free version
let $type = $('input[name=type]').val();
if ($type === 'url') {
$('.wpallimport-download-resource-step-two-url .wpallimport-free-edition-notice').show();
return false; // Prevent the download from proceeding
} else if ($type === 'ftp') {
$('.wpallimport-download-resource-step-two-ftp .wpallimport-free-edition-notice').show();
return false; // Prevent the download from proceeding
}
});
var fixWrapHeight = false;
$('#custom_type_selector').select2({
width: '590px',
minimumResultsForSearch: 10,
theme: 'default',
templateResult: function(data) {
if (!data.id) return data.text;
var $option = $(data.element);
var $result = $('<div class="select2-option-wrapper"></div>');
var imagesrc = $option.attr('data-imagesrc');
var customImageClass = $option.attr('data-custom-image-class');
if (imagesrc) {
var spanClass = imagesrc;
if (customImageClass) {
// If there's a custom image class, add it to the span
spanClass = imagesrc.replace(/dashicon\s+[^\s]+/, 'dashicon ' + customImageClass);
}
var $icon = $('<span class="' + spanClass + '" style="display:inline-block !important; vertical-align:middle !important; margin-right:5px !important; visibility:visible !important; opacity:1 !important;"></span>');
$result.append($icon);
}
$result.append(data.text);
return $result;
},
templateSelection: function(data) {
if (!data.id) return data.text;
var $option = $(data.element);
var $result = $('<div class="select2-selection-wrapper"></div>');
var imagesrc = $option.attr('data-imagesrc');
var customImageClass = $option.attr('data-custom-image-class');
if (imagesrc) {
var spanClass = imagesrc;
if (customImageClass) {
// If there's a custom image class, add it to the span
spanClass = imagesrc.replace(/dashicon\s+[^\s]+/, 'dashicon ' + customImageClass);
}
var $icon = $('<span class="' + spanClass + '" style="display:inline-block !important; vertical-align:middle !important; margin-right:5px !important; visibility:visible !important; opacity:1 !important;"></span>');
$result.append($icon);
}
$result.append(data.text);
// After rendering, trigger the custom image handler
setTimeout(function() {
wpai_set_custom_select_image();
}, 10);
return $result;
}
}).on('select2:opening', function(e){
formHeight = ($('.wpallimport-layout').height() < 730) ? 730 : $('.wpallimport-layout').height();
// Store the original height to restore later
$(this).data('originalHeight', $wrap.height());
}).on('select2:open', function(e){
// Set timeout to allow the dropdown to render before measuring
setTimeout(function() {
$wrap.css({'height': formHeight + $('.select2-dropdown').height() + 'px'});
}, 50);
}).on('select2:closing', function(e){
$wrap.css({'height': 'auto'});
}).on('select2:select', function(e){
let selectedData = e.params.data;
if (fixWrapHeight){
$wrap.css({'height': 'auto'});
} else {
fixWrapHeight = true;
}
$('.wpallimport-upgrade-notice').hide();
$('input[name=custom_type]').val(selectedData.id);
var is_import_denied = $('.wpallimport-upgrade-notice[rel="'+ selectedData.id +'"]').length;
// Free version - also deny taxonomies
var is_taxonomy_import = (selectedData.id === 'taxonomies');
if (is_import_denied){
$('.wpallimport-upgrade-notice[rel="'+ selectedData.id +'"]').slideDown();
}
if ($('.wpallimport-upload-resource-step-two:visible').length && ! is_import_denied && ! is_taxonomy_import) {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
} else {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
} else {
$(this).next('.select2-container').find('.select2-selection__rendered').css({'color':'#555'});
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
}
switch (selectedData.id) {
case 'taxonomies':
$('.taxonomy_to_import_wrapper').slideDown();
$('.gravity_form_to_import_wrapper').slideUp();
// Free version - always hide submit buttons for taxonomy imports
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
break;
case 'gf_entries':
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideDown();
var selectedForm = $('input[name=gravity_form_title]').val();
if (selectedForm == ''){
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
} else {
// Only show submit buttons if upload step is visible
if ($('.wpallimport-upload-resource-step-two:visible').length) {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
}
}
}
break;
default:
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideUp();
break;
}
// Rapid Add-On API Images
wpai_set_custom_select_image();
// Trigger native change event to ensure all listeners are notified
$(this).trigger('change');
}).on('change', function() {
// This handler will be triggered by the native change event
// Only proceed if we're not already in the select2:select handler
if (!$(this).data('select2-processing')) {
// Set a flag to prevent infinite loop
$(this).data('select2-processing', true);
var selectedValue = $(this).val();
switch (selectedValue) {
case 'taxonomies':
$('.taxonomy_to_import_wrapper').slideDown();
$('.gravity_form_to_import_wrapper').slideUp();
// Free version - always hide submit buttons for taxonomy imports
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
break;
case 'gf_entries':
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideDown();
var selectedForm = $('input[name=gravity_form_title]').val();
if (selectedForm == ''){
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').hide();
} else {
// Only show submit buttons if upload step is visible
if ($('.wpallimport-upload-resource-step-two:visible').length) {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
}
}
}
break;
default:
$('.taxonomy_to_import_wrapper').slideUp();
$('.gravity_form_to_import_wrapper').slideUp();
// Show submit buttons for non-taxonomy, non-gravity form post types
if ($('.wpallimport-upload-resource-step-two:visible').length) {
// Check if any upgrade notice is visible before showing buttons
if ($('.wpallimport-upgrade-notice:visible').length === 0) {
$('.wpallimport-choose-file').find('.wpallimport-submit-buttons').slideDown();
}
}
break;
}
// Remove the processing flag
$(this).data('select2-processing', false);
}
});
$('.wpallimport-download-from').on('click', function(){
if ($(this).attr('rel') === 'url') {
$('.wpallimport-download-resource-step-two-url').show();
$('.wpallimport-download-resource-step-two-ftp').hide();
// Show upgrade notice for URL download in Free version
$('.wpallimport-download-resource-step-two-url .wpallimport-free-edition-notice').show();
} else {
$('.wpallimport-download-resource-step-two-url').hide();
$('.wpallimport-download-resource-step-two-ftp').show();
// Show upgrade notice for FTP download in Free version
$('.wpallimport-download-resource-step-two-ftp .wpallimport-free-edition-notice').show();
}
$('.wpallimport-download-from').removeClass('wpallimport-download-from-checked');
$(this).addClass('wpallimport-download-from-checked');
$('.wpallimport-choose-file').find('input[name=type]').val( $(this).attr('rel') );
$('.dd-container').fadeIn();
});
$('#custom_type_selector').hide();
$('.wpallimport-download-from.wpallimport-download-from-checked').trigger('click');
$('a.auto-generate-template').on('click', function(){
$('input[name^=auto_generate]').val('1');
$(this).parents('form:first').submit();
});
$('a.create-filters-step').on('click', function(){
$('input[name^=go_to_create_filters]').val('1');
$(this).parents('form:first').submit();
});
$('#advanced_upload').on('click', function(){
$('input[name^=auto_generate]').val('1');
});
});
//[/End Step 1]
// template form: auto submit when `load template` list value is picked
$('form.wpallimport-template').find('select[name="load_template"]').on('change', function () {
$(this).parents('form').submit();
});
var serialize_ctx_mapping = function(){
$('.custom_type[rel=tax_mapping]').each(function(){
var values = new Array();
$(this).find('.form-field').each(function(){
if ($(this).find('.mapping_to').val() != "") {
var skey = $(this).find('.mapping_from').val();
if ('' != skey){
var obj = {};
obj[skey] = $(this).find('.mapping_to').val();
values.push(obj);
}
}
});
$(this).find('input[name^=tax_mapping]').val(window.JSON.stringify(values));
});
};
// add expander
$(document).on('click', '.xml-expander', function () {
var method;
if ('-' == $(this).text()) {
$(this).text('+');
method = 'addClass';
} else {
$(this).text('-');
method = 'removeClass';
}
// for nested representation based on div
$(this).parent().find('> .xml-content')[method]('collapsed');
// for nested representation based on tr
var $tr = $(this).parent().parent().filter('tr.xml-element').next()[method]('collapsed');
});
// [xml representation dynamic]
$.fn.xml = function (opt) {
if ( ! this.length) return this;
var $self = this;
var opt = opt || {};
var action = {};
if ('object' == typeof opt) {
action = opt;
} else {
action[opt] = true;
}
action = $.extend({init: ! this.data('initialized')}, action);
if (action.init) {
this.data('initialized', true);
}
if (action.dragable) {
this.find('.xml-tag.opening > .xml-tag-name, .xml-attr-name, .csv-tag.opening > .csv-tag-name, .ui-menu-item').each(function () {
var $this = $(this);
var xpath = '.';
if ($this.is('.xml-attr-name'))
xpath = '{' + ($this.parents('.xml-element:first').attr('title').replace(/^\/[^\/]+\/?/, '') || '.') + '/@' + $this.html().trim() + '}';
else if($this.is('.ui-menu-item'))
xpath = '{' + ($this.attr('title').replace(/^\/[^\/]+\/?/, '') || '.') + '}';
else
xpath = '{' + ($this.parent().parent().attr('title').replace(/^\/[^\/]+\/?/, '') || '.') + '}';
$this.data('xpath', xpath).on('dblclick', function(e) {
$wpAllImportDrag = $(this);
$wpAllImportOriginalColor = $wpAllImportDrag.css('color');
$wpAllImportDrag.css('color', '#46ba69').css('font-weight','900');
}).draggable({
helper: function() {
return $('<div>').text($(this).data('xpath')).css({
'padding': '5px',
'border-radius': '5px'
});
},
cursor: 'pointer',
iframeFix:true
}).css('cursor', 'pointer');
});
wpaiMakeDroppable();
}
return this;
};
// template form: preview button
$('form.wpallimport-template').each(function () {
var $form = $(this);
// The form should not submit when Enter is pressed.
$form.on('keypress', function (event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode === 13 && event.target.tagName !== 'TEXTAREA') {
event.preventDefault();
}
});
var $detected_cf = new Array();
$form.find('.preview, .preview_images, .preview_taxonomies, .preview_prices').on('click', function () {
var $preview_type = $(this).attr('rel');
var $options_slug = $(this).parent('div').find('.wp_all_import_section_slug').val();
if ($preview_type == 'preview_taxonomies') serialize_ctx_mapping();
var $URL = 'admin.php?page=pmxi-admin-import&action=' + $preview_type + ((typeof import_id != "undefined") ? '&id=' + import_id : '');
var $tagURL = 'admin.php?page=pmxi-admin-import&action=tag' + ((typeof import_id != "undefined") ? '&id=' + import_id : '');
if ($options_slug != undefined) $URL += '&slug=' + $options_slug;
$('.wpallimport-overlay').show();
var $ths = $(this);
$(this).pointer({
content: '<div class="wpallimport-preview-preload wpallimport-pointer-' + $preview_type + '"></div>',
position: {
edge: 'right',
align: 'center'
},
pointerWidth: ($preview_type == 'preview_images') ? 800 : 715,
close: function() {
$.post( ajaxurl, {
pointer: 'pksn1',
action: 'dismiss-wp-pointer'
});
$('.wpallimport-overlay').hide();
}
}).pointer('open');
var $pointer = $('.wpallimport-pointer-' + $preview_type).parents('.wp-pointer').first();
var $leftOffset = ($(window).width() - (($preview_type == 'preview_images') ? 800 : 715))/2;
$pointer.css({'position':'fixed', 'top' : '15%', 'left' : $leftOffset + 'px'});
if (typeof tinyMCE != 'undefined') tinyMCE.triggerSave(false, false);
$.post($URL, $form.serialize(), function (response) {
$ths.pointer({'content' : response.html});
$pointer.css({'position':'fixed', 'top' : '15%', 'left' : $leftOffset + 'px'});
var $preview = $('.wpallimport-' + $preview_type);
$preview.parent('.wp-pointer-content').removeClass('wp-pointer-content').addClass('wpallimport-pointer-content');
var $tag = $('.tag');
var tagno = parseInt($tag.find('input[name="tagno"]').val());
$preview.find('.navigation a').unbind('click').off('click').on('click', function () {
tagno += '#prev' == $(this).attr('href') ? -1 : 1;
$tag.addClass('loading').css('opacity', 0.7);
$preview.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: tagno, import_action: import_action, security: wp_all_import_security}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
$preview.find('input[name="tagno"]').off();
$preview.find('.navigation a').off('click');
$form.find('.' + $preview_type).trigger('click');
}, 'json');
return false;
});
$preview.find('input[name="tagno"]').unbind('click').off('click').on('change', function () {
tagno = (parseInt($(this).val()) > parseInt($preview.find('.pmxi_count').html())) ? $preview.find('.pmxi_count').html() : ( (parseInt($(this).val())) ? $(this).val() : 1 );
$tag.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: tagno, security: wp_all_import_security}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
$preview.find('input[name="tagno"]').off();
$preview.find('.navigation a').off('click');
$form.find('.' + $preview_type).trigger('click');
}, 'json');
return false;
});
}, 'json');
return false;
});
$form.find('.set_encoding').on('click', function(e){
e.preventDefault();
$form.find('a[rel="preview"].preview').trigger('click');
});
$form.find('input[name$=download_images]').each(function(){
if ($(this).is(':checked') && $(this).val() == 'gallery' ) {
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('p:first').show();
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('input').attr({'disabled':'disabled'});
}
});
$form.find('input[name$=download_images]').on('click', function(){
if ($(this).is(':checked') && $(this).val() == 'gallery' ) {
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('p:first').show();
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('input').attr({'disabled':'disabled'});
} else {
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('p:first').hide();
$(this).parents('.wpallimport-collapsed-content:first').find('.advanced_options_files').find('input').removeAttr('disabled');
}
});
// Auto-detect custom fields
$form.find('.auto_detect_cf').on('click', function(){
var parent = $(this).parents('.wpallimport-collapsed-content:first');
var request = {
action:'auto_detect_cf',
fields: $('#existing_meta_keys').val().split(','),
post_type: $('input[name=custom_type]').val(),
security: wp_all_import_security
};
$(this).attr({'disabled':'disabled'});
var $indicator = $('<span class="img_preloader" style="top:0;"/>').insertBefore($(this)).show();
var ths = $(this);
$.ajax({
type: 'POST',
url: ajaxurl,
data: request,
success: function(response) {
parent.find('input[name^=custom_name]:visible').each(function(){
if ("" == $(this).val()) $(this).parents('tr').first().remove();
});
$detected_cf = response.result;
var $added_fields_count = 0;
if (response.result.length){
for (var i = 0; i < response.result.length; i++){
var allow_add = true;
parent.find('input[name^=custom_name]:visible').each(function(){
if (response.result[i].key == "" || response.result[i].key == $(this).val()) {
allow_add = false;
return false;
}
});
// if this field doesn't present in custom fields section then put it there
if ( allow_add ){
parent.find('a.add-new-custom').trigger('click');
var fieldParent = parent.find('.form-field:visible').last();
fieldParent.find('input[name^=custom_name]:visible').last().val(response.result[i].key);
fieldParent.find('textarea[name^=custom_value]:visible').last().val(response.result[i].val);
if (response.result[i].is_serialized) fieldParent.find('.set_serialize').last().parent().trigger('click');
$added_fields_count++;
}
}
}
$indicator.remove();
$('.cf_detected').html(response.msg);
$('.cf_welcome').hide();
$('.cf_detect_result').fadeIn();
ths.removeAttr('disabled');
},
error: function(request) {
$indicator.remove();
ths.removeAttr('disabled');
},
dataType: "json"
});
});
// Clear all detected custom fields
$form.find('.clear_detected_cf').on('click', function(){
var parent = $(this).parents('.wpallimport-collapsed-content:first');
if ($detected_cf.length){
for (var i = 0; i < $detected_cf.length; i++){
parent.find('input[name^=custom_name]:visible').each(function(){
if ($detected_cf[i].key == $(this).val()) $(this).parents('tr').first().remove();
});
}
}
if ( ! parent.find('input[name^=custom_name]:visible').length){
parent.find('a.add-new-custom').trigger('click');
}
$('.cf_detected').html('');
$('.cf_detect_result').hide();
$('.cf_welcome').fadeIn();
$detected_cf = new Array();
});
// toggle custom field as serialized/default
$form.find('.wpallimport-cf-menu li').on('click', function(){
var $triggerEvent = $(this).find('a');
if ($triggerEvent.hasClass('set_serialize')){
var parent = $triggerEvent.parents('.form-field:first');
var parent_custom_format = parent.find('input[name^=custom_format]:first');
var parent_custom_value = parent.find('textarea[name^=custom_value]:first');
if (parseInt(parent_custom_format.val())){
parent_custom_format.val(0);
parent.find('.specify_cf:first').hide();
parent_custom_value.fadeIn();
$triggerEvent.parent().removeClass('active');
} else {
parent_custom_format.val(1);
parent_custom_value.hide();
parent.find('.specify_cf:first').fadeIn();
$triggerEvent.parent().addClass('active');
}
}
});
// [Serialized custom fields]
// Save serialized custom field format
$(document).on('click', '.save_sf', function(){
var $source = $(this).parents('table:first');
var $destination = $('div#' + $source.attr('rel'));
$destination.find('table:first').html('');
$source.find('input').each(function(i, e){
$(this).attr("value", $(this).val());
});
$destination.find('table:first').html($source.html());
$destination.parents('td:first').find('.pmxi_cf_pointer').pointer('destroy');
$('.wpallimport-overlay').hide();
});
// Auto-detect serialized custom fields
$(document).on('click', '.auto_detect_sf', function() {
var $source = $(this).parents('table:first');
var $destination = $('div#' + $source.attr('rel'));
var $parentDestination = $destination.parents('tr:first');
var $cf_name = $parentDestination.find('input[name^=custom_name]:first').val();
if ($cf_name != ''){
var request = {
action:'auto_detect_sf',
security: wp_all_import_security,
post_type: $('input[name=custom_type]').val(),
name: $cf_name
};
$(this).attr({'disabled':'disabled'});
var $indicator = $('<span class="img_preloader" style="position: absolute; top:0;"/>').insertBefore($(this)).show();
var ths = $(this);
$.ajax({
type: 'POST',
url: ajaxurl,
data: request,
success: function(response) {
if (response.result.length){
$destination.find('tr.form-field').each(function(){
if ( ! $(this).hasClass('template') ) $(this).remove();
});
for (var i = 0; i < response.result.length; i++){
$destination.find('a.add-new-key').trigger('click');
$destination.find('tr.form-field').not('.template').last().css({"opacity": 1}).find('input.serialized_key').attr("value", response.result[i].key);
$destination.find('tr.form-field').not('.template').last().css({"opacity": 1}).find('input.serialized_value').attr("value", response.result[i].val);
}
$destination.parents('td:first').find('.pmxi_cf_pointer').pointer('destroy');
$destination.parents('td:first').find('.pmxi_cf_pointer').trigger('click');
} else {
var $notice = $('<p style="color:red; position: absolute; top: -10px; padding:0; margin:0;">No fields detected.</p>').insertBefore(ths).show();
setTimeout(function() {
$notice.slideUp().remove();
}, 2500);
}
$indicator.remove();
ths.removeAttr('disabled');
},
error: function(request) {
$indicator.remove();
ths.removeAttr('disabled');
},
dataType: "json"
});
}
});
// [/ Serialized custom fields]
// Save mapping rules for custom field
$(document).on('click', '.save_mr', function(){
let $source = $(this).parents('table:first');
let $destination = $('div#' + $source.attr('rel'));
let $is_active = false;
$destination.find('table:first').html('');
$source.find('input').each(function(i, e){
$(this).attr("value", $(this).val());
if ($(this).val() != "") {
$is_active = true;
}
});
let $box = $destination.parents('td.action:first');
if ( $is_active ){
$box.find('.set_mapping').parent().addClass('active');
} else {
$box.find('.set_mapping').parent().removeClass('active');
}
$destination.find('table:first').html($source.html());
$destination.parents('td:first').find('.pmxi_cf_mapping').pointer('destroy');
$('.wpallimport-overlay').hide();
});
// Taxonnomies
$form.find('#show_hidden_ctx').on('click', function(){
$form.find('tr.private_ctx').toggle();
});
// Test & Preview images
$(document).on('click', '.test_images', function(){
let ths = $(this);
$(this).attr({'disabled':'disabled'});
$('.img_preloader').show();
$('.img_success').html('').hide();
$('.img_failed').remove();
let imgs = new Array();
$('.images_list').find('li').each(function(){
imgs.push($(this).attr('rel'));
});
let request = {
action: 'test_images',
security: wp_all_import_security,
download: ths.attr('rel'),
imgs:imgs
};
$.ajax({
type: 'POST',
url: ajaxurl,
data: request,
success: function(response) {
$('.img_preloader').hide();
if ( parseInt(response.success_images)) {
$('.img_success').html(response.success_msg).show();
}
if (response.failed_msgs.length){
for (var i = 0; i < response.failed_msgs.length; i++){
$('.test_progress').append('<div class="img_failed">' + response.failed_msgs[i] + '</div>');
}
$('.img_failed').show();
}
ths.removeAttr('disabled');
},
error: function(request) {
$('.img_failed').html(request.textStatus).show();
ths.removeAttr('disabled');
},
dataType: "json"
});
});
/* Merge Main XML file with sub file by provided fields */
$form.find('.parse').on('click', function(){
var submit = true;
if ("" == $form.find('input[name=nested_url]').val()){
$form.find('input[name=nested_url]').css({'background':'red'});
submit = false;
}
if (submit){
var ths = $(this);
var $fileURL = $form.find('input[name=nested_url]').val();
$(this).attr({'disabled':'disabled'});
var request = {
action:'nested_merge',
security: wp_all_import_security,
filePath: $fileURL,
};
var $indicator = $('<span class="img_preloader" style="top:10px;"/>').insertBefore($(this)).show();
$form.find('.nested_msgs').html('');
$.ajax({
type: 'POST',
url: ajaxurl + ((typeof import_id != "undefined") ? '?id=' + import_id : ''),
data: request,
success: function(response) {
$indicator.remove();
if (response.success)
{
$form.find('.nested_files ul').append('<li rel="' + $form.find('.nested_files ul').find('li').length + '">' + $fileURL + ' <a href="javascript:void(0);" class="unmerge">remove</a></li>');
$form.find('input[name=nested_files]').val(window.JSON.stringify(response.nested_files));
var $tag = $('.tag');
var $tagno = parseInt($tag.find('input[name="tagno"]').val());
var $tagURL = 'admin.php?page=pmxi-admin-import&action=tag' + ((typeof import_id != "undefined") ? '&id=' + import_id : '');
$tag.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: $tagno, import_action: import_action}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
}, 'json');
return false;
} else {
$form.find('.nested_msgs').html(response.msg);
}
ths.removeAttr('disabled');
},
error: function(request) {
$indicator.remove();
ths.removeAttr('disabled');
},
dataType: "json"
});
}
});
/* Unmerge nested XMl/CSV files */
$form.find('.unmerge').on('click', function(){
var ths = $(this);
$(this).attr({'disabled':'disabled'});
var $indicator = $('<span class="img_preloader" style="top:5px;"/>').insertBefore($(this)).show();
var request = {
action:'unmerge_file',
source: ths.parents('li:first').attr('rel'),
security: wp_all_import_security
};
$form.find('.nested_msgs').html('');
$.ajax({
type: 'POST',
url: ajaxurl + ((typeof import_id != "undefined") ? '?id=' + import_id : ''),
data: request,
success: function(response) {
$indicator.remove();
if (response.success){
ths.parents('li:first').remove();
$form.find('input[name=nested_files]').val(window.JSON.stringify(response.nested_files));
var $tag = $('.tag');
var $tagno = parseInt($tag.find('input[name="tagno"]').val());
var $tagURL = 'admin.php?page=pmxi-admin-import&action=tag' + ((typeof import_id != "undefined") ? '&id=' + import_id : '');
$tag.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: $tagno, import_action: import_action}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
}, 'json');
return false;
}
else{
$form.find('.msgs').html(response.errors);
$form.find('.pmxi_counter').remove();
}
ths.removeAttr('disabled');
},
error: function(request) {
$indicator.remove();
ths.removeAttr('disabled');
},
dataType: "json"
});
});
$form.find('input[name=nested_url]').on('focus', function(){
$(this).css({'background':'#fff'});
});
var is_firefox = navigator.userAgent.indexOf('Firefox') > -1;
var is_safari = navigator.userAgent.indexOf("Safari") > -1;
var is_chrome = navigator.userAgent.indexOf('Chrome') > -1;
if ((is_safari && !is_chrome) || is_firefox){
$form.find('textarea[name$=download_featured_image]').attr("placeholder", "http://example.com/images/image-1.jpg");
$form.find('textarea[name$=featured_image]').attr("placeholder", "image-1.jpg");
$form.find('textarea[name$=gallery_featured_image]').attr("placeholder", "image-1.jpg");
} else {
$form.find('textarea[name$=download_featured_image]').attr("placeholder", "http://example.com/images/image-1.jpg\nhttp://example.com/images/image-2.jpg\n...");
$form.find('textarea[name$=featured_image]').attr("placeholder", "image-1.jpg\nimage-2.jpg\n...");
$form.find('textarea[name$=gallery_featured_image]').attr("placeholder", "image-1.jpg\nimage-2.jpg\n...");
}
$form.find('input[name$=download_images]:checked').each(function(){
if ($(this).val() == 'gallery') {
$(this).parents('table:first').find('.search_through_the_media_library').slideUp();
} else {
$(this).parents('table:first').find('.search_through_the_media_library').slideDown();
}
// download images hosted elsewhere
if ($(this).val() == 'yes'){
$('.search_through_the_media_library_logic').show();
$('.download_images').show();
} else {
$('.search_through_the_media_library_logic').hide();
$('.download_images').hide();
}
});
$form.find('input[name$=download_images]').on('click', function(){
if ($(this).is(':checked') && $(this).val() == 'gallery') {
$(this).parents('table:first').find('.search_through_the_media_library').slideUp();
} else {
$(this).parents('table:first').find('.search_through_the_media_library').slideDown();
}
// download images hosted elsewhere
if ($(this).val() == 'yes'){
$('.search_through_the_media_library_logic').slideDown();
$('.download_images').slideDown();
} else {
$('.search_through_the_media_library_logic').slideUp();
$('.download_images').slideUp();
}
});
$form.find('.wpallimport-dismiss-cf-welcome').on('click', function(){
$('.cf_welcome, .cf_detect_result').slideUp();
});
});
// options form: highlight options of selected post type
$('form.wpallimport-template input[name="type"]').on('click', function() {
var $container = $(this).parents('.post-type-container');
$('.post-type-container').not($container).removeClass('selected').find('.post-type-options').hide();
$container.addClass('selected').find('.post-type-options').show();
}).filter(':checked').trigger('click');
// options form: add / remove custom params
$('.form-table a.action[href="#add"]').on('click', function () {
var $template = $(this).parents('table').first().find('tr.template');
$template.clone(true).insertBefore($template).css('display', 'none').removeClass('template').fadeIn();
return false;
});
// options form: auto submit when `load options` checkbox is checked
$('input[name="load_options"]').on('click', function () {
if ($(this).is(':checked')) $(this).parents('form').submit();
});
// options form: auto submit when `reset options` checkbox is checked
$('form.wpallimport-template').find('input[name="reset_options"]').on('click', function () {
if ($(this).is(':checked')) $(this).parents('form').submit();
});
$(document).on('click', '.form-table .action.remove a, .cf-form-table .action.remove a, .tax-form-table .action.remove a', function () {
let $box = $(this).parents('tbody').first();
$(this).parents('tr').first().remove();
if ( ! $box.find('tr.form-field:visible').length ){
$box.find('.add-new-entry').trigger('click');
}
return false;
});
var dblclickbuf = {
'selected':false,
'value':''
};
function insertxpath(){
if ($(this).hasClass('wpallimport-placeholder')){
$(this).val('');
$(this).removeClass('wpallimport-placeholder');
}
if (dblclickbuf.selected) {
$(this).val($(this).val() + dblclickbuf.value);
$('.xml-element[title*="/'+dblclickbuf.value.replace('{','').replace('}','')+'"]').removeClass('selected');
dblclickbuf.value = '';
dblclickbuf.selected = false;
}
}
var go_to_template = false;
// selection logic
$('form.wpallimport-choose-elements').each(function () {
var $form = $(this);
$form.find('.wpallimport-xml').xml();
var $input = $form.find('input[name="xpath"]');
var $next_element = $form.find('#next_element');
var $prev_element = $form.find('#prev_element');
var $goto_element = $form.find('#goto_element');
var $get_default_xpath = $form.find('#get_default_xpath');
var $root_element = $form.find('#root_element');
var $submit = $form.find('input[type="submit"]');
var $csv_delimiter = $form.find('input[name=delimiter]');
var $apply_delimiter = $form.find('input[name=apply_delimiter]');
var $xml = $('.wpallimport-xml');
var xpathChanged = function (reset_element) {
if ($input.val() == $input.data('checkedValue')) return;
$form.addClass('loading');
$form.find('.xml-element.selected').removeClass('selected'); // clear current selection
// request server to return elements which correspond to xpath entered
$input.attr('readonly', true).unbind('change', xpathChanged).data('checkedValue', $input.val());
$xml.css({'visibility':'hidden'});
$('.wpallimport-set-csv-delimiter').hide();
$xml.parents('fieldset:first').addClass('preload');
go_to_template = false;
$submit.hide();
var evaluate = function(){
$.post('admin.php?page=pmxi-admin-import&action=evaluate', {xpath: $input.val(), show_element: reset_element ? 1 : $goto_element.val(), root_element:$root_element.val(), is_csv: $apply_delimiter.length, delimiter:$csv_delimiter.val(), security: wp_all_import_security}, function (response) {
if (response.result){
$('.wpallimport-elements-preloader').hide();
$('.ajax-console').html(response.html);
$input.attr('readonly', false).on('change', function(){$goto_element.val(1); xpathChanged();});
$form.removeClass('loading');
$xml.parents('fieldset:first').removeClass('preload');
$('.wpallimport-set-csv-delimiter').show();
go_to_template = true;
$('#pmxi_xml_element').find('option').each(function(){
if ($(this).val() != "") $(this).remove();
});
$('#pmxi_xml_element').append(response.render_element);
$('.wpallimport-root-element').html(response.root_element);
$('.wpallimport-elements-count-info').html(response.count);
$('.wp_all_import_warning').hide();
if (response.count){
$submit.show();
if ($('.xml-element.lvl-1').length < 1) $('.wp_all_import_warning').css({'display':'inline-block'});
} else {
$submit.hide();
}
}
}, "json").fail(function() {
$xml.parents('fieldset:first').removeClass('preload');
$form.removeClass('loading');
$('.ajax-console').html('<div class="error inline"><p>No matching elements found for XPath expression specified.</p></div>');
});
}
evaluate();
};
$next_element.on('click', function(){
var matches_count = ($('.matches_count').length) ? parseInt($('.matches_count').html()) : 0;
var show_element = Math.min((parseInt($goto_element.val()) + 1), matches_count);
$goto_element.val(show_element).html( show_element ); $input.data('checkedValue', ''); xpathChanged();
});
$prev_element.on('click', function(){
var show_element = Math.max((parseInt($goto_element.val()) - 1), 1);
$goto_element.val(show_element).html( show_element ); $input.data('checkedValue', ''); xpathChanged();
});
$goto_element.on('change', function(){
var matches_count = ($('.matches_count').length) ? parseInt($('.matches_count').html()) : 0;
var show_element = Math.max(Math.min(parseInt($goto_element.val()), matches_count), 1);
$goto_element.val(show_element); $input.data('checkedValue', ''); xpathChanged();
});
var reset_filters = function(){
$('#apply_filters').hide();
$('.filtering_rules').empty();
$('#filtering_rules').find('p').show();
}
$get_default_xpath.on('click', function(){
$input.val($(this).attr('rel'));
if ($input.val() == $input.data('checkedValue')) return;
reset_filters();
$root_element.val($(this).attr('root'));
$goto_element.val(1);
xpathChanged(true);
});
$('.wpallimport-change-root-element').on('click', function(){
$input.val('/' + $(this).attr('rel'));
if ($input.val() == $input.data('checkedValue')) return;
$('.wpallimport-change-root-element').removeClass('selected');
$(this).addClass('selected');
reset_filters();
$('.root_element').html($(this).attr('rel'));
$root_element.val($(this).attr('rel'));
$goto_element.val(1);
xpathChanged(true);
});
$input.on('change', function(){
$goto_element.val(1);
xpathChanged(true);
}).trigger('change');
$input.on('keyup', function (e) {
if (13 == e.keyCode) $(this).trigger('change');
});
$apply_delimiter.on('click', function(){
if ( ! $input.attr('readonly') ){
$('input[name="xpath"]').data('checkedValue','');
$goto_element.val(1);
xpathChanged(true);
}
});
$('#apply_filters').on('click', function(){
var $input = $('input[name="xpath"]');
var xpath = $input.val();
filter = '[';
xpath_builder($('.filtering_rules'), 0);
filter += ']';
$input.val( $input.val().split('[')[0] + filter);
$input.data('checkedValue', '');
$goto_element.val(1);
xpathChanged(true);
if ($('.filtering_rules').html().length) {
$('.filtering-output').val(window.JSON.stringify($('.filtering_rules').html()));
} else {
$('.filtering-output').val('');
}
});
});
/* Advanced Filtering */
$('.filtering_rules').pmxi_nestedSortable({
handle: 'div',
items: 'li',
toleranceElement: '> div',
update: function () {
$('.filtering_rules').find('.condition').show();
$('.filtering_rules').find('.condition:last').hide();
}
});
$('#pmxi_add_rule').on('click', function(){
var $el = $('#pmxi_xml_element');
var $rule = $('#pmxi_rule');
var $val = $('#pmxi_value');
if ($el.val() == "" || $rule.val() == "") return;
if ($rule.val() != 'is_empty' && $rule.val() != "is_not_empty" && $val.val() == "") return;
var relunumber = $('.filtering_rules').find('li').length + "_" + $.now();
var html = '<li><div class="drag-element">';
html += '<input type="hidden" value="'+ $el.val() +'" class="pmxi_xml_element"/>';
html += '<input type="hidden" value="'+ $rule.val() +'" class="pmxi_rule"/>';
html += '<input type="hidden" value="'+ $val.val() +'" class="pmxi_value"/>';
html += '<span class="rule_element">' + $el.val() + '</span><span class="rule_as_is">' + $rule.find('option:selected').html() + '</span><span class="rule_condition_value">"' + $val.val() +'"</span>';
html += '<span class="condition"> <label for="rule_and_'+relunumber+'">AND</label><input id="rule_and_'+relunumber+'" type="radio" value="and" name="rule_'+relunumber+'" checked="checked" class="rule_condition"/><label for="rule_or_'+relunumber+'">OR</label><input id="rule_or_'+relunumber+'" type="radio" value="or" name="rule_'+relunumber+'" class="rule_condition"/> </span>';
html += '</div><a href="javascript:void(0);" class="icon-item remove-ico"></a></li>';
$('#wpallimport-filters, #apply_filters').show();
$('#filtering_rules').find('p').hide();
$('.filtering_rules').append(html);
$('.filtering_rules').find('.condition').show();
$('.filtering_rules').find('.condition:last').hide();
$el.prop('selectedIndex',0);
$rule.prop('selectedIndex',0);
$val.val('');
$('#pmxi_value').show();
fix_tag_position();
});
$(document).on('change', '.rule_condition', function() {
$('input[name=' + $(this).attr('name') + ']').removeAttr('checked');
$(this).prop('checked', true).attr('checked', 'checked');
});
$(document).on('click', '.filtering_rules li a.remove-ico', function() {
$(this).parents('li:first').remove();
$('.filtering_rules').find('li:last div span.condition').hide();
if (!$('.filtering_rules').find('li').length){
$('#apply_filters').hide().trigger('click');
$('#filtering_rules').find('p').show();
}
fix_tag_position();
});
$('#pmxi_rule').on('change', function(){
if ($(this).val() == 'is_empty' || $(this).val() == 'is_not_empty') {
$('#pmxi_value').hide();
} else {
$('#pmxi_value').show();
}
});
var filter = '[';
var xpath_builder = function(rules_box, lvl){
var rules = rules_box.children('li');
var root_element = $('#root_element').val();
if (lvl && rules.length > 1) filter += ' (';
rules.each(function(){
var node = $(this).children('.drag-element').find('.pmxi_xml_element').val();
var condition = $(this).children('.drag-element').find('.pmxi_rule').val();
var value = $(this).children('.drag-element').find('.pmxi_value').val();
var clause = ($(this).children('.drag-element').find('.condition').is(':visible')) ? $(this).children('.drag-element').find('input.rule_condition:checked').val() : false;
var is_attr = false;
if (node.indexOf('@') != -1){
is_attr = true;
node_name = node.split('@')[0];
attr_name = node.split('@')[1];
}
if (is_attr) {
filter += (node_name == root_element) ? '' : node_name.replace(/->/g, '/');
} else {
filter += node.replace(/->/g, '/');
}
if (is_attr) filter += '@' + attr_name;
switch (condition){
case 'equals':
filter += ' = "%s"';
break;
case 'not_equals':
filter += ' != "%s"';
break;
case 'greater':
filter += ' > %s';
break;
case 'equals_or_greater':
filter += ' >= %s';
break;
case 'less':
filter += ' < %s';
break;
case 'equals_or_less':
filter += ' <= %s';
break;
case 'contains':
filter += '[contains(.,"%s")]';
break;
case 'not_contains':
filter += '[not(contains(.,"%s"))]';
break;
case 'is_empty':
filter += '[not(string())]';
break;
case 'is_not_empty':
filter += '[string()]';
break;
}
filter = filter.replace('%s', value);
if (clause) filter += ' ' + clause + ' ';
if ($(this).children('ol').length){
$(this).children('ol').each(function(){
if ($(this).children('li').length) xpath_builder($(this), 1);
});
}
});
if (lvl && rules.length > 1) filter += ') ';
}
$('form.wpallimport-choose-elements').find('input[type="submit"]').on('click', function(e){
e.preventDefault();
if (go_to_template) $(this).parents('form:first').submit();
});
var init_context_menu = function(){
if ( $(".tag").length ){
$('.xml-element').each(function(){
var $ths = $(this);
if ($(this).children('.xml-element-xpaths').find('li').length){
$(this).children('.xml-content').css({'cursor':'context-menu'}).attr({'title' : 'Right click to view alternate XPaths'});
$(this).contextmenu({
delegate: ".xml-content",
menu: "#" + $(this).children('.xml-element-xpaths').find('ul').attr('id'),
select: function(event, ui) {
//alert("select " + ui.cmd + " on " + ui.target.text());
}
});
}
});
}
}
// tag preview
$.fn.tag = function () {
this.each(function () {
init_context_menu();
var $tag = $(this);
$tag.xml('dragable');
var tagno = parseInt($tag.find('input[name="tagno"]').val());
var $tagURL = 'admin.php?page=pmxi-admin-import&action=tag' + ((typeof import_id != "undefined") ? '&id=' + import_id : '');
$tag.find('.navigation a').on('click', function () {
tagno += '#prev' == $(this).attr('href') ? -1 : 1;
$tag.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: tagno, import_action: import_action, xpath: $('input[name="xpath"]').val(), security: wp_all_import_security}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
}, 'json');
return false;
});
$tag.find('input[name="tagno"]').on('change keypress', function (event) {
// Check if the key pressed is enter, if not exit the function unless a
// 'change' event triggered it.
if(event.type === "keypress") {
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode != '13'){
return;
}
}
tagno = (parseInt($(this).val()) > parseInt($tag.find('.pmxi_count').html())) ? $tag.find('.pmxi_count').html() : ( (parseInt($(this).val())) ? $(this).val() : 1 );
$(this).val(tagno);
$tag.addClass('loading').css('opacity', 0.7);
$.post($tagURL, {tagno: tagno, import_action: import_action, xpath: $('input[name="xpath"]').val(), security: wp_all_import_security}, function (data) {
var $indicator = $('<span />').insertBefore($tag);
$tag.replaceWith(data.html);
fix_tag_position();
$indicator.next().tag().prevObject.remove();
if ($('#variations_xpath').length){
$('#variations_xpath').data('checkedValue', '').trigger('change');
}
}, 'json');
});
});
return this;
};
$('.tag').tag();
// [/xml representation dynamic]
$('.wpallimport-custom-fields').each(function(){
$(this).find('.wp_all_import_autocomplete').each(function(){
if ( ! $(this).parents('tr:first').hasClass('template')){
$(this).autocomplete({
source: eval('__META_KEYS'),
minLength: 0
}).on('click', function () {
$(this).autocomplete('search', '');
$(this).attr('rel', '');
});
}
});
$(this).find('textarea[name^=custom_value]').on('click', function(){
var $ths = $(this);
var $parent = $ths.parents('tr:first');
var $custom_name = $parent.find('input[name^=custom_name]');
var $key = $custom_name.val();
if ($key != "" && $custom_name.attr('rel') != "done"){
$ths.addClass('loading');
$.post('admin.php?page=pmxi-admin-settings&action=meta_values', {key: $key, security: wp_all_import_security}, function (data) {
if (data.meta_values.length){
$ths.autocomplete({
source: eval(data.meta_values),
minLength: 0
}).on('click', function () {
$(this).autocomplete('search', '');
}).trigger('click');
}
$custom_name.attr('rel','done');
$ths.removeClass('loading');
}, 'json');
}
});
$('.wpallimport-cf-options').on('click', function(){
$(this).next('.wpallimport-cf-menu').slideToggle();
});
});
/* Categories hierarchy */
$('ol.sortable').pmxi_nestedSortable({
handle: 'div',
items: 'li.dragging',
toleranceElement: '> div',
update: function () {
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify($(this).pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
}
});
$('.drag-element').find('input').on('blur', function(){
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify($(this).parents('.ui-sortable:first').pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
});
$('.drag-element').find('input').on('change', function(){
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify($(this).parents('.ui-sortable:first').pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
});
$('.drag-element').find('input').on('mouseenter', function(){},function(){
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify($(this).parents('.ui-sortable:first').pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
});
$('.taxonomy_auto_nested').on('click', function(){
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify($(this).parents('td:first').find('.ui-sortable:first').pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
});
$(document).on('click', '.sortable li a.remove-ico, .sortable li div a.remove-ico', function(){
let parent_td = $(this).parents('td:first');
$(this).parents('li:first').remove();
parent_td.find('ol.sortable:first').find('li').each(function(i, e){
$(this).attr({'id':'item_'+ (i+1)});
});
parent_td.find('.hierarhy-output').val(window.JSON.stringify(parent_td.find('.ui-sortable:first').pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if (parent_td.find('input:first').val() == '') {
parent_td.find('.hierarhy-output').val('');
}
});
$('.tax_hierarchical_logic').find('.remove-ico').on('click', function(){
$(this).parents('li:first').remove();
});
$(document).on('click', '.add-new-ico', function() {
let count = parseInt($(this).parents('tr:first').find('ol.sortable').find('li.dragging').last().attr('id').replace('item_', '')) + 1;
let $template = $(this).parents('td:first').find('ol').children('li.template');
$clone = $template.clone(true);
$clone.addClass('dragging').attr({'id': $clone.attr('id') + '_' + count}).find('input[type=checkbox][name^=categories_mapping]').each(function(){
$(this).attr({'id': $(this).attr('id') + '_' + count});
$(this).next('label').attr({'for':$(this).next('label').attr('for') + '_' + count});
$(this).next('label').next('div').addClass($(this).next('label').next('div').attr('rel') + '_' + count);
});
$clone.insertBefore($template).css('display', 'none').removeClass('template').droppable({
drop: function (event, ui) {
let input = $(this).find("input.xpath_field:first");
let oldValue = input.val();
let newValue = ui.draggable.data('xpath') || '';
input.val(oldValue + newValue);
},
greedy:true
}).fadeIn().find('input.switcher').trigger('change');
let sortable = $(this).parents('.ui-sortable:first');
if (sortable.length){
$(this).parents('td:first').find('.hierarhy-output').val(window.JSON.stringify(sortable.pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).parents('td:first').find('.hierarhy-output').val('');
}
//$('.widefat').on('focus', insertxpath );
});
$(document).on('click', '.add-new-cat', function(){
var $template = $(this).parents('td:first').find('ul.tax_hierarchical_logic').children('li.template');
var $number = $(this).parents('td:first').find('ul.tax_hierarchical_logic').children('li').length - 1;
var $cloneName = $template.find('input.assign_term').attr('name').replace('NUMBER', $number);
$clone = $template.clone(true);
$clone.find('input[name^=tax_hierarchical_assing]').attr('name', $cloneName);
$clone.insertBefore($template).css('display', 'none').removeClass('template').droppable({
drop: function (event, ui) {
let input = $(this).find("input.hierarchical_xpath_field:first");
let oldValue = input.val();
let newValue = ui.draggable.data('xpath');
input.val(oldValue + newValue);
}
}).fadeIn().find('input.switcher').trigger('change');
});
$('ol.sortable').each(function(){
if ( ! $(this).children('li').not('.template').length ) $(this).next('.add-new-ico').trigger('click');
});
$('.tagno').trigger('change');
$('form.wpallimport-template.edit').each(function() {
var $input = $('input[name="xpath"]');
$input.on('change', function(){
$('.tagno').trigger('change');
}).trigger('change');
$input.on('keyup', function (e) {
if (13 == e.keyCode) $(this).trigger('change');
});
$('#apply_filters').on('click', function(){
filter = '';
if ($('.filtering_rules').children('li').length) {
filter = '[';
xpath_builder($('.filtering_rules'), 0);
filter += ']';
}
$input.val( $input.val().split('[')[0] + filter);
$input.data('checkedValue', '');
$input.trigger('change');
if ($('.filtering_rules').html().length) {
$('.filtering-output').val(window.JSON.stringify($('.filtering_rules').html()));
} else {
$('.filtering-output').val('');
}
});
});
$('form.wpallimport-template').find('input[type=submit]').on('click', function(e){
e.preventDefault();
$('.hierarhy-output').each(function(){
var sortable = $(this).parents('td:first').find('.ui-sortable:first');
if (sortable.length){
$(this).val(window.JSON.stringify(sortable.pmxi_nestedSortable('toArray', {startDepthCount: 0})));
if ($(this).parents('td:first').find('input:first').val() == '') $(this).val('');
}
});
if ($(this).attr('name') == 'btn_save_only') $('.save_only').val('1');
$('input[name^=in_variations], input[name^=is_visible], input[name^=is_taxonomy], input[name^=create_taxonomy_in_not_exists], input[name^=variable_create_taxonomy_in_not_exists], input[name^=variable_in_variations], input[name^=variable_is_visible], input[name^=variable_is_taxonomy]').each(function(){
if ( ! $(this).is(':checked') && ! $(this).parents('.form-field:first').hasClass('template')){
$(this).val('0').prop('checked', true);
}
});
$('.custom_type[rel=serialized]').each(function(){
var values = new Array();
$(this).find('.form-field').each(function(){
var skey = $(this).find('.serialized_key').val();
if ('' == skey){
values.push($(this).find('.serialized_value').val());
} else {
var obj = {};
obj[skey] = $(this).find('.serialized_value').val();
values.push(obj);
}
});
$(this).find('input[name^=serialized_values]').val(window.JSON.stringify(values));
});
$('.custom_type[rel=mapping]').each(function(){
var values = new Array();
$(this).find('.form-field').each(function(){
if ($(this).find('.mapping_to').val() != "") {
var skey = $(this).find('.mapping_from').val();
if ('' != skey){
var obj = {};
obj[skey] = $(this).find('.mapping_to').val();
values.push(obj);
}
}
});
$(this).find('input[name^=custom_mapping_rules], .pmre_mapping_rules').val(window.JSON.stringify(values));
});
serialize_ctx_mapping();
$(this).parents('form:first').submit();
});
$('.wpallimport-step-4').each(function(){
$(this).find('input[name^=custom_duplicate_name]').autocomplete({
source: eval('__META_KEYS'),
minLength: 0
}).on('click', function () {
$(this).autocomplete('search', '');
$(this).attr('rel', '');
});
});
$(document).on('click', '.add-new-entry', function(){
var $template = $(this).parents('table').first().children('tbody').children('tr.template');
$number = $(this).parents('table').first().children('tbody').children('tr').length - 2;
$clone = $template.clone(true);
$clone.find('div[rel^=serialized]').attr({'id':'serialized_' + $number}).find('table:first').attr({'rel':'serialized_' + $number});
$clone.find('div[rel^=mapping]').attr({'id':'cf_mapping_' + $number}).find('table:first').attr({'rel':'cf_mapping_' + $number});
$clone.find('a.specify_cf').attr({'rel':'serialized_' + $number})
$clone.find('a.pmxi_cf_mapping').attr({'rel':'cf_mapping_' + $number})
$clone.find('.wpallimport-cf-menu').attr({'id':'wpallimport-cf-menu-' + $number}).menu();
$clone.find('input[name^=custom_name]').autocomplete({
source: eval('__META_KEYS'),
minLength: 0
}).on('click', function () {
$(this).autocomplete('search', '');
$(this).attr('rel', '');
});
$clone.insertBefore($template).css('display', 'none').removeClass('template').fadeIn();
return false;
});
$(document).on('click', '.add-new-key', function(){
var $template = $(this).parents('table').first().find('tr.template');
$template.clone(true).insertBefore($template).css('display', 'none').removeClass('template').fadeIn();
});
/* END Categories hierarchy */
$('form.options').each(function(){
var $form = $(this);
var $uniqueKey = $form.find('input[name=unique_key]');
var $tmpUniqueKey = $form.find('input[name=tmp_unique_key]');
// Auto-detect unique key on page load if unique_key is empty and tmp_unique_key has a value
if ($uniqueKey.length && $tmpUniqueKey.length && !$uniqueKey.val() && $tmpUniqueKey.val()) {
$uniqueKey.val($tmpUniqueKey.val());
}
$form.find('.wpallimport-auto-detect-unique-key').on('click', function(){
$uniqueKey.val($tmpUniqueKey.val());
});
});
$('form.edit').each(function(){
var $form = $(this);
$form.find('.wpallimport-change-unique-key').on('click', function(){
var $ths = $(this);
$( "#dialog-confirm" ).dialog({
resizable: false,
height: 290,
width: 550,
modal: true,
draggable: false,
buttons: {
"Continue": function() {
$( this ).dialog( "close" );
$ths.hide();
$('input[name=unique_key]').removeAttr('disabled').trigger('focus');
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
});
var $uniqueKey = $form.find('input[name=unique_key]');
var $tmpUniqueKey = $form.find('input[name=tmp_unique_key]');
$form.find('.wpallimport-auto-detect-unique-key').on('click', function(){
$uniqueKey.val($tmpUniqueKey.val());
});
});
// chunk files upload
if ($('#plupload-ui').length) {
$('#plupload-ui').show();
$('#html-upload-ui').hide();
wplupload = $('#select-files').wplupload({
runtimes : 'gears,browserplus,html5,flash,silverlight,html4',
url : 'admin.php?page=pmxi-admin-settings&action=upload&_wpnonce=' + wp_all_import_security + ((typeof import_id != "undefined") ? '&id=' + import_id : ''),
container: 'plupload-ui',
browse_button : 'select-files',
file_data_name : 'async-upload',
multipart: true,
max_file_size: '1000mb',
chunk_size: '1mb',
drop_element: $('#wpallimport-drag-drop-area').length ? 'wpallimport-drag-drop-area' : 'plupload-ui',
multipart_params : {}
});
// Handle alternative Excel processing checkbox state for uploads
if (wplupload) {
wplupload.bind('BeforeUpload', function(up, file) {
// Check current checkbox state and pass it to upload
if ($('#use_alternative_excel_processing').is(':checked')) {
up.settings.multipart_params.use_alternative_excel = '1';
} else {
up.settings.multipart_params.use_alternative_excel = '0';
}
});
}
}
/* END plupload scripts */
$('#view_log').on('click', function(){
$('#import_finished').css({'visibility':'hidden'});
$('#logwrapper').slideToggle(100, function(){
$('#import_finished').css({'visibility':'visible'});
});
});
// Select Encoding
$('#import_encoding').on('change', function(){
if ($(this).val() == 'new'){
$('#select_encoding').hide();
$('#add_encoding').show();
}
});
$('#cancel_new_encoding').on('click', function(){
$('#add_encoding').hide();
$('#select_encoding').show();
$('#new_encoding').val('');
$('#import_encoding').prop('selectedIndex', 0);
});
$('#add_new_encoding').on('click', function(){
var new_encoding = $('#new_encoding').val();
if ("" != new_encoding){
$('#import_encoding').prepend('<option value="'+new_encoding+'">' + new_encoding + '</option>');
$('#cancel_new_encoding').trigger('click');
$('#import_encoding').prop('selectedIndex',0);
}
else alert('Please enter encoding.');
});
$('input[name=keep_custom_fields]').on('click', function(){
$(this).parents('.input:first').find('.keep_except').slideToggle();
});
$('.pmxi_choosen').each(function(){
const $container = $(this);
const $hiddenInput = $container.find(".choosen_input");
const tagsString = $container.find('.choosen_values').html() || '';
const tags = tagsString.split(',').filter(tag => tag.trim());
// Create a select element to use with Select2
const $select = $('<select multiple class="select2-hidden-accessible"></select>');
// Add existing values as options
if ($hiddenInput.val()) {
const selectedValues = $hiddenInput.val().split(',');
selectedValues.forEach(value => {
if (value.trim()) {
$select.append(`<option value="${value.trim()}" selected>${value.trim()}</option>`);
}
});
}
// Add all possible tags as options if not already added
tags.forEach(tag => {
if (tag.trim() && !$select.find(`option[value="${tag.trim()}"]`).length) {
$select.append(`<option value="${tag.trim()}">${tag.trim()}</option>`);
}
});
// Insert the select element after the hidden input
$hiddenInput.after($select);
// Initialize Select2 on the select element
$select.select2({
tags: true,
width: '80%'
});
// Update hidden input when Select2 selection changes
$select.on('change', function() {
$hiddenInput.val($(this).val().join(','));
});
});
if (typeof wpPointerL10n != "undefined") wpPointerL10n.dismiss = 'Close';
$('.show_hints').on('click', function(){
var $ths = $(this);
$('.wpallimport-overlay').show();
$(this).pointer({
content: $('#' + $ths.attr('rel')).html(),
position: {
edge: 'right',
align: 'center'
},
pointerWidth: 715,
close: function() {
$.post( ajaxurl, {
pointer: 'pksn1',
action: 'dismiss-wp-pointer'
});
$('.wpallimport-overlay').hide();
}
}).pointer('open');
});
// Serialized Custom Field Dialog
$('.pmxi_cf_pointer').on('click', function(){
var $ths = $(this);
//$('.wpallimport-overlay').show();
if ($ths.parents('.form-field:first').find('input[name^=custom_name]').val() == "") {
$('#' + $ths.attr('rel')).find('.auto_detect_sf').hide();
} else {
$('#' + $ths.attr('rel')).find('.auto_detect_sf').show();
}
$(this).pointer({
content: $('#' + $ths.attr('rel')).html(),
position: {
edge: 'top',
align: 'center'
},
pointerWidth: 450,
close: function() {
$.post( ajaxurl, {
pointer: 'pksn1',
action: 'dismiss-wp-pointer'
});
//$('.wpallimport-overlay').hide();
}
}).pointer('open');
});
// Custom Fields Mapping Dialog
$('.wpallimport-cf-menu li').on('click', function(){
var $triggerEvent = $(this).find('a');
if ($triggerEvent.hasClass('pmxi_cf_mapping')){
//$('.wpallimport-overlay').show();
var $ths = $triggerEvent;
$triggerEvent.pointer({
content: $('#' + $ths.attr('rel')).html(),
position: {
edge: 'right',
align: 'center'
},
pointerWidth: 450,
close: function() {
$.post( ajaxurl, {
pointer: 'pksn1',
action: 'dismiss-wp-pointer'
});
//$('.wpallimport-overlay').hide();
}
}).pointer('open');
}
});
$('.wpallimport-overlay').on('click', function(){
$('.wp-pointer').hide();
$('fieldset.wp-all-import-scheduling-help').hide();
$(this).hide();
});
if ($('#wp_all_import_code').length){
var editor = wp.codeEditor.initialize($('#wp_all_import_code'), wpai_cm_settings);
editor.codemirror.setCursor(1);
$('.CodeMirror').resizable({
resize: function() {
editor.setSize("100%", $(this).height());
}
});
var currentImportFunctions = editor.codemirror.getValue();
editor.codemirror.on('change',function(cMirror){
if ( currentImportFunctions != cMirror.getValue()){
window.onbeforeunload = function () {
return 'WARNING:\nFunctions are not saved, leaving the page will reset changes in Function editor.';
};
} else {
window.onbeforeunload = false;
}
});
}
function wp_all_import_save_functions(){
var request = {
action: 'save_import_functions',
data: editor.codemirror.getValue(),
security: wp_all_import_security
};
$('.wp_all_import_functions_preloader').show();
$('.wp_all_import_saving_status').removeClass('error updated').html('');
return $.ajax({
type: 'POST',
url: ajaxurl + ((typeof import_id != "undefined") ? '?id=' + import_id : ''),
data: request,
success: function(response) {
$('.wp_all_import_functions_preloader').hide();
if (response.result) {
window.onbeforeunload = false;
$('.wp_all_import_saving_status').addClass('updated');
setTimeout(function() {
$('.wp_all_import_saving_status').removeClass('error updated').html('');
}, 3000);
} else {
$('.wp_all_import_saving_status').addClass('error');
}
$('.wp_all_import_saving_status').html(response.msg).show();
},
error: function( jqXHR, textStatus ) {
$('.wp_all_import_functions_preloader').hide();
},
dataType: "json"
});
}
$('.wp_all_import_save_functions').on('click', function(){
$('.cross-sale-notice.codebox').slideUp();
wp_all_import_save_functions();
});
$('.wp_all_import_ajax_deletion').on('click', function(e){
e.preventDefault();
var $ths = $(this);
$(this).attr('disabled', 'disabled');
var iteration = 1;
var request = {
action: 'delete_import',
data: $(this).parents('form:first').serialize(),
security: wp_all_import_security,
iteration: iteration
};
var deleteImport = function(){
request.iteration = iteration;
$.ajax({
type: 'POST',
url: ajaxurl + ((typeof import_id != "undefined") ? '?id=' + import_id : ''),
data: request,
success: function(response) {
iteration++;
$ths.parents('form:first').find('.wp_all_import_deletion_log').html('<p>' + response.msg + '</p>');
if (response.result){
$('.wp_all_import_functions_preloader').hide();
window.location.href = response.redirect;
} else {
deleteImport();
}
},
error: function( jqXHR, textStatus ) {
$ths.removeAttr('disabled');
$('.wp_all_import_functions_preloader').hide();
},
dataType: "json"
});
}
$('.wp_all_import_functions_preloader').show();
deleteImport();
});
$('.wpallimport-collapsed').each(function(){
if ( ! $(this).hasClass('closed')) $(this).find('.wpallimport-collapsed-content:first').slideDown();
});
$('.wpallimport-collapsed').find('.wpallimport-collapsed-header').not('.disabled').on('click', function(){
var $parent = $(this).parents('.wpallimport-collapsed:first');
if ($parent.hasClass('closed')){
$parent.removeClass('closed');
$parent.find('.wpallimport-collapsed-content:first').slideDown(400, function(){
if ($('#wp_all_import_code').length) editor.codemirror.setCursor(1);
});
} else {
$parent.addClass('closed');
$parent.find('.wpallimport-collapsed-content:first').slideUp(400);
}
});
$('#is_delete_posts').on('change', function(){
if ($(this).is(':checked')){
$('.wpallimport-delete-posts-warning').show();
} else {
$('.wpallimport-delete-posts-warning').hide();
}
});
$('.wpallimport-dependent-options').each(function(){
$(this).prev('div.input').find('input[type=text]:last, textarea:last').addClass('wpallimport-top-radius');
});
$('.wpallimport-delete-and-edit, .download_import_template, .download_import_bundle').on('click', function(e){
e.preventDefault();
window.location.href = $(this).attr('rel');
});
$('.wpallimport-wpae-notify-read-more').on('click', function(e){
e.preventDefault();
var request = {
action: 'dismiss_notifications',
security: wp_all_import_security,
addon: $(this).parent('div:first').attr('rel')
};
var ths = $(this);
$.ajax({
type: 'POST',
url: ajaxurl,
data: request,
success: function(response) {
},
dataType: "json"
});
$(this).parent('div:first').slideUp();
window.open($(this).attr('href'), '_blank');
});
// [ Delete Import]
var wpai_are_sure_to_delete_import = function() {
if ( ! $('.delete-single-import').length ) return;
$('.delete-single-import').removeAttr('disabled');
if ( $('#is_delete_import').is(':checked') || $('#is_delete_posts').is(':checked')) {
$('.wp-all-import-sure-to-delete').show();
}
if ( ! $('#is_delete_import').is(':checked') && ! $('#is_delete_posts').is(':checked')) {
$('.wp-all-import-sure-to-delete').hide();
$('.delete-single-import').attr('disabled', 'disabled');
}
if ( $('#is_delete_import').is(':checked') && $('#is_delete_posts').is(':checked')) {
$('.sure_delete_posts_and_import').show();
}
if ($('#is_delete_import').is(':checked')) {
$('.sure_delete_import').show();
} else {
$('.sure_delete_import').hide();
$('.sure_delete_posts_and_import').hide();
}
if ($('#is_delete_posts').is(':checked')) {
$('.sure_delete_posts').show();
} else {
$('.sure_delete_posts').hide();
$('.sure_delete_posts_and_import').hide();
}
}
wpai_are_sure_to_delete_import();
$('#is_delete_import, #is_delete_posts').on('click', function(){
wpai_are_sure_to_delete_import();
});
// [\ Delete Import]
let get_delete_missing_notice_type = function() {
let $is_delete_missing = $('input#is_delete_missing');
if (!$is_delete_missing.is(':checked') || $is_delete_missing.data('backups-prompt') === 'disabled') {
return 0;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'import' && $('input[name="delete_missing_action"]:checked').val() == 'keep' && $('input[name="is_send_removed_to_trash"]').is(':checked')) {
return 1;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'import' && $('input[name="delete_missing_action"]:checked').val() == 'keep' && $('input[name="is_change_post_status_of_removed"]').is(':checked')) {
return 2;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'import' && $('input[name="delete_missing_action"]:checked').val() == 'remove') {
return 3;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'all' && $('input[name="delete_missing_action"]:checked').val() == 'keep' && $('input[name="is_send_removed_to_trash"]').is(':checked')) {
return 4;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'all' && $('input[name="delete_missing_action"]:checked').val() == 'keep' && $('input[name="is_change_post_status_of_removed"]').is(':checked')) {
return 5;
}
if ($('input[name="delete_missing_logic"]:checked').val() == 'all' && $('input[name="delete_missing_action"]:checked').val() == 'remove') {
return 6;
}
return 0;
}
function is_valid_delete_missing_options() {
let is_valid = true;
if ( $('input[name="is_delete_missing"]').is(':checked') && $('input[name="delete_missing_action"]:checked').val() == 'keep' ) {
if ( ! $('input[name="is_send_removed_to_trash"]').is(':checked')
&& ! $('input[name="is_change_post_status_of_removed"]').is(':checked')
&& ! $('input[name="is_update_missing_cf"]').is(':checked')
&& ! $('input[name="missing_records_stock_status"]').is(':checked')
) {
is_valid = false;
}
}
return is_valid;
}
let delete_missing_helper_text = function() {
$('.helper-text').hide();
if ( is_valid_delete_missing_options() ) {
$('.delete-missing-error').addClass('hidden');
$('.switcher-target-delete_missing_action_keep').removeClass('delete-missing-error-wrapper');
} else {
$('.delete-missing-error').removeClass('hidden');
$('.switcher-target-delete_missing_action_keep').addClass('delete-missing-error-wrapper');
}
let notice_type = get_delete_missing_notice_type();
// Show notice if any.
if (notice_type) {
$('.helper-text-' + notice_type).find('.status_of_removed').html($('select[name="status_of_removed"]').val());
$('.helper-text-' + notice_type).show();
}
};
delete_missing_helper_text();
$('.switcher-target-is_delete_missing').find('input, select').on('change', function() {
delete_missing_helper_text();
});
$('#is_delete_missing').on('change', function() {
delete_missing_helper_text();
});
if ($('.switcher-target-update_choosen_data').length) {
var $re_import_options = $('.switcher-target-update_choosen_data');
var $toggle_re_import_options = $('.wpallimport-trigger-options');
if ($re_import_options.find('input[type=checkbox]').length == $re_import_options.find('input[type=checkbox]:checked').length) {
var $newtitle = $toggle_re_import_options.attr('rel');
$toggle_re_import_options.attr('rel', $toggle_re_import_options.html());
$toggle_re_import_options.html($newtitle);
$toggle_re_import_options.removeClass('wpallimport-select-all');
}
}
$('.wpallimport-trigger-options').on('click', function(){
var $parent = $(this).parents('.switcher-target-update_choosen_data:first');
var $newtitle = $(this).attr('rel');
if ( $(this).hasClass('wpallimport-select-all') ) {
$parent.find('input[type=checkbox]').not('.exclude-select-all').removeAttr('checked').trigger('click');
$(this).removeClass('wpallimport-select-all');
} else {
$parent.find('input[type=checkbox]:checked').not('.exclude-select-all').trigger('click');
$(this).addClass('wpallimport-select-all');
}
$(this).attr('rel', $(this).html());
$(this).html($newtitle);
});
$('table.pmxi-admin-imports').each(function () {
let manage_table = $(this);
$(this).find('thead tr th.check-column :checkbox, tfoot tr th.check-column :checkbox').on('click', function () {
let is_checked = $(this).is(':checked');
manage_table.find('tbody tr th.check-column :checkbox').prop('checked', function () {
if (is_checked) {
return true;
}
return false;
});
});
});
// Function to check if delete missing should be restricted based on duplicate_matching
function shouldRestrictDeleteMissing() {
return $('input[name="duplicate_matching"]').val() === 'manual';
}
$('input#is_send_removed_to_trash').change(function(e){
// "Send to trash" is always restricted in free edition
$('.wpallimport-free-edition-notice.send-removed-to_trash-notice').slideDown();
$('input#is_send_removed_to_trash').addClass('wpai-shake-small');
setTimeout(function(){
$('input#is_send_removed_to_trash').prop('checked', false);
$('input#is_send_removed_to_trash').removeClass('wpai-shake-small');
return false;
},600);
});
// Function to update delete missing behavior based on wizard type
function updateDeleteMissingBehavior(resetSection = false) {
let $deleteMissingCheckbox = $('input#is_delete_missing');
let $deleteMissingNotice = $('.wpallimport-free-edition-notice.delete-missing-existing-items');
let $sendToTrashNotice = $('.wpallimport-free-edition-notice.send-removed-to_trash-notice');
// Only reset delete missing section when switching wizard types, not on initial load
if (resetSection) {
$deleteMissingCheckbox.prop('checked', false);
$('.switcher-target-is_delete_missing').hide(); // Close the delete missing section
}
// Show or hide the delete missing notice based on restriction status
if (shouldRestrictDeleteMissing()) {
$deleteMissingNotice.show();
} else {
$deleteMissingNotice.hide();
}
// Elements that are disabled only when wizard_type == 'matching'
let $wizardRestrictedElements = $(
'#delete_missing_logic_import, #delete_missing_logic_all, ' +
'#delete_missing_action_keep, #delete_missing_action_remove, ' +
'#is_change_post_status_of_removed, #is_update_missing_cf, ' +
'#missing_records_stock_status, #is_delete_attachments, #is_delete_imgs, ' +
'select[name="status_of_removed"], select[name="status_of_removed_products"]'
);
// Elements that are always restricted in free edition (regardless of wizard type)
let $alwaysRestrictedElements = $('#is_send_removed_to_trash');
if (shouldRestrictDeleteMissing()) {
// For "Update existing" - show main notice, disable wizard-restricted elements
$deleteMissingNotice.show();
$wizardRestrictedElements.prop('disabled', true);
} else {
// For "Create new" - hide main notice, enable wizard-restricted elements
$deleteMissingNotice.hide();
$wizardRestrictedElements.prop('disabled', false);
$deleteMissingCheckbox.removeClass('wpai-shake-small');
}
// Always keep free edition restricted elements enabled so shake behavior works
$alwaysRestrictedElements.prop('disabled', false); // Enable so shake behavior works
$sendToTrashNotice.hide(); // Hide notice initially (shown on click)
$('input#is_send_removed_to_trash').removeClass('wpai-shake-small');
}
// Initialize on page load
updateDeleteMissingBehavior(false); // Don't reset section on initial load
$('input#is_delete_missing').change(function(e){
if (shouldRestrictDeleteMissing()) {
// Show notice if it exists, otherwise just do shake behavior
let $notice = $('.wpallimport-free-edition-notice.delete-missing-existing-items');
if ($notice.length) {
$notice.slideDown();
}
$('input#is_delete_missing').addClass('wpai-shake-small');
setTimeout(function(){
$('input#is_delete_missing').prop('checked', false);
$('input#is_delete_missing').removeClass('wpai-shake-small');
return false;
},600);
}
});
fix_tag_position();
var toggle_dynamic_notice = function(){
$('.wpallimport-dynamic-notice').hide();
var $import_to_custom_type = $('input[name=custom_type]').val();
var $is_show_cf_notice = false;
var $is_show_images_notice = false;
$('input[name^=custom_name]').each(function(){
if ( $(this).val() != "")
{
$is_show_cf_notice = true;
return false;
}
});
if ( $import_to_custom_type != 'product' &&
( $('textarea[name=download_featured_image]').length && $('textarea[name=download_featured_image]').val() != "" ||
$('textarea[name=gallery_featured_image]').length && $('textarea[name=gallery_featured_image]').val() != "" ||
$('textarea[name=featured_image]').length && $('textarea[name=featured_image]').val() != "" ))
{
$is_show_images_notice = true;
}
if ( $is_show_cf_notice && $is_show_images_notice ){
$('.wpallimport-dynamic-notice').find('a').html($('.wpallimport-dynamic-notice-cf-image-text').val());
$('.wpallimport-dynamic-notice').show();
}
else if ( $is_show_cf_notice ){
$('.wpallimport-dynamic-notice').find('a').html($('.wpallimport-dynamic-notice-cf-text').val());
$('.wpallimport-dynamic-notice').show();
}
else if ( $is_show_images_notice ) {
$('.wpallimport-dynamic-notice').find('a').html($('.wpallimport-dynamic-notice-images-text').val());
$('.wpallimport-dynamic-notice').show();
}
}
$(document).on('scroll', function() {
fix_tag_position();
toggle_dynamic_notice();
});
toggle_dynamic_notice();
$('input[name^=custom_name], input[name^=custom_value], textarea[name=download_featured_image], textarea[name=gallery_featured_image], textarea[name=featured_image]').change(function() {
toggle_dynamic_notice();
});
$('input[name^=custom_name], input[name^=custom_value], textarea[name=download_featured_image], textarea[name=gallery_featured_image], textarea[name=featured_image]').blur(function() {
toggle_dynamic_notice();
});
});})(jQuery);