MediaWiki:Skin/KamelionaryEdit.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
J* (Diskussion | Beiträge) |
K (mormo -> net) |
||
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
addOnloadHook( function () { | addOnloadHook( function () { | ||
+ | if( ! document.getElementById("wpTextbox1") ) | ||
+ | return; | ||
if( document.getElementById("wpTextbox1").value == "" && | if( document.getElementById("wpTextbox1").value == "" && | ||
(typeof(disableKamelionaryPreload) == "undefined" || !disableKamelionaryPreload) ) | (typeof(disableKamelionaryPreload) == "undefined" || !disableKamelionaryPreload) ) | ||
Zeile 8: | Zeile 10: | ||
html += '<div class="pseudolink" onclick="allKamelionaryParams(false)">ohne Kommentar</div>'; | html += '<div class="pseudolink" onclick="allKamelionaryParams(false)">ohne Kommentar</div>'; | ||
html += '<div class="pseudolink" onclick="allKamelionaryParams(true)">mit Kommentar</div>'; | html += '<div class="pseudolink" onclick="allKamelionaryParams(true)">mit Kommentar</div>'; | ||
− | + | kd2.innerHTML += html; | |
} ); | } ); | ||
function insertPreload() | function insertPreload() | ||
{ | { | ||
− | + | jQuery.ajax( { | |
− | + | url: "http://kamelopedia.net/index.php", | |
− | + | data: "title=Vorlage:Kamelionary/preload&action=raw", | |
+ | dataType: "text", | ||
+ | success: function (txt) | ||
{ | { | ||
− | + | var x = txt.split("<pre>"); | |
− | + | if (x[1]){ | |
− | + | var y = x[1].replace(/\s*/,"").split("</pre>"); | |
− | + | document.getElementById("wpTextbox1").value = y[0]; | |
− | + | }else{ | |
− | + | alert("<pre> im Preload nicht gefunden. Bitte laut um Hilfe rufen!"); | |
− | + | } | |
} | } | ||
− | ); | + | } ); |
}; | }; | ||
String.prototype.removeHTMLComments = function () { | String.prototype.removeHTMLComments = function () { | ||
return this.replace(/<!--.*?-->/,''); | return this.replace(/<!--.*?-->/,''); | ||
+ | }; | ||
+ | |||
+ | String.prototype.strip = function () { | ||
+ | return this.replace(/^\s*/,"").replace(/\s*$/,""); | ||
}; | }; | ||
function allKamelionaryParams(withcomments) | function allKamelionaryParams(withcomments) | ||
{ | { | ||
− | + | ||
− | if ( ! confirm("Achtung, experimentelle Funktion!\n\nDiese Javascript-funktion fügt fehlende Parameter für die Kamelionary-Vorlage ins Textfeld ein. Dabei können aber z.B. falsch geschriebene Parameter versehentlich gelöscht werden.\nBitte überprüfe das Ergebnis mit dem Button 'Änderungen zeigen' | + | if ( ! confirm("Achtung, experimentelle Funktion!\n\nDiese Javascript-funktion fügt fehlende Parameter für die Kamelionary-Vorlage ins Textfeld ein. Dabei können aber z.B. falsch geschriebene Parameter versehentlich gelöscht werden.\nBitte überprüfe das Ergebnis mit dem Button 'Änderungen zeigen'!\n\nWeitermachen?") ) |
return; | return; | ||
− | + | ||
var findTemplate = /\{\{Kamelionary(\s|\n)*\|[^}]*?\}\}/; | var findTemplate = /\{\{Kamelionary(\s|\n)*\|[^}]*?\}\}/; | ||
− | + | ||
− | |||
// used parameters | // used parameters | ||
var usedParams = {}; | var usedParams = {}; | ||
− | + | ||
// get used params | // get used params | ||
var template = document.getElementById("wpTextbox1").value.match(findTemplate); | var template = document.getElementById("wpTextbox1").value.match(findTemplate); | ||
− | var params = template[0]. | + | var params = template[0].slice(0,template[0].length-2).split("\n|"); |
+ | |||
+ | for (var i=1; i < params.length; i++) | ||
+ | { | ||
+ | // split doesn't work here | ||
+ | var eqpos = pos = params[i].search("="); | ||
+ | if (eqpos == -1) | ||
+ | continue; | ||
+ | var arr = [params[i].slice(0,eqpos), params[i].slice(eqpos+1)]; | ||
− | + | usedParams[arr[0].removeHTMLComments().strip()] = arr[1].replace(/(^[ \t]+|[\s\n]+$)/g,""); | |
− | |||
− | |||
− | usedParams[arr[0].removeHTMLComments().strip()] = arr[1]. | ||
} | } | ||
− | + | ||
// get supported params | // get supported params | ||
− | + | jQuery.ajax( { | |
− | ( | + | url: "http://kamelopedia.net/index.php", |
− | + | data: "title=Vorlage:Kamelionary/preload&action=raw", | |
− | + | dataType: "text", | |
− | + | success: function (txt) | |
− | |||
− | |||
{ | { | ||
− | var suppText = | + | var suppText = txt.replace(/<[\/]?pre>/g, ""); |
var suppTemplate = suppText.match(findTemplate); | var suppTemplate = suppText.match(findTemplate); | ||
− | + | var suppParams = suppTemplate[0].split("\n|"); | |
− | var suppParams = suppTemplate[0]. | ||
var resulttext = "{{Kamelionary"; | var resulttext = "{{Kamelionary"; | ||
− | + | for (var i=1; i < suppParams.length; i++) | |
− | for (var i= | ||
{ | { | ||
var arr = suppParams[i].split("="); | var arr = suppParams[i].split("="); | ||
+ | if (arr.length < 2) | ||
+ | continue; | ||
var p = arr[0].removeHTMLComments().strip(); | var p = arr[0].removeHTMLComments().strip(); | ||
if ( withcomments ) | if ( withcomments ) | ||
− | pn = arr[0] | + | pn = arr[0]; |
else | else | ||
− | pn = | + | pn = arr[0].removeHTMLComments(); |
− | resulttext += "\n| " + pn + " = "; | + | resulttext += "\n|" + pn + "= "; |
if (usedParams[p] != null) | if (usedParams[p] != null) | ||
resulttext += usedParams[p]; | resulttext += usedParams[p]; | ||
} | } | ||
− | resulttext += "\n}}"; | + | resulttext += "\n}}" |
− | + | var tb = document.getElementById("wpTextbox1"); | |
− | + | tb.value = tb.value.replace(findTemplate,resulttext); | |
+ | |||
+ | //show the ok in the textbox | ||
+ | tb.style.backgroundColor = "#ddffcc"; | ||
+ | setTimeout(function () { tb.style.backgroundColor = "white"; }, 1000); | ||
} | } | ||
} | } | ||
); | ); | ||
} | } |
Aktuelle Version vom 2. Januar 2014, 13:03 Uhr
addOnloadHook( function () {
if( ! document.getElementById("wpTextbox1") )
return;
if( document.getElementById("wpTextbox1").value == "" &&
(typeof(disableKamelionaryPreload) == "undefined" || !disableKamelionaryPreload) )
insertPreload();
var kd2 = document.getElementById("kat_div_2");
var html = "<b>Kamelionary-Tools:</b>";
html += '<div>Alle Parameter anzeigen:</div>';
html += '<div class="pseudolink" onclick="allKamelionaryParams(false)">ohne Kommentar</div>';
html += '<div class="pseudolink" onclick="allKamelionaryParams(true)">mit Kommentar</div>';
kd2.innerHTML += html;
} );
function insertPreload()
{
jQuery.ajax( {
url: "http://kamelopedia.net/index.php",
data: "title=Vorlage:Kamelionary/preload&action=raw",
dataType: "text",
success: function (txt)
{
var x = txt.split("<pre>");
if (x[1]){
var y = x[1].replace(/\s*/,"").split("</pre>");
document.getElementById("wpTextbox1").value = y[0];
}else{
alert("<pre> im Preload nicht gefunden. Bitte laut um Hilfe rufen!");
}
}
} );
};
String.prototype.removeHTMLComments = function () {
return this.replace(/<!--.*?-->/,'');
};
String.prototype.strip = function () {
return this.replace(/^\s*/,"").replace(/\s*$/,"");
};
function allKamelionaryParams(withcomments)
{
if ( ! confirm("Achtung, experimentelle Funktion!\n\nDiese Javascript-funktion fügt fehlende Parameter für die Kamelionary-Vorlage ins Textfeld ein. Dabei können aber z.B. falsch geschriebene Parameter versehentlich gelöscht werden.\nBitte überprüfe das Ergebnis mit dem Button 'Änderungen zeigen'!\n\nWeitermachen?") )
return;
var findTemplate = /\{\{Kamelionary(\s|\n)*\|[^}]*?\}\}/;
// used parameters
var usedParams = {};
// get used params
var template = document.getElementById("wpTextbox1").value.match(findTemplate);
var params = template[0].slice(0,template[0].length-2).split("\n|");
for (var i=1; i < params.length; i++)
{
// split doesn't work here
var eqpos = pos = params[i].search("=");
if (eqpos == -1)
continue;
var arr = [params[i].slice(0,eqpos), params[i].slice(eqpos+1)];
usedParams[arr[0].removeHTMLComments().strip()] = arr[1].replace(/(^[ \t]+|[\s\n]+$)/g,"");
}
// get supported params
jQuery.ajax( {
url: "http://kamelopedia.net/index.php",
data: "title=Vorlage:Kamelionary/preload&action=raw",
dataType: "text",
success: function (txt)
{
var suppText = txt.replace(/<[\/]?pre>/g, "");
var suppTemplate = suppText.match(findTemplate);
var suppParams = suppTemplate[0].split("\n|");
var resulttext = "{{Kamelionary";
for (var i=1; i < suppParams.length; i++)
{
var arr = suppParams[i].split("=");
if (arr.length < 2)
continue;
var p = arr[0].removeHTMLComments().strip();
if ( withcomments )
pn = arr[0];
else
pn = arr[0].removeHTMLComments();
resulttext += "\n|" + pn + "= ";
if (usedParams[p] != null)
resulttext += usedParams[p];
}
resulttext += "\n}}"
var tb = document.getElementById("wpTextbox1");
tb.value = tb.value.replace(findTemplate,resulttext);
//show the ok in the textbox
tb.style.backgroundColor = "#ddffcc";
setTimeout(function () { tb.style.backgroundColor = "white"; }, 1000);
}
}
);
}