MediaWiki:Skin/Spezial:Hochladen.js
aus Kamelopedia, der wüsten Enzyklopädie
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
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+"\n2ドル"); 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+"\n2ドル"); 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); };