MediaWiki:UpravyMenu.js
Z WikiSkript
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.
/**
* Úpravy menu a rozhraní WikiSkript
*
* @file Skripty upravující menu, nabídky a rozhraní WikiSkript
* @license https://www.gnu.org/licenses/gpl.html GNU General Public License 3.0
*/
var upravyMenu = {
/**
* Vytvoří pískoviště pro přihlášeného uživatele.
*/
piskoviste: function() {
mw.util.addPortletLink('p-personal', mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/index.php?title=Uživatel:' + mw.config.get("wgUserName") + '/Pískoviště', 'Moje pískoviště', 'pt-piskoviste', 'Prostor, kde mohu experimentovat', 'a', document.getElementById('pt-preferences'));
},
/**
* Přidá odkaz na pomoc uživatelům.
*/
pomoc: function() {
mw.util.addPortletLink('p-personal', mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/index.php?title=WikiSkripta:Pomoc', 'Potřebujete pomoc?', 'pt-pomoc', 'Nápověda, jak a koho kontaktovat', null, document.getElementById('pt-logout'));
},
/**
* Správcovské nástroje k uživatelům do levého menu.
*/
spravcovskeNastroje: function() {
wgTitleAa = new Array();
wgTitleAa = mw.config.get("wgTitle").split('/');
urCesta = mw.config.get("wgServer") + mw.config.get("wgScript") + '/';
if(mwGetUserRight("bureaucrat")) {
mw.util.addPortletLink('p-tb', urCesta + "Speciální:CheckUser?user=" + mw.config.get("wgTitle"), 'Kontrola IP uživatele', 't-ipcheckuser', 'Kontrola IP adresy uživatele a jeho editací');
}
},
/**
* Uživatelské nástroje do levého menu.
*/
uzivatelskeNastroje: function() {
// Historie kategorie
if (mw.config.get("wgUserName") !== null && mw.config.get("wgCanonicalNamespace") === "Category" && mw.config.get("wgTitle")) {
mw.util.addPortletLink('p-tb', mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/index.php/Speciální:CategoryHistory/'+mw.config.get("wgTitle"), 'Historie kategorie', 't-cathistory', 'Historie článků v kategorii');
}
// Hledání průniku kategorií
if (mw.config.get("wgNamespaceNumber") === 14 ) { // jmenný prostor „Kategorie:“
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:CategoryIntersection.js&action=raw&ctype=text/javascript");
}
// chybějící portály
if(mwGetUserRight("editor")) mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:MissingPortalLinks.js&action=raw&ctype=text/javascript");
// průnik portálů a kategorií
if(mwGetUserRight("editor")) mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:PrunikPortalu.js&action=raw&ctype=text/javascript");
},
/**
* Zobrazení souvisejících portálů a vypracovaných otázek
*/
portaly: function() {
// URL pro API
jsonapi = mw.config.get("wgServer") + "/api.php?action=query&list=backlinks&bltitle=" + mw.config.get("wgPageName") + "&blnamespace=100&format=json";
// ajax
$.getJSON(jsonapi).done(function(data){
// zpracování odpovědi
var pocetOtazek = 0; // vypracované otázky
var pocetSkutPortalu = 0; // skutečný počet portálů (bez otázek)
pocetPortalu = data.query.backlinks.length;
if(pocetPortalu == 0) return; // bez portálů nemá smysl pokračovat
for(i=0;i<pocetPortalu;i++) {
// název portálu
aktPortal = data.query.backlinks[i].title;
aktPortalNazev = aktPortal.replace("Portál:", "");
if(aktPortalNazev.length > 25) aktPortalNazev = aktPortalNazev.substring(0,24) + "…";
// test, zda portál neobsahuje vypracované otázky
var zjisteniOtazek = new RegExp("(zápočet|Zápočet|otázky|Otázky|praktika|Praktika)");
// rozdělení mezi portály a vypracované otázky
if(zjisteniOtazek.test(aktPortalNazev)) {
idPortalu = "p-rel-exam";
pocetOtazek++;
} else {
idPortalu = "p-rel-portals";
pocetSkutPortalu++;
}
// vložení portálu do menu
mw.util.addPortletLink(idPortalu, mw.config.get("wgServer") + mw.config.get("wgScript") + '/' + aktPortal, aktPortalNazev , '', aktPortal, '');
}
// sekce s portály
if(pocetSkutPortalu > 0) {
$("#p-rel-portals").slideDown();
}
// sekci s portály pokud možno rozbalit
if(document.getElementById("p-rel-portals") && document.getElementById("p-rel-portals").className.indexOf("collapsed") !== -1) {
$("#mw-panel > div#p-rel-portals").toggleClass("collapsed").toggleClass("expanded").find("div.body").slideToggle("fast");
}
// sekce s otázkami
if(pocetOtazek>0) {
$("#p-rel-exam").slideDown();
}
});
},
start: function() {
// pískoviště
if(mw.config.get("wgUserName") !== null) {
upravyMenu.piskoviste();
}
// správcovské nástroje
if($.inArray(mw.config.get("wgNamespaceNumber"), [2,3]) !== -1) upravyMenu.spravcovskeNastroje();
// uživatelské nástroje
upravyMenu.uzivatelskeNastroje();
// pomoc uživatelům
upravyMenu.pomoc();
// vyměnit odkazy na přihlášení a založení účtu
$("#pt-createaccount").before($("#pt-login"));
// související portály
if (mw.config.get("wgNamespaceNumber") === 0 && mw.config.get("wgTitle") !== mw.config.get("wgMainPageTitle") && mw.config.get("wgAction") !== "markpatrolled") upravyMenu.portaly();
// redakční nástroje
if (mw.config.get("wgUserName") && document.getElementById("p-editorial-links")) document.getElementById("p-editorial-links").style.display = "block";
}
}
/**
* Start funkcí.
*/
$(upravyMenu.start());