PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 7 months ago contact-info 7 months ago eu-cookie-law 7 months ago facebook-likebox 11 years ago flickr 7 months ago gallery 7 months ago goodreads 7 months ago google-translate 1 year ago image-widget 7 months ago instagram 4 months ago internet-defense-league 1 year ago milestone 4 months ago my-community 7 months ago social-icons 4 months ago social-media-icons 7 months ago top-posts 7 months ago wordpress-post-widget 2 weeks ago authors.php 7 months ago blog-stats.php 7 months ago class-jetpack-eu-cookie-law-widget.php 1 month ago class-jetpack-instagram-widget.php 6 months ago contact-info.php 1 month ago customizer-controls.css 7 months ago customizer-utils.js 1 year ago facebook-likebox.php 1 month ago flickr.php 7 months ago gallery.php 1 month ago goodreads.php 1 month ago google-translate.php 1 month ago gravatar-profile.css 7 months ago gravatar-profile.php 1 month ago image-widget.php 7 months ago internet-defense-league.php 7 months ago mailchimp.php 7 months ago milestone.php 7 months ago my-community.php 1 month ago rsslinks-widget.php 2 weeks ago simple-payments.php 7 months ago social-icons.php 1 month ago social-media-icons.php 7 months ago top-posts.php 1 month ago twitter-timeline-admin.js 1 year ago twitter-timeline.php 2 weeks ago upcoming-events.php 7 months ago wordpress-post-widget.php 7 months 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' => $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 = $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