file-input.js (1155B)
1 ( function ( $, rwmb ) { 2 'use strict'; 3 4 var frame; 5 6 function openSelectPopup( e ) { 7 e.preventDefault(); 8 var $el = $( this ); 9 10 // Create a frame only if needed 11 if ( ! frame ) { 12 frame = wp.media( { 13 className: 'media-frame rwmb-file-frame', 14 multiple: false, 15 title: rwmbFileInput.frameTitle 16 } ); 17 } 18 19 // Open media uploader 20 frame.open(); 21 22 // Remove all attached 'select' event 23 frame.off( 'select' ); 24 25 // Handle selection 26 frame.on( 'select', function () { 27 var url = frame.state().get( 'selection' ).first().toJSON().url; 28 $el.siblings( 'input' ).val( url ).trigger( 'change' ).siblings( 'a' ).removeClass( 'hidden' ); 29 } ); 30 } 31 32 function clearSelection( e ) { 33 e.preventDefault(); 34 $( this ).addClass( 'hidden' ).siblings( 'input' ).val( '' ).trigger( 'change' ); 35 } 36 37 function hideRemoveButtonWhenCloning() { 38 $( this ).siblings( '.rwmb-file-input-remove' ).addClass( 'hidden' ); 39 } 40 41 rwmb.$document 42 .on( 'click', '.rwmb-file-input-select', openSelectPopup ) 43 .on( 'click', '.rwmb-file-input-remove', clearSelection ) 44 .on( 'clone', '.rwmb-file_input', hideRemoveButtonWhenCloning ); 45 } )( jQuery, rwmb );