MediaWiki:Skin/Artikelbaukasten.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
K
Zeile 169: Zeile 169:
 
onSuccess: function(transport)
 
onSuccess: function(transport)
 
{
 
{
ab_finish.html = transport;
+
ab_finish.html = transport.responseText;
 
ab_finish.fpt();
 
ab_finish.fpt();
 
}
 
}
 
 
 
});
 
});
ajax.sendRequest();
 
 
}
 
}
 
}
 
}

Version vom 26. Oktober 2008, 18:56 Uhr

/* Artikelbaukasten */

addOnloadHook(ab_prepare);

/* globale variablen */
var ab_opts = {};
var ab_finish = null;
var ab_artname = "";

function ab_prepare()
{
	document.getElementById("Startlink").onclick = ab_init;
}

function ab_init()
{
	var temp_opts = {};
	/* alle wichtigen Daten zuerst auslesen und verarbeiten */
	data = document.getElementById("data").innerHTML.split("\n");
	for (line=0; line<data.length; line++)
	{
		var elements;
		var struct = {};
		
		if ( data[line].indexOf("|") == -1 )
			elements = [ data[line] ];
		else
		{
			elements = data[line].split("|");

			for (element=1; element<elements.length; element++)
			{
				if ( elements[element].indexOf("=") == -1 )
					continue;
				var pair;
				pair = elements[element].split("=", 2);
				struct[pair[0]]=pair[1];
			}
		}
		
		switch ( elements[0] )
		{
			case "option":
				if ( temp_opts["options"] == null )
					temp_opts["options"] = [];
				temp_opts["options"].push( struct );
				break;
			case "flush":
				ab_opts[temp_opts.label.name] = temp_opts;
				temp_opts = new Object;
				break;
			default:
				temp_opts[elements[0]] = struct;
				break;
		}

		

	}

	/* http-request vortäuschen */
	setTimeout("ab_init2()", 1000);
}

function ab_init2()
{
	/* jetzt Spezial:Artikelbaukasten vortäuschen */
	document.getElementById("Artikel").innerHTML="<div id='Vorschau'></div><div id='Assistent'></div>";
	document.getElementById("SuffixButtons").innerHTML = '<form>'+
		'<input type="button" tabindex="5" value="Speichern, oder doch" onclick="ab_display(ab_save)" /> '+
		'<input type="button" name="wpPreview" tabindex="6" value="erstmal Vorschau zeigen?" onclick="ab_display(ab_preview)" />'+
		'</form>';
	ab_generate("default", "0");
	ab_genWindow( "Spezial:Artikelbaukasten" );
}

function ab_generate( labelId, optionId )
{
	lastLabelObj = ab_opts[labelId];
	label = lastLabelObj.options[optionId].next;

	switch( lastLabelObj.options[optionId].action )
	{
		case "article" :
			ab_artname = lastLabelObj.options[optionId].text;
			setTimeout("ab_genWindow('Bearbeiten von „"+ab_artname+
				"“'); ab_generate2('"+label+"'); document.getElementById('Suffix').style.display = 'block';", 1000);
			break;

		case "nothing":
			ab_generate2( label );
			break;

		default:
			document.getElementById("TextboxText").innerHTML += lastLabelObj.options[optionId].text + " ";
			ab_generate2( label );
			break;
	}
}

function ab_genWindow( artName )
{
	if ( artName != null )
	{
		document.getElementsByTagName("H1")[0].innerHTML = artName;
		document.title = artName + " - Kamelopedia";
	}
	self.scroll(0,0);
}

function ab_generate2( label )
{
	var out;
	out = ( ab_opts[label].label.text == null ?
		ab_opts["default"].label.text : ab_opts[label].label.text );
	out += "<ul class='"+(ab_opts[label].label.style == null ?
		ab_opts["default"].label.style :  ab_opts[label].label.style )+"'>";
	for(opt=0; opt<ab_opts[label].options.length; opt++)
	{
		out += "<li onclick=\"ab_generate('"+label+"', '"+opt+"')\">"+ab_opts[label].options[opt].text+"</li>";
	}
	out += "</ul>"

	if( ab_opts[label].setfinish != null )
		ab_finish = ab_opts[label].setfinish;

	if ( ab_finish != null )
	{
		out += "<p>"+(ab_finish.text == null ? ab_opts["default"].setfinish.text : ab_finish.text).replace(/\[([^\]]+)\]/,"<span class='pseudolink' onclick='ab_generateFinish()'>$1</span>")+"</p>";
	}

	if ( label != "start" )
	{
		out +="<p>"+ab_opts["default"].clear.text.replace(/\[([^\]]+)\]/,"<span class='pseudolink' onclick='ab_clear()'>$1</span>")+"</p>";

	}
	document.getElementById("Assistent").innerHTML = out;
}

function ab_generateFinish() 
{
	document.getElementById("TextboxText").innerHTML = "{{"+ab_finish.template+"}}<br/>"+ (ab_finish.signature == null ? "" : ab_finish.signature + "<br/>" ) + "<br/>" + document.getElementById("TextboxText").innerHTML;
	document.getElementById("Assistent").innerHTML = "Du bist fertig! Du kannst deinen Artikel jetzt speichern.";
	ab_finish.inserted = ab_finish.template;
}

function ab_clear()
{
	ab_finish = null;
	document.getElementById('Suffix').style.display = 'none';
	document.getElementById('TextboxText').innerHTML = '';
	ab_init2();

}

function ab_display( fpt_save_or_preview )
{
	ab_finish.fpt = fpt_save_or_preview;

	if ( ab_finish.inserted == null )
	{
		ab_finish.html = "";
		setTimeout("ab_finish.fpt();", 1000);
	}
	else
	{
		ajax = new Ajax.Request( wgServer+wgScript+"/Vorlage:"+ab_finish.inserted+"?action=render", {
			method: 'get',
			onSuccess: function(transport)
			{
				ab_finish.html = transport.responseText;
				ab_finish.fpt();
			}
	
		});
	}
}

function ab_save()
{
	
	ab_render('Artikel', ab_artname);
	document.getElementById('preview').style.display = 'none';
	document.getElementById('Suffix').style.display = 'none';
}

function ab_preview()
{
	ab_render('previewRender');
	document.getElementById('preview').style.display = 'block';
}

function ab_render( into, artname )
{
	out = document.getElementById('TextboxText').innerHTML;
	
	out = out.replace(/\[\[(.+?)\|(.+?)\]\]/, "<a href='"+wgServer+wgScript+"/$1'>$2</a>");
	out = out.replace(/\[\[(.+?)\]\]/, "<a href='"+wgServer+wgScript+"/$1'>$1</a>");

	out = out.replace(/\{\{.*\}\}/, ab_finish.html);
	document.getElementById(into).innerHTML = out;
	ab_genWindow( artname );
}