Meidogger:Snakesteuben/prototypearticle.js
Opmerking: Nei it fêstlizzen kin it nedich wêze de oerslach fan jo blêder te leegjen, foar't de wizigings te sjen binne.
- Firefox / Safari: Hâld Shift yntreaun wylst jo op Fernije klikke, of typ Ctrl-F5 of Ctrl-R (⌘-R op in Mac)
- Google Chrome: Typ Ctrl-Shift-R (⌘-Shift-R op in Mac)
- Internet Explorer / Edge: Hâld Ctrl yntreaun wylst jo Vernieuwen klikke, of typ Ctrl-F5
- Opera: Typ Ctrl-F5.
/*
== Prototype Article ==
GFDL: Dan Pettersson, http://sv.wiktionary.org/wiki/Anv%C3%A4ndare:Skalman
*/
// disable by adding paLoad = false; to your monobook.js
if (paLoad == undefined)
var paLoad = true;
var nahSaveCookie = false; // default is no, when initializing we'll change this if there's a cookie
var nahPoSs = {
noun: ["Substantiv", "subst"],
verb: ["Verb", "verb"],
adj: ["Adjektiv", "adj"],
adv: ["Adverb", "adv"],
count: ["Räkneord", "räkn"],
pron: ["Pronomen", "pron"],
interj:["Interjektion", "interj"],
conj: ["Konjunktion", "konj"],
prep: ["Preposition", "prep"],
abbr: ["Förkortning", "förkortning"],
phrase:["Fras", "fras"],
idiom: ["Idiom", "idiom"],
provrb:["Ordspråk", "ordspråk"],
saying:["Talesätt", "talesätt"],
affix: ["Affix", "affix"],
prefix:["Förled", "förled"],
suffix:["Efterled", "efterled"],
symbol:["Tecken", "tecken"]
};
var nahLangs = {
sv:"svenska",
"--":"tvärspråkligt", abq:"abazinska", ab:"abchaziska", aa:"afar", af:"afrikaans",
ain:"ainu", ak:"akan", sia:"akkalasamiska", sq:"albanska", als:"alemanniska", tut:"altaiska",
am:"amhariska", ang:"anglosaxiska", ar:"arabiska", an:"aragonska", arc:"arameiska",
hy:"armeniska", "roa-rup":"arumänska", as:"assamesiska", ast:"asturiska", av:"avariska",
ay:"aymara", az:"azerbajdzjanska", bm:"bamana", ba:"basjkiriska", eu:"baskiska", bar:"bayerska",
bn:"bengali", ber:"berberspråk", bh:"bihari", bpy:"bishnupriya manipuri", bi:"bislama",
no:"bokmål", bs:"bosniska", br:"bretonska", bg:"bulgariska", bxr:"burjatiska", my:"burmesiska",
ceb:"cebuano", ch:"chamorro", chr:"cherokesiska", ny:"chichewa", cr:"cree", da:"danska",
din:"dinka", dv:"divehi", dz:"dzongkha", smn:"enaresamiska", en:"engelska", eo:"esperanto",
et:"estniska", ee:"ewe", fj:"fiji", fil:"filipino", fi:"finska", frp:"frankoprovensalska",
fr:"franska", fy:"frisiska", fur:"friuliska", fo:"färöiska", gag:"gagauziska", gl:"galiciska",
ka:"georgiska", got:"gotiska", el:"grekiska", kl:"grönländska", gn:"guaraní", gu:"gujarati",
ht:"haitisk kreol", hak:"hakka", ha:"hausa", haw:"hawaiiska", he:"hebreiska", hi:"hindi",
hsb:"högsorbiska", io:"ido", ig:"igbo", id:"indonesiska", ia:"interlingua", ie:"interlingue",
iu:"inuktitut", ik:"iñupiaq", ga:"iriska", is:"isländska", it:"italienska", ja:"japanska",
jv:"javanesiska", yi:"jiddisch", xmu:"kammu", kn:"kannada", pam:"kapampangan", ks:"kashimiri",
csb:"kasjubiska", ca:"katalanska", kk:"kazakiska", km:"khmer", kg:"kikongo", sjd:"kildinsamiska",
zh:"kinesiska", ky:"kirgiziska", rn:"kirundi", tlh:"klingonska", ko:"koreanska", kw:"korniska",
co:"korsikanska", crh:"krimtatariska", hr:"kroatiska", ku:"kurdiska", cy:"kymriska",
lad:"ladino", lld:"ladinska", lo:"lao", la:"latin", lv:"lettiska", lij:"liguriska",
li:"limburgiska", ln:"lingala", lt:"litauiska", jbo:"lojban", smj:"lulesamiska", lb:"luxemburgiska",
sco:"lågskotska", dsb:"lågsorbiska", nds:"lågtyska", mk:"makedonska", mg:"malagassiska",
ms:"malajiska", ml:"malayalam", mt:"maltesiska", gv:"manx", mi:"maori", mr:"marathi",
mh:"marshalliska", "zh-min-nan":"min nan", mo:"moldaviska", mn:"mongoliska", nah:"nahuatl",
pih:"narfuk", na:"nauriska", nv:"navajo", ng:"ndonga", nap:"neapolitanska", nl:"nederländska",
ne:"nepali", nd:"nordndebele", se:"nordsamiska", nrm:"normandiska", nov:"novial", nn:"nynorska",
oc:"occitanska", oj:"ojibwe", or:"oriya", om:"oromo", os:"ossetiska", pap:"papiamento",
pi:"pali", pag:"pangasisnan", ps:"pashto", fa:"persiska", pms:"piedmontesiska", sje:"pitesamiska",
pjt:"pitjantjatjara", pl:"polska", pt:"portugisiska", pa:"punjabi", qu:"quechua", rom:"romani",
ro:"rumänska", rw:"rwanda", ru:"ryska", rm:"rätoromanska", sm:"samoanska", sg:"sango",
sa:"sanskrit", sc:"sardiska", nso:"sepedi", sr:"serbiska", sh:"serbokroatiska", st:"sesotho",
sn:"shona", scn:"sicilianska", sd:"sindhi", si:"singalesiska", ss:"siswati", sms:"skoltsamiska",
gd:"skotsk gäliska", sk:"slovakiska", sl:"slovenska", so:"somaliska", es:"spanska",
su:"sundanesiska", sw:"swahili", nr:"sydndebele", sma:"sydsamiska", tl:"tagalog", tg:"tadzjikiska",
ta:"tamil", tt:"tatariska", te:"telugu", sjt:"tersamiska", tet:"tetum", th:"thai",
bo:"tibetanska", ti:"tigrinska", cs:"tjeckiska", ce:"tjetjenska", cv:"tjuvasjiska",
tpi:"tok pisin", to:"tonganska", ts:"tsonga", tn:"tswana", tr:"turkiska", tk:"turkmeniska",
tw:"twi", de:"tyska", udm:"udmurtiska", ug:"uiguriska", uk:"ukrainska", sju:"umesamiska",
hu:"ungerska", ur:"urdu", uz:"uzbekiska", wa:"vallonska", vec:"venetianska", vi:"vietnamesiska",
be:"vitryska", vo:"volapük", wo:"wolof", xh:"xhosa", ii:"yi", yo:"yoruba", za:"zhuang",
zu:"zulu"
};
// will contain the same array, but {"language":"code", ...} instead
// we will do this only if the user actually uses NAH to minimize memory use
var nahLangsRev;
var nahGenericArticle = {
// "name": ["description", inserted_text, how_as_default]
// inserted_text: if a number, nahGeneratedText is called with that number which
// results in certain generated text - otherwise a string which will be the result
// show_as_default: 0=don't have to show; 1=must show
"-1": ["{{wikipedia}}-mall <small>(endast för svenska uppslag)</small>", -1, 0],
0: ["Bild <small>(endast för svenska uppslag)</small>", 0, 0],
"0_5": ["\n"],
1: ["Språkrubriken", 1, 1], // språkrubriken
2: ["Ordklassrubriken", 2, 1], // ordklassrubriken
3: ["Grammatikmall", 3, 1], // språkindexering/gramamtikmall
4: ["Fetstilsraden", 4, 1], // fetstilsraden
5: ["Uttal", 5, 0], // uttalsmall
6: ["Definition", 6, 1], // definitionen (<skriv definitionen här>)
7: ["Exempelmening", 7, 0], // exempel
"7_5": ["\n"],
8: ["Rubriken Varianter", "====Varianter====\n*[[]]\n\n", 0],
9: ["Rubriken Etymologi", "====Etymologi====\n", 0],
10: ["Rubriken Grammatik", "====Grammatik====\n", 0],
11: ["Rubriken Användning", "====Användning====\n", 0],
12: ["Rubriken Synonymer", "====Synonymer====\n*[[]]\n\n", 0],
13: ["Rubriken Antonymer", "====Antonymer====\n*[[]]\n\n", 0],
14: ["Rubriken Hyperonymer", "====Hyperonymer====\n*[[]]\n\n", 0],
15: ["Rubriken Hyponymer", "====Hyponymer====\n*[[]]\n\n", 0],
16: ["Rubriken Kohyponymer", "====Kohyponymer====\n*[[]]\n\n", 0],
17: ["Rubriken Holonymer", "====Holonymer====\n*[[]]\n\n", 0],
18: ["Rubriken Meronymer", "====Meronymer====\n*[[]]\n\n", 0],
19: ["Rubriken Troponymer", "====Troponymer====\n*[[]]\n\n", 0],
20: ["Rubriken Besläktade ord", "====Besläktade ord====\n*[[]]\n\n", 0],
21: ["Rubriken Sammansättningar", "====Sammansättningar====\n*[[]]\n\n", 0],
22: ["Rubriken Fraser", 22, 0], // fraser
23: ["Rubriken Homofoner", "====Homofoner====\n*[[]]\n\n", 0],
24: ["Rubriken Översättningar <small>(endast för svenska uppslag)</small>", 24, 0], // översättningar
25: ["Rubriken Koder", 25, 0],
26: ["Rubriken Se även", "====Se även====\n*[[]]\n\n", 0]
}
// defaults:
var nahTemplates = [{"name":"min prototyp", 1:"sv", 2:"noun", 3:true, 4:true, 6:"-", 24:true}]; // default, the rest should be loaded via the saved cookie
var nahCurTemplate;
var nahNumInsertedNewTemplates = 0;
function nahGeneratedText(nahTemplateId, action) {
action += "";
nahTmpTemp = nahTemplates[nahTemplateId];
curLang = nahTmpTemp[1];
curPoS = nahTmpTemp[2];
switch (action) {
case "-1": // {{wikipedia}}
return (curLang=="sv" ? "{{wikipedia}}\n" : "");
case "0": // image
return (curLang=="sv" ? "[[Bild:]]\n" : "");
case "1": // language
langName = nahLangs[curLang];
langName = langName.charAt(0).toUpperCase() + langName.substring(1);
return "==" + langName + "==\n";
case "2": // part of speech
return "===" + nahPoSs[curPoS][0] + "===\n";
case "3": // grammar template
if (curLang == "sv")
return "{{" + nahPoSs[curPoS][1] + "}}\n";
else
return "{{" + nahPoSs[curPoS][1] + "|" + curLang + "}}\n";
case "4": // bold row
noBoldLangs = {"<langcode1>":1, "<langcode2>":1};
if (curPoS == "symbol" || noBoldLangs[curLang])
return wgPageName;
else
return "'''" + wgPageName + "'''\n";
case "5": // pronunciation
return "*{{uttal|enkel=|ipa=|ljud=" + (curLang=="sv"?"":"|språk="+nahLangs[curLang]) + "}}\n";
case "6": // definition
if (nahTmpTemp[6] == "-")
return "#<separator>\n"; // <separator> will be changed
else
return "#{{kat|" + (nahTmpTemp[6]==" "?"":nahTmpTemp[6]) + (curLang=="sv"?"":"|språk="+nahLangs[curLang]) + "}} <separator>\n";
case "7": // example
return "#:'' ''' ''' ''\n" + (curLang == "sv" ? "" : "#::'' ''' ''' ''\n");
case "22": return (curPoS=="phrase" ? "" : "====Fraser====\n*[[]]\n\n");
case "24": return (curLang=="sv" ? "====Översättningar====\n{{topp|}}\n*engelska: [[]]\n{{botten}}\n" : "");
case "25": return (curPoS=="symbol" ? "====Koder====\n*[[]]\n\n" : "");
default: return nahGenericArticle[action][1];
}
}
// initialize the whole process
function nahInit() {
if (!paLoad || !document.getElementById || !document.getElementById("toolbar"))
return;
var nahHTML = "";
// text displayed from the beginning
nahHTML += "<div id=\"nahIntroLinks\">" +
"<p><small>Om du vill kan du när du skapar nya uppslag</small> <b><a href=\"javascript:nahSettings(0);\">infoga en prototypartikel</a></b>" +
" — <a href=\"http://sv.wiktionary.org/wiki/Wiktionary:Hj%C3%A4lp/Prototypartiklar\" title=\"Öppnas i nytt fönster\" class=\"external\" target=\"_blank\">Hjälp/information</a></p>" +
"<p id=\"nahInsertableTemplates\" style=\"display:none;\"></p>";
// hidden shell in which everything goes when the user clicks
nahHTML += "<div id=\"nahEditSettings\" style=\"display:none;\"><div>" +
"<p><a href=\"javascript:nahCloseSettings();\" id=\"nahCloseButton\" style=\"float:right; height:22px; font-size:14px; border-width:1px; background:url(http://internetvision.se/dan/projekt/wikt/button.png); padding:0 4px;\">[stäng]</a></p>" +
"<h3 id=\"nahSettingsTitle\"></h3>" +
"<div id=\"nahStep0\" style=\"background:#eef;\">" +
"<p><b>Allmän info</b>: Detta är tänkt att vara en hjälp för att göra det snabbare att skapa många nya artiklar. <i>Man är alltså inte bunden att endast använda det språk och de rubriker man anger här, utan kan efter att man infogat prototypartikeln ändra fritt.</i> Likaså går det alldeles utmärkt att skriva in allt manuellt om man tycker det är enklare. <a href=\"http://sv.wiktionary.org/wiki/Wiktionary:Hj%C3%A4lp/Prototypartiklar\" target=\"_blank\" class=\"external\" title=\"Öppnas i nytt fönster\">Mer info</a>...</p>" +
"<p>Nuvarande inställning: " +
"<span id=\"nahCookieSettingsOn\" style=\"display:none;\"><b style=\"color:#060;\">Kommer ihåg prototypartiklar</b> (<a href=\"javascript:nahForgetMe();\">glöm bort</a>)</span>" +
"<span id=\"nahCookieSettingsOff\"><b style=\"color:#900;\">Kommer inte ihåg prototypartiklar</b> (<a href=\"javascript:nahRememberMe();\">kom ihåg</a>)</span>" +
"</p></div>" +
"<div id=\"nahStep1\" style=\"display:none;\">" +
"<p style=\"text-align:center;\"><a href=\"javascript:nahInsert(nahCurTemplate, "new");\">[Infoga genererad text]</a> — <a href=\"javascript:nahGoToStep(2);\" class=\"selected\">[Fortsätt med fler inställningar →]</a></p><hr>" +
// choose a name for the template
"<h4>Välj namn för din prototypmall</h4><p>Du kan skapa upp till 5 prototypmallar; välj ett namn för prototypmallen: <input type=\"text\" id=\"nahNameInput\" onblur=\"nahSet("name", 0, this.value);\"></p>" +
// choose language
"<h4>Välj språk</h4><p>Skriv in vilket språk du vill använda: <input type=\"text\" id=\"nahLangInput\" onkeyup=\"nahSet(1, "set name", this.value);\" onblur=\"nahSet(1, "set name", this.value);\"> <span id=\"nahLangStatusError\" style=\"display:none;\">(okänt språk - <b style=\"color:#c00;\">xx</b>)</span><span id=\"nahLangStatusOk\" style=\"display:none;\">(motsvarande språkkod: <b style=\"color:#090;\" id=\"nahLangStatusCode\"></b>)</span><span id=\"nahLangStatusOkCode\" style=\"display:none;\">(motsvarande språk: <b style=\"color:#090;\" id=\"nahLangStatusName\"></b>)</span><br><small>Om du vet vilken språkkod språket har kan du välja att skriva in den istället.</small> Får du inte fram ett accepterat språk kan du titta i <a href=\"http://sv.wiktionary.org/wiki/Wiktionary:Stilguide/Spr%C3%A5knamn\" target=\"_blank\" class=\"external\" title=\"Öppnas i nytt fönster\">listan över alla språknamn</a>.</p>";
// choose part of speech
nahHTML += "<h4>Välj ordklass</h4><p>";
var nahFirst = true;
for (nahTempPoS in nahPoSs) {
if (nahFirst) nahFirst=false;
else nahHTML += ' - ';
nahHTML += "<a href=\"javascript:nahSet(2, "" + nahTempPoS + "");\" id=\"nahPoS_" + nahTempPoS + "\">" + nahPoSs[nahTempPoS][0] + "</a>";
}
nahHTML += "</p>";
nahHTML += "</div>";
// step 2
nahHTML += "<div id=\"nahStep2\" style=\"display:none;\">" +
"<p style=\"text-align:center;\"><a href=\"javascript:nahGoToStep(1);\">[← Gå tillbaka till föregående inställningar]</a> — <a href=\"javascript:nahInsert(nahCurTemplate, "new");\" class=\"selected\">[Infoga genererad text]</a></p><hr>" +
"<h4>Välj vad du vill inkludera i den infogade artikeln</h4><ul style=\"list-style:none;\">";
// headings to choose
for (nahTempRow in nahGenericArticle) {
if (nahGenericArticle[nahTempRow][0] == "\n")
continue;
if (!nahGenericArticle[nahTempRow][2]) { // optional
nahHTML += "<div><tt id=\"nahRows_" + nahTempRow + "\">[ ]</tt> " +
"<a href=\"javascript:nahSet("" + nahTempRow + "", "toggle");\" id=\"nahRows_" + nahTempRow + "_link\">" + nahGenericArticle[nahTempRow][0] + "</a>";
} else
nahHTML += "<div><tt>[X]</tt> <i><b>" + nahGenericArticle[nahTempRow][0] + "</b></i> <small>(måste inkluderas)</small>";
// custom is for those headings that want to give more choices etc.
nahHTML += "<div id=\"nahRows_" + nahTempRow + "_custom\" style=\"display:none; margin-left:4em;\"></div></div>";
}
nahHTML += "</ul>";
nahHTML += "</div>";
nahHTML += "</div></div>";
// ...and put it on the actual page
var nahNahToolbar = document.createElement("div");
nahNahToolbar.setAttribute("id", "nahToolbar");
nahNahToolbar.innerHTML = nahHTML;
var nahToolbar = document.getElementById('toolbar');
nahToolbar.parentNode.insertBefore(nahNahToolbar, nahToolbar);
// read cookie
if (null != nahReadCookie("prototypeArticles")) {
// <cookie> ::= <prot>|<prot>|<prot>|<prot>|<prot>
// <prot> ::= ("" OR <action>=<val>&<action>=<val> ...)
nahSaveCookie = true;
nahDoLangsRev();
theCookie = nahReadCookie("prototypeArticles");
theCookie = "|" + theCookie; // to create indexes 1-5
theCookie = theCookie.split("|");
for (nahTemplateId=1; nahTemplateId<=5; nahTemplateId++) { // each prototype
if (!theCookie[nahTemplateId] || theCookie[nahTemplateId] == "") {
continue;
}
nahTemplates[nahTemplateId] = {};
nahCurTemplate = nahTemplateId;
thisProt = theCookie[nahTemplateId].split("&");
for (i=0; i<thisProt.length; i++) {
tmpAction = thisProt[i].split("=");
if (tmpAction[1]) {
nahSet(unescape(tmpAction[0]), "update", unescape(tmpAction[1]), true);
}
}
}
document.getElementById("nahCookieSettingsOn").style.display = "inline";
document.getElementById("nahCookieSettingsOff").style.display = "none";
nahUpdateCookie(); // should re-set the cookie so it won't disappear
}
nahUpdateInsertableTemplates();
} // end: nahInit()
function nahDoLangsRev() {
if (!nahLangsRev) {
nahLangsRev = {};
for (nahTmpCode in nahLangs)
nahLangsRev[ nahLangs[nahTmpCode] ] = nahTmpCode;
}
} // end: nahDoLangsRev()
function nahSettings(nahTemplateId) {
if (nahTemplateId == 0) {
allUsed = true;
for (i=1; i<=5; i++)
if (!nahTemplates[i])
allUsed = false;
if (allUsed) {
alert("Du kan max skapa 5 prototypartiklar. Vill du skapa en ny måste du ta bort en av de du redan skapat eller så kan du ändra en gammal.");
return;
}
// confusing if it has the same name as any other - add (2) or change the number
tmpName = nahTemplates[0]["name"];
for (i=1; i<=5; i++) {
if (nahTemplates[i] && nahTemplates[i]["name"] == tmpName) {
tmpName = tmpName.split(" (");
if (tmpName[ tmpName.length-1 ] == parseInt(tmpName[ tmpName.length-1 ])+")" )
tmpName[ tmpName.length-1 ] = (1+parseInt(tmpName[ tmpName.length-1 ]))+")";
else
tmpName[ tmpName.length ] = "2)";
tmpName = tmpName.join(" (");
}
}
nahTemplates[0]["name"] = tmpName;
}
// now is the time to create reversal of nahLangs, if it hasn't already been done
nahDoLangsRev();
nahCurTemplate = nahTemplateId;
document.getElementById("nahSettingsTitle").innerHTML = (nahTemplateId==0 ? "Infoga en (ny) prototypartikel" : "Redigera din prototypartikel "" + nahHtmlEscape(nahTemplates[nahTemplateId]["name"]) + """);
document.getElementById("nahEditSettings").style.display = "block";
nahGoToStep(1);
nahUpdateNameInput();
// the rest
for (nahTempRow in nahGenericArticle) {
if (nahGenericArticle[nahTempRow][0] == "\n") // new row or required row (=no special alternatives used)
continue;
if (nahTemplates[nahTemplateId][nahTempRow]) { // if this setting should be used
nahSet(nahTempRow, "update", nahTemplates[nahTemplateId][nahTempRow]); // re-set the already set setting
}
}
} // end: nahSettings()
function nahCloseSettings() {
document.getElementById("nahEditSettings").style.display = "none";
document.getElementById("nahLangStatusError").style.display = document.getElementById("nahLangStatusOk").style.display = document.getElementById("nahLangStatusOkCode").style.display = "none";
for (tmpPoS in nahPoSs)
document.getElementById("nahPoS_" + tmpPoS).className = "";
document.getElementById("nahStep1").style.display = "none";
document.getElementById("nahStep2").style.display = "none";
for (i in nahGenericArticle) {
if (document.getElementById("nahRows_" + i) && document.getElementById("nahRows_" + i + "_link")) {
document.getElementById("nahRows_" + i).innerHTML = "[ ]";
document.getElementById("nahRows_" + i + "_link").className = "";
}
if (document.getElementById("nahRows_" + i + "_custom")) {
document.getElementById("nahRows_" + i + "_custom").style.display = "none";
document.getElementById("nahRows_" + i + "_custom").innerHTML = "";
}
}
nahUpdateInsertableTemplates();
nahUpdateCookie();
} // end: nahCloseSettings()
function nahGoToStep(step) {
document.getElementById("nahStep1").style.display = "none";
document.getElementById("nahStep2").style.display = "none";
document.getElementById("nahStep" + step).style.display = "block";
document.getElementById("nahCloseButton").focus();
} // end: nahGoToStep()
function nahSet(action, value, param, loading) {
if (action=="name") {
param = param.replace(/^\s*/, ""); // ltrim
param = param.replace(/\s*$/, ""); // rtrim
if (param == "")
return; // don't set
nahTemplates[nahCurTemplate]["name"] = param;
return;
} else if (action=="act" && value=="update") {
// simple representation: act=7,8,16
param = param.split(",");
for (co=0; co<param.length; co++)
nahTemplates[nahCurTemplate][ param[co] ] = true;
return;
}
updated = false;
updateChoices = (value == "toggle" || value == "update");
tempActive = (value == "update");
nahDontUpdate = false;
action += ""; // convert to string
switch (action) {
case "1": // language
nahDontUpdate = true;
if (value == "update") {
document.getElementById("nahLangInput").value = nahLangs[param];
nahLangName = nahLangs[param];
} else if (value == "set name") {
nahLangName = document.getElementById("nahLangInput").value.toLowerCase();
}
if (nahLangsRev[nahLangName]) {
value = nahLangsRev[nahLangName];
document.getElementById("nahLangStatusError").style.display = "none";
document.getElementById("nahLangStatusOk").style.display = "inline";
document.getElementById("nahLangStatusOkCode").style.display = "none";
document.getElementById("nahLangStatusCode").innerHTML = value;
nahTemplates[nahCurTemplate][1] = value;
} else if (nahLangs[nahLangName]) { // input was actually lang code
document.getElementById("nahLangStatusError").style.display = "none";
document.getElementById("nahLangStatusOk").style.display = "none";
document.getElementById("nahLangStatusOkCode").style.display = "inline";
document.getElementById("nahLangStatusName").innerHTML = nahLangs[nahLangName];
nahTemplates[nahCurTemplate][1] = nahLangName;
} else {
document.getElementById("nahLangStatusError").style.display = "inline";
document.getElementById("nahLangStatusOk").style.display = "none";
document.getElementById("nahLangStatusOkCode").style.display = "none";
}
break;
case "2": // part of speech
nahDontUpdate = true;
if (value == "update") {
value = param;
} else {
document.getElementById("nahPoS_" + nahTemplates[nahCurTemplate][2]).className = "";
}
if (!loading)
document.getElementById("nahPoS_" + value).className = "selected";
nahTemplates[nahCurTemplate][2] = value;
break;
case "6": // definition row
if (value == "update") {
document.getElementById("nahRows_6_custom").innerHTML = "<code id=\"nahRows_6_cat_active\">[ ]</code> <a href=\"javascript:nahSet(6, "cat-click");\" id=\"nahRows_6_cat_link\">Ha med <code>{{kat}}</code>-mall</a> <span id=\"nahRows_6_cat\">på formatet <code>{{kat|<input type=\"text\" id=\"nahRows_6_cat_input\" onblur=\"nahSet(6, "cat-update", this.value);\">|språk=<i><språk></i>}}</code></span>";
document.getElementById("nahRows_6_custom").style.display = "block";
}
if (value == "cat-click") {
param = nahTemplates[nahCurTemplate][6] = (nahTemplates[nahCurTemplate][6] == "-"?"kat=":"-");
value = "update";
}
if (value == "update") {
isAct = (nahTemplates[nahCurTemplate][6] != "-");
document.getElementById("nahRows_6_cat").style.display = (isAct?"inline":"none");
document.getElementById("nahRows_6_cat_link").className = (isAct?"selected":"");
document.getElementById("nahRows_6_cat_active").innerHTML = (isAct?"[X]":"[ ]");
if (isAct)
document.getElementById("nahRows_6_cat_input").value = (nahTemplates[nahCurTemplate][6]==" "?"":nahTemplates[nahCurTemplate][6]);
}
if (value == "cat-update") {
param = param.replace(/^[\s\|]*/, ""); // trim spaces and |
param = param.replace(/[\s\|]*$/, "");
if (param == "-" || param == "") // dash shouldn't be used, but shouldn't give too unexpected results; can't store ""
param = " ";
}
value = param;
updateChoices = false;
break;
}
if (value == "toggle") { // for simple toggle sections
if (!updated)
nahTemplates[nahCurTemplate][action] = tempActive = !nahTemplates[nahCurTemplate][action];
else
tempActive = nahTemplates[nahCurTemplate][action];
}
if (updateChoices && !loading) {
if (document.getElementById("nahRows_" + action) && document.getElementById("nahRows_" + action + "_link")) {
document.getElementById("nahRows_" + action).innerHTML = (tempActive?"[X]":"[ ]");
document.getElementById("nahRows_" + action + "_link").className = (tempActive?"selected":"");
}
if (!tempActive)
document.getElementById("nahRows_" + action + "_custom").innerHTML = "";
}
else if (!nahDontUpdate) {
nahTemplates[nahCurTemplate][action] = value;
}
} // end: nahSet()
function nahUpdateNameInput() {
document.getElementById("nahNameInput").value = nahTemplates[nahCurTemplate]["name"];
} // end: nahUpdateNameInput()
function nahInsert(nahTemplateId, mode) {
if (mode == "new") {
if (nahTemplateId == 0) { // save a new template
for (i=1; i<=5; i++)
if (!nahTemplates[i])
break;
if (nahTemplates[i]) { // no empty template spaces - something's wrong
alert("Något i det här skriptet har gått fel. Ladda om sidan så bör det fungera igen.");
nahCloseSettings();
return;
}
nahNumInsertedNewTemplates++;
nahTemplates[i] = nahClone(nahTemplates[0]);
nahTemplateId = i;
}
nahUpdateCookie();
nahUpdateInsertableTemplates();
}
// replace {{ingen artikel}}
nahAllText = document.getElementById("wpTextbox1").value;
if (nahAllText.indexOf("{{ingen artikel") != -1) {
nahAllText = nahAllText.replace("{{ingen artikel}}", "");
nahAllText = nahAllText.replace(/\{\{ingen artikel\|([^\}]*)\}\}/, "{{se även|$1}}\n\n");
document.getElementById("wpTextbox1").value = nahAllText;
nahAllText = false;
}
// and now the actual inserting
nahText = "";
for (row in nahGenericArticle)
if (nahTemplates[nahTemplateId][row])
nahText += nahGeneratedText(nahTemplateId, row);
else if (nahGenericArticle[row][0] == "\n")
nahText += "\n";
nahText = nahText.replace(/^\s*/, ""); // ltrim
nahText = nahText.replace(/\s*$/, ""); // rtrim
nahText = nahText.split("<separator>");
if (nahText.length == 2)
insertTags(nahText[0], nahText[1], "<skriv definitionen här>");
else {
alert("Det verkar som om definitionsraden inte kom med. Var även uppmärksam på andra fel.");
insertTags(nahText[0], "", "");
}
nahCloseSettings();
} // end: nahInsert()
function nahForgetMe() {
if (confirm("Är du helt säker på att du vill ta bort alla dina prototypmallar?\nDetta går inte att ångra!\n(den cookie som lagrar datan kommer att raderas)")) {
nahSaveCookie = false;
for (i=1; i<=5; i++)
nahTemplates[i] = false;
nahUpdateCookie();
nahCloseSettings();
}
} // end: nahForgetMe()
function nahRememberMe() {
if (confirm("Om du väljer att komma ihåg prototypmallar sparas dessa i en cookie och när du redigerar en annan sida dyker de upp.\nBekräfta att du vill göra detta.")) {
nahSaveCookie = true;
nahUpdateCookie();
if (nahReadCookie("prototypeArticles") == null) {
alert("Det går inte att spara cookien i din webbläsare.\nAktivera cookies för denna funktionalitet.");
nahSaveCookie = false;
nahUpdateCookie();
}
}
} // end: nahRememberMe()
function nahUpdateCookie() {
if (nahSaveCookie) {
theCookie = [""];
for (i=1; i<=5; i++) {
theCookie[i] = "";
headers = "";
if (typeof nahTemplates[i] == "object") {
for (j in nahTemplates[i]) {
if (typeof nahTemplates[i][j] == "boolean")
if (nahTemplates[i][j])
headers += ","+escape(j); // simpler representation: act=7,9,16
else
theCookie[i] += "&" + escape(j) + "="; // false represented by empty string
else
theCookie[i] += "&" + escape(j) + "=" + escape(nahTemplates[i][j]);
}
}
if (headers != "")
theCookie[i] += "&act="+headers.substring(1);
if (theCookie[i] != "")
theCookie[i] = theCookie[i].substring(1);
}
theCookie = theCookie.join("|");
theCookie = theCookie.substring(1);
nahCreateCookie("prototypeArticles", theCookie, 30);
document.getElementById("nahCookieSettingsOn").style.display = "inline";
document.getElementById("nahCookieSettingsOff").style.display = "none";
} else {
nahEraseCookie("prototypeArticles");
document.getElementById("nahCookieSettingsOn").style.display = "none";
document.getElementById("nahCookieSettingsOff").style.display = "inline";
}
} // end: nahUpdateCookie()
function nahUpdateInsertableTemplates() {
nahHTML = "Dina prototypartiklar <small>(infogas när du klickar på namnet)</small>: ";
nahFirst = true;
for (i=1; i<=5; i++) {
if (nahTemplates[i]) {
if (nahFirst) nahFirst = false;
else nahHTML += " — ";
nahHTML += "<b><a href=\"javascript:nahInsert("+i+");\" title=\"Infoga denna prototypartikel\">" + nahHtmlEscape(nahTemplates[i]["name"]) + "</a></b> <small><a href=\"javascript:nahSettings("+i+");\" title=\"Ändra denna prototypartikel\">[+/-]</a> <a href=\"javascript:nahDeleteTemplate("+i+");\" title=\"Ta bort denna prototypartikel\">[×]</a></small>";
}
}
if (nahFirst) // no templates created
nahHTML = "";
document.getElementById("nahInsertableTemplates").innerHTML = nahHTML;
document.getElementById("nahInsertableTemplates").style.display = (nahHTML==""?"none":"block");
} // end: nahUpdateInsertableTemplates()
function nahDeleteTemplate(nahTemplateId) {
if (confirm("Är du helt säker på att du vill ta bort din prototypartikel \""+nahTemplates[nahTemplateId]["name"]+"\"?\nDetta kan inte ångras.")) {
nahTemplates[nahTemplateId] = false;
nahUpdateInsertableTemplates();
nahUpdateCookie();
}
} // end: nahDeleteTemplate()
// NAH specific functions end here, but since it isn't included anywhere else we
// need a few extra that could be used in any script
function nahClone(myObj) {
if (typeof myObj != "object") return myObj;
if (myObj == null) return myObj;
var myNewObj = new Object();
for (var tmpKey in myObj)
myNewObj[tmpKey] = nahClone(myObj[tmpKey]);
return myNewObj;
}
function nahHtmlEscape(str) {
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
str = str.replace(/"/g, """);
return str;
}
function nahCreateCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function nahReadCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function nahEraseCookie(name) {
nahCreateCookie(name,"",-1);
}
$(nahInit);