PluginProbe
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress / 3.2.6
QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress v3.2.6
4.1.1 4.1.0 4.0.1 4.0.0 3.3.1 3.3.0 trunk 1.0.0 2.0.0 2.1.0 3.0.0 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8
quickwebp / admin / components / media.php

media.php in QuickWebP – WebP & AVIF Image Optimizer, Compression & SEO for WordPress 3.2.6, at admin/components/media.php

116 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Media component for the settings page
4 */
5
6 $key_option = sanitize_key( $data['name'] );
7
8 if( isset( $key_option, $_POST[ $key_option ] ) ) {
9 update_option( $key_option, sanitize_text_field( $_POST[ $key_option ] ) );
10 }
11
12 wp_enqueue_media();
13 $is_multiple = isset( $data['multiple'] ) && $data['multiple'] === true ? 'true' : 'false';
14 $image_preview_template = '<img src="%s" title="%s" class="media-preview-image">';
15
16 $medias_string = isset( $key_option ) ? get_option( $key_option, '' ) : '';
17 $medias = $medias_string ? explode( ',', $medias_string ) : array();
18 ?>
19 <div class="quickwebp-media-input-container">
20 <div id="<?php echo esc_attr( $key_option ?? '' ); ?>_is_empty" class="quickwebp-media-input--is-empty" style="display: <?php echo !empty($medias) ? 'none' : 'block'; ?>">
21 <?php _e( 'No image selected', QUICKWEBP_TEXT_DOMAIN ); ?>
22 </div>
23 <input
24 type="hidden"
25 name="<?php echo esc_attr( $key_option ?? '' ); ?>"
26 id="<?php echo esc_attr( $key_option ?? '' ); ?>"
27 value="<?php echo esc_attr( $medias_string ); ?>"
28 >
29 <div id="<?php echo esc_attr( $key_option ?? '' ); ?>_medias-selected" class="quickwebp-medias-selected-container">
30 <?php
31 foreach( $medias as $media_id ) {
32 $media = get_post( $media_id );
33 if( $media ) {
34 if( wp_attachment_is_image( $media_id ) ) {
35 echo wp_kses_post( sprintf( $image_preview_template, wp_get_attachment_image_url( $media_id, 'thumbnail' ), $media->post_title ) );
36 } else {
37 echo wp_kses_post( sprintf( $image_preview_template, wp_mime_type_icon( $media->post_mime_type ), $media->post_title ) );
38 }
39 }
40 }
41 ?>
42 </div>
43 <input type="button"
44 name="<?php echo esc_attr( $key_option ?? '' ); ?>_button"
45 id="<?php echo esc_attr( $key_option ?? '' ); ?>_button"
46 class="button button-secondary"
47 value="<?php echo esc_attr( $data['button_text'] ?? __( 'Select media', QUICKWEBP_TEXT_DOMAIN ) ); ?>"
48 >
49 <input type="button"
50 name="<?php echo esc_attr( $key_option ?? '' ); ?>_remove_button"
51 id="<?php echo esc_attr( $key_option ?? '' ); ?>_remove_button"
52 class="button button-secondary button-remove-media"
53 value="<?php echo esc_attr( $data['remove_button_text'] ?? __( 'Remove medias', QUICKWEBP_TEXT_DOMAIN ) ); ?>"
54 <?php echo empty( $medias ) ? 'disabled' : ''; ?>
55 >
56 </div>
57
58 <script type="text/javascript">
59 jQuery(document).ready(function($){
60 const id = '<?php echo esc_attr( $key_option ?? '' ); ?>';
61 const media_template_preview = '<?php echo wp_kses_post($image_preview_template); ?>';
62 jQuery( "#" + id + "_button" ).click(function(e) {
63 e.preventDefault();
64 var image = wp.media({
65 title: '<?php echo esc_attr( $data['button_text'] ?? __( 'Select media', QUICKWEBP_TEXT_DOMAIN ) ); ?>',
66 multiple: <?php echo esc_attr( $is_multiple ); ?>
67 })
68
69 image.on('select', function(e){
70 const medias = image.state().get('selection').toJSON();
71 let selected_medias_preview = '';
72 let medias_ids = '';
73 medias.forEach( media => {
74 medias_ids = medias_ids === '' ? media.id : medias_ids + ',' + media.id;
75 let preview_image = '';
76 if( media.type === 'image' ) {
77 preview_image = media.sizes.thumbnail.url;
78 } else {
79 preview_image = media.icon;
80 }
81 selected_medias_preview += media_template_preview.replace( '%s', preview_image ).replace( '%s', media.title );
82 });
83 jQuery( "#" + id + "_medias-selected" ).html( selected_medias_preview );
84 jQuery( "#" + id ).val( medias_ids );
85
86 jQuery( "#" + id + "_remove_button" ).prop( 'disabled', false );
87 jQuery( '#' + id + "_is_empty" ).hide();
88 });
89
90 image.on('open', function(e){
91 const medias_ids = jQuery( "#" + id ).val();
92 if( medias_ids !== '' ) {
93 const medias = medias_ids.split(',');
94 const selection = image.state().get('selection');
95 medias.forEach( media_id => {
96 const media = wp.media.attachment( media_id );
97 media.fetch();
98 selection.add( media ? [ media ] : [] );
99 });
100 }
101 });
102
103 image.open();
104
105 });
106
107 jQuery( "#" + id + "_remove_button" ).click(function(e) {
108 e.preventDefault();
109 jQuery( "#" + id + "_medias-selected" ).html( '' );
110 jQuery( "#" + id ).val( '' );
111
112 jQuery( "#" + id + "_remove_button" ).attr( 'disabled', 'disabled' );
113 jQuery( '#' + id + "_is_empty" ).show();
114 });
115 });
116 </script>