/** * Adds a flag to the widgets filtered by a language. * * @package Polylang */ jQuery( function ( $ ) { var widgets_container, widgets_selector, flags, isBlockEditor = 'undefined' !== typeof wp.blockEditor; if ( 'undefined' !== typeof pll_widgets && pll_widgets.hasOwnProperty( 'flags' ) ) { flags = pll_widgets.flags; } /** * Prepend widget titles with a flag once a language is selected. * * @param {object} widget The widget element. * @return {void} Nothing. */ function add_flag( widget ) { if ( ! flags ) { return; } widget = $( widget ); var title = isBlockEditor ? widget.prev('h3') : $( '.widget-top .widget-title h3', widget ), locale = $( '.pll-lang-choice option:selected', widget ).val(), // Icon is HTML built and come from server side and is well escaped when necessary icon = ( locale && flags.hasOwnProperty( locale ) ) ? flags[ locale ] : null; if ( icon ) { icon += '   '; var current = $( '.pll-lang', title ); if ( current.length ) { current.html( icon ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html } else { flag = $( '' ).addClass( 'pll-lang' ).html( icon ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html // See the comment above about the icon which is safe. So it is also safe to prepend flag which uses icon. title.prepend( flag ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.prepend } } else { $( '.pll-lang', title ).remove(); } } if ( isBlockEditor ) { widgets_container = $( '.edit-widgets-main-block-list' ); widgets_selector = '.widget'; // Update flags when we click on the legacy widget to display its form. widgets_container.on( 'click', '.wp-block-legacy-widget', function () { add_flag( $( this ).find( '.widget' ) ); } ); } else { if ( 'undefined' !== typeof wp.customize ) { widgets_container = $( '#customize-controls' ); widgets_selector = '.customize-control .widget'; /** * WP Customizer add control listener. * * @link https://wordpress.stackexchange.com/questions/256536/callback-after-wordpress-customizer-complete-loading * * @param {object} control The control type. * @return {void} Nothing. */ function customize_add_flag( control ) { if ( ! control.extended( wp.customize.Widgets.WidgetControl ) ) { return; } /* * Make sure the widget's contents are embedded; normally this is done * when the control is expanded, for DOM performance reasons. */ control.embedWidgetContent(); // Now we know for sure the widget is fully embedded. add_flag( control.container.find( '.widget' ) ); } wp.customize.control.each( customize_add_flag ); wp.customize.control.bind( 'add', customize_add_flag ); } else { widgets_container = $( '#widgets-right' ); widgets_selector = '.widget'; } // Add flags on load. $( widgets_selector, widgets_container ).each( function () { add_flag( this ); } ); } // Update flags. widgets_container.on( 'change', '.pll-lang-choice', function () { add_flag( $( this ).parents( '.widget' ) ); } ); function pll_toggle( a, test ) { test ? a.show() : a.hide(); } // Remove all options if dropdown is checked. $( '.widgets-sortables,.control-section-sidebar,.edit-widgets-main-block-list' ).on( 'change', '.pll-dropdown', function () { var this_id = $( this ).parent().parent().parent().children( '.widget-id' ).attr( 'value' ); pll_toggle( $( '.no-dropdown-' + this_id ), true != $( this ).prop( 'checked' ) ); } ); // Disallow unchecking both show names and show flags. var options = ['-show_flags', '-show_names']; $.each( options, function ( i, v ) { $( '.widgets-sortables,.control-section-sidebar,.edit-widgets-main-block-list' ).on( 'change', '.pll' + v, function () { var this_id = $( this ).parent().parent().parent().children( '.widget-id' ).attr( 'value' ); if ( true != $( this ).prop( 'checked' ) ) { $( '#widget-' + this_id + options[ 1 - i ] ).prop( 'checked', true ); } } ); } ); } ); Paul Boyd - Principal Consultant - Behind Every Cloud === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block.

Paul Boyd – Principal Consultant

Paul Boyd

Principal Consultant

Paul Boyd has 20 years’ experience consultatively selling technology to all sectors and across many different verticals. His track record includes senior roles in leading Solutions Integrators, Managed Service Providers and Consultancies, where he has acted diligently as the customer advocate whilst driving the growth and increased performance of the service provider.

Now sitting on the buyer side of technology procurement, of particular interest to Paul is the frequent discrepancy between what is sold and what ends up being experienced in-life. At BEC we spend a great deal of our time investigating vendors, understanding where and why they are strong, where they differentiate, what value they bring, how happy their clients are and what their best-fit client looks like. We do this to appreciate where they will be most effective, but also and crucially where they will not be.

With extensive market knowledge of telecoms and IT vendors and partners, Paul knows how to put the right people in conversation with each other based on the buyers’ needs and the sellers’ capabilities.

When not working Paul coaches youth football, loves walking or holidaying with a young teenage family and the dog; and if there’s any spare time after all that you’ll find him at the fishing lake!

Email Paul

Leave a Reply