jQuery( function ( $ ) { 'use strict'; // Hide "Uploaded files" title if there are no files uploaded after deleting files $( '.rwmb-images' ).on( 'click', '.rwmb-delete-file', function () { // Check if we need to show drop target var $dragndrop = $( this ).parents( '.rwmb-images' ).siblings( '.rwmb-drag-drop' ); // After delete files, show the Drag & Drop section $dragndrop.removeClass( 'hidden' ); } ); $( '.rwmb-drag-drop' ).each( function () { // Declare vars var $dropArea = $( this ), $imageList = $dropArea.siblings( '.rwmb-uploaded' ), uploaderData = $dropArea.data( 'js_options' ), uploader = {}; // Extend uploaderData uploaderData.multipart_params = $.extend( { _ajax_nonce: $dropArea.data( 'upload_nonce' ), post_id : $( '#post_ID' ).val() }, uploaderData.multipart_params ); // Create uploader uploader = new plupload.Uploader( uploaderData ); uploader.init(); // Add files uploader.bind( 'FilesAdded', function ( up, files ) { var maxFileUploads = $imageList.data( 'max_file_uploads' ), uploaded = $imageList.children().length, msg = maxFileUploads > 1 ? rwmbFile.maxFileUploadsPlural : rwmbFile.maxFileUploadsSingle; msg = msg.replace( '%d', maxFileUploads ); // Remove files from queue if exceed max file uploads if ( maxFileUploads > 0 && ( uploaded + files.length ) > maxFileUploads ) { if ( uploaded < maxFileUploads ) { var diff = maxFileUploads - uploaded; up.splice( diff - 1, files.length - diff ); files = up.files; } alert( msg ); } // Hide drag & drop section if reach max file uploads if ( maxFileUploads > 0 && uploaded + files.length >= maxFileUploads ) { $dropArea.addClass( 'hidden' ); } var max = parseInt( up.settings.max_file_size, 10 ); // Upload files plupload.each( files, function ( file ) { addLoading( up, file, $imageList ); addThrobber( file ); if ( file.size >= max ) { removeError( file ); } } ); up.refresh(); up.start(); } ); uploader.bind( 'Error', function ( up, e ) { addLoading( up, e.file, $imageList ); removeError( e.file ); up.removeFile( e.file ); } ); uploader.bind( 'FileUploaded', function ( up, file, r ) { r = $.parseJSON( r.response ); if ( r.success ) { $( 'li#' + file.id ).replaceWith( r.data ); } else { removeError( file ); } } ); } ); /** * Helper functions */ /** * Removes li element if there is an error with the file * * @return void */ function removeError( file ) { $( 'li#' + file.id ) .addClass( 'rwmb-image-error' ) .delay( 1600 ) .fadeOut( 'slow', function () { $( this ).remove(); } ); } /** * Adds loading li element * * @return void */ function addLoading( up, file, $ul ) { $ul.removeClass( 'hidden' ).append( '