PageSourceSearch

https://torontoclearview.com/wp-content/plugins/drag-and-drop-upload-cf7-pro/assets/js/dnd-upload-cf7.js

js torontoclearview.com collected 2026-10-04 02:52:24 UTC 10,418 bytes, 282 lines download raw bytes

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.