1$('.direct-upload').each(function() { 2 var form = $(this); 3 4 i = 0; 5 6 form.fileupload({ 7 url: form.attr('action'), 8 type: 'POST', 9 dataType: 'xml', 10 acceptFileTypes: /(\.|\/)(csv|doc|docx|gif|jpeg|jpg|pdf|png|svg|ppt|pptx|ai|psd|xd|rtf|tiff|txt|xls|xlsx|zip)$/i, 11 add: function (event, data) { 12 var size_errors = ''; 13 for(x=0;x<data.originalFiles.length;x++) { 14 // max 2gb filesize 15 if(data.originalFiles[x]['size'] > 2000000000) { 16 size_errors += (size_errors?"<br />":"")+"Filesize of "+data.originalFiles[x].name+" is too big."; 17 } 18 } 19 20 if(size_errors) { 21 showAlert(size_errors,'bad'); 22 23 } else { 24 var goUpload = true; 25 var uploadFile = data.files[0]; 26 27 $('#upload-wrap').after('<div class="upload-wrap uploading" id="upload-wrap-'+i+'">'+$('#upload-wrap').html()+'</div>'); 28 var upload_wrap = $('#upload-wrap-'+i); 29 $(upload_wrap).find('.filename').html(uploadFile.name); 30 31 $('.progress').prepend('<i class="fa fa-cog spin"></i> Uploading...</i>'); 32 33 $.getJSON('?'+$('#submit_url').val()+'&get_amazon_s3_params=1', function (result) { 34 data.filename_prefix = result.filename_prefix; 35 delete result.filename_prefix; 36 data.formData = result; 37 data.fileName = encodeURIComponent(uploadFile.name); 38 data.fileSize = uploadFile.size; 39 data.increment = i; 40 data.upload_wrap = $(upload_wrap); 41 data.submitted = new Date().getTime(); 42 43 if(data.files[0].name.indexOf(',') > 0) { 44 showAlert("Please rename your file <strong>"+data.files[0].name+"</strong> to not include a comma and reupload.","bad"); 45 $(data.upload_wrap).fadeOut('slow',function() { 46 $(data.upload_wrap).remove(); 47 }); 48 data.abort(); 49 } 50 51 window.onbeforeunload = function() { 52 return 'You have unsaved changes.'; 53 }; 54 55 $(form).find('input, textarea, select').attr('disabled','disabled').addClass('disabled'); 56 57 data.submit(); 58 }); 59 } 60 }, 61 send: function(e, data) { 62 63 }, 64 progress: function(e, data){ 65 // This is what makes everything really cool, thanks to that callback 66 // you can now update the progress bar based on the upload progress. 67 var percent = Math.round((data.loaded / data.total) * 100); 68 var progress = data.loaded / data.total; 69 var timeSpent = new Date().getTime() - data.submitted; 70 var secondsRemaining = Math.round(((timeSpent / progress) - timeSpent) / 1000); 71 72 $(data.upload_wrap).find('.bar').css('width', percent + '%'); 73 $(data.upload_wrap).find('.seconds-remaining').html(secondsRemaining+'s Remaining'); 74 }, 75 fail: function(e, data) { 76 // Remove 'unsaved changes' message. 77 console.log(e); 78 console.log(data); 79 window.onbeforeunload = null; 80 }, 81 success: function(data) { 82 }, 83 stop: function(e) { 84 window.onbeforeunload = null; 85 }, 86 done: function (event, data) { 87 $(data.upload_wrap).find('.seconds-remaining').html('<i class="fa fa-cog spin"></i> Saving...'); 88 89 // soft submit/save via ajax 90 var thedata = 'submitter_name='+$('input[name=submitter_name]').val()+'&submitter_email='+$('input[name=submitter_email]').val()+'&parent_category_id='+$('#parent_category_id').val()+'&filename_prefix='+data.filename_prefix+'&filename='+data.fileName+'&filesize='+data.fileSize+'&public_file_upload=1'; 91 92 window.onbeforeunload = function() { 93 return 'You have unsaved changes.'; 94 }; 95 96 $.ajax({ 97 type: "POST", 98 data: thedata, 99 url: '?'+$('#submit_url').val(), 100 success: function(response,textStatus) { 101 $(data.upload_wrap).removeClass('uploading'); 102 $(data.upload_wrap).find('.seconds-remaining').html('Done!'); 103 if(!$('.upload-wrap.uploading').length) { 104 $('#upload-button').css({'display':'inline-block'}).removeClass('disabled'); 105 } else { 106 $('#upload-button').css({'display':'none'}).addClass('disabled'); 107 } 108 } 109 }); 110 }, 111 }); 112}); 113 114$('#upload-button').click(function() { 115 window.location.href = '?'+$('#submit_url').val()+'&uploaded=1'; 116 return false; 117}); 118 119$('input[name=submitter_name]').on('keyup',function() { check_required_fields(); }); 120$('input[name=submitter_email]').on('keyup',function() { check_required_fields(); }); 121 122function check_required_fields() { 123 //$("#upload-button").addClass('disabled'); 124 125 var pass = 1; 126 if(!$('input[name=submitter_name]').val()) pass = 0; 127 if(!$('input[name=submitter_email]').val()) pass = 0; 128 // if(!$('.upload-wrap.uploading').length) pass = 0; 129 130 if(pass) { 131 $('#upload-field-wrap').show(); 132 //$("#upload-button").removeClass('disabled'); 133 } else { 134 $('#upload-field-wrap').hide(); 135 } 136}
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.