Kamel:Kameloid/Vorlagen/Test.js

function mkTEXTAREA{ // var ContentSub = document.getElementById("contentSub"); var ContentSub = document.getElementById("wikiPreview"); var TEXTAREA= document.createElement("TEXTAREA"); TEXTAREA.id= "wpUploadDescription"; TEXTAREA.cols = "80"; TEXTAREA.rows = "6"; TEXTAREA.name = "wpUploadDescription"; // TEXTAREA.innerHTML=""; ContentSub.appendChild(TEXTAREA); box = document.getElementById("wpUploadDescription"); var ibox = document.createElement("div"); ibox.id = "klicktag"; box.parentNode.insertBefore(ibox, box);

}

/* === Hochlade-Seite === */

var box; // Globale Variable

/* * generieren der Datenstruktur aus DPL-Ergebnissen - #1: AJAX-Request */ var imgklick = new Array; var BGcolor= new Array("red", "green", "gray"); var ButtonStyle0="width:170px;color:"+BGcolor[0]+";font-size:1.0em;font-weight:bold"; var ButtonStyle1="width:170px;color:"+BGcolor[1]+";font-size:1.0em;font-weight:bold"; var ButtonStyle2="width:170px;color:"+BGcolor[2]+";font-size:1.0em;font-weight:bold";

addOnloadHook(mk_ajax); function mk_ajax {

var imgAjax = new Ajax.Request(           wgScript,            {                method: 'get',                 parameters: 'title=Kamelopedia:Bildsuche/Klick-Tpl&action=raw&templates=expand',                onComplete: function( req ) { gen_imgklick( req.responseText ); mkALL; }            }  ); }

/* * 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 ) */ txt = txt.replace(/[<]/g, "&lt;" ); txt = txt.replace(/[>]/g, "&gt;" ); txt = txt.replace( /&lt;br *\/? *&gt;/g, " " ); 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; obj.innerHTML = 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 ); 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 + " "; var wdt;// optionale Variable für die Breite eines Eingabefeldes for ( i = 0; i"+arg.pre+" "; else if ( arg.type == "select" && imgklick[element].opts[val].args[i].options != null && imgklick[element].opts[val].args[i].options[0] != null) {

out += " " + arg.info + " "; 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 += ""+optkey+" "; }                       out += " "; }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 + "  ";} }	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 = "";

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 alert("Grundvorlage nicht gefunden.\n\n Falls du die Grundvorlage noch nicht eingefügt hast, solltest du das zu allererst tun und erst dann hiermit weitermachen. Den Knopf dafür findest du ein kleines Stückchen weiter oben!"); }	else {		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 += " "; out += " "; out += " Ohne die geht gar nichts! "; out += "  "; out += " "; out += " "; return out; }

function mk_tag_box {	var out = ""; out += " "; out += " "; out += " "; out += "  "; out += " "; out += " "; 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 alert("Grundvorlage nicht gefunden.\n\n Falls du die Grundvorlage noch nicht eingefügt hast, solltest du das zu allererst tun und erst dann hiermit weitermachen. Den Knopf dafür findest du ein kleines Stückchen weiter oben!"); return; }	else {		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 += ""; 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."); }

/* * am Anfang alles reinladen */

function mkALL { //	box = document.getElementById("wpUploadDescription"); mkTEXTAREA; if ( ! box || box == null ) { // Bild wird nicht hochgeladen, sondern bearbeitet! box = document.getElementById("wpTextbox1"); var ibox = document.createElement("div"); ibox.id = "klicktag"; tb = document.getElementById("toolbar"); 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 += " "; out += " "; out += " "; out += " "; out += " "; }

//---	out += mk_tag_box; document.getElementById("klicktag").innerHTML = " " + out + " "; };