PATH:
home
/
thebhoeo
/
public_html
/
wp-content
/
themes
/
woodmart
/
inc
/
modules
/
layouts
/
assets
/* global woodmartConfig */ (function($) { 'use strict'; var $wrapper = $('.xts-add-layout, #xts-layout-conditions'); var $template = $wrapper.find('.xts-popup-condition-template'); var $form = $wrapper.find('form'); var $popup = $wrapper.find('.xts-popup'); const showNotice = function( $popup, message, status ) { $popup.find('.xts-layout-popup-notices').text(''); $popup.find('.xts-layout-popup-notices').append('<div class="xts-notice xts-' + status + '">' + message + '</div>'); $popup.removeClass('xts-loading'); }; // Change status. $(document).on('click', '.column-wd_layout_status .xts-switcher-btn', function() { var $switcher = $(this); $switcher.addClass('xts-loading'); $.ajax({ url : woodmartConfig.ajaxUrl, method : 'POST', data : { action : 'wd_layout_change_status', id : $switcher.data('id'), status : 'publish' === $switcher.data('status') ? 'draft' : 'publish', security: woodmartConfig.get_new_template_nonce }, dataType: 'json', success : function(response) { $switcher.replaceWith(response.new_html); }, error : function() { var $popup = $switcher.parents('.wd_layout_status').siblings('.wd_layout_conditions').find('.xts-popup'); $popup.parent('.xts-popup-holder').addClass('xts-opened'); showNotice( $popup, woodmartConfig.creation_error, 'warning' ); } }); }); // Change condition type. $(document).on('change', '.xts-popup-condition-type', function() { var $this = $(this); var conditionType = $this.val(); var $querySelect = $this.siblings('.xts-popup-condition-query'); var $queryNumberWrap = $this.siblings('.xts-popup-condition-query-number-wrap'); var $selectedOption = $this.find('option:selected'); var queryInputType = $selectedOption.data('query-input'); if ($querySelect.data('select2')) { $querySelect.val(''); $querySelect.select2('destroy'); } // Clear number inputs $queryNumberWrap.find('input').val(''); const conditions = [ 'all', 'shop_page', 'product_search', 'product_cats', 'product_tags', 'product_brands', 'checkout_form', 'checkout_content', 'cart', 'empty_cart', 'blog_search_result', 'blog_author', 'blog_date', 'portfolio_search_result', 'dashboard', 'orders', 'downloads', 'edit-address', 'edit-account', 'waitlist', 'wishlist', 'price-tracker' ]; // Check if this condition should show number inputs if ('number' === queryInputType) { $querySelect.addClass('xts-hidden'); $querySelect.removeAttr('data-query-type'); $queryNumberWrap.removeClass('xts-hidden'); } else if ('none' === queryInputType || conditions.includes(conditionType)) { $querySelect.addClass('xts-hidden'); $querySelect.removeAttr('data-query-type'); $queryNumberWrap.addClass('xts-hidden'); } else { $querySelect.removeClass('xts-hidden'); $querySelect.attr('data-query-type', conditionType); $queryNumberWrap.addClass('xts-hidden'); conditionQuerySelect2($querySelect); } }); // Form. $form.on('submit', function(e) { e.preventDefault(); var data = []; var layoutType = $form.find('.xts-layout-type').val(); var layoutName = $form.find('.xts-layout-name').val(); $form.find('.xts-popup-condition').each(function() { var $condition = $(this); var conditionData = { condition_comparison: $condition.find('.xts-popup-condition-comparison').val(), condition_type : $condition.find('.xts-popup-condition-type').val(), condition_query : $condition.find('.xts-popup-condition-query').val() }; // Add number inputs if visible if (!$condition.find('.xts-popup-condition-query-number-wrap').hasClass('xts-hidden')) { conditionData.condition_query_number_min = $condition.find('[name="wd_layout_condition_query_number_min"]').val(); conditionData.condition_query_number_max = $condition.find('[name="wd_layout_condition_query_number_max"]').val(); } data.push(conditionData); }); $popup.addClass('xts-loading'); $.ajax({ url : woodmartConfig.ajaxUrl, method : 'POST', data : { action : 'wd_layout_create', data : data, type : layoutType, name : layoutName, predefined_name: $form.find('.xts-popup-predefined-layout.xts-active').data('name'), security : woodmartConfig.get_new_template_nonce }, dataType: 'json', success : function(response) { if ( ! response.success && response.hasOwnProperty('data') && response.data.hasOwnProperty('message') ) { showNotice( $popup, response.data.message, 'warning' ); } else { window.location.href = response.redirect_url; } }, error : function() { showNotice( $popup, woodmartConfig.creation_error, 'warning' ); } }); }); // Change layout type. $form.find('.xts-layout-type').on('change', function() { var layoutType = $(this).val(); if ('' !== layoutType) { var layoutTypeName = $(this).find('option:selected').text(); $form.find('.xts-layout-name').val(layoutTypeName.trim() + ' ' + woodmartConfig.layout_text); } $form.find('.xts-popup-condition').remove(); $('.xts-popup-predefined-layouts').addClass('xts-hidden'); $('.xts-popup-predefined-layout').removeClass('xts-active'); if (!layoutType) { $wrapper.find('.xts-popup-condition-add').addClass('xts-hidden'); $wrapper.find('.xts-layout-submit').addClass('xts-disabled'); $wrapper.find('.xts-popup-conditions-title').addClass('xts-hidden'); } else { $wrapper.find('.xts-popup-condition-add').removeClass('xts-hidden'); $wrapper.find('.xts-popup-conditions-title').removeClass('xts-hidden'); $wrapper.find('.xts-layout-submit').removeClass('xts-disabled'); $wrapper.find('.xts-popup-condition-add').trigger('click'); $('.xts-popup-predefined-layouts[data-type="' + layoutType + '"]').removeClass('xts-hidden'); } if (! ['single_product', 'shop_archive', 'my_account_page', 'single_post', 'blog_archive', 'single_portfolio', 'portfolio_archive', 'thank_you_page'].includes(layoutType)) { $wrapper.find('.xts-popup-condition-add').addClass('xts-hidden'); $wrapper.find('.xts-popup-conditions-title').addClass('xts-hidden'); $form.find('.xts-popup-condition').addClass('xts-hidden'); } }); // Condition query select2. function conditionQuerySelect2($field) { $field.select2({ ajax : { url : woodmartConfig.ajaxUrl, data : function(params) { return { action : 'wd_layout_conditions_query', security : woodmartConfig.get_new_template_nonce, query_type: $field.attr('data-query-type'), search : params.term }; }, method : 'POST', dataType: 'json' }, theme : 'xts', dropdownAutoWidth: false, width : 'resolve', multiple : ['order_shipping_country', 'order_billing_country'].includes($field.attr('data-query-type')) }); } // Condition add. $wrapper.find('.xts-popup-condition-add').on('click', function() { var layoutType = $form.find('.xts-layout-type').val(); var $templateClone = $template.clone(); $templateClone.find('.xts-popup-condition-type[data-type="' + layoutType + '"]').siblings('.xts-popup-condition-type').remove(); $wrapper.find('.xts-popup-conditions .xts-popup-condition-add').before($templateClone.html()); }); // Conditions edit add. $(document).on('click', '.xts-popup-conditions-edit-add', function() { var $this = $(this); var $wrapper = $this.parent(); var layoutType = $wrapper.data('type'); var $templateClone = $template.clone(); $templateClone.find('.xts-popup-condition-type[data-type="' + layoutType + '"]').siblings('.xts-popup-condition-type').remove(); $this.before($templateClone.html()); }); // Conditions edit. $(document).on('click', '.xts-popup-conditions-edit', function() { var $this = $(this); var $wrapper = $this.parents('.xts-popup-holder').find('.xts-popup-conditions'); $this.parents('.xts-popup-holder').find('.xts-layout-popup-notices').text(''); if ($wrapper.hasClass('xts-inited')) { return; } var conditions = $wrapper.data('conditions'); var layoutType = $wrapper.data('type'); if (conditions) { conditions.forEach(function(condition) { var $templateClone = $template.clone(); $templateClone.find('.xts-popup-condition-type[data-type="' + layoutType + '"]').siblings('.xts-popup-condition-type').remove(); $templateClone.find('.xts-popup-condition').attr('data-condition', JSON.stringify(condition)); $wrapper.find('.xts-popup-conditions-edit-add').before($templateClone.html()); }); } $wrapper.find('.xts-popup-condition').each(function() { var $this = $(this); var condition = $this.data('condition'); if (condition) { $this.find('.xts-popup-condition-comparison').val(condition.condition_comparison).trigger('change'); $this.find('.xts-popup-condition-type').val(condition.condition_type).trigger('change'); if (condition.condition_query_text) { if ('object' === typeof condition.condition_query_text) { condition.condition_query_text.forEach(function (text, index) { $this.find('.xts-popup-condition-query').append('<option value="' + condition.condition_query[index] + '" selected="selected">' + text + '</option>'); }); $this.find('.xts-popup-condition-query').trigger('change') } else { $this.find('.xts-popup-condition-query').append('<option value="' + condition.condition_query + '">' + condition.condition_query_text + '</option>').val(condition.condition_query).trigger('change'); } } if ('undefined' !== typeof condition.condition_query_number_max) { $this.find('[name="wd_layout_condition_query_number_max"]').val(condition.condition_query_number_max); } if ('undefined' !== typeof condition.condition_query_number_min) { $this.find('[name="wd_layout_condition_query_number_min"]').val(condition.condition_query_number_min); } } }); $wrapper.find('.xts-popup-conditions-edit-save').removeClass('xts-hidden'); $wrapper.find('.xts-popup-conditions-edit-add').removeClass('xts-hidden'); $wrapper.addClass('xts-inited'); }); // Conditions save. $(document).on('click', '.xts-popup-conditions-edit-save', function() { var $this = $(this); var $wrapper = $this.parents('.wd_layout_conditions, #xts-layout-conditions'); var $popup = $wrapper.find('.xts-popup'); var $conditionsWrapper = $wrapper.find('.xts-popup-conditions'); var hasError = false; var data = []; $wrapper.find('.xts-popup-holder .xts-popup-condition').each(function() { var $condition = $(this); var conditionData = { condition_comparison: $condition.find('.xts-popup-condition-comparison').val(), condition_type : $condition.find('.xts-popup-condition-type').val(), condition_query : $condition.find('.xts-popup-condition-query').val() }; // Add number inputs if visible if (!$condition.find('.xts-popup-condition-query-number-wrap').hasClass('xts-hidden')) { conditionData.condition_query_number_min = $condition.find('[name="wd_layout_condition_query_number_min"]').val(); conditionData.condition_query_number_max = $condition.find('[name="wd_layout_condition_query_number_max"]').val(); if ( conditionData.condition_query_number_min && conditionData.condition_query_number_max && parseFloat( conditionData.condition_query_number_min ) > parseFloat( conditionData.condition_query_number_max ) ) { showNotice( $popup, woodmartConfig.min_max_error, 'warning' ); hasError = true; } } data.push(conditionData); }); if (hasError) { return; } $popup.addClass('xts-loading'); $.ajax({ url : woodmartConfig.ajaxUrl, method : 'POST', data : { action : 'wd_layout_edit', data : data, id : $conditionsWrapper.data('id'), security: woodmartConfig.get_new_template_nonce }, dataType: 'json', success : function() { showNotice( $popup, woodmartConfig.success_save, 'success' ); }, error : function() { showNotice( $popup, woodmartConfig.editing_error, 'warning' ); } }); }); // Condition remove. $(document).on('click', '.xts-popup-condition-remove', function() { $(this).parent().remove(); }); // Predefined. $('.xts-popup-predefined-layout').on('click', function() { var $this = $(this); $this.siblings().removeClass('xts-active'); $this.toggleClass('xts-active'); }); // Popup. $('.page-title-action, .menu-icon-woodmart_layout li a[href="edit.php?post_type=woodmart_layout&create_template"], .post-type-woodmart_layout .wd-add-layout').on('click', function(event) { event.preventDefault(); $wrapper.find('.xts-popup-holder').addClass('xts-opened'); $('html').addClass('xts-popup-opened'); $form.find('.xts-layout-type').trigger('change'); setTimeout(function() { var $input = $form.find('.xts-layout-name'); var strLength = $input.val().length; $input.trigger('focus'); $input[0].setSelectionRange(strLength, strLength); }, 100); }); $(document).on('click', '.xts-popup-opener', function() { $(this).parent().addClass('xts-opened'); $('html').addClass('xts-popup-opened'); }); $(document).on('click', '.xts-popup-close, .xts-popup-overlay', function() { $('.xts-popup-holder').removeClass('xts-opened'); $('html').removeClass('xts-popup-opened'); }); })(jQuery);
[+]
..
[-] layouts.js
[edit]