MediaWiki:Skin/Spezial:Hochladen.js
Version vom 16. April 2008, 12:11 Uhr von J* (Diskussion | Beiträge)
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: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* === Hochlade-Seite === */
/* Konfiguration */
/*
* das imgklick-Objekt:
* hier wird festgelegt, welche Einfügeboxen erzeugt werden, welche Auswahlmöglichkeiten es gibt, welche
* Optionen, usw. Es wird auch festgelegt, welche Daten beim Hinzufügen ins Feld eingefügt werden.
*
* Erklärung:
* var imgklick =
* [
* { genau 1 Element pro Auswahlfeld
* name: String, der als Titel angezeigt wird, z.B. "Bildtechnik" oder "Lizenzen"
* arg: String, der Argumentname benutzt wird z.B. "Technik" wird dann zu "|Technik=",
* prefix: String, Teil des Namens der Vorlage vor dem Schrägstrich, z.B. "Bildquelle",
* opts: Array für die Auswahlmöglichkeiten
* [
* { genau 1 Element pro Auswahlmöglichkeit
* info: String, Beschreibungstext des Auswahlfeldes,
* vorlage: String, Teil des Namens der Vorlage nach dem Schrägstrich, z.B. "Wiki",
* args: Array für die zusätzlichen Optionen
* [
* { genau 1 Element pro Option
* arg: String, Name des Arguments, z.B. "1" ( wird dann zu "{{...|1=...}}" ),
* type: String, "text" für Textbox, "textarea" für mehrere Zeilen,
* info: String, Beschreibungstext für die Option
* }
* ]
* }
* ]
* }
* ]
*
* Sieht leider recht kompliziert aus, einfach mal unten ansehen:
*/
var imgklick =
[
{
name: "Quellen",
arg: "Quellen",
prefix: "Bildquelle",
opts:
[
{
name: "Kamelopedia",
info: "Das Bild stammt aus der Kamelopedia.",
vorlage: "Kamelo",
args:
[
{ arg: "1", type: "text", info: "Bildname:", pre: "Bild:" }
]
},
{
name: "Wikipedia",
info: "Das Bild stammt aus der Wikipedia.",
vorlage: "Wiki",
args:
[
{ arg: "1", type: "text", info: "Bildname:", pre: "Bild:" }
]
},
{
name: "Stupidedia",
info: "Das Bild stammt aus der Stupidedia.",
vorlage: "Stupi",
args:
[
{ arg: "1", type: "text", info: "Bildname:", pre: "Bild:" }
]
},
{
name: "Scan",
info: "Das wurde gescannt.",
vorlage: "Scan",
args:
[
{ arg: "1", type: "text", info: "Was hast du eingescannt:", pre: "" }
]
},
{
name: "Screenshot",
info: "Das wurde gescreenshottet.",
vorlage: "Screen",
args:
[
{ arg: "1", type: "text", info: "Wo? (Webseite oder Programm)", pre: "" }
]
},
{
name: "Selbst",
info: "Das Bild wurde komplett selbst erzeugt.",
vorlage: "Selbst",
args:
[ /* keine */ ]
},
{
name: "Unzureichend",
info: "Die Quellenangabe des Bildes ist unzureichend!",
vorlage: "Unzureichend",
args:
[
{ arg: "1", type: "textarea", info: "Bitte begründe hier, warum die Quellenangabe unzureichend ist:", pre: "" }
]
}
]
},
{
name: "Lizenz",
arg: "Lizenz",
prefix: "Bildlizenz",
opts:
[
{
name: "GNU FDL",
info: "Das Bild steht unter der GNU FDL (wie auch sonst hier alles).",
vorlage: "GNU_FDL",
args:
[ /* keine */ ]
},
{
name: "Public Domain",
info: "Das Bild ist gemeinfrei.",
vorlage: "PD",
args:
[ /* keine */ ]
},
{
name: "Creative Commons",
info: "Das Bild steht unter einer Kommunisten-Lizenz",
vorlage: "CCS1",
args:
[ /* keine */ ]
}
]
},
{
name: "Bildtechnik",
arg: "Technik",
prefix: "Bildtechnik",
opts:
[
{
name: "Unbekannt",
info: "Es wurde keine Bildtechnik angegeben.",
vorlage: "Unbekannt",
args: [ /* keine */ ]
},
{
name: "Animation",
info: "Das Bild wurde animiert.",
vorlage:"Animation",
args: [ /* keine */ ]
},
{
name: "Audio",
info: "Das Bild wurde vertont.",
vorlage:"Audio",
args: [ /* keine */ ]
},
{
name: "Grafik",
info: "Das Bild ist eine Grafik.",
vorlage:"Grafik",
args: [ /* keine */ ]
},
{
name: "Malerei",
info: "Das Bild wurde gemalt.",
vorlage:"Foto",
args: [ /* keine */ ]
},
{
name: "Mischtechnik",
info: "Das Bild ist eine Mischtechnik.",
vorlage:"Mix",
args: [ /* keine */ ]
},
{
name: "Foto",
info: "Das Bild wurde fotographiert",
vorlage:"Foto",
args: [ /* keine */ ]
},
{
name: "Sonstiges",
info: "",
vorlage: "Sonstige",
args:
[
{ arg: "Technik", type: "text", info: "Das Bild ist ein(e) ... ", pre: ""}
]
}
]
},
{
name: "Malware",
arg: "Malware",
prefix: "Malware",
opts:
[
{
name: "Keine",
info: "Es wurde keine Malware benutzt",
vorlage: "keine",
args: [ /* keine */ ]
},
{
name: "Gimp",
info: "Das Bild wurde gegimpt.",
vorlage: "Gimp",
args: [ /* keine */ ]
},
{
name: "Inkscape",
info: "Das Bild wurde geinkscapet.",
vorlage: "Inkscape",
args: [ /* keine */ ]
},
{
name: "Paint",
info: "Das Bild wurde gepaintet.",
vorlage: "Paint",
args: [ /* keine */ ]
},
{
name: "Sonstige",
info: "",
vorlage: "Sonstige",
args:
[
{ arg: "Malware", type: "text", info: "Das Bild wurde ...", pre: ""}
]
}
]
}
];
// name: Wie heißt die Grundvorlage?
// einfg: Wie soll sie am Anfang eingefügt werden?
grundvorlage =
{
name: "Bild",
einfg: "Bild\n"
};
// Welches Argument ("|xxxx=") soll für die Tags verwendet werden?
tag_arg = "Motiv";
/* Programmablauf */
/*
* fügt zu einer Auswahl die Optionsbeschreibung und die Argumente ein.
* element: nummer des Arrayelementes ( imgklick[?] )
* t: das Auswahlelement (select)
*/
function mk_opts( element, t )
{
out = create_opts( element, t.value );
document.getElementById(imgklick[element].name+"_opt").innerHTML = out;
return true;
};
/*
* gibt zu einer Auswahl die Optionsbeschreibung zurück.
* element: nummer des Arrayelementes imgklick[?]
* val: nummer des Arrayelements imgklick[].opts[?] bzw. Nummer der Auswahl
*/
function create_opts( element, val )
{
var out = imgklick[element].opts[val].info + " ";
for ( i = 0; i<imgklick[element].opts[val].args.length; i++ )
{
arg = imgklick[element].opts[val].args[i];
if ( arg.type == "textarea" )
out += arg.info + " <textarea style='width: 90%;' id='"+imgklick[element].name+"_arg_" + i+"'>"+arg.pre+"</textarea>";
else
out += arg.info + " <input type='" + arg.type + "' value='"+arg.pre+"' id='"+imgklick[element].name+"_arg_" + i + "'/>";
}
return out;
}
/*
* fügt Text in die Textbox ein (eigentliches Klicktag)
*/
function mk_add( element )
{
obj = imgklick[element].opts[document.getElementById(imgklick[element].name+"_select").value];
var args = "";
for( i=0; i<obj.args.length; i++ )
{
args += "|" + obj.args[i].arg + "=" + document.getElementById(imgklick[element].name+"_arg_"+i).value;
}
var box = document.getElementById("wpUploadDescription");
var val = "{{"+imgklick[element].prefix+"/"+obj.vorlage+args+"}}";
var arg = imgklick[element].arg;
var reg = new RegExp("{{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?}}");
var reg_has_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?[|][\s\n]*"+arg+"=)((.|\n)*}})");
var reg_hasnt_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*)(([|](.|\n)*)?}})");
if ( -1 == box.value.search(reg) )
{ // kein Grundvorlage
alert("Grundvorlage nicht gefunden.");
}
else if ( -1 != box.value.search(reg_has_arg))
box.value = box.value.replace( reg_has_arg, "$1\n"+val+"$4" );
else
box.value = box.value.replace( reg_hasnt_arg, "$1|"+arg+"=\n"+val+"\n$2");
};
/*
* returnt eine Box zum Einfügen der übergeordneten Vorlage
*/
function mk_g_box ()
{
var out = "";
out += "<div style='border: 1px red dotted; margin: 5px; padding: 5px;'>";
out += "<form><h4>Grundvorlage einfügen</h4>";
out += "Als erstes brauchst du eine Grundvorlage: <input type='button' value='Hinzufügen!' onclick='mk_add_g();'>";
out += "</form>";
out += "</div>";
return out;
}
function mk_tag_box ()
{
var out = "";
out += "<div style='border: 1px red dotted; margin: 5px; padding: 5px;'>";
out += "<form><h4>Tags einfügen</h4>";
out += "Hier kannst du Schlüsselwörter angeben, bitte durch Komma trennen! Angeben kannst du z.B. Motiv, Farben, Besonderheiten, … :<br/><textarea id='tag_box' style='width:95%;'></textarea><br/>";
out += "<input type='button' value='Hinzufügen!' onclick='mk_add_tags();'>";
out += "</form>";
out += "</div>";
return out;
}
function mk_add_tags ()
{
var box = document.getElementById("wpUploadDescription");
var val = document.getElementById("tag_box").value;
var reg = new RegExp("{{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?}}");
var reg_has_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?[|][\s\n]*"+tag_arg+"=[\n]?)((.|\n)*}})");
var reg_hasnt_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*)(([|](.|\n)*)?}})");
if ( -1 == box.value.search(reg) )
{ // kein Grundvorlage
alert("Grundvorlage nicht gefunden.");
return;
}
else if ( -1 != box.value.search(reg_has_arg))
box.value = box.value.replace( reg_has_arg, "$1"+val+", $4" );
else
box.value = box.value.replace( reg_hasnt_arg, "$1|"+tag_arg+"=\n"+val+"\n$2");
}
/*
* fügt die Grundvorlage ein
*/
function mk_add_g ()
{
box = document.getElementById("wpUploadDescription");
if ( -1 == box.value.search(new RegExp("{{"+grundvorlage.name+"(\s|\n)*([|](.|\n)*)?}}")) )
{
box.value += "{{"+grundvorlage.einfg+"}}";
}
else
alert("Wiki sagt: Ich glaube, da gibt es schon eine Grundvorlage.");
}
/*
* am Anfang alles reinladen
*/
addOnloadHook(mkALL);
function mkALL()
{
// die Zeile wird im "echten" Betrieb weggelöscht
//mk_my_page();
var out = "";
out += mk_g_box();
for ( e=0; e<imgklick.length; e++ )
{
out += "<div style='border: 1px red dotted; margin: 5px; padding: 5px;'>";
out += "<form><h4>"+imgklick[e].name+" hinzufügen</h4>";
out += "<select name='" + e + "' id='" + imgklick[e].name + "_select' size='1' onchange='mk_opts( "+e+", this );'>";
for ( i = 0; i<imgklick[e].opts.length; i++ )
{
out += "<option value='" + i + "'>" + imgklick[e].opts[i].name + "</option>";
}
out += "</select>";
out += " <span id='" + imgklick[e].name + "_opt'>"+create_opts( e, 0 )+"</span> <input type='button' value='Hinzufügen' onclick='mk_add("+e+");'>";
out += "</form>";
out += "</div>";
}
out += mk_tag_box();
document.getElementById("klicktag").innerHTML = out;
};