MediaWiki:Skin/Spezial:Hochladen.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
J* (Diskussion | Beiträge) |
K |
||
(105 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | function einaus2 (inhalt, einblenden, ausblenden) { | ||
+ | var thisLevel = document.getElementById(inhalt); | ||
+ | var otherLevel = document.getElementById(einblenden); | ||
+ | var linkLevel = document.getElementById(ausblenden); | ||
+ | if (thisLevel.style.display == 'none') { | ||
+ | thisLevel.style.display = 'block'; | ||
+ | otherLevel.style.display = 'none'; | ||
+ | linkLevel.style.display = 'block'; | ||
+ | } else { | ||
+ | thisLevel.style.display = 'none'; | ||
+ | otherLevel.style.display = 'block'; | ||
+ | linkLevel.style.display = 'none'; | ||
+ | } | ||
+ | } | ||
/* === Hochlade-Seite === */ | /* === Hochlade-Seite === */ | ||
− | /* | + | var box; // Globale Variable |
+ | var BGcolor = [ "red", "green", "gray" ]; | ||
+ | /* | ||
+ | * generieren der Datenstruktur aus DPL-Ergebnissen - #1: AJAX-Request | ||
+ | */ | ||
+ | var imgklick = new Array(); | ||
+ | |||
+ | function mk_ajax() | ||
+ | { | ||
+ | |||
+ | jQuery.ajax( { | ||
+ | url: wgScript, | ||
+ | context: document.body, | ||
+ | dataType: "text", | ||
+ | data: 'title=Kamelopedia:Bildsuche/Klick-Tpl&action=raw&templates=expand', | ||
+ | success: function( data, textStatus ) { gen_imgklick( data ); mkALL(); } | ||
+ | } ); | ||
+ | } | ||
+ | jQuery(document).ready(function() { | ||
+ | |||
+ | if (window.location.href.indexOf("wpForReUpload=1") == -1){ //nicht beim Re-Upload | ||
+ | mk_ajax(); | ||
+ | } else { | ||
+ | out = "<p style='padding: 20px; font-weight: bold;'>Geänderten Lizenz-Kram bitte nach dem Hochladen der neuen Version durch Bearbeiten der Datei-Seite anpassen.</p>"; | ||
+ | jQuery('#klicktag').html(out); | ||
+ | } | ||
+ | }); | ||
/* | /* | ||
− | * | + | * generieren der Datenstruktur aus DPL-Ergebnissen - #2: Parser |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*/ | */ | ||
+ | function gen_imgklick( txt ) | ||
+ | { | ||
− | + | txt = txt.replace(/ *[|¦] */g, "|"); | |
− | [ | + | txt = txt.replace(/[\n\r]+/g, "\n" ); |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | /* Sicherheits-Feature: HTML-Tags weg (bis auf <br>) */ | |
− | + | txt = txt.replace(/[<]/g, "<" ); | |
− | + | txt = txt.replace(/[>]/g, ">" ); | |
− | + | txt = txt.replace( /<br *\/? *>/g, "<br/>" ); | |
− | + | lines = txt.split( "\n" ); | |
− | + | //alert(txt); | |
− | + | for( i=0; i<lines.length; i++ ) | |
− | + | { | |
− | + | //zeile auslesen | |
+ | type = lines[i].substring(0,1); | ||
+ | lines[i] = lines[i].substring(1); | ||
+ | elements = lines[i].split( "|" ); | ||
+ | |||
+ | if( type == ";" ) // Vorlage | ||
+ | { | ||
+ | if ( elements[4] == "no" ) // ignorieren-Flag gesetzt | ||
+ | continue; | ||
+ | if ( elements[2] == "" ) | ||
+ | elements[2] = elements[1]; | ||
+ | if ( ! imgklick[0] || imgklick[imgklick.length-1].name != elements[0] ) | ||
+ | imgklick.push( { name: elements[0], arg: elements[0], prefix:elements[0], opts: [ ] } ); | ||
+ | imgklick[imgklick.length-1].opts.push( { name: elements[2], info: elements[3], vorlage: elements[1], args: [ ], selected: elements[4] } ); | ||
+ | } | ||
+ | else if( type == "*" ) // Argument | ||
+ | { | ||
+ | opts = imgklick[imgklick.length-1].opts; | ||
+ | opts[opts.length-1].args.push( { arg: elements[0], type: elements[1], info: elements[2], pre: elements[3], options: elements.slice(4) } ); | ||
+ | } | ||
+ | } | ||
+ | } | ||
− | + | /* | |
− | + | * Benutzer-Rückmeldungen: | |
− | + | */ | |
− | + | msg_OK = | |
− | + | [ | |
− | + | "In Ordnung.", | |
− | + | "Aber gerne.", | |
− | + | "Bitteschön.", | |
− | + | "Klar doch!", | |
− | + | "Kein Problem.", | |
− | + | "Jawohl.", | |
− | + | "Gerne doch." | |
− | + | ]; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// name: Wie heißt die Grundvorlage? | // name: Wie heißt die Grundvorlage? | ||
Zeile 252: | Zeile 108: | ||
// Welches Argument ("|xxxx=") soll für die Tags verwendet werden? | // Welches Argument ("|xxxx=") soll für die Tags verwendet werden? | ||
tag_arg = "Motiv"; | tag_arg = "Motiv"; | ||
+ | |||
+ | // globales Prefix für Vorlagen (Grundvorlage ausgenommen) | ||
+ | globalPrefix = "Bild/"; | ||
+ | // globaler Separator | ||
+ | globalSep = ": "; | ||
/* Programmablauf */ | /* Programmablauf */ | ||
+ | /* | ||
+ | * Den Nachrichtenzähler auf irgendwas setzen | ||
+ | */ | ||
+ | msg_OK_counter = Math.floor( Math.random() * msg_OK.length ); | ||
+ | |||
+ | function add_msg( obj ) | ||
+ | { | ||
+ | if( obj.innerHTML == msg_OK[msg_OK_counter] ) | ||
+ | msg_counter_up(); | ||
+ | //wirft Fehler im IE7 & 8 | ||
+ | //obj.innerHTML = msg_OK[msg_OK_counter]; | ||
+ | jqobj = obj; | ||
+ | jQuery(jqobj).html(msg_OK[msg_OK_counter]); | ||
+ | msg_counter_up(); | ||
+ | } | ||
+ | |||
+ | function msg_counter_up() | ||
+ | { | ||
+ | msg_OK_counter++; | ||
+ | if ( msg_OK_counter >= msg_OK.length ) | ||
+ | msg_OK_counter = 0; | ||
+ | } | ||
/* | /* | ||
* fügt zu einer Auswahl die Optionsbeschreibung und die Argumente ein. | * fügt zu einer Auswahl die Optionsbeschreibung und die Argumente ein. | ||
Zeile 263: | Zeile 146: | ||
{ | { | ||
out = create_opts( element, t.value ); | out = create_opts( element, t.value ); | ||
− | document.getElementById(imgklick[element].name+"_opt"). | + | jout = document.getElementById(imgklick[element].name+"_opt"); |
+ | jQuery(jout).html(out); | ||
return true; | return true; | ||
}; | }; | ||
Zeile 274: | Zeile 158: | ||
function create_opts( element, val ) | function create_opts( element, val ) | ||
{ | { | ||
− | var out = imgklick[element].opts[val].info + " "; | + | var out = imgklick[element].opts[val].info + "<br/>"; |
− | for ( i = 0; i<imgklick[element].opts[val].args.length; i++ ) | + | var wdt;// optionale Variable für die Breite eines Eingabefeldes |
− | { | + | for ( i = 0; i<imgklick[element].opts[val].args.length; i++ ) |
− | + | { | |
− | + | arg = imgklick[element].opts[val].args[i]; | |
− | + | if ( arg.type == "textarea" ) | |
− | + | out += "<br/>" + arg.info + " <textarea style='width: 90%;' id='"+imgklick[element].name+"_arg_" + i+"'>"+arg.pre+"</textarea>"; | |
− | out += arg.info + " <input type='" + arg.type + "' value='"+arg.pre+"' id='"+imgklick[element].name+"_arg_" + i + "'/>"; | + | else if ( arg.type == "select" && imgklick[element].opts[val].args[i].options != null && imgklick[element].opts[val].args[i].options[0] != null) |
− | } | + | { |
− | return out; | + | |
+ | out += "<br/>" + arg.info + " <select id='"+imgklick[element].name+"_arg_" + i+"'>"; | ||
+ | for ( opt=0; opt<imgklick[element].opts[val].args[i].options.length; opt++ ) | ||
+ | { | ||
+ | |||
+ | pos = imgklick[element].opts[val].args[i].options[opt].indexOf("="); | ||
+ | var optkey; var optval; | ||
+ | |||
+ | if ( pos == -1 ) | ||
+ | { | ||
+ | optkey = imgklick[element].opts[val].args[i].options[opt]; | ||
+ | optval = imgklick[element].opts[val].args[i].options[opt]; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | optval = imgklick[element].opts[val].args[i].options[opt].substring(0,pos); | ||
+ | optkey = imgklick[element].opts[val].args[i].options[opt].substring(pos+1); | ||
+ | } | ||
+ | var sel = ""; | ||
+ | if ( optkey == imgklick[element].opts[val].args[i].pre ) | ||
+ | sel = "select='selected'"; | ||
+ | out += "<option value='"+optval+"' "+sel+">"+optkey+"</option>"; | ||
+ | |||
+ | } | ||
+ | out += "</select>"; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | if (imgklick[element].opts[val].args[i].options[0]) | ||
+ | { | ||
+ | wdt=imgklick[element].opts[val].args[i].options[0]; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | wdt="150px"; | ||
+ | } | ||
+ | out += arg.info + " <input type='" + arg.type + "' style='width:"+wdt+"' value='"+arg.pre+"' id='"+imgklick[element].name+"_arg_" + i + "'/> "; | ||
+ | } | ||
+ | } | ||
+ | return out; | ||
} | } | ||
Zeile 297: | Zeile 220: | ||
args += "|" + obj.args[i].arg + "=" + document.getElementById(imgklick[element].name+"_arg_"+i).value; | args += "|" + obj.args[i].arg + "=" + document.getElementById(imgklick[element].name+"_arg_"+i).value; | ||
} | } | ||
− | + | var val = "{{"+globalPrefix+imgklick[element].prefix+globalSep+obj.vorlage+args+"}}"; | |
− | var val = "{{"+imgklick[element].prefix+ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | var arg = imgklick[element].arg; | ||
+ | var reg = new RegExp("[{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[}][}]"); | ||
+ | var reg_has_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[|][\s\n]*"+arg+"=)((.|\n|\r)*}})"); | ||
+ | var reg_hasnt_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*)(([|](.|\n|\r)*)?[}][}])"); | ||
if ( -1 == box.value.search(reg) ) | if ( -1 == box.value.search(reg) ) | ||
{ // kein Grundvorlage | { // kein Grundvorlage | ||
− | + | mk_add_g(); | |
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | } | + | document.getElementById(imgklick[element].name+"_button").style.color=BGcolor[1]; |
+ | 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"); | ||
+ | |||
+ | add_msg( document.getElementById(imgklick[element].name+"_msg") ); | ||
+ | |||
+ | } | ||
/* | /* | ||
Zeile 322: | Zeile 247: | ||
{ | { | ||
var out = ""; | var out = ""; | ||
− | out += "<div | + | out += "<div class='box1' >"; |
− | out += "<form | + | out += "<form>"; |
− | out += " | + | out += "<table class='boxes'>"; |
+ | out += "</table>"; | ||
out += "</form>"; | out += "</form>"; | ||
out += "</div>"; | out += "</div>"; | ||
− | + | return out; | |
} | } | ||
+ | |||
function mk_tag_box () | function mk_tag_box () | ||
{ | { | ||
var out = ""; | var out = ""; | ||
− | out += "<div | + | out += "<div class='box0' >"; |
− | out += "<form>< | + | out += "<p class='angabe'>Beschreibende Markierungen</p>"; |
− | + | out += "<form>"; | |
− | out += "<input type='button' value='Hinzufügen | + | out += "<table class='boxes'>"; |
+ | out += "<tr><td colspan='2'><small>Hier kannst du – <b>durch Komma</b> getrennte – Schlüsselwörter angeben (z.B. Motiv, Farben, Besonderheiten).<br /><b>Beachte bitte:</b> Mach die Tags kurz und knackig, z.B. <i>Kuh, Weiß, Lila, Violett</i>. </small></td></tr>"; | ||
+ | out += "</td></tr>"; | ||
+ | out += "<tr><td class='left'>"; | ||
+ | out += "<textarea id='tag_box' style='width: 90%;'></textarea>"; | ||
+ | out += "</td><td class='right' valign='top'>"; | ||
+ | out += "<input type='button' id='tag_box_button' class='buttonStyle0' value='Hinzufügen' onclick='mk_add_tags();'>"; | ||
+ | out += " <span id='tag_msg'></span>"; | ||
+ | out += "</td></tr></table>"; | ||
out += "</form>"; | out += "</form>"; | ||
out += "</div>"; | out += "</div>"; | ||
− | + | return out; | |
} | } | ||
+ | |||
+ | |||
function mk_add_tags () | function mk_add_tags () | ||
{ | { | ||
− | |||
var val = document.getElementById("tag_box").value; | var val = document.getElementById("tag_box").value; | ||
− | + | ||
− | var reg = new RegExp("{{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?}}"); | + | var reg = new RegExp("[{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[}][}]"); |
− | var reg_has_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*([|](.|\n)*)?[|][\s\n]*"+tag_arg+"=[\n] | + | var reg_has_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[|][\s\n\r]*"+tag_arg+"=[\s\n\r]*)((.|\n|\r)*[}][}])"); |
− | var reg_hasnt_arg = new RegExp("({{"+grundvorlage.name+"[\s\n]*)(([|](.|\n)*)?}})"); | + | var reg_hasnt_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*)(([|](.|\n|\r)*)?[}][}])"); |
if ( -1 == box.value.search(reg) ) | if ( -1 == box.value.search(reg) ) | ||
{ // kein Grundvorlage | { // kein Grundvorlage | ||
− | + | mk_add_g(); | |
− | + | } | |
− | + | ||
− | + | document.getElementById("tag_box_button").style.color=BGcolor[1]; | |
− | + | 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"); | ||
+ | add_msg(document.getElementById("tag_msg")); | ||
+ | |||
} | } | ||
Zeile 367: | Zeile 306: | ||
function mk_add_g () | function mk_add_g () | ||
{ | { | ||
− | + | if ( -1 == box.value.search(new RegExp("[{][{]"+grundvorlage.name+"(\s|\n|\r)*([|](.|\n|\r)*)?[}][}]")) ) | |
− | if ( -1 == box.value.search(new RegExp("{{"+grundvorlage.name+"(\s|\n)*([|](.|\n)*)?}}")) ) | + | { |
− | |||
box.value += "{{"+grundvorlage.einfg+"}}"; | box.value += "{{"+grundvorlage.einfg+"}}"; | ||
− | + | //add_msg(document.getElementById("g_msg")); | |
− | + | //document.getElementById("text_box_button").style.color=BGcolor[2]; | |
− | + | } | |
+ | else { | ||
+ | alert("Wiki sagt: Ich glaube, da gibt es schon eine Grundvorlage."); | ||
+ | } | ||
+ | return; | ||
} | } | ||
+ | |||
/* | /* | ||
* am Anfang alles reinladen | * am Anfang alles reinladen | ||
*/ | */ | ||
− | + | ||
function mkALL() | function mkALL() | ||
{ | { | ||
− | // | + | box = document.getElementById("wpUploadDescription"); |
− | + | var klapp1 = ""; | |
+ | var klapp2 = ""; | ||
+ | |||
+ | if ( ! box || box == null ) | ||
+ | { // Bild wird nicht hochgeladen, sondern bearbeitet! | ||
+ | klapp1 = "<div id='lboxein' style='padding:5px;'><a href='javascript:einaus2(\"lbox\",\"lboxein\",\"lboxaus\")'>[Bild-Lizenz-Box anzeigen]</a></div><div id='lboxaus' style='display:none;padding:5px;border-bottom:1px solid #aaa;'><a href='javascript:einaus2(\"lbox\",\"lboxein\",\"lboxaus\")'>[Bild-Lizenz-Box verbergen]</a> (Hinweis: Grundvorlage muss nicht mehr per Huf eingefügt werden)</div><div id='lbox' style='display:none;'>"; | ||
+ | klapp2 = "</div>"; | ||
+ | box = document.getElementById("wpTextbox1"); | ||
+ | var ibox = document.createElement("div"); | ||
+ | ibox.id = "klicktag"; | ||
+ | tb = document.getElementById("wpTextbox1"); | ||
+ | if ( tb ) | ||
+ | tb.parentNode.insertBefore(ibox, tb); | ||
+ | else | ||
+ | box.parentNode.insertBefore(ibox, box); | ||
+ | } | ||
+ | if ( ! box || box == null ) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
var out = ""; | var out = ""; | ||
− | + | //out += mk_g_box(); | |
− | for ( e=0; e<imgklick.length; e++ ) | + | //--------------------------------------------------- |
− | + | for ( e=0; e<imgklick.length; e++ ) { | |
− | out += "<div | + | out += "<div class='box1'>"; |
− | out += "< | + | out += "<p class='angabe'>Angaben zur "+ imgklick[e].name + "</p>"; |
+ | out += "<form>"; | ||
+ | out += "<table class='boxes'>"; | ||
+ | out += "<tr><td class='left'>"; | ||
out += "<select name='" + e + "' id='" + imgklick[e].name + "_select' size='1' onchange='mk_opts( "+e+", this );'>"; | out += "<select name='" + e + "' id='" + imgklick[e].name + "_select' size='1' onchange='mk_opts( "+e+", this );'>"; | ||
+ | |||
+ | var selectedIndex = null;var selectedIndex = null; | ||
for ( i = 0; i<imgklick[e].opts.length; i++ ) | for ( i = 0; i<imgklick[e].opts.length; i++ ) | ||
{ | { | ||
− | out += "<option value='" + i + "'>" + imgklick[e].opts[i].name + "</option>"; | + | var sel = ""; |
+ | if ( imgklick[e].opts[i].selected == "selected" && selectedIndex == null ) | ||
+ | { | ||
+ | sel=' selected="selected" '; | ||
+ | selectedIndex=i; | ||
+ | } | ||
+ | else | ||
+ | sel = ''; | ||
+ | out += "<option value='" + i + "'"+sel+">" + imgklick[e].opts[i].name + "</option>"; | ||
} | } | ||
+ | |||
+ | if ( selectedIndex == null ) | ||
+ | selectedIndex = 0; | ||
out += "</select>"; | out += "</select>"; | ||
− | out += " <span id='" + imgklick[e].name + "_opt'>"+create_opts( e, | + | out += " <span id='" + imgklick[e].name + "_opt'>"+create_opts( e, selectedIndex )+"</span> "; |
+ | out += "</td><td class='right' valign='top'>"; | ||
+ | out += "<input type='button' id='"+imgklick[e].name+"_button' class='buttonStyle0' value='Hinzufügen' onclick='mk_add("+e+");'>"; | ||
+ | out += " <span id='" + imgklick[e].name + "_msg'></span>"; | ||
+ | out += "</td></tr></table>"; | ||
out += "</form>"; | out += "</form>"; | ||
out += "</div>"; | out += "</div>"; | ||
+ | } | ||
− | + | //------------------------------------------------------- | |
− | + | out += mk_tag_box(); | |
− | + | jout = klapp1 + "<div class='outer' >" + out + "</div>" + klapp2; | |
+ | jQuery('#klicktag').html(jout); | ||
}; | }; |
Aktuelle Version vom 1. Februar 2014, 00:15 Uhr
function einaus2 (inhalt, einblenden, ausblenden) {
var thisLevel = document.getElementById(inhalt);
var otherLevel = document.getElementById(einblenden);
var linkLevel = document.getElementById(ausblenden);
if (thisLevel.style.display == 'none') {
thisLevel.style.display = 'block';
otherLevel.style.display = 'none';
linkLevel.style.display = 'block';
} else {
thisLevel.style.display = 'none';
otherLevel.style.display = 'block';
linkLevel.style.display = 'none';
}
}
/* === Hochlade-Seite === */
var box; // Globale Variable
var BGcolor = [ "red", "green", "gray" ];
/*
* generieren der Datenstruktur aus DPL-Ergebnissen - #1: AJAX-Request
*/
var imgklick = new Array();
function mk_ajax()
{
jQuery.ajax( {
url: wgScript,
context: document.body,
dataType: "text",
data: 'title=Kamelopedia:Bildsuche/Klick-Tpl&action=raw&templates=expand',
success: function( data, textStatus ) { gen_imgklick( data ); mkALL(); }
} );
}
jQuery(document).ready(function() {
if (window.location.href.indexOf("wpForReUpload=1") == -1){ //nicht beim Re-Upload
mk_ajax();
} else {
out = "<p style='padding: 20px; font-weight: bold;'>Geänderten Lizenz-Kram bitte nach dem Hochladen der neuen Version durch Bearbeiten der Datei-Seite anpassen.</p>";
jQuery('#klicktag').html(out);
}
});
/*
* generieren der Datenstruktur aus DPL-Ergebnissen - #2: Parser
*/
function gen_imgklick( txt )
{
txt = txt.replace(/ *[|¦] */g, "|");
txt = txt.replace(/[\n\r]+/g, "\n" );
/* Sicherheits-Feature: HTML-Tags weg (bis auf <br>) */
txt = txt.replace(/[<]/g, "<" );
txt = txt.replace(/[>]/g, ">" );
txt = txt.replace( /<br *\/? *>/g, "<br/>" );
lines = txt.split( "\n" );
//alert(txt);
for( i=0; i<lines.length; i++ )
{
//zeile auslesen
type = lines[i].substring(0,1);
lines[i] = lines[i].substring(1);
elements = lines[i].split( "|" );
if( type == ";" ) // Vorlage
{
if ( elements[4] == "no" ) // ignorieren-Flag gesetzt
continue;
if ( elements[2] == "" )
elements[2] = elements[1];
if ( ! imgklick[0] || imgklick[imgklick.length-1].name != elements[0] )
imgklick.push( { name: elements[0], arg: elements[0], prefix:elements[0], opts: [ ] } );
imgklick[imgklick.length-1].opts.push( { name: elements[2], info: elements[3], vorlage: elements[1], args: [ ], selected: elements[4] } );
}
else if( type == "*" ) // Argument
{
opts = imgklick[imgklick.length-1].opts;
opts[opts.length-1].args.push( { arg: elements[0], type: elements[1], info: elements[2], pre: elements[3], options: elements.slice(4) } );
}
}
}
/*
* Benutzer-Rückmeldungen:
*/
msg_OK =
[
"In Ordnung.",
"Aber gerne.",
"Bitteschön.",
"Klar doch!",
"Kein Problem.",
"Jawohl.",
"Gerne doch."
];
// 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";
// globales Prefix für Vorlagen (Grundvorlage ausgenommen)
globalPrefix = "Bild/";
// globaler Separator
globalSep = ": ";
/* Programmablauf */
/*
* Den Nachrichtenzähler auf irgendwas setzen
*/
msg_OK_counter = Math.floor( Math.random() * msg_OK.length );
function add_msg( obj )
{
if( obj.innerHTML == msg_OK[msg_OK_counter] )
msg_counter_up();
//wirft Fehler im IE7 & 8
//obj.innerHTML = msg_OK[msg_OK_counter];
jqobj = obj;
jQuery(jqobj).html(msg_OK[msg_OK_counter]);
msg_counter_up();
}
function msg_counter_up()
{
msg_OK_counter++;
if ( msg_OK_counter >= msg_OK.length )
msg_OK_counter = 0;
}
/*
* 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 );
jout = document.getElementById(imgklick[element].name+"_opt");
jQuery(jout).html(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 + "<br/>";
var wdt;// optionale Variable für die Breite eines Eingabefeldes
for ( i = 0; i<imgklick[element].opts[val].args.length; i++ )
{
arg = imgklick[element].opts[val].args[i];
if ( arg.type == "textarea" )
out += "<br/>" + arg.info + " <textarea style='width: 90%;' id='"+imgklick[element].name+"_arg_" + i+"'>"+arg.pre+"</textarea>";
else if ( arg.type == "select" && imgklick[element].opts[val].args[i].options != null && imgklick[element].opts[val].args[i].options[0] != null)
{
out += "<br/>" + arg.info + " <select id='"+imgklick[element].name+"_arg_" + i+"'>";
for ( opt=0; opt<imgklick[element].opts[val].args[i].options.length; opt++ )
{
pos = imgklick[element].opts[val].args[i].options[opt].indexOf("=");
var optkey; var optval;
if ( pos == -1 )
{
optkey = imgklick[element].opts[val].args[i].options[opt];
optval = imgklick[element].opts[val].args[i].options[opt];
}
else
{
optval = imgklick[element].opts[val].args[i].options[opt].substring(0,pos);
optkey = imgklick[element].opts[val].args[i].options[opt].substring(pos+1);
}
var sel = "";
if ( optkey == imgklick[element].opts[val].args[i].pre )
sel = "select='selected'";
out += "<option value='"+optval+"' "+sel+">"+optkey+"</option>";
}
out += "</select>";
}
else
{
if (imgklick[element].opts[val].args[i].options[0])
{
wdt=imgklick[element].opts[val].args[i].options[0];
}
else
{
wdt="150px";
}
out += arg.info + " <input type='" + arg.type + "' style='width:"+wdt+"' 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 val = "{{"+globalPrefix+imgklick[element].prefix+globalSep+obj.vorlage+args+"}}";
var arg = imgklick[element].arg;
var reg = new RegExp("[{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[}][}]");
var reg_has_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[|][\s\n]*"+arg+"=)((.|\n|\r)*}})");
var reg_hasnt_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*)(([|](.|\n|\r)*)?[}][}])");
if ( -1 == box.value.search(reg) )
{ // kein Grundvorlage
mk_add_g();
}
document.getElementById(imgklick[element].name+"_button").style.color=BGcolor[1];
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");
add_msg( document.getElementById(imgklick[element].name+"_msg") );
}
/*
* returnt eine Box zum Einfügen der übergeordneten Vorlage
*/
function mk_g_box ()
{
var out = "";
out += "<div class='box1' >";
out += "<form>";
out += "<table class='boxes'>";
out += "</table>";
out += "</form>";
out += "</div>";
return out;
}
function mk_tag_box ()
{
var out = "";
out += "<div class='box0' >";
out += "<p class='angabe'>Beschreibende Markierungen</p>";
out += "<form>";
out += "<table class='boxes'>";
out += "<tr><td colspan='2'><small>Hier kannst du – <b>durch Komma</b> getrennte – Schlüsselwörter angeben (z.B. Motiv, Farben, Besonderheiten).<br /><b>Beachte bitte:</b> Mach die Tags kurz und knackig, z.B. <i>Kuh, Weiß, Lila, Violett</i>. </small></td></tr>";
out += "</td></tr>";
out += "<tr><td class='left'>";
out += "<textarea id='tag_box' style='width: 90%;'></textarea>";
out += "</td><td class='right' valign='top'>";
out += "<input type='button' id='tag_box_button' class='buttonStyle0' value='Hinzufügen' onclick='mk_add_tags();'>";
out += " <span id='tag_msg'></span>";
out += "</td></tr></table>";
out += "</form>";
out += "</div>";
return out;
}
function mk_add_tags ()
{
var val = document.getElementById("tag_box").value;
var reg = new RegExp("[{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[}][}]");
var reg_has_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*([|](.|\n|\r)*)?[|][\s\n\r]*"+tag_arg+"=[\s\n\r]*)((.|\n|\r)*[}][}])");
var reg_hasnt_arg = new RegExp("([{][{]"+grundvorlage.name+"[\s\n\r]*)(([|](.|\n|\r)*)?[}][}])");
if ( -1 == box.value.search(reg) )
{ // kein Grundvorlage
mk_add_g();
}
document.getElementById("tag_box_button").style.color=BGcolor[1];
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");
add_msg(document.getElementById("tag_msg"));
}
/*
* fügt die Grundvorlage ein
*/
function mk_add_g ()
{
if ( -1 == box.value.search(new RegExp("[{][{]"+grundvorlage.name+"(\s|\n|\r)*([|](.|\n|\r)*)?[}][}]")) )
{
box.value += "{{"+grundvorlage.einfg+"}}";
//add_msg(document.getElementById("g_msg"));
//document.getElementById("text_box_button").style.color=BGcolor[2];
}
else {
alert("Wiki sagt: Ich glaube, da gibt es schon eine Grundvorlage.");
}
return;
}
/*
* am Anfang alles reinladen
*/
function mkALL()
{
box = document.getElementById("wpUploadDescription");
var klapp1 = "";
var klapp2 = "";
if ( ! box || box == null )
{ // Bild wird nicht hochgeladen, sondern bearbeitet!
klapp1 = "<div id='lboxein' style='padding:5px;'><a href='javascript:einaus2(\"lbox\",\"lboxein\",\"lboxaus\")'>[Bild-Lizenz-Box anzeigen]</a></div><div id='lboxaus' style='display:none;padding:5px;border-bottom:1px solid #aaa;'><a href='javascript:einaus2(\"lbox\",\"lboxein\",\"lboxaus\")'>[Bild-Lizenz-Box verbergen]</a> (Hinweis: Grundvorlage muss nicht mehr per Huf eingefügt werden)</div><div id='lbox' style='display:none;'>";
klapp2 = "</div>";
box = document.getElementById("wpTextbox1");
var ibox = document.createElement("div");
ibox.id = "klicktag";
tb = document.getElementById("wpTextbox1");
if ( tb )
tb.parentNode.insertBefore(ibox, tb);
else
box.parentNode.insertBefore(ibox, box);
}
if ( ! box || box == null )
{
return;
}
var out = "";
//out += mk_g_box();
//---------------------------------------------------
for ( e=0; e<imgklick.length; e++ ) {
out += "<div class='box1'>";
out += "<p class='angabe'>Angaben zur "+ imgklick[e].name + "</p>";
out += "<form>";
out += "<table class='boxes'>";
out += "<tr><td class='left'>";
out += "<select name='" + e + "' id='" + imgklick[e].name + "_select' size='1' onchange='mk_opts( "+e+", this );'>";
var selectedIndex = null;var selectedIndex = null;
for ( i = 0; i<imgklick[e].opts.length; i++ )
{
var sel = "";
if ( imgklick[e].opts[i].selected == "selected" && selectedIndex == null )
{
sel=' selected="selected" ';
selectedIndex=i;
}
else
sel = '';
out += "<option value='" + i + "'"+sel+">" + imgklick[e].opts[i].name + "</option>";
}
if ( selectedIndex == null )
selectedIndex = 0;
out += "</select>";
out += " <span id='" + imgklick[e].name + "_opt'>"+create_opts( e, selectedIndex )+"</span> ";
out += "</td><td class='right' valign='top'>";
out += "<input type='button' id='"+imgklick[e].name+"_button' class='buttonStyle0' value='Hinzufügen' onclick='mk_add("+e+");'>";
out += " <span id='" + imgklick[e].name + "_msg'></span>";
out += "</td></tr></table>";
out += "</form>";
out += "</div>";
}
//-------------------------------------------------------
out += mk_tag_box();
jout = klapp1 + "<div class='outer' >" + out + "</div>" + klapp2;
jQuery('#klicktag').html(jout);
};