1jQuery(document).ready(function($){ 2 3 // Setup drag n drop function 4 window.initDragDrop = function ( file_name ) { 5 6 // Get text object options/settings from localize script 7 var TextOJB = dnd_cf7_uploader.drag_n_drop_upload; 8 9 var dnd_options = { 10 'color' : '#fff', 11 'ajax_url' : dnd_cf7_uploader.ajax_url, 12 'text' : TextOJB.text, 13 'separator' : TextOJB.or_separator, 14 'button_text' : TextOJB.browse, 15 'server_max_error' : TextOJB.server_max_error, 16 17 // New Options 18 'parallel_uploads' : dnd_cf7_uploader.parallel_uploads, 19 'chunks' : dnd_cf7_uploader.chunks, 20 'chunk_size' : dnd_cf7_uploader.chunk_size, 21 'max_total_size' : dnd_cf7_uploader.max_total_size, 22 'err_message' : { 23 'maxNumFiles' : dnd_cf7_uploader.err_message.maxNumFiles, 24 'maxTotalSize' : dnd_cf7_uploader.err_message.maxTotalSize, 25 'maxUploadLimit' : dnd_cf7_uploader.err_message.maxUploadLimit 26 }, 27 28 //@description: upload is in progress 29 'in_progress' : function( form_handler, queue, data ) { 30 31 // Get submit btn 32 var submitBtn = $('input[type="submit"]', form_handler); 33 34 // Disable submit button 35 if( submitBtn.length > 0 ) { 36 submitBtn.addClass('disable').prop( "disabled", true ); 37 } 38 39 // Create event - upload in progress 40 dndmfu_cf7_event( form_handler, 'in_progress', data ); 41 }, 42 43 // @description: single queue file upload is complete 44 'on_success' : function( progressBar, response, fieldName, Record ){ 45 46 // Progressbar Object ID 47 var progressDetails = $('#' + progressBar ), 48 parentWrap = progressDetails.parents('.codedropz-upload-wrapper'); 49 50 if( dnd_cf7_uploader.preview_layout == 'column' ) { 51 52 // If file is not an image show only the extension. 53 if( ! response.data.is_image || response.data.preview === false ) { 54 $('.dnd-upload-image', progressDetails ).addClass('has-icon has-bg'); 55 } 56 57 // append to preview container. 58 $( '.codedropz--preview', parentWrap ).append( progressDetails ); 59 60 // Show image 61 progressDetails.find('.dnd-upload-image').fadeIn(); 62 63 } 64 65 // Preview image according their type 66 if( typeof response.data.preview !== "boolean" ) { 67 $('.dnd-icon-blank-file', progressDetails ).css('background-image', 'url(' + response.data.preview + ')' ); 68 } 69 70 // Append hidden input field 71 $('.dnd-upload-details', progressDetails ) 72 .append('<span><input type="hidden" name="'+ fieldName +'[]" value="'+ response.data.path + response.data.file +'"></span>'); 73 74 // Update Counter 75 $('.dnd-upload-counter span', parentWrap ).text( Record.uploaded ); 76 77 // Create event - individual file upload successfully 78 dndmfu_cf7_event( progressDetails, 'success', response ); 79 80 }, 81 82 // @description: all queued files has been completed 83 'completed' : function( form_handler, fileData, data ) { 84 85 var $span = $('.wpcf7-acceptance', form_handler ); 86 var $input = $('input:checkbox', $span); 87 88 var $max_total_size = ( dnd_options.max_total_size ? dnd_options.max_total_size : '100MB' ); 89 var $totalSizeLimit = parseInt( $max_total_size.replace('[^0-9]/g','') ); 90 91 // If it's complete remove disabled attribute in button 92 if( $('.in-progress', form_handler ).length === 0 ) { 93 if( $span.hasClass( 'optional' ) || $input.is( ':checked' ) || $span.length == 0 || form_handler.hasClass('wpcf7-acceptance-as-validation') ) { 94 if( fileData.maxTotalSize < ( $totalSizeLimit * 1048576 ) ) { 95 $('input[type="submit"]', form_handler ).removeAttr('disabled'); 96 } 97 } 98 // Create event - all files uploaded 99 dndmfu_cf7_event( form_handler, 'completed', data ); 100 } 101 } 102 103 }; 104 105 // Initialize Plugin 106 if( file_name ) {
107 $('input[data-name="'+ file_name +'"]').CodeDropz_Uploader( dnd_options ); 108 }else { 109 $('.wpcf7-drag-n-drop-file').CodeDropz_Uploader( dnd_options ); 110 } 111 112 } 113 114 // Initialize drag n drop plugin. 115 window.initDragDrop(); 116 117 // Coditional Field - Repeater 118 if( $('.wpcf7cf_repeater').length > 0 ) { 119 $('form').on('click.wpcf7cf', function(e){ 120 121 // Bail early 122 if( $(e.target).attr('class') != 'wpcf7cf_add' ) { 123 return; 124 } 125 126 // Get cf7 conditional name, count & file upload 127 var $repeater_count = $('input[name="'+ $('.wpcf7cf_repeater').data('id') +'_count"]').val(); 128 var $sub = $('.wpcf7cf_repeater_sub:last'); 129 var $file_upload = $('.wpcf7-drag-n-drop-file', $sub); 130 var $uploader_name = $( $file_upload, $sub ).attr('data-name') +'__'+ parseInt( $repeater_count ); 131 132 // Update uploader name & attribute 133 $file_upload.attr('data-name', $uploader_name ); 134 135 // Initialize uploader 136 window.initDragDrop( $uploader_name ); 137 }); 138 } 139 140 // RedNumber Repeater 141 if( $('.cf7-repeater').length > 0 ) { 142 $('.cf7-button-repeater a').on('click', function(){ 143 144 var firstUploader = $('.wpcf7-drag-n-drop-file').first(); 145 var lastField = $('.cf7-repeater-filed:last'); 146 var fileUploader = $('.wpcf7-drag-n-drop-file', lastField ); 147 var dataNames = $('.cf7-remove-repeater', lastField ).attr('data-name').split(','); 148 const currentIndex = dataNames[0].split('-').splice(-1); 149 var uploaderName = fileUploader.attr('data-name-'+currentIndex[0]); 150 151 // Unwrap input type 152 fileUploader.unwrap(); 153 154 // Clean and set new data name attr 155 fileUploader.attr('data-name', uploaderName); 156 fileUploader.removeAttr('data-name-'+currentIndex[0]); 157 158 $('.codedropz-upload-handler', lastField ).remove(); 159 $('.codedropz--results', lastField ).remove(); 160 161 window.initDragDrop( uploaderName ); 162 163 firstUploader.val(''); 164 165 }); 166 } 167 168 // Custom event handler 169 var dndmfu_cf7_event = function( target, name, data ) { 170 var event = new CustomEvent( 'dndmfu_cf7_' + name, { 171 bubbles : true, 172 detail : data 173 }); 174 $(target).get(0).dispatchEvent( event ); 175 } 176 177 // Mail Sent 178 document.addEventListener('wpcf7mailsent', function( event ){ 179 // Get input file type - object 180 var inputFile = $('.wpcf7-drag-n-drop-file'); 181 182 // Get api response 183 if( event.detail.apiResponse ) { 184 var api_Response = event.detail.apiResponse; 185 186 // Change upload dir - in hidden fields ( under contact form 7 ) 187 if( typeof api_Response.drag_n_drop.upload_dir !== 'undefined' ) { 188 $(api_Response.into).find("input[name='upload_dir']").val( api_Response.drag_n_drop.upload_dir ); 189 } 190 191 // Change generated name - in hidden fields ( under contact form 7 ) 192 if( typeof api_Response.drag_n_drop.generate_name !== 'undefined' ) { 193 $(api_Response.into).find("input[name='generate_name']").val( api_Response.drag_n_drop.generate_name ); 194 } 195 } 196 197 // Remove status / progress bar 198 $('.dnd-upload-status', inputFile.parents('form')).remove(); 199 $('span.has-error-msg').remove(); 200 201 // Reset file count 202 dndmfu_cf7_reset_progress(); 203 }); 204 205 // Mail Spam 206 document.addEventListener('wpcf7spam', function( event ){ 207 // Reset file lists. 208 if( dnd_cf7_uploader.delete_files_on_failed == 1 ) { 209 $('.dnd-upload-status').remove(); 210 dndmfu_cf7_reset_progress(); 211 } 212 }); 213 214 // Failed 215 document.addEventListener('wpcf7mailfailed', function( event ){ 216 // Reset file lists. 217 if( dnd_cf7_uploader.delete_files_on_failed == 1 ) { 218 $('.dnd-upload-status').remove(); 219 dndmfu_cf7_reset_progress(); 220 } 221 });
222 223 // Disable button on submission 224 if( dnd_cf7_uploader.disable_btn_submission ) { 225 226 // Disable button is submission in progress 227 $('form.wpcf7-form input.wpcf7-submit').click(function() { 228 var $this = $(this); 229 setTimeout(function(){ 230 if( $('form.wpcf7-form').hasClass('submitting') ) { 231 $this.prop( "disabled",true ); 232 } 233 }, 50); 234 }); 235 236 // When cf7 submit enable button again. 237 document.addEventListener('wpcf7submit',function(event){ 238 $('form.wpcf7-form input.wpcf7-submit').prop('disabled', false ); 239 }, false); 240 } 241 242 // CF7 Submitted - remove file name attr 243 var Dnd__ExcludeInputFile = { 244 files : $('input.wpcf7-drag-n-drop-file'), 245 init : function(){ 246 const self = this; 247 $('form.wpcf7-form input.wpcf7-submit').click(function() { 248 self.action('delete_name'); 249 }); 250 document.addEventListener('wpcf7submit',function(event){ 251 self.action('add_name'); 252 }, false); 253 }, 254 action : function( a ){ 255 for( var i=0; i<this.files.length; i++ ){ 256 if( a == 'delete_name'){ 257 $(this.files[i]).removeAttr('name'); 258 }else{ 259 $(this.files[i]).attr('name', $(this.files[i]).data('name') ); 260 } 261 } 262 } 263 } 264 265 // Exclude [input file] from the POST 266 //Dnd__ExcludeInputFile.init(); 267 268 // Enable button & reset file counter 269 function dndmfu_cf7_reset_progress() { 270 // reset counter to 0 271 $('.dnd-upload-counter span').text('0'); 272 273 // Make sure to enable submit button. 274 $('form.wpcf7-form input.wpcf7-submit').prop('disabled', false ); 275 } 276 277 //@description : sample event 278 document.addEventListener('dndmfu_cf7_success', function(event){ 279 //var eventDetails = event.detail[0]; 280 }); 281 282});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.