65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
(function() {
|
|
this.BlobFileDropzone = (function() {
|
|
function BlobFileDropzone(form, method) {
|
|
var dropzone, form_dropzone, submitButton;
|
|
form_dropzone = form.find('.dropzone');
|
|
Dropzone.autoDiscover = false;
|
|
dropzone = form_dropzone.dropzone({
|
|
autoDiscover: false,
|
|
autoProcessQueue: false,
|
|
url: form.attr('action'),
|
|
// Rails uses a hidden input field for PUT
|
|
// http://stackoverflow.com/questions/21056482/how-to-set-method-put-in-form-tag-in-rails
|
|
method: method,
|
|
clickable: true,
|
|
uploadMultiple: false,
|
|
paramName: "file",
|
|
maxFilesize: gon.max_file_size || 10,
|
|
parallelUploads: 1,
|
|
maxFiles: 1,
|
|
addRemoveLinks: true,
|
|
previewsContainer: '.dropzone-previews',
|
|
headers: {
|
|
"X-CSRF-Token": $("meta[name=\"csrf-token\"]").attr("content")
|
|
},
|
|
init: function() {
|
|
this.on('addedfile', function(file) {
|
|
$('.dropzone-alerts').html('').hide();
|
|
});
|
|
this.on('success', function(header, response) {
|
|
window.location.href = response.filePath;
|
|
});
|
|
this.on('maxfilesexceeded', function(file) {
|
|
this.removeFile(file);
|
|
});
|
|
return this.on('sending', function(file, xhr, formData) {
|
|
formData.append('target_branch', form.find('.js-target-branch').val());
|
|
formData.append('create_merge_request', form.find('.js-create-merge-request').val());
|
|
formData.append('commit_message', form.find('.js-commit-message').val());
|
|
});
|
|
},
|
|
// Override behavior of adding error underneath preview
|
|
error: function(file, errorMessage) {
|
|
var stripped;
|
|
stripped = $("<div/>").html(errorMessage).text();
|
|
$('.dropzone-alerts').html('Error uploading file: \"' + stripped + '\"').show();
|
|
this.removeFile(file);
|
|
}
|
|
});
|
|
submitButton = form.find('#submit-all')[0];
|
|
submitButton.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
if (dropzone[0].dropzone.getQueuedFiles().length === 0) {
|
|
alert("Please select a file");
|
|
}
|
|
dropzone[0].dropzone.processQueue();
|
|
return false;
|
|
});
|
|
}
|
|
|
|
return BlobFileDropzone;
|
|
|
|
})();
|
|
|
|
}).call(this);
|