From 3c82c8ef6c7510d2c527912bc6dfa0f5d4d54297 Mon Sep 17 00:00:00 2001 From: artpi Date: Thu, 20 Oct 2016 18:05:44 +0200 Subject: [PATCH 1/7] Add Google translate widget Widget that enables using google translate on your site --- modules/widgets/google-translate.js | 16 ++++++ modules/widgets/google-translate.php | 73 ++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 modules/widgets/google-translate.js create mode 100644 modules/widgets/google-translate.php diff --git a/modules/widgets/google-translate.js b/modules/widgets/google-translate.js new file mode 100644 index 0000000000000..76368d312f847 --- /dev/null +++ b/modules/widgets/google-translate.js @@ -0,0 +1,16 @@ +function googleTranslateElementInit() { + var lang = 'en'; + var langRegex = /[?&#]lang=([a-z]+)/; + if ( typeof _wp_google_translate_widget === 'object' && typeof _wp_google_translate_widget.lang === 'string' ) { + lang = _wp_google_translate_widget.lang; + } + var langParam = window.location.href.match( langRegex ); + if ( langParam ) { + window.location.href = window.location.href.replace( langRegex, '' ).replace( /#googtrans\([a-zA-Z|]+\)/, '' ) + '#googtrans(' + lang + '|' + langParam[ 1 ] + ')'; + } + var element = new google.translate.TranslateElement( { + pageLanguage: lang, + layout: google.translate.TranslateElement.InlineLayout.SIMPLE, + autoDisplay: false + }, "google_translate_element" ); +} diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php new file mode 100644 index 0000000000000..00b38b871c59a --- /dev/null +++ b/modules/widgets/google-translate.php @@ -0,0 +1,73 @@ + __( 'Automatic translation of your site content', 'jetpack' ), ) + ); + wp_register_script( 'google-translate-init', plugins_url( 'google-translate.js', __FILE__ ) ); + wp_register_script( 'google-translate', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', [ 'google-translate-init' ] ); + } + + public function widget( $args, $instance ) { + // We never should show more than 1 instance of this + if ( self::$instance === null ) { + $title = apply_filters( 'widget_title', $instance['title'] ); + echo $args['before_widget']; + if ( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } + wp_localize_script( 'google-translate-init', '_wp_google_translate_widget', array( lang => get_locale() ) ); + wp_enqueue_script( 'google-translate-init' ); + wp_enqueue_script( 'google-translate' ); + echo '
'; + echo $args['after_widget']; + self::$instance = $instance; + // Admin bar is also displayed on top of the site which causes google translate bar to hide beneath. + // This is a hack to show google translate bar a bit lower. + if ( is_admin_bar_showing() ) { + echo ''; + } + } + } + + public function form( $instance ) { + if ( isset( $instance[ 'title' ] ) ) { + $title = $instance[ 'title' ]; + } else { + $title = ''; + } + ?> +

+ + +

+ Date: Fri, 21 Oct 2016 11:22:13 +0200 Subject: [PATCH 2/7] Move js file to google-translate/google-translate.js --- modules/widgets/google-translate.php | 2 +- modules/widgets/{ => google-translate}/google-translate.js | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename modules/widgets/{ => google-translate}/google-translate.js (100%) diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php index 00b38b871c59a..1c99ab3f7b8f8 100644 --- a/modules/widgets/google-translate.php +++ b/modules/widgets/google-translate.php @@ -18,7 +18,7 @@ function __construct() { __( 'Google Translate (Jetpack)', 'jetpack' ), array( 'description' => __( 'Automatic translation of your site content', 'jetpack' ), ) ); - wp_register_script( 'google-translate-init', plugins_url( 'google-translate.js', __FILE__ ) ); + wp_register_script( 'google-translate-init', plugins_url( 'google-translate/google-translate.js', __FILE__ ) ); wp_register_script( 'google-translate', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', [ 'google-translate-init' ] ); } diff --git a/modules/widgets/google-translate.js b/modules/widgets/google-translate/google-translate.js similarity index 100% rename from modules/widgets/google-translate.js rename to modules/widgets/google-translate/google-translate.js From 5ebde717e9cf37ec9244f2505abe35e2f1ccb9ee Mon Sep 17 00:00:00 2001 From: artpi Date: Fri, 21 Oct 2016 11:25:08 +0200 Subject: [PATCH 3/7] Apply jetpack_widget_name filter to widget title --- modules/widgets/google-translate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php index 1c99ab3f7b8f8..6ed462867728f 100644 --- a/modules/widgets/google-translate.php +++ b/modules/widgets/google-translate.php @@ -15,7 +15,7 @@ class Google_Translate_Widget extends WP_Widget { function __construct() { parent::__construct( 'google_translate_widget', - __( 'Google Translate (Jetpack)', 'jetpack' ), + apply_filters( 'jetpack_widget_name', __( 'Google Translate', 'jetpack' ) ), array( 'description' => __( 'Automatic translation of your site content', 'jetpack' ), ) ); wp_register_script( 'google-translate-init', plugins_url( 'google-translate/google-translate.js', __FILE__ ) ); From af6d128c79dba3db8b242a67c1e7edbf30364aa2 Mon Sep 17 00:00:00 2001 From: Jeremy Herve Date: Fri, 21 Oct 2016 12:24:28 +0200 Subject: [PATCH 4/7] Google Translate Widget: coding standard changes. - Add / update comments and docblocks. - Use Yoda conditions. - Remve trailing whitespace. - only lowercase in function names. --- modules/widgets/google-translate.php | 79 +++++++++++++++++++--------- 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php index 6ed462867728f..c6f75e3738ae8 100644 --- a/modules/widgets/google-translate.php +++ b/modules/widgets/google-translate.php @@ -1,34 +1,46 @@ __( 'Automatic translation of your site content', 'jetpack' ), ) + array( 'description' => __( 'Automatic translation of your site content', 'jetpack' ) ) ); wp_register_script( 'google-translate-init', plugins_url( 'google-translate/google-translate.js', __FILE__ ) ); wp_register_script( 'google-translate', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', [ 'google-translate-init' ] ); } + /** + * Display the Widget. + * + * @see WP_Widget::widget() + * + * @param array $args Display arguments. + * @param array $instance The settings for the particular instance of the widget. + */ public function widget( $args, $instance ) { - // We never should show more than 1 instance of this - if ( self::$instance === null ) { + // We never should show more than 1 instance of this. + if ( null === self::$instance ) { + /** This filter is documented in core/src/wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', $instance['title'] ); echo $args['before_widget']; if ( ! empty( $title ) ) { - echo $args['before_title'] . $title . $args['after_title']; + echo $args['before_title'] . esc_html( $title ) . $args['after_title']; } wp_localize_script( 'google-translate-init', '_wp_google_translate_widget', array( lang => get_locale() ) ); wp_enqueue_script( 'google-translate-init' ); @@ -43,31 +55,50 @@ public function widget( $args, $instance ) { } } } - + + /** + * Widget form in the dashboard. + * + * @see WP_Widget::form() + * + * @param array $instance Previously saved values from database. + */ public function form( $instance ) { - if ( isset( $instance[ 'title' ] ) ) { - $title = $instance[ 'title' ]; + if ( isset( $instance['title'] ) ) { + $title = $instance['title']; } else { $title = ''; } ?>

- +

- Widgets. + */ +function jetpack_google_translate_widget_init() { register_widget( 'Google_Translate_Widget' ); } -add_action( 'widgets_init', 'load_Google_translate_widget' ); - +add_action( 'widgets_init', 'jetpack_google_translate_widget_init' ); From 10b8e368c95e56956c24f4f9d97afda3e62e8ea8 Mon Sep 17 00:00:00 2001 From: artpi Date: Mon, 24 Oct 2016 10:55:45 -0500 Subject: [PATCH 5/7] JShint style fixes --- .../google-translate/google-translate.js | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/modules/widgets/google-translate/google-translate.js b/modules/widgets/google-translate/google-translate.js index 76368d312f847..a192979ae818e 100644 --- a/modules/widgets/google-translate/google-translate.js +++ b/modules/widgets/google-translate/google-translate.js @@ -1,16 +1,20 @@ +/*global google:true*/ +/*global _wp_google_translate_widget:true*/ +/*exported googleTranslateElementInit*/ function googleTranslateElementInit() { - var lang = 'en'; - var langRegex = /[?&#]lang=([a-z]+)/; - if ( typeof _wp_google_translate_widget === 'object' && typeof _wp_google_translate_widget.lang === 'string' ) { - lang = _wp_google_translate_widget.lang; - } - var langParam = window.location.href.match( langRegex ); - if ( langParam ) { - window.location.href = window.location.href.replace( langRegex, '' ).replace( /#googtrans\([a-zA-Z|]+\)/, '' ) + '#googtrans(' + lang + '|' + langParam[ 1 ] + ')'; - } - var element = new google.translate.TranslateElement( { - pageLanguage: lang, - layout: google.translate.TranslateElement.InlineLayout.SIMPLE, - autoDisplay: false - }, "google_translate_element" ); + var lang = 'en'; + var langParam; + var langRegex = /[?&#]lang=([a-z]+)/; + if ( typeof _wp_google_translate_widget === 'object' && typeof _wp_google_translate_widget.lang === 'string' ) { + lang = _wp_google_translate_widget.lang; + } + langParam = window.location.href.match( langRegex ); + if ( langParam ) { + window.location.href = window.location.href.replace( langRegex, '' ).replace( /#googtrans\([a-zA-Z|]+\)/, '' ) + '#googtrans(' + lang + '|' + langParam[ 1 ] + ')'; + } + new google.translate.TranslateElement( { + pageLanguage: lang, + layout: google.translate.TranslateElement.InlineLayout.SIMPLE, + autoDisplay: false + }, 'google_translate_element' ); } From 8a2eb9056cb618f70adbce1b3c7539a85791049c Mon Sep 17 00:00:00 2001 From: artpi Date: Mon, 24 Oct 2016 11:05:54 -0500 Subject: [PATCH 6/7] Fix undefined index lang I forgot to put quotes around array key before --- modules/widgets/google-translate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php index c6f75e3738ae8..cbc747c2648ba 100644 --- a/modules/widgets/google-translate.php +++ b/modules/widgets/google-translate.php @@ -42,7 +42,7 @@ public function widget( $args, $instance ) { if ( ! empty( $title ) ) { echo $args['before_title'] . esc_html( $title ) . $args['after_title']; } - wp_localize_script( 'google-translate-init', '_wp_google_translate_widget', array( lang => get_locale() ) ); + wp_localize_script( 'google-translate-init', '_wp_google_translate_widget', array( 'lang' => get_locale() ) ); wp_enqueue_script( 'google-translate-init' ); wp_enqueue_script( 'google-translate' ); echo '
'; From 7e0368e98bfabdb37ee9480e05c17072f5510532 Mon Sep 17 00:00:00 2001 From: artpi Date: Mon, 24 Oct 2016 11:33:19 -0500 Subject: [PATCH 7/7] Fix more code styling issues --- modules/widgets/google-translate.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/widgets/google-translate.php b/modules/widgets/google-translate.php index cbc747c2648ba..d56d0859caaba 100644 --- a/modules/widgets/google-translate.php +++ b/modules/widgets/google-translate.php @@ -8,6 +8,7 @@ * Author URI: http://automattic.com * Text Domain: jetpack */ + class Google_Translate_Widget extends WP_Widget { static $instance = null; @@ -71,8 +72,8 @@ public function form( $instance ) { } ?>

- - + +