jQuery( function($){ WCML_Currency_Switcher_Settings = { _currency_languages_saving : 0, init: function(){ $(document).ready( function(){ $(document).on('change','#currency_switcher_style', WCML_Currency_Switcher_Settings.update_currency_switcher_style); $(document).on('click','.currency_switcher_save', WCML_Currency_Switcher_Settings.save_currency_switcher_settings); $(document).on('click','.delete_currency_switcher', WCML_Currency_Switcher_Settings.delete_currency_switcher); $(document).on('change','.js-wcml-cs-colorpicker-preset', WCML_Currency_Switcher_Settings.set_currency_switcher_color_pre_set ); $(document).on('keyup','input[name="wcml_curr_template"]', WCML_Currency_Switcher_Settings.setup_currency_switcher_template_keyup); $(document).on('change','input[name="wcml_curr_template"]', WCML_Currency_Switcher_Settings.setup_currency_switcher_template_change); WCML_Currency_Switcher_Settings.open_dialog_from_hash(); } ); }, initColorPicker : function() { $('.wcml-ui-dialog .js-wcml-cs-panel-colors').find('.js-wcml-cs-colorpicker').wpColorPicker({ change: function(e){ var dialog = $( this ).closest( '.wcml-ui-dialog' ); WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog ); }, clear: function(e){ var dialog = $( this ).closest( '.wcml-ui-dialog' ); WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog ); } }); }, save_currency_switcher_settings: function(){ var dialog = $( this ).closest( '.wcml-ui-dialog' ); var ajaxLoader = $(''); var widget_name = dialog.find('#wcml-cs-widget option:selected').text(); var switcher_id = dialog.find('#wcml_currencies_switcher_id').val(); var widget_id = dialog.find('#wcml-cs-widget').val(); var widget_title = dialog.find('input[name="wcml_cs_widget_title"]').val(); var switcher_style = dialog.find('#currency_switcher_style').val(); ajaxLoader.show(); $(this).parent().append(ajaxLoader); dialog.find(':submit,:button').prop('disabled', true); var template = dialog.find('input[name="wcml_curr_template"]').val(); if(!template){ template = dialog.find('#currency_switcher_default').val(); } var color_scheme = {}; dialog.find('input.js-wcml-cs-colorpicker').each( function(){ color_scheme[ $(this).attr('name') ] = $(this).val(); }); $.ajax({ type: 'POST', dataType: 'json', url: ajaxurl, data: { action: 'wcml_currencies_switcher_save_settings', wcml_nonce: dialog.find('#wcml_currencies_switcher_save_settings_nonce').val(), switcher_id: switcher_id, widget_id: widget_id, widget_title: widget_title, switcher_style: switcher_style, template: template, color_scheme: color_scheme }, success: function(e) { dialog.find('.ui-dialog-titlebar-close').trigger('click'); if( typeof widget_id == 'undefined' ){ widget_id = switcher_id; } $('#wcml_currency_switcher_options_form_new_widget #wcml-cs-widget option').each( function(){ if( $(this).val() == widget_id ){ $(this).remove(); } }); if( $('#wcml_currency_switcher_options_form_new_widget #wcml-cs-widget option').length == 0 ){ $('.wcml_add_cs_sidebar').fadeOut(); } if( $('#currency-switcher-widget .wcml-cs-list').find('thead tr').is(':hidden') ){ $('#currency-switcher-widget .wcml-cs-list').find('thead tr').fadeIn(); } if( $('.wcml-currency-preview.' + widget_id ).length == 0 ){ var widget_row = $('.wcml-cs-empty-row').clone(); widget_row.removeClass('wcml-cs-empty-row'); widget_row.find('.wcml-currency-preview').addClass(widget_id); widget_row.find('.wcml-cs-widget-name').html( widget_name ); widget_row.find('.edit_currency_switcher').attr('data-switcher', widget_id ); widget_row.find('.edit_currency_switcher').attr('data-dialog', 'wcml_currency_switcher_options_' + widget_id ); widget_row.find('.edit_currency_switcher').attr('data-content', 'wcml_currency_switcher_options_' + widget_id ); widget_row.find('.delete_currency_switcher').attr('data-switcher', widget_id ); widget_row.show(); $('.wcml-cs-list').find('tr.wcml-cs-empty-row').before( widget_row ); if( $('.wcml-cs-list').is(':hidden') ){ $('.wcml-cs-list').fadeIn(); } } $('#wcml_currency_switcher_options_' + widget_id).remove(); dialog.find('.wcml-dialog-container').attr('id','wcml-dialog-wcml_currency_switcher_options_'+ widget_id ); dialog.find(':submit,:button').prop('disabled', false); dialog.find('#wcml_currencies_switcher_id').val( widget_id ); ajaxLoader.remove(); WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog, true ); } }); return false; }, delete_currency_switcher: function(e){ e.preventDefault(); var switcher_id = $(this).data( 'switcher' ); var switcher_row = $(this).closest('tr'); var ajaxLoader = $(''); $(this).parent().html( ajaxLoader ); $.ajax({ type: 'POST', dataType: 'json', url: ajaxurl, data: { action: 'wcml_delete_currency_switcher', wcml_nonce: $('#wcml_delete_currency_switcher_nonce').val(), switcher_id: switcher_id }, success: function(e){ var sidebar_name = switcher_row.find('.wcml-cs-widget-name').html(); $('#wcml_currency_switcher_options_form_new_widget #wcml-cs-widget').append( ''); switcher_row.remove(); if( $('#currency-switcher-widget .wcml-cs-list').find('tbody tr').length == 1 ){ $('#currency-switcher-widget .wcml-cs-list').find('thead tr').fadeOut(); } if( $('.wcml_add_cs_sidebar').is(':hidden') ){ $('.wcml_add_cs_sidebar').fadeIn(); } } }); }, currency_switcher_preview: _.debounce( function ( dialog, update_settings ){ var template = dialog.find('input[name="wcml_curr_template"]').val(); if(!template){ template = dialog.find('#currency_switcher_default').val(); } var ajaxLoader = $(''); dialog.find('#wcml_curr_sel_preview_wrap').append(ajaxLoader); var color_scheme = {}; dialog.find('input.js-wcml-cs-colorpicker').each( function(){ color_scheme[ $(this).attr('name') ] = $(this).val(); }); var switcher_id = dialog.find('#wcml_currencies_switcher_id').val(); var switcher_style = dialog.find('#currency_switcher_style').val(); $.ajax({ type: "POST", url: ajaxurl, dataType: 'json', data: { action: 'wcml_currencies_switcher_preview', wcml_nonce: dialog.find('#wcml_currencies_switcher_preview_nonce').val(), switcher_id: switcher_id, switcher_style: switcher_style, template: template, color_scheme: color_scheme }, success: function(resp){ if( resp.success ) { resp = resp.data; if( $( '#'+resp.inline_styles_id).length == 0 ){ $('head').append( '' ); }else{ $( '#'+resp.inline_styles_id).html( resp.inline_css ); } ajaxLoader.remove(); if( update_settings ){ if( switcher_id == 'new_widget'){ switcher_id = dialog.find('#wcml-cs-widget').val(); } $('.wcml-currency-preview.'+switcher_id).html(resp.preview); }else{ dialog.find('.wcml-currency-preview').html(resp.preview); } if( switcher_style == 'wcml-dropdown-click' ){ WCMLCurrecnySwitcherDropdownClick.init(); } } } }); }, 500), set_currency_switcher_color_pre_set: function (){ var color_sheme = $(this).val(); var dialog = $( this ).closest( '.wcml-ui-dialog' ); if( settings.pre_selected_colors[color_sheme] != 'undefined' ){ var selected_scheme = settings.pre_selected_colors[color_sheme]; var color; for ( color in selected_scheme ) { $('.wcml-ui-dialog input[name="'+color+'"]').val( selected_scheme[ color ] ); $('.wcml-ui-dialog input[name="'+color+'"]').closest('.wp-picker-container').find('.wp-color-result').css( 'background-color', selected_scheme[color] ); } } WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog ); }, update_currency_switcher_style: function(e){ var dialog = $( this ).closest( '.wcml-ui-dialog' ); WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog ); }, setup_currency_switcher_template_keyup: function(e){ var dialog = $( this ).closest( '.wcml-ui-dialog' ); discard = true; $(this).closest('.wcml-section').find('.button-wrap input').css("border-color","#1e8cbe"); WCML_Currency_Switcher_Settings.currency_switcher_preview( dialog ); }, setup_currency_switcher_template_change: function(e){ if(!$(this).val()){ $(this).val($('#currency_switcher_default').val()) } }, open_dialog_from_hash: function(){ var hashParts = window.location.hash.substring(1).split('/'), type = hashParts[0] || '', slug = hashParts[1] || ''; if ( type == 'currency-switcher' ) { $('.edit_currency_switcher[data-switcher="'+slug+'"]').trigger('click'); parent.location.hash = ''; } } } WCML_Currency_Switcher_Settings.init(); } );