Difference between revisions of "MediaWiki:Gadget-BulkUpload/Runtime.js"
From Nookipedia, the Animal Crossing wiki
SuperHamster (talk | contribs) (Rm console log) |
SuperHamster (talk | contribs) (Moving function out of loop) |
||
Line 38: | Line 38: | ||
document.getElementById('bulkUploadButton').disabled = true; | document.getElementById('bulkUploadButton').disabled = true; | ||
$('#bulkUploadStatus').empty(); | $('#bulkUploadStatus').empty(); | ||
+ | |||
+ | function uploadFile(file, uploadParams) { | ||
+ | api.upload(file, Object.freeze(uploadParams)).always( (response) => { | ||
+ | JSON.stringify(response); | ||
+ | completed++; | ||
+ | if (response.hasOwnProperty('upload')) { | ||
+ | $('#bulkUploadStatus').append('Upload succeeded for ' + file.name + ' (' + completed + ' out of ' + files.length + ')<br>'); | ||
+ | } else { | ||
+ | $('#bulkUploadStatus').append('Upload failed for ' + file.name + ' (' + completed + ' out of ' + files.length + ')<br>'); | ||
+ | } | ||
+ | if (completed == files.length) { | ||
+ | $('#bulkUploadStatus').append('<span style="color: green;">Done!</span>'); | ||
+ | document.getElementById('bulkUploadButton').disabled = false; | ||
+ | } | ||
+ | }); | ||
+ | } | ||
+ | |||
var files = $('#bulkUploadFiles')[0].files; | var files = $('#bulkUploadFiles')[0].files; | ||
for (var i = 0; i < files.length; i++) { | for (var i = 0; i < files.length; i++) { | ||
Line 56: | Line 73: | ||
}; | }; | ||
} | } | ||
− | + | uploadFile(file, uploadParams); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
}); | }); | ||
})(); | })(); |
Revision as of 11:36, July 23, 2021
(function() {
"use strict";
document.title = "Bulk upload form - Animal Crossing Wiki - Nookipedia";
$('#firstHeading').html('Bulk upload form');
$('#bodyContent').empty();
$('#bodyContent').append('<p>Use this form to upload multiple files at once. Filenames are kept as-is and all files will have the same information. To cancel an upload that is in progress, simply navigate away from this page.</p>');
var htmlUploadForm = `<fieldset>
<legend>Files and info</legend>
<label for="bulkUploadFiles">Select files:</label><br>
<input type="file" id="bulkUploadFiles" multiple/><br><br>
<label for="bulkUploadInfo">File description</legend><br>
<textarea id="bulkUploadInfo" cols="80" rows="12">
== Summary ==
{{File Info
|description = Describe the file (THIS IS NOT OPTIONAL)
|source = Where you found the file (THIS IS NOT OPTIONAL)
|edits = Describe any edits made (if applicable)
|other-versions = Link to similar version(s) (if applicable)
|source-file-name = Name of the original source file (if applicable)
}}
== Licensing ==
{{Fair use}}
</textarea><br><br>
<input type="checkbox" id="bulkUploadIgnoreWarnings"><label for="bulkUploadIgnoreWarnings">Ignore warnings (check to override existing files)</label><br><br>
<button id="bulkUploadButton" type="button">Upload files</button>
</fieldset>
<br>
<fieldset>
<legend>Upload status</legend>
<span id="bulkUploadStatus">Waiting for user to start upload.</span>
</fieldset>
`;
$('#bodyContent').append(htmlUploadForm);
document.getElementById('bulkUploadButton').addEventListener("click", function () {
const api = new mw.Api();
var completed = 0;
document.getElementById('bulkUploadButton').disabled = true;
$('#bulkUploadStatus').empty();
function uploadFile(file, uploadParams) {
api.upload(file, Object.freeze(uploadParams)).always( (response) => {
JSON.stringify(response);
completed++;
if (response.hasOwnProperty('upload')) {
$('#bulkUploadStatus').append('Upload succeeded for ' + file.name + ' (' + completed + ' out of ' + files.length + ')<br>');
} else {
$('#bulkUploadStatus').append('Upload failed for ' + file.name + ' (' + completed + ' out of ' + files.length + ')<br>');
}
if (completed == files.length) {
$('#bulkUploadStatus').append('<span style="color: green;">Done!</span>');
document.getElementById('bulkUploadButton').disabled = false;
}
});
}
var files = $('#bulkUploadFiles')[0].files;
for (var i = 0; i < files.length; i++) {
var file = files[i];
var uploadParams = {};
if($('#bulkUploadIgnoreWarnings').is(':checked')) {
uploadParams = {
filename: file.name,
text: $('#bulkUploadInfo').val(),
ignorewarnings: "yes",
format: "json"
};
} else {
uploadParams = {
filename: file.name,
text: $('#bulkUploadInfo').val(),
format: "json"
};
}
uploadFile(file, uploadParams);
}
});
})();