PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.4.2
Jetpack – WP Security, Backup, Speed, & Growth v14.4.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / widgets / google-translate.php
jetpack / modules / widgets Last commit date
authors 8 years ago contact-info 5 years ago eu-cookie-law 1 year ago facebook-likebox 11 years ago flickr 2 years ago gallery 1 year ago goodreads 2 years ago google-translate 1 year ago image-widget 8 years ago instagram 6 years ago internet-defense-league 2 years ago milestone 1 year ago my-community 8 years ago simple-payments 1 year ago social-icons 1 year ago social-media-icons 5 years ago top-posts 8 years ago wordpress-post-widget 2 years ago authors.php 1 year ago blog-stats.php 1 year ago class-jetpack-eu-cookie-law-widget.php 1 year ago class-jetpack-instagram-widget.php 1 year ago contact-info.php 1 year ago customizer-controls.css 9 years ago customizer-utils.js 1 year ago facebook-likebox.php 2 years ago flickr.php 1 year ago gallery.php 1 year ago goodreads.php 1 year ago google-translate.php 1 year ago gravatar-profile.css 1 year ago gravatar-profile.php 1 year ago image-widget.php 1 year ago internet-defense-league.php 3 years ago mailchimp.php 3 years ago milestone.php 5 years ago my-community.php 1 year ago rsslinks-widget.php 3 years ago simple-payments.php 1 year ago social-icons.php 1 year ago social-media-icons.php 1 year ago top-posts.php 1 year ago twitter-timeline-admin.js 1 year ago twitter-timeline.php 3 years ago upcoming-events.php 2 years ago wordpress-post-widget.php 1 year ago
google-translate.php
226 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Plugin Name: Google Translate Widget for WordPress.com
4 * Plugin URI: https://automattic.com
5 * Description: Add a widget for automatic translation
6 * Author: Artur Piszek
7 * Version: 0.1
8 * Author URI: https://automattic.com
9 * Text Domain: jetpack
10 */
11
12 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
13
14 use Automattic\Jetpack\Assets;
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit( 0 );
18 }
19
20 /**
21 * Jetpack_Google_Translate_Widget main class.
22 */
23 class Jetpack_Google_Translate_Widget extends WP_Widget {
24 /**
25 * Singleton instance of the widget, not to show more than once.
26 *
27 * @var array
28 */
29 public static $instance = null;
30
31 /**
32 * Default widget title.
33 *
34 * @var string $default_title
35 */
36 public $default_title;
37
38 /**
39 * Register widget with WordPress.
40 */
41 public function __construct() {
42 parent::__construct(
43 'google_translate_widget',
44 /** This filter is documented in modules/widgets/facebook-likebox.php */
45 apply_filters( 'jetpack_widget_name', __( 'Google Translate', 'jetpack' ) ),
46 array(
47 'description' => __( 'Provide your readers with the option to translate your site into their preferred language.', 'jetpack' ),
48 'customize_selective_refresh' => true,
49 )
50 );
51 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
52
53 $this->default_title = esc_html__( 'Translate', 'jetpack' );
54 }
55
56 /**
57 * Enqueue frontend JS scripts.
58 */
59 public function enqueue_scripts() {
60 wp_register_script(
61 'google-translate-init',
62 Assets::get_file_url_for_environment(
63 '_inc/build/widgets/google-translate/google-translate.min.js',
64 'modules/widgets/google-translate/google-translate.js'
65 ),
66 array(),
67 JETPACK__VERSION,
68 false
69 );
70 wp_register_script(
71 'google-translate',
72 '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit',
73 array( 'google-translate-init' ),
74 JETPACK__VERSION,
75 false
76 );
77 // Admin bar is also displayed on top of the site which causes google translate bar to hide beneath.
78 // Overwrite position of body.admin-bar
79 // This is a hack to show google translate bar a bit lower.
80 $lower_translate_bar = '
81 .admin-bar {
82 position: inherit !important;
83 top: auto !important;
84 }
85 .admin-bar .goog-te-banner-frame {
86 top: 32px !important
87 }
88 @media screen and (max-width: 782px) {
89 .admin-bar .goog-te-banner-frame {
90 top: 46px !important;
91 }
92 }
93 @media screen and (max-width: 480px) {
94 .admin-bar .goog-te-banner-frame {
95 position: absolute;
96 }
97 }
98 ';
99 wp_add_inline_style( 'admin-bar', $lower_translate_bar );
100 wp_add_inline_style( 'wpcom-admin-bar', $lower_translate_bar );
101 }
102
103 /**
104 * Display the Widget.
105 *
106 * @see WP_Widget::widget()
107 *
108 * @param array $args Display arguments.
109 * @param array $instance The settings for the particular instance of the widget.
110 */
111 public function widget( $args, $instance ) {
112 // We never should show more than 1 instance of this.
113 if ( null === self::$instance ) {
114 $instance = wp_parse_args(
115 $instance,
116 array(
117 'title' => $this->default_title,
118 )
119 );
120
121 /**
122 * Filter the layout of the Google Translate Widget.
123 *
124 * 3 different integers are accepted.
125 * 0 for the vertical layout.
126 * 1 for the horizontal layout.
127 * 2 for the dropdown only.
128 *
129 * @see https://translate.google.com/manager/website/
130 *
131 * @module widgets
132 *
133 * @since 5.5.0
134 *
135 * @param string $layout layout of the Google Translate Widget.
136 */
137 $button_layout = apply_filters( 'jetpack_google_translate_widget_layout', 0 );
138
139 if (
140 ! is_int( $button_layout )
141 || 0 > $button_layout
142 || 2 < $button_layout
143 ) {
144 $button_layout = 0;
145 }
146
147 wp_localize_script(
148 'google-translate-init',
149 '_wp_google_translate_widget',
150 array(
151 'lang' => get_locale(),
152 'layout' => (int) $button_layout,
153 )
154 );
155 wp_enqueue_script( 'google-translate-init' );
156 wp_enqueue_script( 'google-translate' );
157
158 $title = $instance['title'];
159
160 if ( ! isset( $title ) ) {
161 $title = $this->default_title;
162 }
163
164 /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
165 $title = apply_filters( 'widget_title', $title );
166
167 echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
168 if ( ! empty( $title ) ) {
169 echo $args['before_title'] . $title . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
170 }
171 echo '<div id="google_translate_element"></div>';
172 echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
173 self::$instance = $instance;
174 /** This action is documented in modules/widgets/gravatar-profile.php */
175 do_action( 'jetpack_stats_extra', 'widget_view', 'google-translate' );
176 }
177 }
178
179 /**
180 * Widget form in the dashboard.
181 *
182 * @see WP_Widget::form()
183 *
184 * @param array $instance Previously saved values from database.
185 */
186 public function form( $instance ) {
187 $title = isset( $instance['title'] ) ? $instance['title'] : false;
188 if ( false === $title ) {
189 $title = $this->default_title;
190 }
191 ?>
192 <p>
193 <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title:', 'jetpack' ); ?></label>
194 <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
195 </p>
196 <?php
197 }
198
199 /**
200 * Sanitize widget form values as they are saved.
201 *
202 * @see WP_Widget::update()
203 *
204 * @param array $new_instance Values just sent to be saved.
205 * @param array $old_instance Previously saved values from database.
206 *
207 * @return array $instance Updated safe values to be saved.
208 */
209 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
210 $instance = array();
211 $instance['title'] = wp_kses( $new_instance['title'], array() );
212 if ( $instance['title'] === $this->default_title ) {
213 $instance['title'] = false; // Store as false in case of language change.
214 }
215 return $instance;
216 }
217 }
218
219 /**
220 * Register the widget for use in Appearance -> Widgets.
221 */
222 function jetpack_google_translate_widget_init() {
223 register_widget( 'Jetpack_Google_Translate_Widget' );
224 }
225 add_action( 'widgets_init', 'jetpack_google_translate_widget_init' );
226