"use strict"; var woobe_sort_order = []; var data_table = null; var products_types = null;//data got from server var products_titles = null;//data got from server var woobe_show_variations = 0;//show or hide variations of the variable products var autocomplete_request_delay = 999; var autocomplete_curr_index = -1;//for selecting by Enter button //*** jQuery(function ($) { if (typeof jQuery.fn.DataTable !== 'undefined') { //woobe_show_variations = woobe_get_from_storage('woobe_show_variations');// - disabled because not sure that it will be right for convinience //hiding not relevant filter and bulk operations if (woobe_show_variations > 0) { jQuery('.not-for-variations').hide(); jQuery('#woobe_show_variations_mode').show(); jQuery('#woobe_show_variations_mode_export').show(); jQuery('#woobe_select_all_vars').show(); } //*** init_data_tables();//data tables //*** //fix to close opened textinputs in the data table jQuery('#tabs-products *').on('mousedown',function (e) { if (typeof e.srcElement !== 'undefined' && !jQuery(e.srcElement).hasClass('editable')) { if (!jQuery(e.srcElement).parent().hasClass('editable')) { woobe_close_prev_textinput(); } } return true; }); //*** jQuery('body').on('click', '.woobe-id-permalink-var', function () { if (woobe_show_variations) { jQuery(this).parents('tr').nextAll('tr').each(function (ii, tr) { if (jQuery(tr).hasClass('product_type_variation')) { jQuery(tr).find('.woobe_product_check').prop('checked', true); woobe_checked_products.push(parseInt(jQuery(tr).data('product-id'), 10)); } else { return false;//terminate tr's selection } }); //remove duplicates if exists woobe_checked_products = Array.from(new Set(woobe_checked_products)); __manipulate_by_depend_buttons(); __woobe_action_will_be_applied_to(); return false; } return true; }); //*** jQuery('#woobe_select_all_vars').on('click', function () { jQuery('tr.product_type_variation').each(function (ii, tr) { jQuery(tr).find('.woobe_product_check').prop('checked', true); woobe_checked_products.push(parseInt(jQuery(tr).data('product-id'), 10)); }); //remove duplicates if exists woobe_checked_products = Array.from(new Set(woobe_checked_products)); __manipulate_by_depend_buttons(); __woobe_action_will_be_applied_to(); return false; }); //*** //fix for applying coloring css styles for stock status drop-downs and etc ... jQuery('body').on('change', 'td.editable .select-wrap select', function () { jQuery(this).attr('data-selected', jQuery(this).val()); return true; }); } }); var do_data_tables_first = true; function init_data_tables() { var oTable = jQuery('#advanced-table'); var page_fields = oTable.data('fields'); var page_fields_array = page_fields.split(','); var edit_views = oTable.data('edit-views'); var edit_views_array = edit_views.split(','); var edit_sanitize = oTable.data('edit-sanitize'); var edit_sanitize_array = edit_sanitize.split(','); var start_page = oTable.data('start-page'); //var ajax_additional = oTable.data('additional'); var per_page = parseInt(oTable.data('per-page'), 10); var extend_per_page = oTable.data('extend-per-page'); var length_menu = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]; if (extend_per_page.length > 0) { length_menu = extend_per_page.split(','); } if (woobe_settings.show_notes) { length_menu = [5, 10]; } //https://datatables.net/examples/advanced_init/dt_events.html data_table = oTable.on('order.dt', function () { jQuery('.woobe_tools_panel_uncheck_all').trigger('click'); }).DataTable({ // dom: 'Bfrtip', //https://tunatore.wordpress.com/2012/02/11/datatables-jquert-pagination-on-both-top-and-bottom-solution-if-you-use-bjqueryui/ //sDom: '<"H"Bflrp>t<"F"ip>', sDom: '<"H"Blpr>t<"F"ip>', searching: false, orderClasses: false, scrollX: true, lengthChange: true, lengthMenu: length_menu, buttons: [ 'copy', 'csv', 'excel', 'pdf', 'print' ], //https://datatables.net/examples/basic_init/table_sorting.html order: [[oTable.data('default-sort-by'), oTable.data('sort')]], //https://stackoverflow.com/questions/12008545/disable-sorting-on-last-column-when-using-jquery-datatables/22714994#22714994 aoColumnDefs: [{ bSortable: false, //aTargets: [-1] /* 1st one, start by the right */ aTargets: (oTable.data('no-order')).toString().split(',').map(function (num) { return parseInt(num, 10); }) }, {className: "editable", targets: (oTable.data('editable')).toString().split(',').map(function (num) { return parseInt(num, 10); })}], createdRow: function (row, data, dataIndex) { var p_id = data[1];//data[1] is ID col p_id = jQuery(p_id).text();//!! important as we have link <a> in ID cell jQuery(row).attr('data-product-id', p_id); jQuery(row).attr('id', 'product_row_' + p_id); jQuery(row).attr('data-row-num', dataIndex); jQuery(row).addClass('product_type_' + products_types[p_id]); //*** jQuery.each(jQuery('td', row), function (colIndex) { jQuery(this).attr('onmouseover', 'woobe_td_hover(' + p_id + ', "' + products_titles[p_id] + '", ' + colIndex + ')'); jQuery(this).attr('onmouseleave', 'woobe_td_hover(0, "",0)'); //*** jQuery(this).attr('data-field', page_fields_array[colIndex]); jQuery(this).attr('data-editable-view', edit_views_array[colIndex]); jQuery(this).attr('data-sanitize', edit_sanitize_array[colIndex]); jQuery(this).attr('data-col-num', colIndex); if (edit_views_array[colIndex] == 'url') { jQuery(this).addClass('textinput_url'); } if (edit_views_array[colIndex] == 'textinput' || edit_views_array[colIndex] == 'url') { jQuery(this).addClass('textinput_col'); jQuery(this).attr('onclick', 'woobe_click_textinput(this, ' + colIndex + ')'); //jQuery(this).attr('title', 'test'); } if (edit_sanitize_array[colIndex] == 'floatval' || edit_sanitize_array[colIndex] == 'intval') { jQuery(this).attr('onmouseover', 'woobe_td_hover(' + p_id + ', "' + products_titles[p_id].replaceAll('"', '') + '", ' + colIndex + ');woobe_onmouseover_num_textinput(this, ' + colIndex + ');'); jQuery(this).attr('data-product-id', p_id); } else { jQuery(this).attr('onmouseout', 'woobe_td_hover(0, "",0);woobe_onmouseout_num_textinput();'); } //*** //remove class editable in cells which are not editable if (jQuery(this).find('.info_restricked').length > 0) { jQuery(this).removeClass('editable'); } }); }, processing: true, serverSide: true, bDeferRender: true, deferRender: true, //https://datatables.net/manual/server-side //https://datatables.net/examples/data_sources/server_side.html //ajax: ajaxurl + '?action=woobe_get_products', ajax: { url: ajaxurl, type: "POST", bDeferRender: true, deferRender: true, data: { action: 'woobe_get_products', woobe_show_variations: function () { return woobe_show_variations;//we use function to return actual value for the current moment }, filter_current_key: function () { return woobe_filter_current_key;//we use function to return actual value for the current moment }, lang: woobe_lang } }, searchDelay: 100, pageLength: per_page, displayStart: start_page > 0 ? (start_page - 1) * per_page : 0, oLanguage: { sEmptyTable: lang.sEmptyTable, sInfo: lang.sInfo, sInfoEmpty: lang.sInfoEmpty, sInfoFiltered: lang.sInfoFiltered, sLoadingRecords: lang.sLoadingRecords, sProcessing: lang.sProcessing, sZeroRecords: lang.sZeroRecords, oPaginate: { sFirst: lang.sFirst, sLast: lang.sLast, sNext: lang.sNext, sPrevious: lang.sPrevious } }, language: { lengthMenu: " _MENU_ " }, fnPreDrawCallback: function (a) { if (typeof a.json != 'undefined') { //console.log(a.json.query); products_types = a.json.products_types; products_titles = a.json.products_titles; } //console.log(products_types); woobe_message(lang.loading, '', 300000); }, fnDrawCallback: function () { do_data_tables_first = false; init_data_tables_edit(); jQuery('.all_products_checker').prop('checked', false); __manipulate_by_depend_buttons(false); woobe_message('', 'clean'); woobe_init_special_variation(); woobe_init_scroll(); jQuery('.woobe_product_check').each(function (ii, ch) { if (jQuery.inArray(parseInt(jQuery(ch).data('product-id'), 10), woobe_checked_products) != -1) { jQuery(ch).prop('checked', true); } }); __manipulate_by_depend_buttons(); jQuery(document).trigger("data_redraw_done"); //page jumper is here start_page = (this.fnSettings()._iDisplayStart / this.fnSettings()._iDisplayLength) + 1; jQuery("#advanced-table_paginate .paginate_button.next").after('<input type="number" id="woobe-page-jumper" min=1 class="" value="' + start_page + '" />'); var _this = this; jQuery("#woobe-page-jumper").off().on('keyup', function (e) { if (e.keyCode === 13) { var pp = jQuery(this).val() - 1; if (pp < 0) { pp = 0; jQuery(this).val(1); } _this.fnPageChange(pp, true); } }); //for on the input arrows clicks jQuery("#woobe-page-jumper").off().on('change', function (e) { var pp = jQuery(this).val() - 1; if (pp < 0) { pp = 0; jQuery(this).val(1); } _this.fnPageChange(pp, true); }); //*** __trigger_resize(); } }); //jQuery(data_table) jQuery("#advanced-table_paginate").on("click", "a", function () { //var info = table.page.info(); //*** if remove next row - checked products will be stay checked even after page changing woobe_checked_products = []; }); //https://stackoverflow.com/questions/5548893/jquery-datatables-delay-search-until-3-characters-been-typed-or-a-button-clicke jQuery(".dataTables_filter input") .off() .on('keyup change', function (e) { if (e.keyCode == 13/* || this.value == ""*/) { data_table.search(this.value).draw(); } }); //to left/right scroll buttons init } function init_data_tables_edit(product_id = 0) { if (product_id === 0) { //for multi-select drop-downs - disabled as take a lot of resources while loading page //replaced to init by woobe_multi_select_onmouseover(this) if (jQuery('.woobe_data_select').length) { if (jQuery("#advanced-table .chosen-select").length) { //jQuery("#advanced-table .chosen-select").chosen(/*{disable_search_threshold: 10}*/); } } //*** //popup for taxonomies /* if (jQuery('.js_woobe_tax_popup').length) { jQuery.woobe_mod = jQuery.woobe_mod || {}; jQuery.woobe_mod.popup_prepare = function () { new jQuery.woobe_popup_prepare('.js_woobe_tax_popup'); }; jQuery.woobe_mod.popup_prepare(); } */ } //*** if (woobe_settings.load_switchers) { woobe_init_switchery(true, product_id); } __manipulate_by_depend_buttons(); __woobe_action_will_be_applied_to(); } var woobe_clicked_textinput_prev = [];//flag to track opened textinputs and close them function woobe_click_textinput(_this, colIndex) { if (jQuery(_this).find('.editable_data').length > 0) { return false; } if (!jQuery(_this).hasClass('editable')) { return false; } //*** //lest close previous opened any textinput/area woobe_close_prev_textinput(); woobe_clicked_textinput_prev = [_this, colIndex]; //*** /* if (jQuery(_this).hasClass('textinput_url')) { var content = jQuery(_this).html(); } else { var content = jQuery(_this).find('a').html(); } */ var content = jQuery(_this).html(); //*** var product_id = jQuery(_this).parents('tr').data('product-id'); //var edit_view = jQuery(_this).data('editable-view'); if (jQuery(_this).find('.info_restricked').length > 0) { return; } //*** //fix to avoid editing titles of variable products if (jQuery(_this).data('editable-view') == 'textinput' && jQuery(_this).data('field') == 'post_title') { if (jQuery(_this).parents('tr').hasClass('product_type_variation')) { return; } } //*** var input_type = 'text'; if (jQuery(_this).data('sanitize') == 'intval' || jQuery(_this).data('sanitize') == 'floatval') { content = content.replace(/\,/g, ""); input_type = 'number'; } //inserting input into td cell if (input_type == 'text') { jQuery(_this).html('<textarea class="form-control input-sm editable_data">' + content + '</textarea>'); } else { jQuery(_this).html('<input type="' + input_type + '" value="' + content + '" class="form-control input-sm editable_data" />'); } var v = jQuery(_this).find('.editable_data').val();//set focus to the end jQuery(_this).find('.editable_data').focus().val("").val(v).select(); woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); //*** jQuery(_this).find('.editable_data').keydown(function (e) { var input = this; //38 - up, 40 - down, 13 - enter, 18 - ALT if (jQuery.inArray(e.keyCode, [13/*, 18*/, 38, 40]) > -1) { // keyboard keys e.preventDefault(); if (content !== jQuery(input).val()) { //console.log(jQuery(_this).data('field')); //console.log(jQuery(input).val()); woobe_message(lang.saving, ''); jQuery(_this).html(jQuery(input).val()); let nonce = jQuery('#woobe_mainform_nonce').val(); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: jQuery(_this).data('field'), value: jQuery(input).val(), mainform_nonce: nonce }, success: function (answer) { //console.log(answer); /* if (jQuery(_this).hasClass('textinput_url')) { answer = '<a href="' + answer + '" title="' + answer + '" class="zebra_tips1" target="_blank">' + answer + '</a>'; woobe_init_tips(jQuery(_this).find('.zebra_tips1')); } */ //*** jQuery(_this).html(answer); woobe_message(lang.saved, 'notice'); woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); //fix for stock_quantity + manage_stock if (jQuery(_this).data('field') == 'stock_quantity') { woobe_redraw_table_row(jQuery('#product_row_' + product_id)); } jQuery('.woobe_num_rounding').val(0); jQuery(document).trigger('woobe_page_field_updated', [product_id, jQuery(_this).data('field'), jQuery(input).val()]); } }); } else { jQuery(_this).html(content); woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); } //*** //lets set focus to textinput under if its exists var col = jQuery(_this).data('col-num'); switch (e.keyCode) { case 38: //case 18://alt //keys alt or up if (jQuery(_this).closest('tr').prev('tr').length > 0) { var prev_tr = jQuery(_this).closest('tr').prev('tr'); } else { var prev_tr = jQuery(_this).closest('tbody').find('tr:last-child'); } var c = jQuery(_this).closest('tbody').find('tr').length; while (true) { if (c < 0) { break; } if (jQuery(prev_tr).find("td.editable[data-col-num='" + col + "']").length > 0) { jQuery(prev_tr).find("td.editable[data-col-num='" + col + "']").trigger('click'); break; } if (jQuery(prev_tr).prev('tr').length) { prev_tr = jQuery(prev_tr).prev('tr'); } else { prev_tr = jQuery(_this).closest('tbody').find('tr:last-child'); } c--; } woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); break; default: //13,40 //keys ENTER or down if (jQuery(_this).closest('tr').next('tr').length > 0) { var next_tr = jQuery(_this).closest('tr').next('tr'); } else { var next_tr = jQuery(_this).closest('tbody').find('tr:first-child'); } var c = jQuery(_this).closest('tbody').find('tr').length; while (true) { if (c < 0) { break; } if (jQuery(next_tr).find("td.editable[data-col-num='" + col + "']").length > 0) { jQuery(next_tr).find("td.editable[data-col-num='" + col + "']").trigger('click'); break; } if (jQuery(next_tr).next('tr').length) { next_tr = jQuery(next_tr).next('tr'); } else { next_tr = jQuery(_this).closest('tbody').find('tr:first-child'); } c--; } woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); break; } //*** return false; } if (e.keyCode === 27) { // esc jQuery(_this).html(content); woobe_th_width_synhronizer(colIndex, jQuery(_this).width()); } }); } //if we have opened textinput and clcked another cell - previous textinput should be closed!! function woobe_close_prev_textinput() { if (woobe_clicked_textinput_prev.length) { var prev = woobe_clicked_textinput_prev[0]; if (jQuery(prev).find('input').length) { //jQuery(prev).html(jQuery(prev).find('input').val()); jQuery(prev).find('input').trigger(jQuery.Event('keydown', {keyCode: 27})); } else { //jQuery(prev).html(jQuery(prev).find('textarea').val()); jQuery(prev).find('textarea').trigger(jQuery.Event('keydown', {keyCode: 27})); } woobe_th_width_synhronizer(woobe_clicked_textinput_prev[1], jQuery(prev).width()); } return true; } function woobe_click_checkbox(_this, numcheck) { var product_id = parseInt(numcheck, 10); var field = numcheck.replace(product_id + '_', ''); var value = jQuery(_this).data('val-false'); var label = jQuery(_this).data('false'); var is = jQuery(_this).is(':checked'); if (is) { value = jQuery(_this).data('val-true'); label = jQuery(_this).data('true'); } //*** jQuery(_this).parent().find('label').text(label); //*** 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: field, value: value, mainform_nonce: nonce }, success: function () { jQuery(document).trigger('woobe_page_field_updated', [product_id, field, is]); jQuery(this).trigger("check_changed", [_this, field, is, value, numcheck]); woobe_message(lang.saved, 'notice'); } }); return true; } //when appearing dynamic textinput in the table cell - column head <th> should has the same width!! function woobe_th_width_synhronizer(colIndex, width) { //jQuery('#advanced-table_wrapper thead').find('th').eq(colIndex).width(width); //jQuery('#advanced-table_wrapper tfoot').find('th').eq(colIndex).width(width); //__trigger_resize();//conflict with calculator } function woobe_act_tax_popup(_this) { jQuery('#taxonomies_popup .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); //fix to avoid not popup opening after taxonomies button clicking woobe_popup_clicked = jQuery(_this); //*** var product_id = jQuery(_this).data('product-id'); var key = jQuery(_this).data('key');//tax key var checked_terms_ids = []; if (jQuery(_this).data('terms-ids').toString().length > 0) { checked_terms_ids = jQuery(_this).data('terms-ids').toString().split(','); checked_terms_ids = checked_terms_ids.map(function (x) { return parseInt(x, 10); }); } //lets build terms tree jQuery('#taxonomies_popup_list').html(''); if (Object.keys(taxonomies_terms[key]).length > 0) { __woobe_fill_terms_tree(checked_terms_ids, taxonomies_terms[key]); } jQuery('.quick_search_element').show(); jQuery('.quick_search_element_container').show(); jQuery('#taxonomies_popup').show(); //*** jQuery('.woobe-modal-save1').off('click'); jQuery('.woobe-modal-save1').on('click', function () { jQuery('#taxonomies_popup').hide(); var checked_ch = jQuery('#taxonomies_popup_list').find('input:checked'); var checked_terms = []; jQuery(_this).find('ul').html(''); if (checked_ch.length) { jQuery(checked_ch).each(function (i, ch) { checked_terms.push(jQuery(ch).val()); jQuery(_this).find('ul').append('<li class="woobe_li_tag">' + jQuery(ch).parent().find('label').text() + '</li>'); }); } else { jQuery(_this).find('ul').append('<li class="woobe_li_tag">' + lang.no_items + '</li>'); } //*** jQuery(_this).data('terms-ids', checked_terms.join()); //*** 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: checked_terms, mainform_nonce: nonce }, success: function () { jQuery(document).trigger('woobe_page_field_updated', [product_id, key, checked_terms]); woobe_message(lang.saved, 'notice'); } }); }); jQuery('.woobe-modal-close1').off('click'); jQuery('.woobe-modal-close1').on('click', function () { jQuery('#taxonomies_popup').hide(); }); //*** //terms quick search jQuery('#term_quick_search').off('keyup'); jQuery('#term_quick_search').val(''); jQuery('#term_quick_search').focus(); jQuery('#term_quick_search').on('keyup',function () { var val = jQuery(this).val(); if (val.length > 0) { setTimeout(function () { jQuery('.quick_search_element_container').show(); jQuery('.quick_search_element_container').each(function (i, item) { if (!(jQuery(item).parent().data('search-value').toString().indexOf(val.toLowerCase()) + 1)) { jQuery(item).hide(); } else { jQuery(item).show(); } }); jQuery('.quick_search_element_container:not(:hidden)').each(function (i, item) { jQuery(item).parents('li').children('.quick_search_element_container').show(); }); }, 250); } else { jQuery('.quick_search_element_container').show(); } return true; }); //*** jQuery('#taxonomies_popup_list_checked_only').off('click'); jQuery('#taxonomies_popup_list_checked_only').prop('checked', false); jQuery('#taxonomies_popup_list_checked_only').on('click', function () { check_popup_list_checked_only(this); }); function check_popup_list_checked_only(_this) { if (jQuery(_this).is(':checked')) { jQuery('#taxonomies_popup_list li.top_quick_search_element').each(function (i, item) { if (!jQuery(item).find('input:checked').length) { jQuery(item).hide(); } else { jQuery(item).show(); jQuery(item).find('li').each(function (ii, it) { if (!jQuery(it).find('ul.woobe_child_taxes').length && !jQuery(it).find('input:checked').length) { jQuery(it).hide(); } }); } }); } else { jQuery('#taxonomies_popup_list li').show(); } return true; } //*** jQuery('#taxonomies_popup_select_all_terms').off('click'); jQuery('#taxonomies_popup_select_all_terms').prop('checked', false); jQuery('#taxonomies_popup_select_all_terms').on('click', function () { if (jQuery(this).is(':checked')) { jQuery('#taxonomies_popup_list li input[type="checkbox"]').prop('checked', true); } else { jQuery('#taxonomies_popup_list li input[type="checkbox"]').prop('checked', false); } check_popup_list_checked_only(jQuery('#taxonomies_popup_list_checked_only')); }); //*** jQuery('.woobe_create_new_term').off('click'); jQuery('.woobe_create_new_term').on('click', function () { __woobe_create_new_term(key, true, '', _this); return false; }); //delete terms jQuery('.delete_tax_terms').off('click'); jQuery('.delete_tax_terms').on('click', function(e){ var term_id = jQuery(this).data('term_id'); if (!term_id ) { return false; } __woobe_delete_tax_term(key, term_id); }); //update terms jQuery('.edit_tax_terms').off('click'); jQuery('.edit_tax_terms').on('click', function(e){ var term_id = jQuery(this).data('term_id'); if (!term_id ) { return false; } __woobe_update_tax_term(key, term_id, _this); }); return true; } function __woobe_recursive_search(terms, term_id){ var current_val = {}; jQuery(terms).each(function (i, d) { if (d.term_id == term_id) { current_val = d; return false; } if(d.childs.length) { current_val = __woobe_recursive_search(d.childs, term_id); if (Object.keys(current_val).length) { return false; } } }); return current_val; } function __woobe_delete_tax_term(tax_key, term_id) { if (typeof taxonomies_terms[tax_key] == 'undefined') { return false; } if (!confirm(lang.sure)) { return false; } woobe_message(lang.delete, 'warning', 99999); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_delete_tax_term', term_id: term_id, tax_key: tax_key }, success: function (response) { response = JSON.parse(response); jQuery('input#term_' + term_id).parent('.quick_search_element_container').parent('li.quick_search_element').remove(); if (response.length > 0) { woobe_message(lang.deleted, 'notice'); taxonomies_terms[tax_key] = response; jQuery(document).trigger("taxonomy_data_redrawn", [tax_key, response.term_id]); } else { woobe_message(lang.error + ' ' + lang.term_maybe_exist, 'error'); } } }); //*** jQuery('.woobe-modal-close9').trigger('click'); } function __woobe_update_tax_term(tax_key, term_id, popup) { if (typeof taxonomies_terms[tax_key] == 'undefined') { return false; } var show_parent = true; var current_term = {}; var current_index = -1; current_term = __woobe_recursive_search(taxonomies_terms[tax_key], term_id); if (!Object.keys(current_term).length) { return false; } jQuery('#woobe_new_term_popup .woobe-modal-title span').html(tax_key); jQuery('#woobe_new_term_title').val(current_term.name); jQuery('#woobe_new_term_slug').val(current_term.slug); jQuery('#woobe_new_term_description').val(current_term.desc); if (show_parent ) { jQuery('#woobe_new_term_parent').parents('.woobe-form-element-container').show(); jQuery('#woobe_new_term_parent').val(''); jQuery('#woobe_new_term_parent').html(''); if (Object.keys(taxonomies_terms[tax_key]).length > 0) { jQuery('#woobe_new_term_parent').append('<option value="-1">' + lang.none + '</option>'); __woobe_fill_select('woobe_new_term_parent', taxonomies_terms[tax_key],[current_term.parent]); } //*** jQuery('#woobe_new_term_parent').chosen({ //disable_search_threshold: 10, width: '100%' }).trigger("chosen:updated"); } else { jQuery('#woobe_new_term_parent').parents('.woobe-form-element-container').hide(); } jQuery('#woobe_new_term_popup').show(); jQuery('.woobe-modal-close9').on('click', function () { jQuery('#woobe_new_term_popup').hide(); }); //*** jQuery('#woobe_new_term_create').off('click'); jQuery('#woobe_new_term_create').on('click', function () { var title = jQuery('#woobe_new_term_title').val(); var slug = jQuery('#woobe_new_term_slug').val(); var parent = jQuery('#woobe_new_term_parent').val(); var description = jQuery('#woobe_new_term_description').val(); if (title.length > 0) { woobe_message(lang.creating, 'warning', 99999); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_tax_term', term_id: term_id, tax_key: tax_key, title: title, slug: slug, description: description, parent: parent }, success: function (response) { response = JSON.parse(response); if (response.length > 0) { woobe_message(lang.created, 'notice'); taxonomies_terms[tax_key] = response; //redraw popup jQuery('.woobe-modal-close1').trigger('click'); jQuery(popup).trigger('click'); jQuery(document).trigger("taxonomy_data_redrawn", [tax_key, response.term_id]); } else { woobe_message(lang.error + ' ' + lang.term_maybe_exist, 'error'); } } }); //*** jQuery('.woobe-modal-close9').trigger('click'); } return false; }); } function __woobe_create_new_term(tax_key, show_parent = true, select_id = '', popup = null) { jQuery('#woobe_new_term_popup .woobe-modal-title span').html(tax_key); jQuery('#woobe_new_term_title').val(''); jQuery('#woobe_new_term_slug').val(''); jQuery('#woobe_new_term_description').val(''); if (show_parent) { jQuery('#woobe_new_term_parent').parents('.woobe-form-element-container').show(); jQuery('#woobe_new_term_parent').val(''); jQuery('#woobe_new_term_parent').html(''); if (Object.keys(taxonomies_terms[tax_key]).length > 0) { jQuery('#woobe_new_term_parent').append('<option value="-1">' + lang.none + '</option>'); __woobe_fill_select('woobe_new_term_parent', taxonomies_terms[tax_key]); } //*** jQuery('#woobe_new_term_parent').chosen({ //disable_search_threshold: 10, width: '100%' }).trigger("chosen:updated"); } else { jQuery('#woobe_new_term_parent').parents('.woobe-form-element-container').hide(); } jQuery('#woobe_new_term_popup').show(); jQuery('.woobe-modal-close9').on('click', function () { jQuery('#woobe_new_term_popup').hide(); }); //*** jQuery('#woobe_new_term_create').off('click'); jQuery('#woobe_new_term_create').on('click', function () { var title = jQuery('#woobe_new_term_title').val(); var slug = jQuery('#woobe_new_term_slug').val(); var parent = jQuery('#woobe_new_term_parent').val(); var description = jQuery('#woobe_new_term_description').val(); if (title.length > 0) { let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.creating, 'warning', 99999); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_create_new_term', tax_key: tax_key, titles: title, slugs: slug, description: description, parent: parent, mainform_nonce: nonce }, success: function (response) { response = JSON.parse(response); if (response.terms_ids.length > 0) { woobe_message(lang.created, 'notice'); taxonomies_terms[tax_key] = response.terms; for (var i = 0; i < response.terms_ids.length; i++) { var li = jQuery('#taxonomies_popup_list_li_tpl').html(); li = li.replace(/__TERM_ID__/gi, response.terms_ids[i]); li = li.replace(/__LABEL__/gi, response.titles[i]); li = li.replace(/__SEARCH_TXT__/gi, response.titles[i].toLowerCase()); li = li.replace(/__CHECK__/gi, 'checked'); if (parent == 0) { li = li.replace(/__TOP_LI__/gi, 'top_quick_search_element'); } else { li = li.replace(/__TOP_LI__/gi, ''); } li = li.replace(/__CHILDS__/gi, ''); jQuery('#taxonomies_popup_list').prepend(li); if (popup) { jQuery('#taxonomies_popup_list').find('.edit_tax_terms[data-term_id='+ response.terms_ids[i] +']').on('click', function(){ var term_id = jQuery(this).data('term_id'); if (!term_id ) { return false; } __woobe_update_tax_term(tax_key, term_id, popup); }); jQuery('#taxonomies_popup_list').find('.delete_tax_terms[data-term_id='+ response.terms_ids[i] +']').on('click', function(){ var term_id = jQuery(this).data('term_id'); if (!term_id ) { return false; } __woobe_delete_tax_term(tax_key, term_id); }); } } //*** //if we working with any drop-down if (select_id.length > 0) { for (var i = 0; i < response.terms_ids.length; i++) { jQuery('#' + select_id).prepend('<option selected value="' + response.terms_ids[i] + '">' + response.titles[i] + '</option>'); } //*** jQuery(jQuery('#' + select_id)).chosen({ width: '100%' }).trigger("chosen:updated"); } //*** //lets all BEAR extensions knows about this event jQuery(document).trigger("taxonomy_data_redrawn", [tax_key, response.term_id]); } else { woobe_message(lang.error + ' ' + lang.term_maybe_exist, 'error'); } } }); //*** jQuery('.woobe-modal-close9').trigger('click'); } return false; }); } //service function to create terms tree in taxonomies popup function __woobe_fill_terms_tree(checked_terms_ids, data, parent_term_id = 0) { var li_tpl = jQuery('#taxonomies_popup_list_li_tpl').html(); //*** jQuery(data).each(function (i, d) { var li = li_tpl; li = li.replace(/__TERM_ID__/gi, d.term_id); li = li.replace(/__LABEL__/gi, d.name); li = li.replace(/__SEARCH_TXT__/gi, d.name.toLowerCase()); if (jQuery.inArray(d.term_id, checked_terms_ids) > -1) { li = li.replace(/__CHECK__/gi, 'checked'); } else { li = li.replace(/__CHECK__/gi, ''); } if (parent_term_id == 0) { li = li.replace(/__TOP_LI__/gi, 'top_quick_search_element'); } else { li = li.replace(/__TOP_LI__/gi, ''); } //*** if (Object.keys(d.childs).length > 0) { li = li.replace(/__CHILDS__/gi, '<ul class="woobe_child_taxes woobe_child_taxes_' + d.term_id + '"></ul>'); } else { li = li.replace(/__CHILDS__/gi, ''); } //*** if (parent_term_id == 0) { jQuery('#taxonomies_popup_list').append(li); } else { jQuery('#taxonomies_popup_list .woobe_child_taxes_' + parent_term_id).append(li); } if (d.childs) { __woobe_fill_terms_tree(checked_terms_ids, d.childs, d.term_id); } }); } //use direct call only instead of attaching event to each element after page loading //to up performance when a lot of product per page function woobe_act_popupeditor(_this, post_parent) { jQuery('#popupeditor_popup .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = jQuery(_this).data('product_id'); var key = jQuery(_this).data('key'); //*** woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_post_field', product_id: product_id, field: key, post_parent: post_parent }, success: function (content) { woobe_message('', 'clean'); jQuery('#popupeditor_popup').show(); if (typeof tinyMCE != 'undefined') { try { tinyMCE.get('popupeditor').setContent(content.replace(/\n/g, "<br />")); jQuery('.wp-editor-area').val(content); } catch (e) { //fix if editor loaded not in rich mode jQuery('.wp-editor-area').val(content); } } woobe_message(lang.loaded, 'notice'); } }); //*** jQuery('.woobe-modal-save2').off('click'); jQuery('.woobe-modal-save2').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); jQuery('#popupeditor_popup').hide(); woobe_message(lang.saving, 'warning'); var content = ''; /* try { content = tinyMCE.get('popupeditor').getContent(); } catch (e) { //fix if editor loaded not in rich mode content = jQuery('.wp-editor-area').val(); }*/ //fix if editor loaded not in rich mode if (jQuery('.wp-editor-area').css('display') === 'none') { try { content = tinyMCE.get('popupeditor').getContent(); } catch (e) { content = jQuery('.wp-editor-area').val(); } } else { content = jQuery('.wp-editor-area').val(); } //console.log(content); 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: content, mainform_nonce: nonce }, success: function (content) { jQuery(document).trigger('woobe_page_field_updated', [product_id, key, content]); if (jQuery(_this).data('text-title')) { let this_row = jQuery(_this).parents('tr'); woobe_redraw_table_row(this_row); } woobe_message(lang.saved, 'notice'); } }); }); jQuery('.woobe-modal-close2').off('click'); jQuery('.woobe-modal-close2').on('click', function () { jQuery('#popupeditor_popup').hide(); }); } //use direct call only instead of attaching event to each element after page loading //to up performance when a lot of product per page function woobe_act_downloads_editor(_this) { var button = _this; jQuery('#downloads_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = parseInt(jQuery(_this).data('product_id'), 10); var key = jQuery(_this).data('key'); //*** if (jQuery(_this).data('count') > 0 && product_id > 0) { var html = ''; jQuery(jQuery(_this).data('downloads')).each(function (i, d) { var li_html = jQuery('#woobe_download_file_tpl').html(); li_html = li_html.replace(/__TITLE__/gi, d.name); li_html = li_html.replace(/__HASH__/gi, d.id); li_html = li_html.replace(/__FILE_URL__/gi, d.file); html += li_html; }); jQuery('#downloads_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>'); jQuery('#downloads_popup_editor').show(); jQuery('#woobe_downloads_bulk_operations').hide(); __woobe_init_downloads(); /* woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_downloads', product_id: product_id, field: key }, success: function (content) { woobe_message(lang.loaded, 'notice'); jQuery('#downloads_popup_editor form').html(content); jQuery('#downloads_popup_editor').show(); jQuery('#woobe_downloads_bulk_operations').hide(); //*** __woobe_init_downloads(); } }); */ } else { if (product_id > 0) { jQuery('#downloads_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); jQuery('#woobe_downloads_bulk_operations').hide(); } else { //this we need do for another applications, for example bulk editor if (jQuery('#downloads_popup_editor form .woobe_fields_tmp').length == 0) { jQuery('#downloads_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); } jQuery('#woobe_downloads_bulk_operations').show(); } jQuery('#downloads_popup_editor').show(); __woobe_init_downloads(); } //*** //init close and save buttons when first call of popup is done jQuery('.woobe-modal-save3').off('click'); jQuery('.woobe-modal-save3').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); if (product_id > 0) { jQuery('#downloads_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('#products_downloads_form').serialize(), mainform_nonce: nonce }, success: function (html) { woobe_message(lang.saved, 'notice'); jQuery('#downloads_popup_editor form').html(''); jQuery(button).parent().html(html); jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#products_downloads_form').serialize()]); } }); } else { //for downloads buttons in any extensions jQuery(document).trigger('woobe_act_downloads_editor_saved', [product_id, key, jQuery('#products_downloads_form').serialize()]); } return false; }); jQuery('.woobe-modal-close3').off('click'); jQuery('.woobe-modal-close3').on('click', function () { //jQuery('#downloads_popup_editor form').html(''); - do not do this, as it make incompatibility with another extensions jQuery('#downloads_popup_editor').hide(); return false; }); return false; } function woobe_act_gallery_editor(_this) { var button = _this; jQuery('#gallery_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = parseInt(jQuery(_this).data('product_id'), 10); var key = jQuery(_this).data('key'); //*** if (jQuery(_this).data('count') > 0) { if (product_id > 0) { var html = ''; jQuery(jQuery(_this).data('images')).each(function (i, a) { var li_html = jQuery('#woobe_gallery_li_tpl').html(); li_html = li_html.replace(/__IMG_URL__/gi, a.url); li_html = li_html.replace(/__ATTACHMENT_ID__/gi, a.id); html += li_html; }); jQuery('#gallery_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>'); jQuery('#gallery_popup_editor').show(); jQuery('#woobe_gallery_bulk_operations').hide(); __woobe_init_gallery(); /* woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_gallery', product_id: product_id, field: key }, success: function (content) { woobe_message(lang.loaded, 'notice'); jQuery('#gallery_popup_editor form').html(content); jQuery('#gallery_popup_editor').show(); jQuery('#woobe_gallery_bulk_operations').hide(); //*** __woobe_init_gallery(); } }); */ } else { //we can use such button for any another extensions jQuery('#gallery_popup_editor').show(); jQuery('#woobe_gallery_bulk_operations').show(); __woobe_init_gallery(); } } else { if (product_id > 0) { jQuery('#gallery_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); jQuery('#woobe_gallery_bulk_operations').hide(); } else { //this we need do for another applications, for example bulk editor if (jQuery('#gallery_popup_editor form .woobe_fields_tmp').length == 0) { jQuery('#gallery_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); } jQuery('#woobe_gallery_bulk_operations').show(); } jQuery('#gallery_popup_editor').show(); __woobe_init_gallery(); } //*** jQuery('.woobe-modal-save4').off('click'); jQuery('.woobe-modal-save4').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); if (product_id > 0) { jQuery('#gallery_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('#products_gallery_form').serialize(), mainform_nonce: nonce }, success: function (html) { woobe_message(lang.saved, 'notice'); //jQuery('#gallery_popup_editor form').html(''); jQuery(button).parent().html(html); jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#products_gallery_form').serialize()]); } }); } else { //for gallery buttons in any extensions jQuery(document).trigger('woobe_act_gallery_editor_saved', [product_id, key, jQuery('#products_gallery_form').serialize()]); } }); jQuery('.woobe-modal-close4').off('click'); jQuery('.woobe-modal-close4').on('click', function () { //jQuery('#gallery_popup_editor form').html(''); - do not do this, as it make incompatibility with another extensions jQuery('#gallery_popup_editor').hide(); }); return false; } function woobe_act_upsells_editor(_this) { var button = _this; jQuery('#upsells_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = parseInt(jQuery(_this).data('product_id'), 10); var key = jQuery(_this).data('key'); //*** var button_data = []; if (jQuery('#upsell_ids_upsell_ids_' + product_id + ' li').length > 0) { jQuery('#upsell_ids_upsell_ids_' + product_id + ' li').each(function (i, li) { button_data.push(jQuery(li).data('product')); }); } //*** if (jQuery(_this).data('count') > 0 && product_id > 0) { var html = ''; jQuery(button_data).each(function (i, li) { var li_html = jQuery('#woobe_product_li_tpl').html(); li_html = li_html.replace(/__ID__/gi, li.id); li_html = li_html.replace(/__TITLE__/gi, li.title + ' (#' + li.id + ')'); li_html = li_html.replace(/__PERMALINK__/gi, li.link); li_html = li_html.replace(/__IMG_URL__/gi, li.thumb); html += li_html; }); jQuery('#upsells_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>'); jQuery("#upsells_products_search").val(''); jQuery('#upsells_popup_editor').show(); jQuery('#woobe_upsells_bulk_operations').hide(); __woobe_init_upsells(); /* woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_upsells', product_id: product_id, field: key }, success: function (content) { woobe_message(lang.loaded, 'notice'); jQuery('#upsells_popup_editor form').html(content); jQuery("#upsells_products_search").val(''); jQuery('#upsells_popup_editor').show(); jQuery('#woobe_upsells_bulk_operations').hide(); //*** __woobe_init_upsells(); } }); */ } else { jQuery("#upsells_products_search").val(''); if (product_id > 0) { jQuery('#upsells_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); jQuery('#woobe_upsells_bulk_operations').hide(); } else { //this we need do for another applications, for example bulk editor if (jQuery('#upsells_popup_editor form .woobe_fields_tmp').length == 0) { jQuery('#upsells_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); } jQuery('#woobe_upsells_bulk_operations').show(); } jQuery('#upsells_popup_editor').show(); __woobe_init_upsells(); } //*** jQuery('.woobe-modal-save5').off('click'); jQuery('.woobe-modal-save5').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); if (product_id > 0) { jQuery('#upsells_popup_editor').hide(); let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: key, value: jQuery('#products_upsells_form').serialize(), mainform_nonce: nonce }, success: function (html) { woobe_message(lang.saved, 'notice'); //jQuery('#upsells_popup_editor form').html(''); jQuery(button).parent().html(html); jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#products_upsells_form').serialize()]); } }); } else { //for buttons in any extensions jQuery(document).trigger('woobe_act_upsells_editor_saved', [product_id, key, jQuery('#products_upsells_form').serialize()]); } return false; }); jQuery('.woobe-modal-close5').off('click'); jQuery('.woobe-modal-close5').on('click', function () { //jQuery('#upsells_popup_editor form').html(''); - do not do this, as it make incompatibility with another extensions jQuery("#upsells_products_search").val(''); jQuery('#upsells_popup_editor').hide(); return false; }); } function woobe_act_cross_sells_editor(_this) { var button = _this; jQuery('#cross_sells_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = parseInt(jQuery(_this).data('product_id'), 10); var key = jQuery(_this).data('key'); //*** var button_data = []; if (jQuery('#cross_sells_cross_sell_ids_' + product_id + ' li').length > 0) { jQuery('#cross_sells_cross_sell_ids_' + product_id + ' li').each(function (i, li) { button_data.push(jQuery(li).data('product')); }); } //*** if (jQuery(_this).data('count') > 0 && product_id > 0) { var html = ''; jQuery(button_data).each(function (i, li) { var li_html = jQuery('#woobe_product_li_tpl').html(); li_html = li_html.replace(/__ID__/gi, li.id); li_html = li_html.replace(/__TITLE__/gi, li.title + ' (#' + li.id + ')'); li_html = li_html.replace(/__PERMALINK__/gi, li.link); li_html = li_html.replace(/__IMG_URL__/gi, li.thumb); html += li_html; }); jQuery('#cross_sells_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>'); jQuery("#cross_sells_products_search").val(''); jQuery('#cross_sells_popup_editor').show(); jQuery('#woobe_crossels_bulk_operations').hide(); __woobe_init_cross_sells(); /* woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_cross_sells', product_id: product_id, field: key }, success: function (content) { woobe_message(lang.loaded, 'notice'); jQuery('#cross_sells_popup_editor form').html(content); jQuery("#cross_sells_products_search").val(''); jQuery('#cross_sells_popup_editor').show(); jQuery('#woobe_crossels_bulk_operations').hide(); //*** __woobe_init_cross_sells(); } }); */ } else { if (product_id > 0) { jQuery('#cross_sells_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); jQuery('#woobe_crossels_bulk_operations').hide(); } else { //this we need do for another applications, for example bulk editor if (jQuery('#cross_sells_popup_editor form .woobe_fields_tmp').length == 0) { jQuery('#cross_sells_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); } jQuery('#woobe_crossels_bulk_operations').show(); } jQuery("#cross_sells_products_search").val(''); jQuery('#cross_sells_popup_editor').show(); __woobe_init_cross_sells(); } //*** jQuery('.woobe-modal-save6').off('click'); jQuery('.woobe-modal-save6').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); if (product_id > 0) { jQuery('#cross_sells_popup_editor').hide(); let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: key, value: jQuery('#products_cross_sells_form').serialize(), mainform_nonce: nonce }, success: function (html) { woobe_message(lang.saved, 'notice'); //jQuery('#cross_sells_popup_editor form').html(''); jQuery(button).parent().html(html); jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#products_cross_sells_form').serialize()]); } }); } else { //for buttons in any extensions jQuery(document).trigger('woobe_act_cross_sells_editor_saved', [product_id, key, jQuery('#products_cross_sells_form').serialize()]); } return false; }); jQuery('.woobe-modal-close6').off('click'); jQuery('.woobe-modal-close6').on('click', function () { //jQuery('#cross_sells_popup_editor form').html(''); - do not do this, as it make incompatibility with another extensions jQuery("#cross_sells_products_search").val(''); jQuery('#cross_sells_popup_editor').hide(); return false; }); } function woobe_act_grouped_editor(_this) { var button = _this; jQuery('#grouped_popup_editor .woobe-modal-title').html(jQuery(_this).data('name') + ' [' + jQuery(_this).data('key') + ']'); woobe_popup_clicked = jQuery(_this); var product_id = parseInt(jQuery(_this).data('product_id'), 10); var key = jQuery(_this).data('key'); //*** var button_data = []; if (jQuery('#grouped_ids_grouped_ids_' + product_id + ' li').length > 0) { jQuery('#grouped_ids_grouped_ids_' + product_id + ' li').each(function (i, li) { button_data.push(jQuery(li).data('product')); }); } //*** if (jQuery(_this).data('count') > 0 && product_id > 0) { var html = ''; jQuery(button_data).each(function (i, li) { var li_html = jQuery('#woobe_product_li_tpl').html(); li_html = li_html.replace(/__ID__/gi, li.id); li_html = li_html.replace(/__TITLE__/gi, li.title + ' (#' + li.id + ')'); li_html = li_html.replace(/__PERMALINK__/gi, li.link); li_html = li_html.replace(/__IMG_URL__/gi, li.thumb); html += li_html; }); jQuery('#grouped_popup_editor form').html('<ul class="woobe_fields_tmp">' + html + '</ul>'); jQuery("#grouped_products_search").val(''); jQuery('#grouped_popup_editor').show(); jQuery('#woobe_grouped_bulk_operations').hide(); __woobe_init_grouped(); /* woobe_message(lang.loading, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_get_grouped', product_id: product_id, field: key }, success: function (content) { woobe_message(lang.loaded, 'notice'); jQuery('#grouped_popup_editor form').html(content); jQuery("#grouped_products_search").val(''); jQuery('#grouped_popup_editor').show(); jQuery('#woobe_grouped_bulk_operations').hide(); //*** __woobe_init_grouped(); } }); */ } else { if (product_id > 0) { jQuery('#grouped_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); jQuery('#woobe_grouped_bulk_operations').hide(); } else { //this we need do for another applications, for example bulk editor if (jQuery('#grouped_popup_editor form .woobe_fields_tmp').length == 0) { jQuery('#grouped_popup_editor form').html('<ul class="woobe_fields_tmp"></ul>'); } jQuery('#woobe_grouped_bulk_operations').show(); } jQuery("#grouped_products_search").val(''); jQuery('#grouped_popup_editor').show(); __woobe_init_grouped(); } //*** jQuery('.woobe-modal-save7').off('click'); jQuery('.woobe-modal-save7').on('click', function () { var product_id = woobe_popup_clicked.data('product_id'); var key = woobe_popup_clicked.data('key'); if (product_id > 0) { jQuery('#grouped_popup_editor').hide(); let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, 'warning'); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: key, value: jQuery('#products_grouped_form').serialize(), mainform_nonce: nonce }, success: function (html) { woobe_message(lang.saved, 'notice'); jQuery('#grouped_popup_editor form').html(''); jQuery(button).parent().html(html); jQuery(document).trigger('woobe_page_field_updated', [product_id, key, jQuery('#products_grouped_form').serialize()]); } }); } else { //for buttons in any extensions jQuery(document).trigger('woobe_act_grouped_editor_saved', [product_id, key, jQuery('#products_grouped_form').serialize()]); } return false; }); jQuery('.woobe-modal-close7').off('click'); jQuery('.woobe-modal-close7').on('click', function () { //jQuery('#grouped_popup_editor form').html(''); - do not do this, as it make incompatibility with another extensions jQuery("#grouped_products_search").val(''); jQuery('#grouped_popup_editor').hide(); return false; }); } function woobe_act_select(_this) { woobe_message(lang.saving, ''); var product_id = parseInt(jQuery(_this).data('product-id'), 10); let nonce = jQuery('#woobe_mainform_nonce').val(); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: jQuery(_this).data('field'), value: jQuery(_this).val(), mainform_nonce: nonce }, success: function (e) { jQuery(document).trigger('woobe_page_field_updated', [product_id, jQuery(_this).data('field'), jQuery(_this).val()]); woobe_message(lang.saved, 'notice'); if (jQuery(_this).data('field') == 'product_type') { //redraw table row woobe_redraw_table_row(_this); } } }); return false; } function woobe_redraw_table_row(row, do_trigger = true) { var product_id = parseInt(jQuery(row).data('product-id'), 10); if (!product_id) { return; } //*** jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_redraw_table_row', product_id: product_id, field: jQuery(row).data('field'), value: jQuery(row).val() }, success: function (row_data) { woobe_message(lang.saved, 'notice'); var tr_index = jQuery('#product_row_' + product_id).data('row-num'); data_table.row(tr_index).data(JSON.parse(row_data)); jQuery.each(jQuery('td', jQuery('#product_row_' + product_id)), function (colIndex) { if (jQuery(this).find('.info_restricked').length > 0) { jQuery(this).removeClass('editable'); } else { jQuery(this).addClass('editable'); } }); //*** if (do_trigger) { jQuery(document).trigger('woobe_page_field_updated', [product_id, jQuery(row).data('field'), jQuery(row).val()]); } //woobe_checked_products.splice(woobe_checked_products.indexOf(product_id), 1); /* woobe_checked_products = jQuery.grep(woobe_checked_products, function (value) { return value != product_id; }); */ if (jQuery.inArray(product_id, woobe_checked_products) > -1) { jQuery('#product_row_' + product_id).find('.woobe_product_check').prop('checked', true); } init_data_tables_edit(product_id); } }); } function woobe_init_calendar(calendar) { if (typeof jQuery(calendar).attr('data-dtp') !== typeof undefined && jQuery(calendar).attr('data-dtp') !== false) { return; } //*** var format = "DD/MM/YYYY"; var time = false; if (jQuery(calendar).data('time') == true) { format = 'DD/MM/YYYY HH:mm'; time = true; } jQuery(calendar).bootstrapMaterialDatePicker({ weekStart: 1, time: time, clearButton: false, //minDate: new Date(), format: format, autoclose: true, lang: 'en', title: jQuery(calendar).data('title'), icons: { time: "icofont icofont-clock-time", date: "icofont icofont-ui-calendar", up: "icofont icofont-rounded-up", down: "icofont icofont-rounded-down", next: "icofont icofont-rounded-right", previous: "icofont icofont-rounded-left" } }).on('change', function (e, date) { var hidden = jQuery('#' + jQuery(this).data('val-id')); if (typeof date != 'undefined') { var d = new Date(date); //hidden.val(parseInt(d.getTime() / 1000, 10)); if (jQuery(this).data('time') == true) { hidden.val(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ":" + d.getMinutes() + ":00"); } else { hidden.val(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate()); } //console.log(hidden.val()) } else { //clear hidden.val(0); } //*** var product_id = parseInt(hidden.data('product-id'), 10); if (product_id > 0) { let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, ''); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: hidden.data('key'), value: hidden.val(), mainform_nonce: nonce }, success: function (e) { //console.log(e); jQuery(document).trigger('woobe_page_field_updated', [product_id, hidden.data('key'), hidden.val()]); woobe_message(lang.saved, 'notice'); } }); } }); //*** jQuery(calendar).parents('td').find('.woobe_calendar_cell_clear').on('click', function () { jQuery(this).parent().find('.woobe_calendar').val('').trigger('change'); return false; }); } //redrawing of checkbox to switcher on onmouseover //was in cycle but its make time of page redrawing longer, so been remade for individual initializating function woobe_set_switchery(_this) { //http://abpetkov.github.io/switchery/ if (typeof Switchery !== 'undefined') { new Switchery(_this); //while reinit allows more html switchers jQuery(_this).parent().find('span.switchery:not(:first)').remove(); } //*** jQuery(_this).off('change'); jQuery(_this).on('change',function () { var state = _this.checked.toString(); var numcheck = jQuery(_this).data('numcheck'); var trigger_target = jQuery(_this).data('trigger-target'); var label = jQuery("*[data-label-numcheck='" + numcheck + "']"); var hidden = jQuery("*[data-hidden-numcheck='" + numcheck + "']"); label.html(jQuery(_this).data(state)); jQuery(label).removeClass(jQuery(_this).data('class-' + (!(_this.checked)).toString())); jQuery(label).addClass(jQuery(_this).data('class-' + state)); var val = jQuery(_this).data('val-' + state); var field_name = jQuery(hidden).attr('name'); jQuery(hidden).val(val); if (trigger_target.length) { jQuery(this).trigger("check_changed", [trigger_target, field_name, _this.checked, val, numcheck]); } }); //*** jQuery(_this).off('check_changed'); jQuery(_this).on("check_changed", function (event, trigger_target, field_name, is_checked, val, product_id) { let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, ''); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: field_name, value: val, mainform_nonce: nonce }, success: function () { jQuery(document).trigger('woobe_page_field_updated', [parseInt(product_id, 10), field_name, val]); woobe_message(lang.saved, 'notice'); } }); }); } function woobe_act_thumbnail(_this) { var product_id = jQuery(_this).parents('tr').data('product-id'); var field = jQuery(_this).parents('td').data('field'); var image = wp.media({ title: lang.upload_image, multiple: false, library: { type: ['image'] } }).open() .on('select', function (e) { var uploaded_image = image.state().get('selection').first(); // We convert uploaded_image to a JSON object to make accessing it easier uploaded_image = uploaded_image.toJSON(); var uploaded_to = 0; if (uploaded_image.uploading != undefined || uploaded_image.uploading == false) { uploaded_to = 1; } var img_url = uploaded_image.url; if (uploaded_image.sizes && uploaded_image.sizes.thumbnail) { img_url = uploaded_image.sizes.thumbnail.url; } if (typeof uploaded_image.url != 'undefined') { jQuery(_this).find('img').attr('src', img_url); //jQuery(_this).removeAttr('srcset'); let nonce = jQuery('#woobe_mainform_nonce').val(); woobe_message(lang.saving, ''); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_update_page_field', product_id: product_id, field: field, value: uploaded_image.id, uploaded_to: uploaded_to, mainform_nonce: nonce }, success: function () { jQuery(document).trigger('woobe_page_field_updated', [product_id, field, uploaded_image.id]); woobe_message(lang.saved, 'notice'); } }); } }); return false; } //service function __woobe_init_downloads() { jQuery('.woobe_upload_file_button').off('click'); jQuery('.woobe_upload_file_button').on('click', function () { var input_object = jQuery(this).parents('tr').find('.woobe_down_file_url').eq(0); var image = wp.media({ title: lang.upload_file, multiple: false }) image.on('ready', function () { /* to add files in woocommerce_uploads*/ image.uploader.options.uploader.params = { type: 'downloadable_product' }; }); image.open() .on('select', function (e) { var uploaded_image = image.state().get('selection').first(); // We convert uploaded_image to a JSON object to make accessing it easier uploaded_image = uploaded_image.toJSON(); if (typeof uploaded_image.url != 'undefined') { jQuery(input_object).val(uploaded_image.url); } }); return false; }); //*** jQuery("#downloads_popup_editor form .woobe_fields_tmp").sortable({ update: function (event, ui) { //*** }, opacity: 0.8, cursor: "crosshair", handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); //*** jQuery('.woobe_insert_download_file').off('click'); jQuery('.woobe_insert_download_file').on('click', function () { var li_html = jQuery('#woobe_download_file_tpl').html(); li_html = li_html.replace(/__TITLE__/gi, ''); li_html = li_html.replace(/__HASH__/gi, ''); li_html = li_html.replace(/__FILE_URL__/gi, ''); if (jQuery(this).data('place') == 'top') { jQuery('#downloads_popup_editor form .woobe_fields_tmp').prepend(li_html); } else { jQuery('#downloads_popup_editor form .woobe_fields_tmp').append(li_html); } __woobe_init_downloads(); return false; }); jQuery('.woobe_down_file_delete').off('click'); jQuery('.woobe_down_file_delete').on('click', function () { jQuery(this).parents('li').remove(); return false; }); } //service function __woobe_init_gallery() { jQuery('.woobe_insert_gall_file').off('click'); jQuery('.woobe_insert_gall_file').on('click', function (e) { e.preventDefault(); var image = wp.media({ title: lang.upload_images, multiple: true, //cache: 'refresh', library: { type: ['image'], //cache: false } }).open() .on('select', function (e) { //var uploaded_images = image.state().get('selection').first(); var uploaded_images = image.state().get('selection'); // We convert uploaded_image to a JSON object to make accessing it easier uploaded_images = uploaded_images.toJSON(); //console.log(uploaded_images); if (uploaded_images.length) { for (var i = 0; i < uploaded_images.length; i++) { var html = jQuery('#woobe_gallery_li_tpl').html(); html = html.replace(/__IMG_URL__/gi, uploaded_images[i]['url'].replace('http://','https://')); html = html.replace(/__ATTACHMENT_ID__/gi, uploaded_images[i]['id']); jQuery('#gallery_popup_editor form .woobe_fields_tmp').prepend(html); } __woobe_init_gallery(); //jQuery('#media-attachment-date-filters').trigger('change'); } }); return false; }); //*** jQuery("#gallery_popup_editor form .woobe_fields_tmp").sortable({ update: function (event, ui) { //*** }, opacity: 0.8, cursor: "crosshair", //handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); //*** jQuery('.woobe_gall_file_delete').off('click'); jQuery('.woobe_gall_file_delete').on('click', function () { jQuery(this).parents('li').remove(); return false; }); jQuery('.woobe_gall_file_delete_all').off('click'); jQuery('.woobe_gall_file_delete_all').on('click', function () { jQuery('#gallery_popup_editor form .woobe_fields_tmp').html(''); return false; }); } //service function __woobe_init_upsells() { jQuery("#upsells_popup_editor form .woobe_fields_tmp").sortable({ update: function (event, ui) { //*** }, opacity: 0.8, cursor: "crosshair", handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); //*** jQuery("#upsells_products_search").easyAutocomplete({ url: function (phrase) { return ajaxurl; }, //theme: "square", getValue: function (element) { jQuery('#upsells_popup_editor .cssload-container').hide(); return element.name; }, ajaxSettings: { dataType: "json", method: "POST", data: { action: "woobe_title_autocomplete", dataType: "json" } }, preparePostData: function (data) { data.woobe_txt_search = jQuery("#upsells_products_search").val(); data.auto_res_count = woobe_settings.autocomplete_max_elem_count; data.auto_search_by_behavior = 'title'; data.exept_ids = jQuery('#products_upsells_form').serialize(); jQuery('#upsells_popup_editor .cssload-container').show(); return data; }, ajaxCallback: function () { //*** }, template: { type: 'iconRight', //'links' | 'iconRight' fields: { iconSrc: "icon", link: "link" } }, list: { maxNumberOfElements: woobe_settings.autocomplete_max_elem_count, onChooseEvent: function (e) { autocomplete_curr_index = jQuery("#upsells_products_search").getSelectedItemIndex(); return true; }, showAnimation: { type: "fade", //normal|slide|fade time: 333, callback: function () { } }, hideAnimation: { type: "slide", //normal|slide|fade time: 333, callback: function () { } }, onClickEvent: function () { var index = jQuery("#upsells_products_search").getSelectedItemIndex(); var data = jQuery("#upsells_products_search").getItemData(index); if (parseInt(data.id, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name + '(#' + data.id + ')'); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#upsells_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#upsells_products_search").val(''); __woobe_init_upsells(); jQuery("#upsells_products_search").focus(); } else { jQuery("#upsells_products_search").val(''); } return false; } }, requestDelay: autocomplete_request_delay }); jQuery('#upsells_products_search').off('keydown'); jQuery("#upsells_products_search").keydown(function (e) { if (e.keyCode == 13) { var index = jQuery("#upsells_products_search").getSelectedItemIndex(); if (autocomplete_curr_index != -1) { index = autocomplete_curr_index; } var data = jQuery("#upsells_products_search").getItemData(index); if (parseInt(index, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#upsells_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#upsells_products_search").val(''); __woobe_init_upsells(); jQuery("#upsells_products_search").focus(); } else { jQuery("#upsells_products_search").val(''); jQuery("#upsells_products_search").focus(); } } }); //*** jQuery('.woobe_prod_delete').off('click'); jQuery('.woobe_prod_delete').on('click', function () { jQuery(this).parents('li').remove(); jQuery("#upsells_products_search").focus(); return false; }); jQuery("#upsells_products_search").focus(); } //service function __woobe_init_cross_sells() { jQuery("#cross_sells_popup_editor form .woobe_fields_tmp").sortable({ update: function (event, ui) { //*** }, opacity: 0.8, cursor: "crosshair", handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); //*** jQuery("#cross_sells_products_search").easyAutocomplete({ url: function (phrase) { return ajaxurl; }, //theme: "square", getValue: function (element) { jQuery('#cross_sells_popup_editor .cssload-container').hide(); return element.name; }, ajaxSettings: { dataType: "json", method: "POST", data: { action: "woobe_title_autocomplete", dataType: "json" } }, preparePostData: function (data) { data.woobe_txt_search = jQuery("#cross_sells_products_search").val(); data.auto_res_count = woobe_settings.autocomplete_max_elem_count; data.auto_search_by_behavior = 'title'; data.exept_ids = jQuery('#products_cross_sells_form').serialize(); jQuery('#cross_sells_popup_editor .cssload-container').show(); return data; }, ajaxCallback: function () { //*** }, template: { type: 'iconRight', //'links' | 'iconRight' fields: { iconSrc: "icon", link: "link" } }, list: { maxNumberOfElements: woobe_settings.autocomplete_max_elem_count, onChooseEvent: function (e) { autocomplete_curr_index = jQuery("#cross_sells_products_search").getSelectedItemIndex(); return true; }, showAnimation: { type: "fade", //normal|slide|fade time: 333, callback: function () { } }, hideAnimation: { type: "slide", //normal|slide|fade time: 333, callback: function () { } }, onClickEvent: function () { var index = jQuery("#cross_sells_products_search").getSelectedItemIndex(); var data = jQuery("#cross_sells_products_search").getItemData(index); if (parseInt(data.id, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#cross_sells_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#cross_sells_products_search").val(''); __woobe_init_cross_sells(); jQuery("#cross_sells_products_search").focus(); } else { jQuery("#cross_sells_products_search").val(''); } } }, requestDelay: autocomplete_request_delay }); jQuery("#cross_sells_products_search").keydown(function (e) { if (e.keyCode == 13) { var index = jQuery("#cross_sells_products_search").getSelectedItemIndex(); if (autocomplete_curr_index != -1) { index = autocomplete_curr_index; } var data = jQuery("#cross_sells_products_search").getItemData(index); if (parseInt(index, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#cross_sells_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#cross_sells_products_search").val(''); __woobe_init_cross_sells(); jQuery("#cross_sells_products_search").focus(); } else { jQuery("#cross_sells_products_search").val(''); jQuery("#cross_sells_products_search").focus(); } } }); //*** jQuery('.woobe_prod_delete').off('click'); jQuery('.woobe_prod_delete').on('click', function () { jQuery(this).parents('li').remove(); jQuery("#cross_sells_products_search").focus(); return false; }); jQuery("#cross_sells_products_search").focus(); } //service function __woobe_init_grouped() { jQuery("#grouped_popup_editor form .woobe_fields_tmp").sortable({ update: function (event, ui) { //*** }, opacity: 0.8, cursor: "crosshair", handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); //*** jQuery("#grouped_products_search").easyAutocomplete({ url: function (phrase) { return ajaxurl; }, //theme: "square", getValue: function (element) { jQuery('#grouped_popup_editor .cssload-container').hide(); return element.name; }, ajaxSettings: { dataType: "json", method: "POST", data: { action: "woobe_title_autocomplete", dataType: "json" } }, preparePostData: function (data) { data.woobe_txt_search = jQuery("#grouped_products_search").val(); data.auto_res_count = woobe_settings.autocomplete_max_elem_count; data.auto_search_by_behavior = 'title'; data.exept_ids = jQuery('#products_grouped_form').serialize(); jQuery('#grouped_popup_editor .cssload-container').show(); return data; }, ajaxCallback: function () { //*** }, template: { type: 'iconRight', //'links' | 'iconRight' fields: { iconSrc: "icon", link: "link" } }, list: { hideOnEmptyPhrase: false, maxNumberOfElements: woobe_settings.autocomplete_max_elem_count, onChooseEvent: function (e) { autocomplete_curr_index = jQuery("#grouped_products_search").getSelectedItemIndex(); return true; }, showAnimation: { type: "fade", //normal|slide|fade time: 333, callback: function () { } }, hideAnimation: { type: "slide", //normal|slide|fade time: 333, callback: function () { } }, onClickEvent: function () { var index = jQuery("#grouped_products_search").getSelectedItemIndex(); var data = jQuery("#grouped_products_search").getItemData(index); if (parseInt(data.id, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#grouped_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#grouped_products_search").val(''); __woobe_init_grouped(); jQuery("#grouped_products_search").focus(); } else { jQuery("#grouped_products_search").val(''); } } }, requestDelay: autocomplete_request_delay }); //*** jQuery("#grouped_products_search").keydown(function (e) { if (e.keyCode == 13) { var index = jQuery("#grouped_products_search").getSelectedItemIndex(); if (autocomplete_curr_index != -1) { index = autocomplete_curr_index; } var data = jQuery("#grouped_products_search").getItemData(index); if (parseInt(index, 10) > 0) { var html = jQuery('#woobe_product_li_tpl').html(); html = html.replace(/__ID__/gi, data.id); html = html.replace(/__TITLE__/gi, data.name); html = html.replace(/__PERMALINK__/gi, data.link); html = html.replace(/__IMG_URL__/gi, data.icon); jQuery('#grouped_popup_editor form .woobe_fields_tmp').prepend(html); jQuery("#grouped_products_search").val(''); __woobe_init_grouped(); jQuery("#grouped_products_search").focus(); } else { jQuery("#grouped_products_search").val(''); jQuery("#grouped_products_search").focus(); } } }); //*** jQuery('.woobe_prod_delete').off('click'); jQuery('.woobe_prod_delete').on('click', function () { jQuery(this).parents('li').remove(); jQuery("#grouped_products_search").focus(); return false; }); jQuery("#grouped_products_search").focus(); } function woobe_message(text, type, duration = 0) { jQuery('.growl').hide(); if (duration > 0) { Growl.settings.duration = duration; } else { Growl.settings.duration = 1777; } switch (type) { case 'notice': jQuery.growl.notice({message: text}); break; case 'warning': jQuery.growl.warning({message: text}); break; case 'error': jQuery.growl.error({message: text}); break; case 'clean': //clean break; default: jQuery.growl({title: '', message: text}); break; } } function woobe_init_scroll() { setTimeout(function () { //jQuery('#advanced-table').wrap( "<div class='woobe_scroll_wrapper'></div>" ); if (jQuery('#advanced-table').width() > jQuery('#tabs-products').width() + 50) { jQuery('#woobe_scroll_left').show(); jQuery('#woobe_scroll_right').show(); var anchor1 = jQuery('.dataTables_scrollBody'); //var anchor2 = jQuery('.dataTables_scrollHead'); //var anchor3 = jQuery('.dataTables_scrollFoot'); var corrective = 30; var animate_time = 300; var leftPos = null; jQuery('#woobe_scroll_left').on('click', function () { leftPos = anchor1.scrollLeft(); jQuery('div.dataTables_scrollBody').animate({scrollLeft: leftPos + jQuery('#tabs-products').width() - corrective}, animate_time); //anchor1.animate({scrollLeft: leftPos + jQuery('#tabs-products').width() - corrective}, animate_time); //anchor2.animate({scrollLeft: leftPos + jQuery('#tabs-products').width() - corrective}, animate_time); //anchor3.animate({scrollLeft: leftPos + jQuery('#tabs-products').width() - corrective}, animate_time); return false; }); jQuery('#woobe_scroll_right').on('click', function () { leftPos = anchor1.scrollLeft(); jQuery('div.dataTables_scrollBody').animate({scrollLeft: leftPos - jQuery('#tabs-products').width() + corrective}, animate_time); //anchor1.animate({scrollLeft: leftPos - jQuery('#tabs-products').width() + corrective}, animate_time); //anchor2.animate({scrollLeft: leftPos - jQuery('#tabs-products').width() + corrective}, animate_time); //anchor3.animate({scrollLeft: leftPos - jQuery('#tabs-products').width() + corrective}, animate_time); return false; }); } }, 1000); } function woobe_multi_select_cell_attr_visible(_this) { var cell_dropdown = jQuery(_this).parents('.woobe_multi_select_cell').find('.woobe_multi_select_cell_dropdown'); var cell_list = jQuery(_this).parents('.woobe_multi_select_cell').find('.woobe_multi_select_cell_list'); var ul = jQuery(cell_list).find('ul'); var select = jQuery(cell_dropdown).find('select'); var tax_key = jQuery(select).data('field'); var product_id = jQuery(select).data('product-id'); var selected = (jQuery(select).data('selected') + '').split(',').map(function (num) { return parseInt(num, 10); }); var select_id = 'mselect_' + tax_key + '_' + product_id; jQuery(_this).hide(); jQuery(select).chosen({ //disable_search_threshold: 10, //max_shown_results: 5, width: '100%' }).trigger("chosen:updated"); jQuery(cell_dropdown).show(); //*** jQuery(cell_dropdown).find('.woobe_multi_select_cell_cancel').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_cancel').on('click', function () { jQuery(select).chosen('destroy'); jQuery(cell_dropdown).hide(); jQuery(_this).show(); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_select').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_select').on('click', function () { jQuery(select).find('option').prop('selected', true); jQuery(select).trigger('chosen:updated'); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_deselect').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_deselect').on('click', function () { jQuery(select).find('option').removeAttr('selected'); jQuery(select).trigger('chosen:updated'); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_save').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_save').on('click', function () { jQuery(select).chosen('destroy'); woobe_act_select(select); jQuery(cell_dropdown).hide(); jQuery(_this).show(); //*** var sel = []; jQuery(ul).html(''); if (jQuery(select).find(":selected").length) { jQuery(select).find(":selected").each(function (ii, option) { sel[ii] = option.value; jQuery(ul).append('<li>' + option.label + '</li>'); }); } else { jQuery(ul).append('<li>' + lang.no_items + '</li>'); } jQuery(select).data('selected', sel.join(',')); return false; }); return false; } function woobe_multi_select_cell(_this) { var cell_dropdown = jQuery(_this).parents('.woobe_multi_select_cell').find('.woobe_multi_select_cell_dropdown'); var cell_list = jQuery(_this).parents('.woobe_multi_select_cell').find('.woobe_multi_select_cell_list'); var ul = jQuery(cell_list).find('ul'); var select = jQuery(cell_dropdown).find('select'); var tax_key = jQuery(select).data('field'); var product_id = jQuery(select).data('product-id'); var selected = (jQuery(select).data('selected') + '').split(',').map(function (num) { return parseInt(num, 10); }); var select_id = 'mselect_' + tax_key + '_' + product_id; jQuery(_this).hide(); //*** jQuery(select).empty(); __woobe_fill_select(select_id, taxonomies_terms[tax_key], selected); //*** jQuery(select).chosen({ //disable_search_threshold: 10, //max_shown_results: 5, width: '100%' }).trigger("chosen:updated"); jQuery(cell_dropdown).show(); //*** jQuery(cell_dropdown).find('.woobe_multi_select_cell_cancel').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_cancel').on('click', function () { jQuery(select).chosen('destroy'); jQuery(cell_dropdown).hide(); jQuery(_this).show(); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_select').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_select').on('click', function () { jQuery(select).find('option').prop('selected', true); jQuery(select).trigger('chosen:updated'); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_deselect').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_deselect').on('click', function () { jQuery(select).find('option').removeAttr('selected'); jQuery(select).trigger('chosen:updated'); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_save').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_save').on('click', function () { jQuery(select).chosen('destroy'); woobe_act_select(select); jQuery(cell_dropdown).hide(); jQuery(_this).show(); //*** var sel = []; jQuery(ul).html(''); if (jQuery(select).find(":selected").length) { jQuery(select).find(":selected").each(function (ii, option) { sel[ii] = option.value; jQuery(ul).append('<li>' + option.label + '</li>'); }); } else { jQuery(ul).append('<li>' + lang.no_items + '</li>'); } jQuery(select).data('selected', sel.join(',')); return false; }); jQuery(cell_dropdown).find('.woobe_multi_select_cell_new').off('click'); jQuery(cell_dropdown).find('.woobe_multi_select_cell_new').on('click', function () { __woobe_create_new_term(tax_key, false, select_id); return false; }); return false; } //make images bigger on their event onmouseover function woobe_init_image_preview(_this) { var xOffset = 150; var yOffset = 30; _this.t = _this.title; //_this.title = ""; var c = (_this.t != "") ? "<br/>" + _this.t : ""; jQuery("body").append("<p id='woobe_img_preview'><img src='" + _this.href + "' alt='" + lang.loading + "' width='300' />" + c + "</p>"); jQuery("#woobe_img_preview") .css("top", (_this.pageY - xOffset) + "px") .css("left", (_this.pageX + yOffset) + "px") .fadeIn("fast"); jQuery(_this).mousemove(function (e) { jQuery("#woobe_img_preview") .css("top", (e.pageY - xOffset) + "px") .css("left", (e.pageX + yOffset) + "px"); }); jQuery(_this).mouseleave(function (e) { jQuery("#woobe_img_preview").remove(); }); } //to display current product in the top wordpress admin bar function woobe_td_hover(id, title, col_num) { if (!jQuery('#wp-admin-bar-root-default li.woobe_current_cell_view').length) { jQuery('#wp-admin-bar-root-default').append('<li class="woobe_current_cell_view">'); } //*** if (id > 0) { var content = '#' + id + '. ' + title + ' [<i>' + jQuery('#woobe_col_' + col_num).text() + '</i>]'; } else { var content = ''; } jQuery('#wp-admin-bar-root-default li.woobe_current_cell_view').html(content); return true; } function woobe_onmouseover_num_textinput(_this, colIndex) { jQuery(document).trigger("woobe_onmouseover_num_textinput", [_this, colIndex]); return true; } function woobe_onmouseout_num_textinput(_this, colIndex) { jQuery(document).trigger("woobe_onmouseout_num_textinput", [_this, colIndex]); return true; }