Files
szkoleniauryzaj.pl/wp-content/plugins/woo-product-feed-pro/js/woosea_field_mapping.js
2024-11-10 21:08:49 +01:00

158 lines
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
jQuery(document).ready(function($) {
// Dialog opener for information on mapping attributes
jQuery( "#dialog" ).dialog({
autoOpen: false,
show: {
effect: "blind",
duration: 1000
},
hide: {
effect: "explode",
duration: 1000
}
});
// Add a mapping row to the table for field mappings
jQuery(".add-field-mapping").on('click', function(){
var nonce = $('#_wpnonce').val();
var channel_hash = $('#channel_hash').val();
var prevRow = $("tr.rowCount:last input[type=hidden]").val();
var addrow_value = $('#addrow').val();
// When user deletes all default fields
if (prevRow === undefined){
prevRow = 0;
}
var rowCount = Number(prevRow) + Number(addrow_value);
var newrow_value = Number(addrow_value) + Number(1);
$('#addrow').val(newrow_value);
jQuery.ajax({
method: "POST",
url: ajaxurl,
data: {
'action': 'woosea_fieldmapping_dropdown',
'rowCount': rowCount,
'security': nonce,
'channel_hash': channel_hash
}
})
.done(function( data ) {
data = JSON.parse( data );
$( '#woosea-fieldmapping-table' ).append('<tr><td><input type="hidden" name="attributes[' + rowCount + '][rowCount]" value="' + rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><select name="attributes[' + rowCount + '][attribute]" class="select-field">' + data.field_options + '</select></td><td><input type="text" name="attributes[' + rowCount + '][prefix]" class="input-field-medium"></td><td><select name="attributes[' + rowCount + '][mapfrom]" class="select-field">' + data.attribute_options + '</select></td><td><input type="text" name="attributes[' + rowCount + '][suffix]" class="input-field-medium"></td></tr>');
$('.select-field').on('change', function(){
if ($(this).val() == "static_value") {
var rownr = $(this).closest("tr").prevAll("tr").length;
$(this).replaceWith('<input type="text" name="attributes[' + rowCount + '][mapfrom]" class="input-field-midsmall"><input type="hidden" name="attributes[' + rowCount + '][static_value]" value="true">');
}
});
})
.fail(function( data ) {
console.log('Failed AJAX Call :( /// Return Data: ' + data);
});
});
// Add a mapping row to the table for own mappings
jQuery(".add-own-mapping").on('click', function(){
var nonce = $('#_wpnonce').val();
var channel_hash = $('#channel_hash').val();
var prevRow = $("tr.rowCount:last input[type=hidden]").val();
var addrow_value = $('#addrow').val();
// When user deletes all default fields
if (prevRow === undefined){
prevRow = 0;
}
var rowCount = Number(prevRow) + Number(addrow_value);
var newrow_value = Number(addrow_value) + Number(1);
$('#addrow').val(newrow_value);
jQuery.ajax({
method: "POST",
url: ajaxurl,
data: {
'action': 'woosea_fieldmapping_dropdown',
'security': nonce,
'rowCount': rowCount,
'channel_hash': channel_hash
}
})
.done(function( data ) {
data = JSON.parse( data );
$( '#woosea-fieldmapping-table' ).append('<tr><td><input type="hidden" name="attributes[' + rowCount + '][rowCount]" value="' + rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><input name="attributes[' + rowCount + '][attribute]" id="own-input-field" class="input-field"></td><td><input type="text" name="attributes[' + rowCount + '][prefix]" class="input-field-medium"></td><td><select name="attributes[' + rowCount + '][mapfrom]" class="select-field">' + data.attribute_options + '</select></td><td><input type="text" name="attributes[' + rowCount + '][suffix]" class="input-field-medium"></td></tr>');
$('.select-field').on('change', function(){
if ($(this).val() == "static_value") {
var rownr = $(this).closest("tr").prevAll("tr").length;
$(this).replaceWith('<input type="text" name="attributes[' + rowCount + '][mapfrom]" class="input-field-midsmall"><input type="hidden" name="attributes[' + rowCount + '][static_value]" value="true">');
}
});
})
.fail(function( data ) {
console.log('Failed AJAX Call :( /// Return Data: ' + data);
});
});
jQuery("#savebutton").on('click', function(){
$("#own-input-field").each(function() {
var input=$(this).val();
var re = /^[a-zA-Zа-яА-Я_-]*$/;
if (input.indexOf("PARAM_") >= 0){
// For Yandex, Zbozi and Heureka also accept Cyrillic characters
var re = /.*/;
}
var minLength = 2;
var maxLength = 50;
var is_input=re.test(input);
// Check for allowed characters
if (!is_input){
$('form').submit(function(){
return false;
});
$('.notice').replaceWith("<div class='notice notice-error is-dismissible'><p>Sorry, when creating new custom fields only letters are allowed (so no white spaces, numbers or any other character are allowed).</p></div>");
} else {
// Check for length of fieldname
if (input.length < minLength){
$('form').submit(function(){
return false;
});
$('.notice').replaceWith("<div class='notice notice-error is-dismissible'><p>Sorry, your custom field name needs to be at least 2 letters long.</p></div>");
} else if (input.length > maxLength){
$('form').submit(function(){
return false;
});
$('.notice').replaceWith("<div class='notice notice-error is-dismissible'><p>Sorry, your custom field name cannot be over 20 letters long.</p></div>");
} else {
$("#fieldmapping")[0].submit();
}
}
});
});
jQuery('.select-field').on('change', function(){
if ($(this).val() == "static_value") {
// var rownr = $(this).closest("tr").prevAll("tr").length;
var rownr = $(this).closest('tr').attr("class").split(' ')[1];
$(this).replaceWith('<input type="text" name="attributes[' + rownr + '][mapfrom]" class="input-field-midsmall"><input type="hidden" name="attributes[' + rownr + '][static_value]" value="true">');
}
});
// Find and remove selected table rows
jQuery(".delete-field-mapping").on('click', function(){
$("table tbody").find('input[name="record"]').each(function(){
if($(this).is(":checked")){
$(this).parents("tr").remove();
}
});
});
});