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

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(an aktuelle LÄ angepasst)
 
(97 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'><span id='TextboxText'></span><span id='TextboxCursor'>|</span></div>";
+
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_generate("default", "0");
ab_genWindow( "Spezial:Artikelbaukasten" );
+
ab_genWindow( "Spezial:Artikelbaukasten", "spezial" );
 
}
 
}
  
Zeile 73: Zeile 95:
 
{
 
{
 
lastLabelObj = ab_opts[labelId];
 
lastLabelObj = ab_opts[labelId];
 +
 
label = lastLabelObj.options[optionId].next;
 
label = lastLabelObj.options[optionId].next;
  
Zeile 78: Zeile 101:
 
{
 
{
 
case "article" :
 
case "article" :
setTimeout("ab_genWindow('Bearbeiten von „"+lastLabelObj.options[optionId].text +
+
ab_artname = lastLabelObj.options[optionId].text;
"“'); ab_generate2('"+label+"');", 1000);
+
setTimeout("ab_genWindow('Bearbeiten von „"+ab_artname+
 +
"“', 'edit'); ab_generate2('"+label+"'); document.getElementById('Suffix').style.display = 'block';", 1000);
 
break;
 
break;
  
Zeile 93: Zeile 117:
 
}
 
}
  
function ab_genWindow( artName )
+
function ab_genWindow( artName, type )
 
{
 
{
document.getElementsByTagName("H1")[0].innerHTML = artName;
+
if ( artName != null )
document.title = artName + " - Kamelopedia";
+
{
 +
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);
 
}
 
}
Zeile 105: Zeile 178:
 
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('"+label+"', '"+opt+"')\">"+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 )
Zeile 123: Zeile 199:
 
if ( label != "start" )
 
if ( label != "start" )
 
{
 
{
out +="<p>"+ab_opts["default"].clear.text.replace(/\[([^\]]+)\]/,"<span class='pseudolink' onclick='ab_clear()'>$1</span>")+"</p>";
+
out +="<p>"+ab_opts["default"].clear.text.replace(/\[([^\]]+)\]/g,"<span class='pseudolink' onclick='ab_clear()'>$1</span>")+"</p>";
  
 
}
 
}
Zeile 131: Zeile 207:
 
function ab_generateFinish()  
 
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("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.";
+
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()
 
function ab_clear()
 
{
 
{
 
ab_finish = null;
 
ab_finish = null;
 +
document.getElementById('Suffix').style.display = 'none';
 +
document.getElementById('TextboxText').innerHTML = '';
 
ab_init2();
 
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;
}