11<?php
2+ /**
3+ * Media component for the settings page
4+ */
25if ( isset ( $ data ['name ' ], $ _POST [ $ data ['name ' ] ] ) ) {
36 update_option ( $ data ['name ' ], sanitize_text_field ( $ _POST [ $ data ['name ' ] ] ) );
47}
58wp_enqueue_media ();
69$ is_multiple = isset ( $ data ['multiple ' ] ) && $ data ['multiple ' ] === true ? 'true ' : 'false ' ;
710$ image_preview_template = '<img src="%s" title="%s" class="media-preview-image"> ' ;
811
12+ $ medias_string = isset ( $ data ['name ' ] ) ? get_option ( $ data ['name ' ], '' ) : '' ;
13+ $ medias = $ medias_string ? explode ( ', ' , $ medias_string ) : array ();
914?>
1015<div class="plugin-name-media-input-container">
16+ <div id="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> _is_empty" class="plugin-name-media-input--is-empty" style="display: <?php echo !empty ($ medias ) ? 'none ' : 'block ' ; ?> ">
17+ <?php _e ( 'No image selected ' , PLUGIN_NAME_TEXT_DOMAIN ); ?>
18+ </div>
1119 <input
1220 type="hidden"
1321 name="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> "
1422 id="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> "
15- value="<?php echo esc_attr ( get_option ( $ data [ ' name ' ] ) ); ?> "
23+ value="<?php echo esc_attr ( $ medias_string ); ?> "
1624 >
1725 <div id="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> _medias-selected" class="plugin-name-medias-selected-container">
1826 <?php
19- $ medias = explode ( ', ' , get_option ( $ data ['name ' ] ) );
2027 foreach ( $ medias as $ media_id ) {
2128 $ media = get_post ( $ media_id );
2229 if ( $ media ) {
3542 class="button button-secondary"
3643 value="<?php echo esc_attr ( $ data ['button_text ' ] ?? __ ( 'Select media ' , PLUGIN_NAME_TEXT_DOMAIN ) ); ?> "
3744 >
45+ <input type="button"
46+ name="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> _remove_button"
47+ id="<?php echo esc_attr ( $ data ['name ' ] ?? '' ); ?> _remove_button"
48+ class="button button-secondary button-remove-media"
49+ value="<?php echo esc_attr ( $ data ['remove_button_text ' ] ?? __ ( 'Remove medias ' , PLUGIN_NAME_TEXT_DOMAIN ) ); ?> "
50+ <?php echo empty ( $ medias ) ? 'disabled ' : '' ; ?>
51+ >
3852</div>
3953
4054<script type="text/javascript">
@@ -49,13 +63,11 @@ class="button button-secondary"
4963 })
5064
5165 image.on('select', function(e){
52- console.log(image.state().get('selection').toJSON());
5366 const medias = image.state().get('selection').toJSON();
5467 let selected_medias_preview = '';
5568 let medias_ids = '';
5669 medias.forEach( media => {
5770 medias_ids = medias_ids === '' ? media.id : medias_ids + ',' + media.id;
58- console.log(medias_ids);
5971 let preview_image = '';
6072 if( media.type === 'image' ) {
6173 preview_image = media.sizes.thumbnail.url;
@@ -66,12 +78,13 @@ class="button button-secondary"
6678 });
6779 jQuery( "#" + id + "_medias-selected" ).html( selected_medias_preview );
6880 jQuery( "#" + id ).val( medias_ids );
81+
82+ jQuery( "#" + id + "_remove_button" ).prop( 'disabled', false );
83+ jQuery( '#' + id + "_is_empty" ).hide();
6984 });
7085
7186 image.on('open', function(e){
72- console.log(id);
7387 const medias_ids = jQuery( "#" + id ).val();
74- console.log(medias_ids);
7588 if( medias_ids !== '' ) {
7689 const medias = medias_ids.split(',');
7790 const selection = image.state().get('selection');
@@ -86,5 +99,14 @@ class="button button-secondary"
8699 image.open();
87100
88101 });
102+
103+ jQuery( "#" + id + "_remove_button" ).click(function(e) {
104+ e.preventDefault();
105+ jQuery( "#" + id + "_medias-selected" ).html( '' );
106+ jQuery( "#" + id ).val( '' );
107+
108+ jQuery( "#" + id + "_remove_button" ).attr( 'disabled', 'disabled' );
109+ jQuery( '#' + id + "_is_empty" ).show();
110+ });
89111 });
90112</script>
0 commit comments