PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.5.1
Jetpack – WP Security, Backup, Speed, & Growth v14.5.1
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 / gallery.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 1 year ago upcoming-events.php 2 years ago wordpress-post-widget.php 1 year ago
gallery.php
522 lines
1 <?php // phpcs:ignore eWordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Module Name: Gallery widget
4 *
5 * @package automattic/jetpack
6 */
7
8 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
9
10 use Automattic\Jetpack\Assets;
11 use Automattic\Jetpack\Image_CDN\Image_CDN_Core;
12
13 /**
14 * Jetpack_Gallery_Widget main class.
15 */
16 class Jetpack_Gallery_Widget extends WP_Widget {
17 const THUMB_SIZE = 45;
18 const DEFAULT_WIDTH = 265;
19
20 /**
21 * The width of the gallery widget.
22 * May be customized by the 'gallery_widget_content_width' filter.
23 *
24 * @var int
25 */
26 protected $instance_width;
27
28 /**
29 * Jetpack_Gallery_Widget constructor.
30 */
31 public function __construct() {
32 $widget_ops = array(
33 'classname' => 'widget-gallery',
34 'description' => __( 'Display a photo gallery or slideshow', 'jetpack' ),
35 'customize_selective_refresh' => true,
36 );
37
38 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
39
40 parent::__construct(
41 'gallery',
42 /** This filter is documented in modules/widgets/facebook-likebox.php */
43 apply_filters( 'jetpack_widget_name', __( 'Gallery', 'jetpack' ) ),
44 $widget_ops
45 );
46
47 if ( is_customize_preview() ) {
48 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_scripts' ) );
49
50 if ( class_exists( 'Jetpack_Tiled_Gallery' ) ) {
51 add_action( 'wp_enqueue_scripts', array( 'Jetpack_Tiled_Gallery', 'default_scripts_and_styles' ) );
52 }
53
54 if ( class_exists( 'Jetpack_Slideshow_Shortcode' ) ) {
55 $slideshow = new Jetpack_Slideshow_Shortcode();
56 add_action( 'wp_enqueue_scripts', array( $slideshow, 'enqueue_scripts' ) );
57 }
58
59 if ( class_exists( 'Jetpack_Carousel' ) ) {
60 $carousel = new Jetpack_Carousel();
61 add_action( 'wp_enqueue_scripts', array( $carousel, 'enqueue_assets' ) );
62 }
63 }
64 }
65
66 /**
67 * Display the widget.
68 *
69 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
70 * @param array $instance The settings for the particular instance of the widget.
71 */
72 public function widget( $args, $instance ) {
73 $instance = wp_parse_args( (array) $instance, $this->defaults() );
74
75 $this->enqueue_frontend_scripts();
76
77 $before_widget = isset( $args['before_widget'] ) ? $args['before_widget'] : '';
78 $before_title = isset( $args['before_title'] ) ? $args['before_title'] : '';
79 $after_title = isset( $args['after_title'] ) ? $args['after_title'] : '';
80 $after_widget = isset( $args['after_widget'] ) ? $args['after_widget'] : '';
81
82 $instance['attachments'] = $this->get_attachments( $instance );
83
84 $classes = array();
85
86 $classes[] = 'widget-gallery-' . $instance['type'];
87
88 /*
89 * Due to a bug in the carousel plugin,
90 * carousels will be triggered for all tiled galleries that exist on a page with other tiled galleries,
91 * regardless of whether or not the widget was set to Carousel mode.
92 * The onClick selector is simply too broad, since it was not written with widgets in mind.
93 * This special class prevents that behavior, via an override handler in gallery.js.
94 */
95 if ( 'carousel' !== $instance['link'] && 'slideshow' !== $instance['type'] ) {
96 $classes[] = 'no-carousel';
97 } else {
98 $classes[] = 'carousel';
99 }
100
101 $classes = implode( ' ', $classes );
102
103 if ( 'carousel' === $instance['link'] ) {
104 require_once plugin_dir_path( realpath( __DIR__ . '/../carousel/jetpack-carousel.php' ) ) . 'jetpack-carousel.php';
105
106 if ( class_exists( 'Jetpack_Carousel' ) ) {
107 // Create new carousel so we can use the enqueue_assets() method. Not ideal, but there is a decent amount
108 // of logic in that method that shouldn't be duplicated.
109 $carousel = new Jetpack_Carousel();
110
111 $carousel->enqueue_assets();
112 }
113 }
114
115 echo $before_widget . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
116
117 /** This filter is documented in core/src/wp-includes/default-widgets.php */
118 $title = apply_filters( 'widget_title', $instance['title'] );
119
120 if ( $title ) {
121 echo $before_title . $title . $after_title . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
122 }
123
124 echo '<div class="' . esc_attr( $classes ) . '">' . "\n";
125
126 $method = $instance['type'] . '_widget';
127
128 /**
129 * Allow the width of a gallery to be altered by themes or other code.
130 *
131 * @module widgets
132 *
133 * @since 2.5.0
134 *
135 * @param int self::DEFAULT_WIDTH Default gallery width. Default is 265.
136 * @param string $args Display arguments including before_title, after_title, before_widget, and after_widget.
137 * @param array $instance The settings for the particular instance of the widget.
138 */
139 $this->instance_width = apply_filters( 'gallery_widget_content_width', self::DEFAULT_WIDTH, $args, $instance );
140
141 // Register a filter to modify the tiled_gallery_content_width, so Jetpack_Tiled_Gallery
142 // can appropriately size the tiles.
143 add_filter( 'tiled_gallery_content_width', array( $this, 'tiled_gallery_content_width' ) );
144
145 if ( method_exists( $this, $method ) ) {
146 echo $this->$method( $args, $instance ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
147 }
148
149 // Remove the stored $instance_width, as it is no longer needed.
150 $this->instance_width = null;
151
152 // Remove the filter, so any Jetpack_Tiled_Gallery in a post is not affected.
153 remove_filter( 'tiled_gallery_content_width', array( $this, 'tiled_gallery_content_width' ) );
154
155 echo "\n" . '</div>'; // .widget-gallery-$type
156
157 echo "\n" . $after_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
158
159 /** This action is documented in modules/widgets/gravatar-profile.php */
160 do_action( 'jetpack_stats_extra', 'widget_view', 'gallery' );
161 }
162
163 /**
164 * Fetch the images attached to the gallery Widget
165 *
166 * @param array $instance The Widget instance for which you'd like attachments.
167 * @return array Array of attachment objects for the Widget in $instance
168 */
169 public function get_attachments( $instance ) {
170 $ids = explode( ',', $instance['ids'] );
171
172 if ( isset( $instance['random'] ) && 'on' === $instance['random'] ) {
173 shuffle( $ids );
174 }
175
176 $attachments_query = new WP_Query(
177 array(
178 'post__in' => $ids,
179 'post_status' => 'inherit',
180 'post_type' => 'attachment',
181 'post_mime_type' => 'image',
182 'posts_per_page' => -1,
183 'orderby' => 'post__in',
184 )
185 );
186
187 $attachments = $attachments_query->get_posts();
188
189 wp_reset_postdata();
190
191 return $attachments;
192 }
193
194 /**
195 * Generate HTML for a rectangular, tiled Widget
196 *
197 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
198 * @param array $instance The Widget instance to generate HTML for.
199 * @return string String of HTML representing a rectangular gallery
200 */
201 public function rectangular_widget( $args, $instance ) {
202 if ( ! class_exists( 'Jetpack_Tiled_Gallery' )
203 && ! class_exists( 'Jetpack_Tiled_Gallery_Layout_Rectangular' ) ) {
204 return;
205 }
206
207 Jetpack_Tiled_Gallery::default_scripts_and_styles();
208
209 $layout = new Jetpack_Tiled_Gallery_Layout_Rectangular( $instance['attachments'], $instance['link'], false, 3 );
210 return $layout->HTML();
211 }
212
213 /**
214 * Generate HTML for a square (grid style) Widget
215 *
216 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
217 * @param array $instance The Widget instance to generate HTML for.
218 * @return string String of HTML representing a square gallery
219 */
220 public function square_widget( $args, $instance ) {
221 if ( ! class_exists( 'Jetpack_Tiled_Gallery' )
222 && ! class_exists( 'Jetpack_Tiled_Gallery_Layout_Square' ) ) {
223 return;
224 }
225
226 Jetpack_Tiled_Gallery::default_scripts_and_styles();
227
228 $layout = new Jetpack_Tiled_Gallery_Layout_Square( $instance['attachments'], $instance['link'], false, 3 );
229 return $layout->HTML();
230 }
231
232 /**
233 * Generate HTML for a circular (grid style) Widget
234 *
235 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
236 * @param array $instance The Widget instance to generate HTML for.
237 * @return string String of HTML representing a circular gallery
238 */
239 public function circle_widget( $args, $instance ) {
240 if ( ! class_exists( 'Jetpack_Tiled_Gallery' )
241 && ! class_exists( 'Jetpack_Tiled_Gallery_Layout_Circle' ) ) {
242 return;
243 }
244
245 Jetpack_Tiled_Gallery::default_scripts_and_styles();
246
247 $layout = new Jetpack_Tiled_Gallery_Layout_Circle( $instance['attachments'], $instance['link'], false, 3 );
248 return $layout->HTML();
249 }
250
251 /**
252 * Generate HTML for a slideshow Widget
253 *
254 * @todo Is slideshow_widget() still used?
255 *
256 * @param array $args Display arguments including before_title, after_title, before_widget, and after_widget.
257 * @param array $instance The Widget instance to generate HTML for.
258 * @return string String of HTML representing a slideshow gallery
259 */
260 public function slideshow_widget( $args, $instance ) {
261 global $content_width;
262
263 require_once plugin_dir_path( realpath( __DIR__ . '/../shortcodes/slideshow.php' ) ) . 'slideshow.php';
264
265 if ( ! class_exists( 'Jetpack_Slideshow_Shortcode' ) ) {
266 return;
267 }
268
269 if ( count( $instance['attachments'] ) < 1 ) {
270 return;
271 }
272
273 $slideshow = new Jetpack_Slideshow_Shortcode();
274
275 $slideshow->enqueue_scripts();
276
277 $gallery_instance = 'widget-' . $args['widget_id'];
278
279 $gallery = array();
280
281 foreach ( $instance['attachments'] as $attachment ) {
282 $attachment_image_src = wp_get_attachment_image_src( $attachment->ID, 'full' );
283 $attachment_image_src = Image_CDN_Core::cdn_url( $attachment_image_src[0], array( 'w' => $this->instance_width ) ); /** [url, width, height] */
284
285 $caption = wptexturize( wp_strip_all_tags( $attachment->post_excerpt ) );
286
287 $gallery[] = (object) array(
288 'src' => (string) esc_url_raw( $attachment_image_src ),
289 'id' => (string) $attachment->ID,
290 'caption' => (string) $caption,
291 );
292 }
293
294 $max_width = (int) get_option( 'large_size_w' );
295 $max_height = 175;
296
297 if ( (int) $content_width > 0 ) {
298 $max_width = min( (int) $content_width, $max_width );
299 }
300
301 $color = Jetpack_Options::get_option( 'slideshow_background_color', 'black' );
302 $js_attr = array(
303 'gallery' => $gallery,
304 'selector' => $gallery_instance,
305 'width' => $max_width,
306 'height' => $max_height,
307 'trans' => 'fade',
308 'color' => $color,
309 'autostart' => true,
310 );
311
312 $html = $slideshow->slideshow_js( $js_attr );
313
314 return $html;
315 }
316
317 /**
318 * Used to adjust the content width of Jetpack_Tiled_Gallery's in sidebars
319 *
320 * $this->instance_width is filtered in widget() and this filter is added then removed in widget()
321 *
322 * @return int The filtered width
323 */
324 public function tiled_gallery_content_width() {
325 return $this->instance_width;
326 }
327
328 /**
329 * Outputs the widget settings form.
330 *
331 * @html-template-var array $instance
332 * @html-template-var array<string,array<string|int,string|int>> $allowed_values
333 *
334 * @param array $instance Current settings.
335 */
336 public function form( $instance ) {
337 $defaults = $this->defaults();
338 $allowed_values = $this->allowed_values(); // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Used in included form template.
339
340 $instance = wp_parse_args( (array) $instance, $defaults );
341
342 include __DIR__ . '/gallery/templates/form.php';
343 }
344
345 /**
346 * Save the widget options.
347 *
348 * @param array $new_instance The new instance options.
349 * @param array $old_instance The old instance options.
350 * @return array The saved options.
351 */
352 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
353 $instance = $this->sanitize( $new_instance );
354
355 return $instance;
356 }
357
358 /**
359 * Sanitize the $instance's values to the set of allowed values. If a value is not acceptable,
360 * it is set to its default.
361 *
362 * Helps keep things nice and secure by listing only allowed values.
363 *
364 * @param array $instance The Widget instance to sanitize values for.
365 * @return array $instance The Widget instance with values sanitized
366 */
367 public function sanitize( $instance ) {
368 $allowed_values = $this->allowed_values();
369 $defaults = $this->defaults();
370
371 foreach ( $instance as $key => $value ) {
372 if ( ! is_scalar( $value ) ) {
373 // $instance may hold an Array value type for the Jetpack widget visibility feature.
374 continue;
375 }
376
377 $value = trim( $value );
378
379 if ( isset( $allowed_values[ $key ] ) && $allowed_values[ $key ] && ! array_key_exists( $value, $allowed_values[ $key ] ) ) {
380 $instance[ $key ] = $defaults[ $key ];
381 } else {
382 $instance[ $key ] = sanitize_text_field( $value );
383 }
384 }
385
386 return $instance;
387 }
388
389 /**
390 * Return a multi-dimensional array of allowed values (and their labels) for all widget form
391 * elements
392 *
393 * To allow all values on an input, omit it from the returned array
394 *
395 * @return array Array of allowed values for each option
396 */
397 public function allowed_values() {
398 $max_columns = 5;
399
400 // Create an associative array of allowed column values. This just automates the generation of
401 // column <option>s, from 1 to $max_columns.
402 $allowed_columns = array_combine( range( 1, $max_columns ), range( 1, $max_columns ) );
403
404 return array(
405 'type' => array(
406 'rectangular' => __( 'Tiles', 'jetpack' ),
407 'square' => __( 'Square Tiles', 'jetpack' ),
408 'circle' => __( 'Circles', 'jetpack' ),
409 'slideshow' => __( 'Slideshow', 'jetpack' ),
410 ),
411 'columns' => $allowed_columns,
412 'link' => array(
413 'carousel' => __( 'Carousel', 'jetpack' ),
414 'post' => __( 'Attachment Page', 'jetpack' ),
415 'file' => __( 'Media File', 'jetpack' ),
416 ),
417 );
418 }
419
420 /**
421 * Return an associative array of default values
422 *
423 * These values are used in new widgets as well as when sanitizing input. If a given value is not allowed,
424 * as defined in allowed_values(), that input is set to the default value defined here.
425 *
426 * @return array Array of default values for the Widget's options
427 */
428 public function defaults() {
429 return array(
430 'title' => '',
431 'type' => 'rectangular',
432 'ids' => '',
433 'columns' => 3,
434 'link' => 'carousel',
435 );
436 }
437
438 /**
439 * Enqueue frontend scripts.
440 */
441 public function enqueue_frontend_scripts() {
442 wp_register_script(
443 'gallery-widget',
444 Assets::get_file_url_for_environment(
445 '_inc/build/widgets/gallery/js/gallery.min.js',
446 'modules/widgets/gallery/js/gallery.js'
447 ),
448 array( 'jquery' ),
449 JETPACK__VERSION,
450 false
451 );
452
453 wp_enqueue_script( 'gallery-widget' );
454 }
455
456 /**
457 * Enqueue admin scripts and styles.
458 */
459 public function enqueue_admin_scripts() {
460 global $pagenow;
461
462 if ( 'widgets.php' === $pagenow || 'customize.php' === $pagenow ) {
463 wp_enqueue_media();
464
465 wp_enqueue_script(
466 'gallery-widget-admin',
467 Assets::get_file_url_for_environment(
468 '_inc/build/widgets/gallery/js/admin.min.js',
469 'modules/widgets/gallery/js/admin.js'
470 ),
471 array(
472 'jquery',
473 'media-models',
474 'media-views',
475 ),
476 '20150501',
477 false
478 );
479
480 $js_settings = array(
481 'thumbSize' => self::THUMB_SIZE,
482 );
483
484 wp_localize_script( 'gallery-widget-admin', '_wpGalleryWidgetAdminSettings', $js_settings );
485 wp_enqueue_style(
486 'gallery-widget-admin',
487 plugins_url( '/gallery/css/admin.css', __FILE__ ),
488 array(),
489 JETPACK__VERSION
490 );
491 wp_style_add_data( 'gallery-widget-admin', 'rtl', 'replace' );
492 }
493 }
494 }
495
496 add_action( 'widgets_init', 'jetpack_gallery_widget_init' );
497
498 /**
499 * Jetpack Gallery widget init; the widget is conditionally registered.
500 */
501 function jetpack_gallery_widget_init() {
502 /**
503 * Allow the Gallery Widget to be enabled even when Core supports the Media Gallery Widget
504 *
505 * @module widgets
506 *
507 * @since 5.5.0
508 *
509 * @param bool false Whether to force-enable the gallery widget
510 */
511 if (
512 ! apply_filters( 'jetpack_force_enable_gallery_widget', false )
513 && class_exists( 'WP_Widget_Media_Gallery' )
514 && Jetpack_Options::get_option( 'gallery_widget_migration' )
515 ) {
516 return;
517 }
518 if ( ! method_exists( 'Jetpack', 'is_module_active' ) || Jetpack::is_module_active( 'tiled-gallery' ) ) {
519 register_widget( 'Jetpack_Gallery_Widget' );
520 }
521 }
522