Benutzer:RobbiRobb/UploadPreview.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Speichern 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: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
- Konqueror: Aktualisieren anklicken oder F5 drücken
/**
* UploadPreview erzeugt eine dynamische Vorschau des Inhalts des Upload-Felds
* Seitentitel werden berücksichtigt und auch Lizenzen werden geparst
* Nutze dieses Scripts um Links und Kategorien auf Fehler zu prüfen
*
* @author RobbiRobb
*/
$(document).ready(function() {
if(mw.config.get("wgCanonicalSpecialPageName") !== "Upload") {
return;
}
function buildPreview() {
var uploadPreview = document.createElement("fieldset");
uploadPreview.id = "upload-preview";
uploadPreview.style.display = "none";
var legend = document.createElement("legend");
legend.innerText = "Vorschau";
uploadPreview.appendChild(legend);
var preview = document.createElement("div");
preview.id = "preview";
uploadPreview.appendChild(preview);
var contentHeading = document.createElement("h2");
contentHeading.style.display = "none";
var contentHeadingContent = document.createElement("span");
contentHeadingContent.id = "Beschreibung";
contentHeadingContent.classList.add("mw-headline");
contentHeadingContent.innerText = "Beschreibung";
contentHeading.appendChild(contentHeadingContent);
preview.appendChild(contentHeading);
var content = document.createElement("div");
content.id = "parsed-content";
preview.appendChild(content);
var buffer = document.createElement("div");
buffer.style.marginTop = "10px";
preview.appendChild(buffer);
var categories = document.createElement("div");
categories.id = "categories";
preview.appendChild(categories);
document.getElementsByTagName("fieldset")[1].after(uploadPreview);
}
function previewContent() {
if(document.querySelector("td#mw-license-preview") !== null) {
document.querySelector("td#mw-license-preview").remove();
}
var text = document.getElementById("wpUploadDescription").value.trim();
if(document.getElementById("wpLicense").value !== "") {
text += "\n== Lizenz ==\n" + document.getElementById("wpLicense").selectedOptions[0].title;
}
mw.loader.using("mediawiki.api", function() {
var api = new mw.Api();
api.get({
action: "parse",
prop: "categorieshtml|text",
contentmodel: "wikitext",
disablelimitreport: 1,
disableeditsection: 1,
disabletoc: 1,
text: text,
title: (document.getElementById("wpDestFile").value === "" ? "Datei:.png" : "Datei:" + document.getElementById("wpDestFile").value)
}).done(function(data) {
document.getElementById("upload-preview").style.display = null;
document.getElementById("parsed-content").innerHTML = data.parse.text["*"];
document.getElementById("categories").innerHTML = data.parse.categorieshtml["*"];
});
});
}
function hideContentHeading() {
var match = document.getElementById("wpUploadDescription").value.match(/^==\s*Beschreibung\s*==\n/);
if(match === null) {
document.getElementById("Beschreibung").parentNode.style.display = null;
} else {
document.getElementById("Beschreibung").parentNode.style.display = "none";
}
}
buildPreview();
document.getElementById("wpUploadDescription").addEventListener("input", previewContent);
document.getElementById("wpUploadDescription").addEventListener("input", hideContentHeading);
document.getElementById("wpLicense").addEventListener("change", previewContent);
document.getElementById("wpDestFile").addEventListener("input", previewContent);
});