(function($){ "use strict"; //console.log(kp_meta_box_title); //console.log(kp_meta_box_title[0]); var KapeeMetabox = { initialize: function() { KapeeMetabox.meta_box_tab(); KapeeMetabox.required_field(); KapeeMetabox.widget_select2_process(); }, meta_box_tab: function() { var tabBoxes = jQuery(kp_meta_box_ids[0]), normal_wrap = jQuery('#normal-sortables'), visual_composer = normal_wrap.find('#wpb_wpbakery'), product_data = normal_wrap.find('#woocommerce-product-data'), kp_metabox_wrap_html = '<div class="kp-meta-tabs-wrap postbox"><div class="postbox-header"><h2 class="hndle ui-sortable-handle">'+ kp_meta_box_title[0] +'</h2><div class="handle-actions hide-if-no-js"><button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Kapee Options</span><span class="toggle-indicator" aria-hidden="true"></span></button></div></div><div id="kp-tabbed-meta-boxes"></div></div>'; ; var meta_boxes = kp_meta_box_ids[0].split(","); var metabox_exist = false; for (var i = 0; i < meta_boxes.length; i++ ) { if($(meta_boxes[i]).length > 0){ metabox_exist = true; } } if(!metabox_exist){ return false; } if(product_data.length > 0){ product_data.after(kp_metabox_wrap_html); } else if(visual_composer.length > 0){ visual_composer.after(kp_metabox_wrap_html); }else{ jQuery('#normal-sortables').prepend(kp_metabox_wrap_html); } jQuery(tabBoxes).appendTo('#kp-tabbed-meta-boxes'); jQuery(tabBoxes).hide().removeClass('hide-if-no-js'); for (var a = 0, b = tabBoxes.length; a < b; a++ ) { var newClass = 'editor-tab' + a; jQuery(tabBoxes[a]).addClass(newClass); } var menu_html = '<ul id="kp-meta-box-tabs" class="clearfix">\n'; var total_hidden = 0; for (var i = 0, n = tabBoxes.length; i < n; i++ ) { var target_id = jQuery(tabBoxes[i]).attr('id'); var tab_name = jQuery(tabBoxes[i]).find('.hndle').text(); var tab_class = ""; if (jQuery(tabBoxes[i]).hasClass('hide-if-js')) { total_hidden++; } menu_html = menu_html + '\n<li id="li'+ target_id +'" class="'+tab_class+'"><a href="javascript:void(0);" rel="editor-tab' + i + '">' + tab_name + '</a></li>'; } menu_html = menu_html + '\n</ul>'; jQuery('#kp-tabbed-meta-boxes').before(menu_html); jQuery('#kp-meta-box-tabs a:first').addClass('active'); jQuery('.editor-tab0').addClass('active').show(); jQuery('.kp-meta-tabs-wrap').on('click', '.handlediv', function() { var metaBoxWrap = jQuery(this).parent(); if (metaBoxWrap.hasClass('closed')) { metaBoxWrap.removeClass('closed'); } else { metaBoxWrap.addClass('closed'); } }); jQuery('#kp-meta-box-tabs li').on('click', 'a', function(event) { event.preventDefault(); jQuery(tabBoxes).removeClass('active').hide(); jQuery('#kp-meta-box-tabs a').removeClass('active'); var target = jQuery(this).attr('rel'); jQuery(this).addClass('active'); jQuery('.' + target).addClass('active').show(); }); }, required_field: function() { var ref_arr = []; $('[data-required-ref]').each(function () { var $this = $(this); var data_ref = $this.attr('data-required-ref'); var data_op = $this.attr('data-required-operator'); var data_val = $this.attr('data-required-value'); var data_val_arr = data_val.split(','); if ($('#' + data_ref).is(':checkbox')) { if ($('#' + data_ref).prop('checked')) { ref_arr[data_ref] = $('#' + data_ref).val(); } else { ref_arr[data_ref] = '0'; } }else if($('#' + data_ref).is(':radio')){ if ($('#' + data_ref).prop('checked')) { ref_arr[data_ref] = $('#' + data_ref).val(); } else { ref_arr[data_ref] = '0'; } } else { ref_arr[data_ref] = $('#' + data_ref).val(); } if (((data_val_arr.indexOf(ref_arr[data_ref]) != -1) && (data_op == '=')) || ((data_val_arr.indexOf(ref_arr[data_ref]) == -1) && (data_op == '<>'))) { $(this).show(); } else { $(this).hide(); } }); for (var field_ref in ref_arr) { $('#' + field_ref).change(function() { var $this_ref = $(this); var this_field_ref = $(this).attr('id'); var ref_val = ''; if ($this_ref.is(':checkbox')) { if ($this_ref.prop('checked')) { ref_val = $this_ref.val(); } else { ref_val = '0'; } }else if($this_ref.is(':radio')){ if ($this_ref.prop('checked')) { ref_val = $this_ref.val(); } else { ref_val = '0'; } } else { ref_val = $this_ref.val(); } $('[data-required-ref="' + this_field_ref + '"]').each(function(){ var $this = $(this); var data_op = $this.attr('data-required-operator'); var data_val = $this.attr('data-required-value'); var data_val_arr = data_val.split(','); if (((data_val_arr.indexOf(ref_val) != -1) && (data_op == '=')) || ((data_val_arr.indexOf(ref_val) == -1) && (data_op == '<>'))) { $(this).slideDown(); } else { $(this).slideUp(); } }); }); } }, widget_select2: function(event, widget) { if (typeof (widget) == "undefined") { $('#widgets-right select.widget-select2:not(.select2-ready)').each(function(){ KapeeMetabox.widget_select2_item(this); }); } else { $('select.widget-select2:not(.select2-ready)', widget).each(function(){ KapeeMetabox.widget_select2_item(this); }); } }, widget_select2_item: function(target){ $(target).addClass('select2-ready'); var data_value = $(target).attr('data-value'); var choices = []; if (data_value != '') { var arr_data_value = data_value.split('||'); for (var i = 0; i < arr_data_value.length; i++) { var option = $('option[value='+ arr_data_value[i] + ']', target); choices[i] = { 'id':arr_data_value[i], 'text':option.text()}; } } $(target).select2().select2('data', choices); $(target).on("select2-selecting", function(e) { var ids = $('input',$(this).parent()).val(); if (ids != "") { ids +="||"; } ids += e.val; $('input',$(this).parent()).val(ids); }).on("select2-removed", function(e) { var ids = $('input',$(this).parent()).val(); var arr_ids = ids.split("||"); var newIds = ""; for(var i = 0 ; i < arr_ids.length; i++) { if (arr_ids[i] != e.val){ if (newIds != "") { newIds +="||"; } newIds += arr_ids[i]; } } $('input',$(this).parent()).val(newIds); }); }, widget_select2_process: function() { $(document).on('widget-added', KapeeMetabox.widget_select2); $(document).on('widget-updated', KapeeMetabox.widget_select2); KapeeMetabox.widget_select2(); } }; $(document).ready(function(){ KapeeMetabox.initialize(); }); })(jQuery);