jQuery( document ).ready(function( $ ) { var transitionTimeout; // languages list table // accessibility to row actions on focus // mainly copy paste of WP code from common.js $( 'table.languages' ).on({ // restricted to languages list table focusin: function() { clearTimeout( transitionTimeout ); focusedRowActions = $( this ).find( '.row-actions' ); // transitionTimeout is necessary for Firefox, but Chrome won't remove the CSS class without a little help. $( '.row-actions' ).not( this ).removeClass( 'visible' ); focusedRowActions.addClass( 'visible' ); }, focusout: function() { // Tabbing between post title and .row-actions links needs a brief pause, otherwise // the .row-actions div gets hidden in transit in some browsers ( ahem, Firefox ). transitionTimeout = setTimeout(function() { focusedRowActions.removeClass( 'visible' ); }, 30 ); } }, 'tr' ); // acts on the whole tr instead of single td as we have actions links in several columns // extends selectmenu to add flags in menu items $.widget( "custom.iconselectmenu", $.ui.selectmenu, { _renderItem: function( ul, item ) { var li = $( "
  • ", { text: item.label } ); if ( item.value ) { $( "", { src: pll_flag_base_url + item.value + '.png', "class": "ui-icon" }).appendTo( li ); } return li.appendTo( ul ); } }); // allows to display the flag for the selected menu item function add_icon( event, ui ) { var value = $( this ).val(); if ( value ) { var txt = $( this ).iconselectmenu( "widget" ).children( ":last" ); var img = $( '' ).appendTo( txt ); img.attr( "src", pll_flag_base_url + value + '.png' ); } } // overrides the flag dropdown list with our customized jquery ui selectmenu $( "#flag_list" ).iconselectmenu({ create: add_icon, select: add_icon, }); // languages form // fills the fields based on the language dropdown list choice $( '#lang_list' ).change(function() { var value = $( this ).val().split( ':' ); var selected = $( "select option:selected" ).text().split( ' - ' ); $( '#lang_slug' ).val( value[0] ); $( '#lang_locale' ).val( value[1] ); $( 'input[name="rtl"]' ).val( [value[2]] ); $( '#lang_name' ).val( selected[0] ); $( '#flag_list option[value="' + value[3] + '"]' ).attr( 'selected', 'selected' ); // recreate the jquery ui selectmenu $( "#flag_list" ).iconselectmenu( 'destroy' ).iconselectmenu({ create: add_icon, select: add_icon, }) }); // strings translations // save translations when pressing enter $( '.translation input' ).keypress(function( event ){ if ( 13 === event.keyCode ) { event.preventDefault(); $( '#submit' ).click(); } }); // settings page // click on configure link $( '#the-list' ).on( 'click', '.configure>a', function(){ $( '.pll-configure' ).hide().prev().show(); $( this ).closest( 'tr' ).hide().next().show(); return false; }); // cancel $( '#the-list' ).on( 'click', '.cancel', function(){ $( this ).closest( 'tr' ).hide().prev().show(); }); // save settings $( '#the-list' ).on( 'click', '.save', function(){ var tr = $( this ).closest( 'tr' ); var parts = tr.attr( 'id' ).split( '-' ); var data = { action: 'pll_save_options', pll_ajax_settings: true, module: parts[parts.length - 1], _pll_nonce: $( '#_pll_nonce' ).val() } data = tr.find( ':input' ).serialize() + '&' + $.param( data ); $.post( ajaxurl, data, function( response ) { var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); $.each( res.responses, function() { switch ( this.what ) { case 'license-update': $( '#pll-license-' + this.data ).replaceWith( this.supplemental.html ); break; case 'success': tr.hide().prev().show(); // close only if there is no error case 'error': $( '.settings-error' ).remove(); // remove previous messages if any $( '.nav-tab-wrapper' ).after( this.data ); // Make notices dismissible // copy paste of common.js from WP 4.2.2 $( '.notice.is-dismissible' ).each(function() { var $this = $( this ), $button = $( '' ), btnText = commonL10n.dismiss || ''; // Ensure plain text $button.find( '.screen-reader-text' ).text( btnText ); $this.append( $button ); $button.on( 'click.wp-dismiss-notice', function( event ) { event.preventDefault(); $this.fadeTo( 100 , 0, function() { $( this ).slideUp( 100, function() { $( this ).remove(); }); }); }); }); break; } }); }); }); // act when pressing enter or esc in configurations $( '.pll-configure' ).keypress(function( event ){ if ( 13 === event.keyCode ) { event.preventDefault(); $( this ).find( '.save' ).click(); } if ( 27 === event.keyCode ) { event.preventDefault(); $( this ).find( '.cancel' ).click(); } }); // settings URL modifications // manages visibility of fields $( "input[name='force_lang']" ).change(function() { function pll_toggle( a, test ) { test ? a.show() : a.hide(); } var value = $( this ).val(); pll_toggle( $( '#pll-domains-table' ), 3 == value ); pll_toggle( $( "#pll-hide-default" ), 3 > value ); pll_toggle( $( "#pll-rewrite" ), 2 > value ); }); // settings license // deactivate button $( '.pll-deactivate-license' ).on( 'click', function() { var data = { action: 'pll_deactivate_license', pll_ajax_settings: true, id: $( this ).attr( 'id' ), _pll_nonce: $( '#_pll_nonce' ).val() } $.post( ajaxurl, data , function( response ){ $( '#pll-license-' + response.id ).replaceWith( response.html ); }); }); });