MediaWiki:Gadget-vytvor-knihu.js
Skočit na navigaci
Skočit na vyhledávání
Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.
- Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
- Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
- Internet Explorer / Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5
- Opera: Stiskněte Ctrl-F5.
/* <pre> */
var apiXmlContent;
//získá z API interní odkazy, na něž stránka odkazuje
function createBook() {
var title;
//získá název článku z url
title = encodeURIComponent(wgPageName);
//žádost API pomocí xmlHttpRequestu
if (title != null) {
var apiUrl = 'http://www.wikiskripta.eu/api.php?action=query&titles=' + title + '&prop=revisions&rvprop=content&format=xml';
getXMLHttpRequest("apiXmlContent", apiUrl, "parseApiRequest");
}
}
/**
* ReplaceAll by Fagner Brack (MIT Licensed)
* Replaces all occurrences of a substring in a string
*/
String.prototype.replaceAll = function(token, newToken, ignoreCase) {
var str, i = -1, _token;
if((str = this.toString()) && typeof token === "string") {
_token = ignoreCase === true? token.toLowerCase() : undefined;
while((i = (
_token !== undefined?
str.toLowerCase().indexOf(
_token,
i >= 0? i + newToken.length : 0
) : str.indexOf(
token,
i >= 0? i + newToken.length : 0
)
)) !== -1 ) {
str = str.substring(0, i)
.concat(newToken)
.concat(str.substring(i + token.length));
}
}
return str;
};
//projde odpověď API a přetvoří ji do kódu knihy
function parseApiRequest() {
if (apiXmlContent.readyState == 4 && apiXmlContent.status == 200) {
var content = apiXmlContent.responseXML.getElementsByTagName('rev')[0].childNodes[0].wholeText;
content = content.replaceAll("[[", "\n:[[");
content = content.replaceAll("#", "|");
content = content.replaceAll("*", "|");
//přeměň nadpisy uvozené rovnítky na nadpisy uvozené středníkem:
nadpisPattern = /=+ ?(.*?) ?=+/gm;
nadpisyMatch = content.match(nadpisPattern);
var nadpis;
var newNadpis;
for (var i in nadpisyMatch) {
nadpis = nadpisyMatch[i];
newNadpis = nadpis.replace("=== ", "");
newNadpis = newNadpis.replace(" ===", "");
newNadpis = nadpis.replace("== ", "");
newNadpis = newNadpis.replace(" ==", "");
newNadpis = newNadpis.replace("==", "");
newNadpis = nadpis.replace("= ", "");
newNadpis = newNadpis.replace(" =", "");
newNadpis = newNadpis.replaceAll("=", "");
newNadpis = ";" + newNadpis;
content = content.replace(nadpis, newNadpis);
}
//zjisti předmět, fakultu a obor:
pattern = /Otázky z (.*?) \((.*?)\)/;
regexMatch = pattern.exec(wgTitle);
if (regexMatch) {
predmet = regexMatch[1];
obor = regexMatch[2];
} else {
//slovensky?
pattern = /Otázky na skúšku z (.*?) \((.*?)\)/;
regexMatch = pattern.exec(wgTitle);
if (regexMatch) {
predmet = regexMatch[1];
obor = regexMatch[2];
} else {
predmet = wgTitle;
obor = wgTitle;
}
}
var bookCode = "<noinclude>{{Uložená kniha | vypracované zkouškové otázky z " + predmet + "}}</noinclude>\n\n";
bookCode += "{{Netisknout|\n== Vypracované otázky z " + predmet + " ==\n";
switch (obor) {
case "1. LF, VL":
bookCode += "=== 1. lékařská fakulta UK, obor Všeobecné lékařství ===\n\n";
break;
case "2. LF, VL":
bookCode += "=== 2. lékařská fakulta UK, obor Všeobecné lékařství ===\n\n";
break;
case "3. LF, VL":
bookCode += "=== 3. lékařská fakulta UK, obor Všeobecné lékařství ===\n\n";
break;
case "1. LF, ZL":
bookCode += "=== 1. lékařská fakulta UK, obor Zubní lékařství ===\n\n";
break;
case "LFP, VL":
bookCode += "=== Lékařská fakulta UK v Plzni, obor Všeobecné lékařství ===\n\n";
break;
case "LFHK, VL":
bookCode += "=== Lékařská fakulta UK v Hradci Králové, obor Všeobecné lékařství ===\n\n";
break;
case "LF UPJŠ, VL":
bookCode += "=== Lekárska fakulta Univerzity Pavla Jozefa Šafárika, Všeobecné lekárstvo ===\n\n";
break;
}
bookCode += "\n\n:[[Portál:" + wgTitle + "|Obsah]]\n}}\n\n{{Abc | styl=decimal |\n";
bookCode += content;
bookCode += "\n}}\n\n<noinclude>[[Kategorie:Knihy|{{PAGENAME}}]]</noinclude>";
//zbav se volných rádků:
bookCode = bookCode.replaceAll("\n\n\|\n", "\n|\n");
bookCode = bookCode.replaceAll("\n\|\n\n", "\n|\n");
//spravně odkazované kategorie:
bookCode = bookCode.replaceAll(":[[Kategorie:", "[[Kategorie:");
noveokno=window.open();
noveokno.document.write('<html><head><title>Vytvoř knihu</title></head><body><h1>Vytvoř knihu</h1><p>Klikněte prosím na následující text a on se označí. Potom jej zkopírujte, vložte na požadovanou stránku ve WikiSkriptech, zkontrolujte a uložte.</p><form><textarea cols="200" rows="20" readonly="readonly" onclick="this.select()">' + bookCode + '</textarea></body></html>');
noveokno.document.close();
}
}
//tlačítko do horního menu
addOnloadHook(
function(){
if (wgNamespaceNumber == 100) {
var knihaVypracovanychOtazekPortletLink = mw.util.addPortletLink(
'p-coll-print_export',
'#',
'Kniha otázek',
'javascript-link-kniha-vypracovanych-otazek',
'vytvořit wikikód knihy vypracovaných otázek z tohoto seznamu',
'',
'coll-create_a_book'
);
$( knihaVypracovanychOtazekPortletLink ).click( function ( e ) {
e.preventDefault();
createBook();
});
}
//addPortletLink('p-personal', 'JavaScript:createBook()', 'Kniha otázek', '', 'Vytvoří knihu ze seznamu zkouškových otázek', '', document.getElementById('pt-mycontris'));
}
);
/* </pre> */