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

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(und immer noch schwachsinnig)
(an aktuelle LÄ angepasst)
 
(113 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
 
var ab_opts = {};
 
var ab_opts = {};
 
var ab_finish = null;
 
var ab_finish = null;
 +
var ab_redlinks = "";
 +
var ab_artname = "";
 +
 +
function ab_entities(text)
 +
{
 +
        return jQuery('<div/>').text(text).html();
 +
}
  
 
function ab_prepare()
 
function ab_prepare()
Zeile 16: Zeile 23:
 
var temp_opts = {};
 
var temp_opts = {};
 
/* alle wichtigen Daten zuerst auslesen und verarbeiten */
 
/* alle wichtigen Daten zuerst auslesen und verarbeiten */
data = document.getElementById("data").innerHTML.split("\n");
+
var data = document.getElementById("data").innerHTML.replace(/&lt;br( |&nbsp;)*\/?&gt;/g, "<br/>").replace(/(\r|\n|\f)+/g, "\n").split("\n");
 
for (line=0; line<data.length; line++)
 
for (line=0; line<data.length; line++)
 
{
 
{
Zeile 34: Zeile 41:
 
var pair;
 
var pair;
 
pair = elements[element].split("=", 2);
 
pair = elements[element].split("=", 2);
struct[pair[0]]=pair[1];
+
struct[pair[0]]=pair[1].replace(/[¦]/g, "|");
 
}
 
}
 
}
 
}
Zeile 48: Zeile 55:
 
ab_opts[temp_opts.label.name] = temp_opts;
 
ab_opts[temp_opts.label.name] = temp_opts;
 
temp_opts = new Object;
 
temp_opts = new Object;
 +
break;
 +
case "comment":
 +
break;
 +
case "redlinks":
 +
ab_redlinks += ( ab_redlinks == "" ? "" : "|" ) + ( struct.names != null ? struct.names : "" );
 
break;
 
break;
 
default:
 
default:
Zeile 64: Zeile 76:
 
function ab_init2()
 
function ab_init2()
 
{
 
{
 +
/* GaGA/HW/... weg */
 +
if ( document.getElementById("versteckdas") != null )
 +
document.getElementById("versteckdas").style.display = "none";
 +
 +
        jQuery("#empfohlene-seite-box").hide(0);
 +
 
/* jetzt Spezial:Artikelbaukasten vortäuschen */
 
/* jetzt Spezial:Artikelbaukasten vortäuschen */
document.getElementById("Artikel").innerHTML="<div id='Vorschau'></div><div id='Assistent'></div><div id='Textbox'></div>";
+
document.getElementById("Artikel").innerHTML="<div id='Vorschau'></div><div id='Assistent'></div>";
ab_generate("start");
+
document.getElementById("SuffixButtons").innerHTML = '<form>'+
document.getElementsByTagName("H1")[0].innerHTML = "Spezial:Artikelbaukasten";
+
'<input type="button" tabindex="5" value="Speichern, oder doch" onclick="ab_display(ab_save)" /> '+
document.title = "Spezial:Artikelbaukasten - Kamelopedia";
+
'<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", "spezial" );
 +
}
 +
 
 +
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+
 +
"“', 'edit'); 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, type )
 +
{
 +
if ( artName != null )
 +
{
 +
document.getElementsByTagName("H1")[0].innerHTML = artName;
 +
document.title = artName + " - Kamelopedia";
 +
}
 +
 
 +
$maintab = jQuery("#ca-nstab-main");
 +
if ( ! $maintab )
 +
$maintab = jQuery("#ca-nstab-user"); //auch im Kamelbau zum Testen solls klappen
 +
$viewtab = jQuery("#ca-view");
 +
$edittab = jQuery("#ca-edit");
 +
$discusstab = jQuery("#ca-talk");
 +
        $historytab = jQuery("#ca-history");
 +
        $daumentab = jQuery("#ca-hw");
 +
 
 +
switch ( type )
 +
{
 +
case "edit":
 +
$maintab.find("a").text('Artikel');
 +
$edittab.addClass('selected');
 +
                        $viewtab.removeClass('selected');
 +
$discusstab.addClass('new');
 +
                        $historytab.show(0);
 +
$viewtab.show(0);
 +
$edittab.show(0);
 +
                        $daumentab.show(0);
 +
$discusstab.show(0);
 +
break;
 +
 +
case "spezial":
 +
$maintab.find("a").text('Spezial');
 +
$viewtab.hide(0);
 +
$edittab.hide(0);
 +
                        $historytab.hide(0);
 +
$discusstab.hide(0);
 +
                        $daumentab.hide(0);
 +
break;
 +
 +
default:
 +
$maintab.find("a").text('Artikel');
 +
$edittab.removeClass('selected');
 +
                        $viewtab.addClass('selected');
 +
$discusstab.addClass('new');
 +
$viewtab.show(0);
 +
$edittab.show(0);
 +
$discusstab.show(0);
 +
                        $historytab.show(0);
 +
                        $daumentab.show(0);
 +
break;
 +
 
 +
}
 
self.scroll(0,0);
 
self.scroll(0,0);
 
}
 
}
  
function ab_generate( label )
+
function ab_generate2( label )
 
{
 
{
 
var out;
 
var out;
 
out = ( ab_opts[label].label.text == null ?
 
out = ( ab_opts[label].label.text == null ?
 
ab_opts["default"].label.text : ab_opts[label].label.text );
 
ab_opts["default"].label.text : ab_opts[label].label.text );
out += "<ul class='"+(ab_opts[label].label.style == null ?
+
if (ab_opts[label].options != null )
 +
{
 +
out += "<ul class='"+(ab_opts[label].label.style == null ?
 
ab_opts["default"].label.style :  ab_opts[label].label.style )+"'>";
 
ab_opts["default"].label.style :  ab_opts[label].label.style )+"'>";
for(opt=0; opt<ab_opts[label].options.length; opt++)
+
for(opt=0; opt<ab_opts[label].options.length; opt++)
{
+
{
out += "<li onclick=\"ab_generate('"+ab_opts[label].options[opt].next+"')\">"+ab_opts[label].options[opt].text+"</li>";
+
out += "<li onclick=\"ab_generate('"+label+"', '"+opt+"')\">"+ab_opts[label].options[opt].text+"</li>";
 +
}
 +
out += "</ul>"
 
}
 
}
out += "</ul>"
 
  
/*if( ab_opts[label].setfinish != null )
+
if( ab_opts[label].setfinish != null )
 
ab_finish = ab_opts[label].setfinish;
 
ab_finish = ab_opts[label].setfinish;
  
 
if ( ab_finish != null )
 
if ( ab_finish != null )
 
{
 
{
out += "<p>"+(ab_finish.text == 0 ? ab_opts["default"].setfinish.text : ab_finish.text).replace(/\[([^\]]+)\]/,"<span onclick='ab_generateFinish()'>$1</span>")+"</p>";
+
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" )
 
if ( label != "start" )
 
{
 
{
out +="<p>"+ab_opts["default"].clear.text.replace(/\[([^\]]+)\]/,"<span onclick='ab_generateFinish()'>$1</span>")+"</p>";
+
out +="<p>"+ab_opts["default"].clear.text.replace(/\[([^\]]+)\]/g,"<span class='pseudolink' onclick='ab_clear()'>$1</span>")+"</p>";
  
}*/
+
}
 
document.getElementById("Assistent").innerHTML = out;
 
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 = (ab_finish.text2 == null ? ab_opts["default"].setfinish.text2 : ab_finish.text2);
 +
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
 +
{
 +
jQuery.ajax({
 +
url: wgServer+wgScript+"/Vorlage:"+ab_finish.inserted,
 +
data: "action=render",
 +
success: function(html)
 +
{
 +
ab_finish.html = html.match(/<(div|table)(.|[\n])*<\/\1>/)[0];
 +
ab_finish.fpt();
 +
}
 +
 +
});
 +
}
 +
}
 +
 +
function ab_save()
 +
{
 +
 +
ab_render('Artikel', ab_artname);
 +
document.getElementById('preview').style.display = 'none';
 +
document.getElementById('Suffix').style.display = 'none';
 +
document.getElementById('n-Letzte-.C3.84nderungen').childNodes[0].onclick = ab_recentChanges;
 +
}
 +
 +
function ab_preview()
 +
{
 +
ab_render('previewRender');
 +
document.getElementById('preview').style.display = 'block';
 +
ab_genWindow( null, "edit" );
 +
}
 +
 +
function ab_render( into, artname )
 +
{
 +
out = document.getElementById('TextboxText').innerHTML;
 +
 +
/* Zuerst die Roten */
 +
out = out.replace( new RegExp("\\[\\[("+ab_redlinks+")\\|([^\[\]|]+)\\]\\](\S*)", "g"), "<a class='new' href='"+wgServer+wgScript+"/$1'>$2$3</a>");
 +
out = out.replace( new RegExp("\\[\\[("+ab_redlinks+")\\]\\](\S*)", "g"), "<a class='new' href='"+wgServer+wgScript+"/$1'>$1$2</a>");
 +
 +
out = out.replace(/\[\[([^\[\]|]+)\|([^\[\]|]+)\]\](\S*)/g, "<a href='"+wgServer+wgScript+"/$1'>$2$3</a>");
 +
out = out.replace(/\[\[([^\[\]|]+)\]\](\S*)/g, "<a href='"+wgServer+wgScript+"/$1'>$1$2</a>");
 +
 +
 +
sigtime = ab_genSigtime();
 +
 +
out = out.replace(/<br *?\/?>(.*?)[~]{4}<br *?\/?>/, "<div><pre>$1<a href='"+wgServer+wgScript+"/Kamel:"+wgUserName+"'>Kamel:"+wgUserName+"</a> "+sigtime+"</pre></div>");
 +
 +
out = out.replace(/\{\{.*\}\}/, ab_finish.html);
 +
document.getElementById(into).innerHTML = out;
 +
ab_genWindow( artname );
 +
}
 +
 +
function ab_genSigtime()
 +
{
 +
datum = new Date();
 +
hrs = datum.getHours();
 +
min = datum.getMinutes();
 +
hrs_str = ( (hrs < 10) ? "0" + hrs : hrs );
 +
min_str = ( (min < 10) ? "0" + min : min );
 +
mon = datum.getMonth();
 +
day = datum.getDate();
 +
        mon_str = [ "Jan.", "Feb.", "Mär.", "Apr.", "Mai", "Jun.", "Jul.", "Aug.", "Sep.", "Okt.", "Nov.", "Dez." ][mon];
 +
        yea = datum.getFullYear();
 +
return ( hrs_str + ":" + min_str + ", " + day + ". " + mon_str + " " + yea + " (CET)" );
 +
}
 +
 +
function ab_recentChanges()
 +
{
 +
document.getElementById('n-Letzte-.C3.84nderungen').childNodes[0].onclick = function () { return true; };
 +
jQuery.ajax({
 +
url:wgServer+wgScript+"/Spezial:Recentchanges",
 +
data: {limit: 20, useskin: mw.config.get("skin")},
 +
success: function(html)
 +
{
 +
datum = new Date();
 +
hrs = datum.getHours();
 +
min = datum.getMinutes();
 +
hrs_str = ( (hrs < 10) ? "0" + hrs : hrs );
 +
min_str = ( (min < 10) ? "0" + min : min );
 +
chtime = ( hrs_str + ":" + min_str );
 +
bytes = document.getElementById('TextboxText').innerHTML.length;
 +
 +
sigtime = ab_genSigtime();
 +
begin = document.getElementById('TextboxText').innerHTML.replace(/<br *\/?>/g, " ").substr(0,150);
 +
begin = begin.replace(/[~]{4}/, "<a href='"+wgServer+wgScript+"/Kamel:"+wgUserName+"'>Kamel:"+wgUserName+"</a> "+sigtime);
 +
 +
changes = '(Unterschied | ' +
 +
'<a href="/index.php?title="'+ab_entities(ab_artname)+'&amp;action=history" title="'+ab_entities(ab_artname)+'">Versionen</a>) . .    ' +
 +
'<abbr class="newpage" title="Neue Seite">Neu</abbr> ' +
 +
'<a href="/index.php/'+ab_entities(ab_artname)+'" title="'+ab_entities(ab_artname)+'">'+ab_entities(ab_artname)+'</a>; '+chtime +
 +
'. . <span class="mw-plusminus-pos">(+'+bytes+' Bytes)</span> . . ' +
 +
'<a href="/index.php/Kamel:'+ab_entities(wgUserName)+'" title="Kamel:'+ab_entities(wgUserName)+'">'+ab_entities(wgUserName) +
 +
'</a> (<a href="/index.php/Kamel_Diskussion:'+ab_entities(wgUserName)+'" title="Kamel Diskussion:'+ab_entities(wgUserName)+'">Diskussion</a> ' +
 +
'| <a href="/index.php/Spezial:Beitr%C3%A4ge/'+ab_entities(wgUserName)+'" title="Spezial:Beiträge/'+ab_entities(wgUserName)+'">Beiträge</a>) ' +
 +
'<span class="comment">(Artikelbaukasten-Edit: "'+begin+'...")</span>';
 +
body_begin = html.indexOf("<body");
 +
body_begin = html.indexOf(">", body_begin);
 +
body_end  = html.indexOf("</body>");
 +
html = html.substring( body_begin+1, body_end );
 +
html = html.replace( /(<ul class="special">)/, "$1<li>"+changes+"</li>");
 +
ab_genWindow("Letzte Änderungen", "spezial");
 +
 +
                        content = jQuery(html).find("#bodyContent");
 +
jQuery("#bodyContent").replaceWith(content);
 +
}
 +
 +
});
 +
return false;
 
}
 
}

Aktuelle Version vom 30. September 2012, 20:33 Uhr

/* Artikelbaukasten */

addOnloadHook(ab_prepare);

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

function ab_entities(text)
{
        return jQuery('<div/>').text(text).html();
}

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

function ab_init()
{
	var temp_opts = {};
	/* alle wichtigen Daten zuerst auslesen und verarbeiten */
	var data = document.getElementById("data").innerHTML.replace(/&lt;br( |&nbsp;)*\/?&gt;/g, "<br/>").replace(/(\r|\n|\f)+/g, "\n").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].replace(/[¦]/g, "|");
			}
		}
		
		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;
			case "comment":
				break;
			case "redlinks":
				ab_redlinks += ( ab_redlinks == "" ? "" : "|" ) + ( struct.names != null ? struct.names : "" );
				break;
			default:
				temp_opts[elements[0]] = struct;
				break;
		}

		

	}

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

function ab_init2()
{
	/* GaGA/HW/... weg */
	if ( document.getElementById("versteckdas") != null )
		document.getElementById("versteckdas").style.display = "none";

        jQuery("#empfohlene-seite-box").hide(0);

	/* 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", "spezial" );
}

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+
				"“', 'edit'); 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, type )
{
	if ( artName != null )
	{
		document.getElementsByTagName("H1")[0].innerHTML = artName;
		document.title = artName + " - Kamelopedia";
	}

	$maintab = jQuery("#ca-nstab-main");
	if ( ! $maintab )
		$maintab = jQuery("#ca-nstab-user"); //auch im Kamelbau zum Testen solls klappen
	$viewtab = jQuery("#ca-view");
	$edittab = jQuery("#ca-edit");
	$discusstab = jQuery("#ca-talk");
        $historytab = jQuery("#ca-history");
        $daumentab = jQuery("#ca-hw");

	switch ( type )
	{
		case "edit":
			$maintab.find("a").text('Artikel');
			$edittab.addClass('selected');
                        $viewtab.removeClass('selected');
			$discusstab.addClass('new');
                        $historytab.show(0);
			$viewtab.show(0);
			$edittab.show(0);
                        $daumentab.show(0);
			$discusstab.show(0);
			break;
		
		case "spezial":
			$maintab.find("a").text('Spezial');
			$viewtab.hide(0);
			$edittab.hide(0);
                        $historytab.hide(0);
			$discusstab.hide(0);
                        $daumentab.hide(0);
			break;
		
		default:
			$maintab.find("a").text('Artikel');
			$edittab.removeClass('selected');
                        $viewtab.addClass('selected');
			$discusstab.addClass('new');
			$viewtab.show(0);
			$edittab.show(0);
			$discusstab.show(0);
                        $historytab.show(0);
                        $daumentab.show(0);
			break;

	}
	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 );
	if (ab_opts[label].options != null )
	{
		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(/\[([^\]]+)\]/g,"<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 = (ab_finish.text2 == null ? ab_opts["default"].setfinish.text2 : ab_finish.text2);
	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
	{
		jQuery.ajax({
			url: wgServer+wgScript+"/Vorlage:"+ab_finish.inserted,
			data: "action=render",
			success: function(html)
			{
				ab_finish.html = html.match(/<(div|table)(.|[\n])*<\/\1>/)[0];
				ab_finish.fpt();
			}
	
		});
	}
}

function ab_save()
{
	
	ab_render('Artikel', ab_artname);
	document.getElementById('preview').style.display = 'none';
	document.getElementById('Suffix').style.display = 'none';
	document.getElementById('n-Letzte-.C3.84nderungen').childNodes[0].onclick = ab_recentChanges;
}

function ab_preview()
{
	ab_render('previewRender');
	document.getElementById('preview').style.display = 'block';
	ab_genWindow( null, "edit" );
}

function ab_render( into, artname )
{
	out = document.getElementById('TextboxText').innerHTML;
	
	/* Zuerst die Roten */
	out = out.replace( new RegExp("\\[\\[("+ab_redlinks+")\\|([^\[\]|]+)\\]\\](\S*)", "g"), "<a class='new' href='"+wgServer+wgScript+"/$1'>$2$3</a>");
	out = out.replace( new RegExp("\\[\\[("+ab_redlinks+")\\]\\](\S*)", "g"), "<a class='new' href='"+wgServer+wgScript+"/$1'>$1$2</a>");
	
	out = out.replace(/\[\[([^\[\]|]+)\|([^\[\]|]+)\]\](\S*)/g, "<a href='"+wgServer+wgScript+"/$1'>$2$3</a>");
	out = out.replace(/\[\[([^\[\]|]+)\]\](\S*)/g, "<a href='"+wgServer+wgScript+"/$1'>$1$2</a>");


	sigtime = ab_genSigtime();

	out = out.replace(/<br *?\/?>(.*?)[~]{4}<br *?\/?>/, "<div><pre>$1<a href='"+wgServer+wgScript+"/Kamel:"+wgUserName+"'>Kamel:"+wgUserName+"</a> "+sigtime+"</pre></div>");

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

function ab_genSigtime()
{
	datum = new Date();
	hrs = datum.getHours();
	min = datum.getMinutes();
	hrs_str = ( (hrs < 10) ? "0" + hrs : hrs );
	min_str = ( (min < 10) ? "0" + min : min );
	mon = datum.getMonth();
	day = datum.getDate();
        mon_str = [ "Jan.", "Feb.", "Mär.", "Apr.", "Mai", "Jun.", "Jul.", "Aug.", "Sep.", "Okt.", "Nov.", "Dez." ][mon];
        yea = datum.getFullYear();
	return ( hrs_str + ":" + min_str + ", " + day + ". " + mon_str + " " + yea + " (CET)" );
}

function ab_recentChanges()
{
	document.getElementById('n-Letzte-.C3.84nderungen').childNodes[0].onclick = function () { return true; };
	jQuery.ajax({
		url:wgServer+wgScript+"/Spezial:Recentchanges",
		data: {limit: 20, useskin: mw.config.get("skin")},
		success: function(html)
		{
			datum = new Date();
			hrs = datum.getHours();
			min = datum.getMinutes();
			hrs_str = ( (hrs < 10) ? "0" + hrs : hrs );
			min_str = ( (min < 10) ? "0" + min : min );
			chtime = ( hrs_str + ":" + min_str );
			bytes = document.getElementById('TextboxText').innerHTML.length;
			
			sigtime = ab_genSigtime();
			begin = document.getElementById('TextboxText').innerHTML.replace(/<br *\/?>/g, " ").substr(0,150);
			begin = begin.replace(/[~]{4}/, "<a href='"+wgServer+wgScript+"/Kamel:"+wgUserName+"'>Kamel:"+wgUserName+"</a> "+sigtime);

			changes = '(Unterschied | ' + 
				'<a href="/index.php?title="'+ab_entities(ab_artname)+'&amp;action=history" title="'+ab_entities(ab_artname)+'">Versionen</a>) . .    ' + 
				'<abbr class="newpage" title="Neue Seite">Neu</abbr> ' +
				'<a href="/index.php/'+ab_entities(ab_artname)+'" title="'+ab_entities(ab_artname)+'">'+ab_entities(ab_artname)+'</a>; '+chtime +
				'. . <span class="mw-plusminus-pos">(+'+bytes+' Bytes)</span> . . ' + 
				'<a href="/index.php/Kamel:'+ab_entities(wgUserName)+'" title="Kamel:'+ab_entities(wgUserName)+'">'+ab_entities(wgUserName) +
				'</a> (<a href="/index.php/Kamel_Diskussion:'+ab_entities(wgUserName)+'" title="Kamel Diskussion:'+ab_entities(wgUserName)+'">Diskussion</a> ' + 
				'| <a href="/index.php/Spezial:Beitr%C3%A4ge/'+ab_entities(wgUserName)+'" title="Spezial:Beiträge/'+ab_entities(wgUserName)+'">Beiträge</a>) ' +
				'<span class="comment">(Artikelbaukasten-Edit: "'+begin+'...")</span>';
			body_begin = html.indexOf("<body");
			body_begin = html.indexOf(">", body_begin);
			body_end   = html.indexOf("</body>");
			html = html.substring( body_begin+1, body_end );
			html = html.replace( /(<ul class="special">)/, "$1<li>"+changes+"</li>");
			ab_genWindow("Letzte Änderungen", "spezial");

                        content = jQuery(html).find("#bodyContent");
			jQuery("#bodyContent").replaceWith(content);
		}
	
	});
	return false;
}