PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.1.2
Jetpack – WP Security, Backup, Speed, & Growth v15.1.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 1 year ago contact-info 1 year ago eu-cookie-law 1 year ago facebook-likebox 11 years ago flickr 1 year ago gallery 1 year ago goodreads 1 year ago google-translate 1 year ago image-widget 1 year ago instagram 1 year ago internet-defense-league 2 years ago milestone 1 year ago my-community 1 year ago social-icons 1 year ago social-media-icons 1 year ago top-posts 1 year ago wordpress-post-widget 11 months ago authors.php 1 year ago blog-stats.php 1 year ago class-jetpack-eu-cookie-law-widget.php 10 months ago class-jetpack-instagram-widget.php 1 year ago contact-info.php 1 year ago customizer-controls.css 1 year ago customizer-utils.js 1 year ago facebook-likebox.php 1 year ago flickr.php 1 year ago gallery.php 1 year ago goodreads.php 11 months 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 1 year ago mailchimp.php 1 year ago milestone.php 1 year ago my-community.php 1 year ago rsslinks-widget.php 1 year 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 1 year ago upcoming-events.php 1 year ago wordpress-post-widget.php 1 year ago
google-translate.php
227 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 * @return string|void
186 */
187 public function form( $instance ) {
188 $title = isset( $instance['title'] ) ? $instance['title'] : false;
189 if ( false === $title ) {
190 $title = $this->default_title;
191 }
192 ?>
193 <p>
194 <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title:', 'jetpack' ); ?></label>
195 <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 ); ?>" />
196 </p>
197 <?php
198 }
199
200 /**
201 * Sanitize widget form values as they are saved.
202 *
203 * @see WP_Widget::update()
204 *
205 * @param array $new_instance Values just sent to be saved.
206 * @param array $old_instance Previously saved values from database.
207 *
208 * @return array $instance Updated safe values to be saved.
209 */
210 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
211 $instance = array();
212 $instance['title'] = wp_kses( $new_instance['title'], array() );
213 if ( $instance['title'] === $this->default_title ) {
214 $instance['title'] = false; // Store as false in case of language change.
215 }
216 return $instance;
217 }
218 }
219
220 /**
221 * Register the widget for use in Appearance -> Widgets.
222 */
223 function jetpack_google_translate_widget_init() {
224 register_widget( 'Jetpack_Google_Translate_Widget' );
225 }
226 add_action( 'widgets_init', 'jetpack_google_translate_widget_init' );
227