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());