1document.addEventListener( 'wpcf7mailsent', function( event ) { 2 jQuery(".cf7-drop-upload").val(""); 3 jQuery(".cf7-drop-statusbar").remove(); 4}, false ); 5function cf7_sendFileToServer(formData,status,obj){ 6 //var uploadURL = cf7_dropfiles.url_plugin + "frontend/upload.php"; //Upload URL 7 var uploadURL = cf7_dropfiles.ajax_url; //Upload URL 8 var extraData ={}; //Extra Data. 9 var jqXHR=jQuery.ajax({ 10 xhr: function() { 11 var xhrobj = jQuery.ajaxSettings.xhr(); 12 if (xhrobj.upload) { 13 xhrobj.upload.addEventListener('progress', function(event) { 14 var percent = 0; 15 var position = event.loaded || event.position; 16 var total = event.total; 17 if (event.lengthComputable) { 18 percent = Math.ceil(position / total * 100); 19 } 20 //Set progress 21 status.setProgress(percent); 22 }, false); 23 } 24 return xhrobj; 25 }, 26 url: uploadURL, 27 type: "POST", 28 contentType:false, 29 processData: false, 30 cache: false, 31 data: formData, 32 success: function(data){ 33 status.setProgress(100); 34 if( data.status =="ok" ) { 35 status.name_upload(data.text); 36 var name = obj.closest('.wpcf7-form-control-wrap').find(".cf7-drop-upload").val(); 37 if(name == "" ) { 38 name = data.text; 39 }else{ 40 name = name +"|"+data.text; 41 } 42 obj.closest('.wpcf7-form-control-wrap').find(".cf7-drop-upload").val(name); 43 }else{ 44 if( !data.text ) { 45 //alert(data); 46 status.text(cf7_dropfiles.text_content_limit); 47 }else{ 48 status.text(data.text); 49 } 50 51 } 52 53 } 54 }); 55 56 status.setAbort(jqXHR); 57} 58 59var rowCount=0; 60function cf7_createStatusbar(obj){ 61 rowCount++; 62 var row="odd"; 63 console.log(obj); 64 if(rowCount %2 ==0) row ="even"; 65 66 67 68 this.statusbar = jQuery("<div class='cf7-drop-statusbar "+row+"'></div>"); 69 this.type = jQuery("<div class='cf7-drop-type'></div>").appendTo(this.statusbar); 70 this.type_file = jQuery("<div class='cf7-drop-type_file'></div>").appendTo(this.statusbar); 71 this.filename = jQuery("<span class='cf7-drop-filename'></span>").appendTo(this.statusbar); 72 this.size = jQuery("<span class='cf7-drop-filesize'></span>").appendTo(this.statusbar); 73 this.abort = jQuery('<div class="cf7-drop-abort"></div>').appendTo(this.statusbar); 74 this.remove = jQuery('<div style="display:none" class="cf7-drop-remove" ></div>').appendTo(this.statusbar); 75 this.progressBar = jQuery("<div class='cf7-drop-progressBar'><div></div></div>").appendTo(this.statusbar); 76 this.error = jQuery("<div class='cf7-drop-text-error'></div>").appendTo(this.statusbar); 77 obj.after(this.statusbar); 78 79 this.text = function(txt){ 80 this.error.addClass("cf7-text-error").html(txt); 81 this.progressBar.addClass("cf7-text-error-pro"); 82 //this.remove.hide(); 83 } 84 this.name_upload = function(txt){ 85 this.remove.attr('data-name', txt); 86 } 87 this.setFileSize = function(txt){ 88 this.type_file.html(txt); 89 } 90 91 this.setFileNameSize = function(name,size) 92 { 93 var sizeStr=""; 94 var sizeKB = size/1024; 95 if(parseInt(sizeKB) > 1024) 96 { 97 var sizeMB = sizeKB/1024; 98 sizeStr = "("+sizeMB.toFixed(2)+" MB)"; 99 } 100 else 101 { 102 sizeStr = "("+sizeKB.toFixed(2)+" KB)"; 103 } 104 105 this.filename.html(name); 106 this.size.html(sizeStr); 107 } 108 this.setProgress = function(progress){ 109 var progressBarWidth =progress*this.progressBar.width()/ 100; 110 this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "% "); 111 if(parseInt(progress) >= 100) 112 { 113 this.abort.hide(); 114 this.remove.show(); 115 } 116 } 117 118 this.setAbort = function(jqxhr){ 119 var sb = this.statusbar; 120 this.abort.click(function() 121 { 122 jqxhr.abort(); 123 sb.hide(); 124 }); 125 } 126} 127function cf7_handleFileUpload(files,obj){ 128 129 var max = obj.attr("data-max"); 130 var name = obj.closest('.wpcf7-form-control-wrap').find(".cf7-drop-upload").val(); 131 var count = (name.match(/\|/g) || []).length; 132 if(name != "" ){ 133 count++; 134 } 135 if( max == "" ){ 136 max = 0; 137 } 138 var max_limit = max - count + 1; 139 if ( max != 0 && parseInt(files.length)>=max_limit){ 140 alert(cf7_dropfiles.text_maximum +" "+max+" files"); 141 }else{ 142 for (var i = 0; i < files.length; i++) { 143 var fd = new FormData(); 144 145 fd.append('file', files[i]); 146 fd.append('size', obj.data("size") ); 147 fd.append('type', obj.data("type") ); 148 fd.append('type_upload', obj.closest('.wpcf7').find(".cf7-droptype").val() ); 149 fd.append('action', "cf7_dropfiles_upload" ); 150 var status = new cf7_createStatusbar(obj); //Using this we can set progress. 151 var file_type = files[i].name.split('.'); 152 status.setFileNameSize(files[i].name,files[i].size); 153 status.setFileSize(file_type.slice(-1).pop()); 154 cf7_sendFileToServer(fd,status,obj); 155 156 } 157 } 158} 159jQuery(document).ready(function($){ 160 161 var obj = jQuery(".cf7-dragandrophandler"); 162 //console.log(obj); 163 obj.on('dragenter', function (e) 164 { 165 e.stopPropagation(); 166 e.preventDefault(); 167 jQuery(this).css('border', '2px solid #0B85A1'); 168 }); 169 obj.on('dragover', function (e) 170 { 171 e.stopPropagation(); 172 e.preventDefault(); 173 }); 174 175 obj.on('drop', function (e) 176 { 177 obj= $(this); 178 jQuery(this).css('border', '2px dotted #0B85A1'); 179 e.preventDefault(); 180 var files = e.originalEvent.dataTransfer.files; 181 //We need to send dropped files to Server 182 cf7_handleFileUpload(files,obj); 183 }); 184 jQuery(document).on('dragenter', function (e) 185 { 186 e.stopPropagation(); 187 e.preventDefault(); 188 }); 189 jQuery(document).on('dragover', function (e) 190 { 191 e.stopPropagation(); 192 e.preventDefault(); 193 obj.css('border', '2px dotted #0B85A1'); 194 }); 195 jQuery(document).on('drop', function (e) 196 { 197 e.stopPropagation(); 198 e.preventDefault(); 199 }); 200 obj.find('a').on('click', function (e) 201 { 202 //e.stopPropagation(); 203 e.preventDefault(); 204 jQuery(this).closest(".cf7-dragandrophandler-container").find('.input-uploads').click(); 205 }); 206 207 obj.closest(".cf7-dragandrophandler-container").find('.input-uploads').on('change', function (e) 208 { 209 var files = this.files; 210 //We need to send dropped files to Server 211 obj= $(this).closest('.wpcf7-form-control-wrap').find('.cf7-dragandrophandler'); 212 cf7_handleFileUpload(files,obj); 213 }); 214 215 jQuery("body").on("click",".cf7-drop-remove",function(e){ 216 e.preventDefault(); 217 var cr_name = jQuery(this).closest('.cf7-drop-remove').data("name") ; 218 var data = { 219 'action': 'cf7_dropfiles_remove', 220 'name': cr_name, 221 'type': jQuery("#cf7-droptype").val() 222 }; 223 var name = jQuery(this).closest('.wpcf7-form-control-wrap').find('.cf7-drop-upload').val().split("|"); 224 225 for (var i=name.length-1; i>=0; i--) { 226 if (name[i] === cr_name) { 227 name.splice(i, 1); 228 } 229 } 230 231 jQuery(this).closest('.wpcf7-form-control-wrap').find('.cf7-drop-upload').val( name.join("|") ); 232 jQuery(this).closest('.cf7-drop-statusbar').remove(); 233 jQuery.post(cf7_dropfiles.ajax_url, data, function(response) { 234 235 }); 236 return false;
237 }) 238});
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.