MediaWiki:Skin/Artikelbaukasten.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
J* (Diskussion | Beiträge) |
J* (Diskussion | Beiträge) |
||
| Zeile 72: | Zeile 72: | ||
'</form>'; | '</form>'; | ||
ab_generate("default", "0"); | ab_generate("default", "0"); | ||
| − | ab_genWindow( "Spezial:Artikelbaukasten" ); | + | ab_genWindow( "Spezial:Artikelbaukasten", "spezial" ); |
} | } | ||
| Zeile 85: | Zeile 85: | ||
ab_artname = lastLabelObj.options[optionId].text; | ab_artname = lastLabelObj.options[optionId].text; | ||
setTimeout("ab_genWindow('Bearbeiten von „"+ab_artname+ | setTimeout("ab_genWindow('Bearbeiten von „"+ab_artname+ | ||
| − | "“'); ab_generate2('"+label+"'); document.getElementById('Suffix').style.display = 'block';", 1000); | + | "“', 'edit'); ab_generate2('"+label+"'); document.getElementById('Suffix').style.display = 'block';", 1000); |
break; | break; | ||
| Zeile 99: | Zeile 99: | ||
} | } | ||
| − | function ab_genWindow( artName ) | + | function ab_genWindow( artName, type ) |
{ | { | ||
if ( artName != null ) | if ( artName != null ) | ||
| Zeile 105: | Zeile 105: | ||
document.getElementsByTagName("H1")[0].innerHTML = artName; | document.getElementsByTagName("H1")[0].innerHTML = artName; | ||
document.title = artName + " - Kamelopedia"; | document.title = artName + " - Kamelopedia"; | ||
| + | } | ||
| + | |||
| + | maintab = document.getElementById("ca-nstab-main"); | ||
| + | if ( maintab == null ) | ||
| + | maintab = document.getElementById("ca-nstab-user"); //auch im Kamelbau zum Testen solls klappen | ||
| + | edittab = document.getElementById("ca-edit"); | ||
| + | discusstab = document.getElementById("ca-discuss"); | ||
| + | |||
| + | switch ( type ) | ||
| + | { | ||
| + | case "edit": | ||
| + | maintab.innerHTML = 'Seite'; | ||
| + | edittab.style.display = 'inline'; | ||
| + | edittab.class = 'selected'; | ||
| + | discusstab.style.display = 'inline'; | ||
| + | break; | ||
| + | |||
| + | case "spezial": | ||
| + | maintab.innerHTML = 'Spezial'; | ||
| + | edittab.style.display = 'none'; | ||
| + | edittab.class = ''; | ||
| + | discusstab.style.display = 'none'; | ||
| + | break; | ||
| + | |||
| + | default: | ||
| + | maintab.innerHTML = 'Seite'; | ||
| + | edittab.style.display = 'inline'; | ||
| + | edittab.class = ''; | ||
| + | discusstab.style.display = 'inline'; | ||
| + | break; | ||
| + | |||
} | } | ||
self.scroll(0,0); | self.scroll(0,0); | ||
| Zeile 189: | Zeile 220: | ||
ab_render('previewRender'); | ab_render('previewRender'); | ||
document.getElementById('preview').style.display = 'block'; | document.getElementById('preview').style.display = 'block'; | ||
| + | ab_genWindow( null, "edit" ); | ||
} | } | ||
Version vom 26. Oktober 2008, 19:11 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", "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 = document.getElementById("ca-nstab-main");
if ( maintab == null )
maintab = document.getElementById("ca-nstab-user"); //auch im Kamelbau zum Testen solls klappen
edittab = document.getElementById("ca-edit");
discusstab = document.getElementById("ca-discuss");
switch ( type )
{
case "edit":
maintab.innerHTML = 'Seite';
edittab.style.display = 'inline';
edittab.class = 'selected';
discusstab.style.display = 'inline';
break;
case "spezial":
maintab.innerHTML = 'Spezial';
edittab.style.display = 'none';
edittab.class = '';
discusstab.style.display = 'none';
break;
default:
maintab.innerHTML = 'Seite';
edittab.style.display = 'inline';
edittab.class = '';
discusstab.style.display = 'inline';
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 );
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';
ab_genWindow( null, "edit" );
}
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 );
}