MediaWiki:SimpleBatchUploadUpgrade.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
if (mw.config.get('wgCanonicalSpecialPageName') === 'BatchUpload') {
$(function () {
const $form = $('#fileupload');
const $preview = $('<div id="file-preview-area"><h3>📄 Dateivorschau</h3><table><thead><tr><th>Original</th><th>Neuer Name</th><th>Status</th></tr></thead><tbody></tbody></table></div>');
const $uploadBtn = $('<button>📤 Hochladen</button>').prop('disabled', true);
const uploadQueue = [];
$form.before($preview);
$preview.after($uploadBtn);
// ⛔️ Verhindert automatischen Upload
$form.fileupload('option', 'autoUpload', false);
function checkFileExists(name, callback) {
$.get(mw.util.wikiScript('api'), {
action: 'query',
format: 'json',
titles: 'File:' + name
}).done(function (res) {
const exists = res.query.pages && !res.query.pages['-1'];
callback(exists);
});
}
function updateUploadButtonState() {
const allClear = uploadQueue.every(entry => entry.status.text() === '✅ OK');
$uploadBtn.prop('disabled', !allClear);
}
$form.on('fileuploadadd', function (e, data) {
data.files.forEach(file => {
const row = $('<tr></tr>');
const originalName = file.name;
const input = $('<input type="text">').val(originalName);
const status = $('<td>🔍 Prüfe …</td>');
row.append($('<td>').text(originalName));
row.append($('<td>').append(input));
row.append(status);
$preview.find('tbody').append(row);
const entry = { file, data, input, status, row };
uploadQueue.push(entry);
// Erste Prüfung
checkFileExists(input.val(), function (exists) {
if (exists) {
status.text('⚠️ Existiert');
row.css('background', '#ffe0e0');
} else {
status.text('✅ OK');
row.css('background', '#e0ffe0');
}
updateUploadButtonState();
});
// Bei Namensänderung neu prüfen
input.on('input', function () {
const newName = input.val().trim();
checkFileExists(newName, function (exists) {
if (exists) {
status.text('⚠️ Existiert');
row.css('background', '#ffe0e0');
} else {
status.text('✅ OK');
row.css('background', '#e0ffe0');
}
updateUploadButtonState();
});
});
});
});
// Upload starten
$uploadBtn.on('click', function (e) {
e.preventDefault();
uploadQueue.forEach(entry => {
const formData = new FormData();
formData.append('file', entry.file);
formData.append('filename', entry.input.val().trim());
formData.append('token', mw.user.tokens.get('csrfToken'));
formData.append('action', 'upload');
formData.append('format', 'json');
formData.append('ignorewarnings', '1');
$.ajax({
url: mw.util.wikiScript('api'),
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function () {
entry.status.text('✅ Hochgeladen');
entry.row.css('background', '#d0f0d0');
},
error: function () {
entry.status.text('❌ Fehler');
entry.row.css('background', '#fdd');
}
});
});
});
});
}