"use strict";
jQuery(function ($) {
jQuery('body').on('click', '.woobe_meta_delete', function () {
jQuery(this).parents('li').remove();
return false;
});
//***
jQuery('#metaform').submit(function () {
woobe_save_form(this, 'woobe_save_meta');
return false;
});
//***
//***
//action for bulk meta_popup_editor
jQuery(document).on("woobe_act_meta_popup_editor_saved", {}, function (event, product_id, field_name, value) {
if (product_id === 0) {
//looks like we want to apply it for bulk editing
jQuery('#meta_popup_editor').hide();
jQuery("[name='woobe_bulk[" + field_name + "][value]']").val(value);
jQuery("[name='woobe_bulk[" + field_name + "][behavior]']").val('new');
}
return true;
});
//***
jQuery('#woobe_meta_add_new_btn').on('click', function () {
var key = jQuery('.woobe_meta_key_input').val();
key = key.trim();
key = key.replace(/ /g, '_');
if (key.length > 0) {
var html = jQuery('#woobe_meta_li_tpl').html();
html = html.replace(/__META_KEY__/gi, key);
html = html.replace(/__TITLE__/gi, lang.meta.new_key);
jQuery('#woobe_meta_list').prepend(html);
jQuery('.woobe_meta_key_input').val('');
} else {
woobe_message(lang.meta.enter_key, 'error');
}
return false;
});
jQuery('.woobe_meta_key_input').keydown(function (e) {
if (e.keyCode == 13) {
jQuery('#woobe_meta_add_new_btn').trigger('click');
}
});
//***
jQuery('#woobe_meta_get_btn').on('click', function () {
var id = parseInt(jQuery('.woobe_meta_keys_get_input').val(), 10);
if (id > 0) {
jQuery('.woobe_meta_keys_get_input').val('');
jQuery.ajax({
method: "POST",
url: ajaxurl,
data: {
action: 'woobe_meta_get_keys',
product_id: id
},
success: function (keys) {
if (keys.length > 0) {
keys = JSON.parse(keys);
var html = jQuery('#woobe_meta_li_tpl').html();
for (var i = 0; i < keys.length; i++) {
var li = html.replace(/__META_KEY__/gi, keys[i]);
li = li.replace(/__TITLE__/gi, keys[i]);
jQuery('#woobe_meta_list').prepend(li);
}
} else {
woobe_message(lang.meta.no_keys_found, 'error');
}
}
});
} else {
woobe_message(lang.meta.enter_prod_id, 'error');
}
return false;
});
jQuery('.woobe_meta_keys_get_input').keydown(function (e) {
if (e.keyCode == 13) {
jQuery('#woobe_meta_get_btn').trigger('click');
}
});
//***
jQuery('body').on('change', '.woobe_meta_view_selector', function () {
var value = jQuery(this).val();
var type_selector = jQuery(this).parents('li').find('.woobe_meta_type_selector');
switch (value) {
case 'popupeditor':
jQuery(type_selector).val('string');
jQuery(type_selector).parent().hide();
break;
case 'meta_popup_editor':
jQuery(type_selector).val('string');
jQuery(type_selector).parent().hide();
break;
case 'switcher':
jQuery(type_selector).val('number');
jQuery(type_selector).parent().hide();
break;
case 'calendar':
jQuery(type_selector).val('number');
jQuery(type_selector).parent().hide();
break;
case 'gallery_popup_editor':
jQuery(type_selector).val('string');
jQuery(type_selector).parent().hide();
break;
default:
jQuery(type_selector).parent().show();
break;
}
return true;
});
});
//*********************
function woobe_act_meta_popup_editor(_this) {
woobe_popup_clicked = jQuery(_this);
var product_id = parseInt(jQuery(_this).data('product_id'), 10);
var key = jQuery(_this).data('key');
jQuery('#meta_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + key + ']');
//***
//console.log(jQuery(_this).find('.meta_popup_btn_data').html());
var meta = JSON.parse(jQuery(_this).find('.meta_popup_btn_data').html());
if (Object.keys(meta).length > 0 && product_id > 0) {
var html = '';
try {
jQuery.each(meta, function (k, v) {
var li_html = jQuery('#meta_popup_editor_li').html();
li_html = li_html.replace(/__KEY__/gi, k);
if (Array.isArray(v)) {
var ul = '<ul class="meta_popup_editor_child_ul">';
jQuery.each(v, function (kk, vv) {
var li_html2 = jQuery('#meta_popup_editor_li').html();
li_html2 = li_html2.replace(/__KEY__/gi, kk);
//li_html2 = li_html2.replace(/__VALUE__/gi, vv);
if (typeof vv === 'string') {
li_html2 = li_html2.replace(/__VALUE__/gi, vv);
} else {
li_html2 = li_html2.replace(/__VALUE__/gi, JSON.stringify(vv));
}
li_html2 = li_html2.replace(/__CHILD_LIST__/gi, '');
li_html2 = li_html2.replace('keys[]', 'keys[' + k + '][]');
li_html2 = li_html2.replace('values[]', 'values[' + k + '][]');
ul += li_html2;
});
ul += '</ul>';
li_html = li_html.replace(/__CHILD_LIST__/gi, ul + '<a href="#" class="meta_popup_editor_add_sub_item button" data-key="' + k + '">' + lang.append_sub_item + '</a><br />');
li_html = li_html.replace(/__VALUE__/gi, 'delete-this');
} else if (jQuery.isPlainObject(v)) {
var ul = '<ul class="meta_popup_editor_child_ul">';
jQuery.each(v, function (kk, vv) {
var li_html_obj = jQuery('#meta_popup_editor_li_object').html();
li_html_obj = li_html_obj.replace(/__KEY__/gi, kk);
// li_html_obj = li_html_obj.replace(/__VALUE__/gi, vv);
if (typeof vv === 'string') {
li_html_obj = li_html_obj.replace(/__VALUE__/gi, vv);
} else {
li_html_obj = li_html_obj.replace(/__VALUE__/gi, JSON.stringify(vv));
}
li_html_obj = li_html_obj.replace('keys2[]', 'keys2[' + k + '][]');
li_html_obj = li_html_obj.replace('values2[]', 'values2[' + k + '][]');
ul += li_html_obj;
});
ul += '</ul>';
li_html = li_html.replace(/__CHILD_LIST__/gi, ul + ' <a href="#" class="meta_popup_editor_add_sub_item2 button" data-key="' + k + '">' + lang.append_sub_item + '</a><br />');
li_html = li_html.replace(/__VALUE__/gi, 'delete-this');
} else {
v = v.toString();
li_html = li_html.replace(/__VALUE__/gi, v.replace(/"/g, '"').replace(/'/g, '''));
li_html = li_html.replace(/__CHILD_LIST__/gi, '<ul class="meta_popup_editor_child_ul" data-key="' + k + '"></ul><a href="#" class="meta_popup_editor_add_sub_item button" data-key="' + k + '">' + lang.append_sub_item + '</a><br />');
}
html += li_html;
});
} catch (e) {
//console.log(e);
}
jQuery('#meta_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>');
jQuery('#meta_popup_editor form').find("input[value='delete-this']").remove();
jQuery('.meta_popup_editor_li_key2').parents('ul.woobe_fields_tmp').find('.meta_popup_editor_li_key:not(.meta_popup_editor_li_key2)').attr('readonly', true);
jQuery('#meta_popup_editor').show();
__woobe_init_meta_popup_editor();
} else {
if (product_id > 0) {
jQuery('#meta_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>');
} else {
//this we need do for another applications, for example bulk editor
if (jQuery('#meta_popup_editor form .woobe_fields_tmp').length == 0) {
jQuery('#meta_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>');
}
}
jQuery('#meta_popup_editor').show();
__woobe_init_meta_popup_editor();
}
//***
jQuery('.woobe-modal-save10').off('click');
jQuery('.woobe-modal-save10').on('click', function () {
var product_id = woobe_popup_clicked.data('product_id');
var key = woobe_popup_clicked.data('key');
if (product_id > 0) {
jQuery('#meta_popup_editor').hide();
woobe_message(lang.saving, 'warning');
let nonce = jQuery('#woobe_mainform_nonce').val();
jQuery.ajax({
method: "POST",
url: ajaxurl,
data: {
action: 'woobe_update_page_field',
product_id: product_id,
field: key,
value: jQuery('#meta_popup_editor_form').serialize().replace(/\"/g,'\\\"'),
is_serialized: 1,
mainform_nonce: nonce
},
success: function (answer) {
jQuery(_this).find('.meta_popup_btn_data').html(answer);
woobe_message(lang.saved, 'notice');
jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#meta_popup_editor_form').serialize()]);
},
error: function () {
alert(lang.error);
}
});
} else {
//for buttons in any extensions
jQuery(document).trigger('woobe_act_meta_popup_editor_saved', [product_id, key, jQuery('#meta_popup_editor_form').serialize()]);
}
return false;
});
jQuery('.woobe-modal-close10').off('click');
jQuery('.woobe-modal-close10').on('click', function () {
//jQuery('#meta_popup_editor_editor form').html(''); - do not do this, as it make incompatibility with another extensions
jQuery('#meta_popup_editor').hide();
return false;
});
}
function __woobe_init_meta_popup_editor() {
jQuery("#meta_popup_editor form .woobe_fields_tmp, #meta_popup_editor form .meta_popup_editor_child_ul").sortable({
update: function (event, ui) {
//***
},
opacity: 0.8,
cursor: "crosshair",
handle: '.woobe_drag_and_drope',
placeholder: 'woobe-options-highlight'
});
//***
jQuery('.meta_popup_editor_insert_new').off('click');
jQuery('.meta_popup_editor_insert_new').on('click', function () {
var li_html = jQuery('#meta_popup_editor_li').html();
li_html = li_html.replace(/__KEY__/gi, '');
li_html = li_html.replace(/__VALUE__/gi, '');
li_html = li_html.replace(/__CHILD_LIST__/gi, '<ul class="meta_popup_editor_child_ul"></ul><a href="#" class="meta_popup_editor_add_sub_item button" data-key="">' + lang.append_sub_item + '</a><br />');
if (jQuery(this).data('place') == 'top') {
jQuery('#meta_popup_editor form .woobe_fields_tmp').prepend(li_html);
} else {
jQuery('#meta_popup_editor form .woobe_fields_tmp').append(li_html);
}
__woobe_init_meta_popup_editor();
return false;
});
//***
jQuery('.meta_popup_editor_insert_new_o').off('click');
jQuery('.meta_popup_editor_insert_new_o').on('click', function () {
var li_html = jQuery('#meta_popup_editor_li_o').html();
var li_sub = jQuery('#meta_popup_editor_li_object').html();
li_html = li_html.replace(/__KEY__/gi, '');
li_html = li_html.replace(/__VALUE__/gi, '');
li_sub = li_sub.replace(/__KEY__/gi, '');
li_sub = li_sub.replace(/__VALUE__/gi, '');
li_html = li_html.replace(/__CHILD_LIST__/gi, '<ul class="meta_popup_editor_child_ul">' + li_sub + '</ul> <a href="#" class="meta_popup_editor_add_sub_item2 button" data-key="">' + lang.append_sub_item + '</a><br />');
if (jQuery(this).data('place') == 'top') {
jQuery('#meta_popup_editor form .woobe_fields_tmp').prepend(li_html);
} else {
jQuery('#meta_popup_editor form .woobe_fields_tmp').append(li_html);
}
__woobe_init_meta_popup_editor();
return false;
});
//***
jQuery('.meta_popup_editor_add_sub_item, .meta_popup_editor_add_sub_item2').off('click');
jQuery('.meta_popup_editor_add_sub_item, .meta_popup_editor_add_sub_item2').on('click', function () {
if (jQuery(this).hasClass('meta_popup_editor_add_sub_item')) {
var li_html = jQuery('#meta_popup_editor_li').html();
} else {
//meta_popup_editor_add_sub_item2
var li_html = jQuery('#meta_popup_editor_li_object').html();
}
//***
li_html = li_html.replace(/__KEY__/gi, '');
li_html = li_html.replace(/__VALUE__/gi, '');
li_html = li_html.replace(/__CHILD_LIST__/gi, '');
var key = jQuery(this).data('key');
if (key.length === 0) {
key = jQuery(this).prev('.meta_popup_editor_child_ul').data('key');
}
if (typeof key == 'undefined') {
key = jQuery(this).parent().find('.meta_popup_editor_li_key').eq(0).val();
}
li_html = li_html.replace('keys[]', 'keys[' + key + '][]');
li_html = li_html.replace('values[]', 'values[' + key + '][]');
li_html = li_html.replace('keys2[]', 'keys2[' + key + '][]');
li_html = li_html.replace('values2[]', 'values2[' + key + '][]');
//remove value textinput of the parent
jQuery(this).parent().find("[name='values[]']").remove();
if (jQuery(this).data('place') == 'top') {
jQuery(this).prev('.meta_popup_editor_child_ul').prepend(li_html);
} else {
jQuery(this).prev('.meta_popup_editor_child_ul').append(li_html);
}
__woobe_init_meta_popup_editor();
return false;
});
//***
jQuery('.meta_popup_editor_li_key').off('click');
jQuery('.meta_popup_editor_li_key').on('keyup',function () {
jQuery(this).parent().find('.meta_popup_editor_child_ul .meta_popup_editor_li_key').attr('name', 'keys[' + jQuery(this).val() + '][]');
jQuery(this).parent().find('.meta_popup_editor_child_ul .meta_popup_editor_li_value').attr('name', 'values[' + jQuery(this).val() + '][]');
jQuery(this).parent().find('.meta_popup_editor_child_ul .meta_popup_editor_li_key2').attr('name', 'keys2[' + jQuery(this).val() + '][]');
jQuery(this).parent().find('.meta_popup_editor_child_ul .meta_popup_editor_li_value2').attr('name', 'values2[' + jQuery(this).val() + '][]');
return true;
});
//***
jQuery('.woobe_prod_delete').off('click');
jQuery('.woobe_prod_delete').on('click', function () {
jQuery(this).parent('li').remove();
return false;
});
}