/*global woocommerce_admin_meta_boxes, woocommerce_admin, accounting, woocommerce_admin_meta_boxes_order */ window.trusted_shops = window.trusted_shops || {}; ( function( $, wp, trusted_shops ) { /** * Order Data Panel */ trusted_shops.admin = { params: {}, optionPrefix: '', init: function() { this.params = trusted_shops_params; this.optionPrefix = this.params.option_prefix; var self = this; // Show hide elements $( document ).on( 'change', '#woocommerce_' + this.optionPrefix + 'trusted_shops_integration_mode', this.onChangeIntegrationMode ); $( document ).on( 'change', ':input[id$=_enable]', this.onChangeEnable ); $( document ).on( 'change', '#woocommerce_' + this.optionPrefix + 'trusted_shops_reviews_enable', this.onChangeEnableReviews ); // Initial triggers $( document ).find( '#woocommerce_' + this.optionPrefix + 'trusted_shops_integration_mode' ).trigger( 'change' ); $( document ).find( ':input[id$=_enable]' ).trigger( 'change' ); // Exporter $( document ).on( 'click', '#wc-gzd-trusted-shops-export', this.onClickExport ); // Sidebar Switch $( document ).on( 'click', 'table.form-table tr', this.onSidebarChange ); $( ":data(sidebar)" ).each( function() { $( this ).parents( 'tr' ).on( 'click', self.onSidebarChange ); }); $( document ).on( 'click', 'h2, div[id$="options-description"]', this.onSidebarTitelChange ); // Form validation $( document ).on( 'submit', '#mainform', this.onSaveForm ); }, onChangeEnableReviews: function() { var self = trusted_shops.admin; if ( $( this ).is( ':checked' ) ) { $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_sticker_enable' ).parents( 'tr' ).show(); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_widget_enable' ).parents( 'tr' ).show(); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_brand_attribute' ).parents( 'tr' ).show(); } else { $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_sticker_enable' ).prop( 'checked', false ); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_widget_enable' ).prop( 'checked', false ); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_sticker_enable' ).parents( 'tr' ).hide(); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_widget_enable' ).parents( 'tr' ).hide(); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_brand_attribute' ).parents( 'tr' ).hide(); } $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_sticker_enable' ).trigger( 'change' ); $( document ).find( '#woocommerce_' + self.optionPrefix + 'trusted_shops_product_widget_enable' ).trigger( 'change' ); }, onChangeIntegrationMode: function() { var self = trusted_shops.admin; $( document ).find( ':input[id$=_enable]' ).trigger( 'change' ); }, onChangeEnable: function() { self = trusted_shops.admin; self.showHideGroupElements( $( this ) ); }, showHideGroupElements: function( $parent ) { var id = $parent.attr( 'id' ), self = trusted_shops.admin, postfix = id.replace( 'woocommerce_' + self.optionPrefix + 'trusted_shops_', '' ), group = postfix.substr( 0, postfix.length - 7 ), // Support inputs and HTML fields $elements = $( ':input[id^=woocommerce_' + self.optionPrefix + 'trusted_shops_' + group + '_], th[id^=woocommerce_' + self.optionPrefix + 'trusted_shops_' + group + '_]' ), show = false; var exclude_hide_experts = [ 'woocommerce_' + self.optionPrefix + 'trusted_shops_rich_snippets_category', 'woocommerce_' + self.optionPrefix + 'trusted_shops_rich_snippets_product', 'woocommerce_' + self.optionPrefix + 'trusted_shops_rich_snippets_home' ]; if ( $parent.is( ':checked' ) ) { show = true; } $elements.each( function() { var elementId = $( this ).attr( 'id' ); var showElement = show; if ( 'woocommerce_' + self.optionPrefix + 'trusted_shops_' + group + '_enable' === elementId ) { return; } // Code blocks if ( 'woocommerce_' + self.optionPrefix + 'trusted_shops_' + group + '_code' === elementId || 'woocommerce_' + self.optionPrefix + 'trusted_shops_' + group + '_selector' === elementId ) { if ( ! self.isExpertMode() && showElement ) { showElement = false; } } else if( self.isExpertMode() ) { // Check if parent has code block var $parent = $( this ).parents( 'table.form-table' ); // Check if element is excluded from being hidden if ( $parent.find( ':input[id$=_code]' ).length > 0 ) { if ( $.inArray( elementId, exclude_hide_experts ) == -1 ) { showElement = false; } } } if ( showElement ) { $( this ).parents( 'tr' ).show(); } else { $( this ).parents( 'tr' ).hide(); } }); }, onSidebarTitelChange: function() { var $next = $( this ).nextAll( 'table.form-table:first' ); $next.find( 'tr:first' ).trigger( 'click' ); $sidebar = $( '.wc-ts-sidebar-active' ); $sidebar.offset( { top: $( this ).offset().top } ); }, onSidebarChange: function() { var $sidebar_elem = $( this ).find( '[data-sidebar]' ), $table = $( this ).parents( '.form-table' ), $current_sidebar = $( '.wc-ts-sidebar-active' ), $sidebar = $current_sidebar; if ( $sidebar_elem.length <= 0 ) { if ( $table.find( '[data-sidebar]' ).length > 0 ) { $sidebar_elem = $table.find( '[data-sidebar]:first' ); } } if ( $sidebar_elem.length <= 0 ) { $sidebar = $( '#wc-ts-sidebar-default' ); } else { $sidebar = $( '#' + $sidebar_elem.data( 'sidebar' ) ); } $current_sidebar.removeClass( 'wc-ts-sidebar-active' ); $sidebar.addClass( 'wc-ts-sidebar-active' ); $sidebar.offset( { top: $( this ).offset().top } ); }, getSettingsWrapper: function() { var self = trusted_shops.admin; var prefix = self.optionPrefix.replace( '_', '-' ); return $( '.wc-' + prefix + 'admin-settings' ); }, addNotice: function( type, texts ) { var self = trusted_shops.admin; self.getSettingsWrapper().find( '#message' ).remove(); self.getSettingsWrapper().prepend( '
' + texts.join( '
' ) + '