MediaWiki:Common.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.
/**
 * Základní javascriptový soubor WikiSkript
 *
 * @file Hlavní javascriptový soubor, který se načte na všech stránkách (vyjma přihlašovací obrazovky a nastavení uživatele)
 * @license https://www.gnu.org/licenses/gpl.html GNU General Public License 3.0
 */

/* OBECNÉ FUNKCE */

/**
 * Získání všech elementů se zadanou třídou
 *
 * @deprecated Již je možno použít jQuery $(".class").
 *
 * @param {searchClass} Hledaná CSS třída.
 * @param {domNode} Oblast hledání v DOM (pokud chceme definovat, jinak se prohledává celý dokument).
 * @param {tagName} Hledaná HTML značka (pokud chceme definovat, jinak se prohledává celý dokument).
 *
 * @return {el} Pole nalezených elementů se zadanou CSS třídou.
 */
function getElementsByClass(searchClass, domNode, tagName) {

    // zavedení oblasti hledání
    if (domNode == null) domNode = document;
    if (tagName == null) tagName = '*';
    var tags = domNode.getElementsByTagName(tagName);

    // výsledné pole nalezených elementů
    var el = new Array();

    // co hledáme
    var tcl = " "+searchClass+" ";

    // cyklus hledání, nalezené elementy se zadají do výsledného pole
    var i, j;
    for(i=0,j=0; i<tags.length; i++) {
        var test = " " + tags[i].className + " ";
        if (test.indexOf(tcl) != -1)
            el[j++] = tags[i];
    }

    // výsledek
    return el;
}

/**
 * Zadání dotazu AJAX
 *
 * @deprecated Již je možno použít jQuery $.ajax().
 *
 * @param {xmlvar} Proměnná určená ke komunikaci se serverem.
 * @param {url} URL stránky k načtení.
 * @param {todo} Funkce spouštějící se po získání odpovědi.
 */
function getXMLHttpRequest(xmlvar, url, todo) {

    // definice proměnné
    eval(xmlvar + '= null;');

    if (window.XMLHttpRequest) {
        // pro nové prohlížeče:
        eval(xmlvar + '=new XMLHttpRequest();');
    } else if (window.ActiveXObject) {
        // pro IE5 a IE6 (chachacha :-) )
        eval(xmlvar + '=new ActiveXObject("Microsoft.XMLHTTP");');
    }

    eval('xmlvarValue = ' + xmlvar + ';');

    if (xmlvarValue!=null) {
        eval(xmlvar+'.onreadystatechange=' + todo +';');
        eval(xmlvar+'.open("GET",url,true);');
        eval(xmlvar+'.send(null);');
    } else {
        window.alert("Chyba: Váš prohlížeč nepodporuje XMLHTTP. Některé stránky nemusí být zobrazeny správně.");
    }
}

/**
 * Osekání řetězce o prázdné znaky na začátku a na konci
 *
 * @deprecated Již je možno použít jQuery $.trim().
 *
 * @param {str} Řetězec určený k osekání.
 *
 * @return {str} Vrací osekaný řetězec bez prázdných znaků na začátku a na konci
 */
function trim(str) {
    str = str.replace(/^\s+|\s+$/g, "");
    return str;
}

/**
 * Hledá dané právo mezi právy uživatele.
 *
 * @param {right} Hledané právo (např. "autoconfirmed", "editor", "pedagogue").
 *
 * @return {boolean} Vrací true, pokud daný uživatel má dané právo.
 */
function mwGetUserRight(right) {
    if ($.inArray(right, mw.config.get("wgUserGroups")) !== -1) {
        return true;
    } else {
        return false;
    }
}

/* VLOŽENÉ SKRIPTY */

/**
 * Úprava formuláře pro upload souborů.
 *
 * Spouští se pouze na stránce "Speciální:Načíst_soubor"
 */
if (mw.config.get("wgPageName") === "Speciální:Načíst_soubor") mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:UploadForm.js&action=raw&ctype=text/javascript");

/**
 * Úprava editací a editační lišty.
 *
 * Spouští se pouze na editačních stránkách.
 */
if ($.inArray(mw.config.get("wgAction"), ["edit", "submit", "delete"]) !== -1) mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:Editace.js&action=raw&ctype=text/javascript");

/**
 * Úpravy nabídek (menu)
 */
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:UpravyMenu.js&action=raw&ctype=text/javascript");

/**
 * Sbalování částí sekcí portálů
 */
mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:SbalovaniPortalu.js&action=raw&ctype=text/javascript");

/**
 * Úprava vzhledu kvízů
 * 
 * Spouští se pouze na stránkách ve jmeném prostoru "Procvičování"
 */
if (mw.config.get('wgNamespaceNumber') === 108) mw.util.addCSS( '@import url("/index.php?title=MediaWiki:Quiz.css&action=raw&ctype=text/css");' );

/* DALŠÍ FUNKCE */

/**
 * ImageAnnotator
 *
 * Spouští se jen při zobrazování stránek a na portálech, souborech, uživatelských
 * stránkách a procvičováních
 * Máme na to náhradu v podobě MW extension
 */
/*
if ( $.inArray( mw.config.get( 'wgNamespaceNumber' ), [ 0, 2, 6, 100, 108 ] ) !== -1 && $.inArray( mw.config.get( 'wgAction' ), [ 'view', 'purge', 'submit' ] ) !== -1 ) {
    if ( typeof ImageAnnotator_disable === 'undefined' || !ImageAnnotator_disable ) {
        if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
            $(function(){
                $.ajax({
                    url: mw.util.wikiScript( 'api' ),
                    data: {
                        format: 'json',
                        action: 'query',
                        generator: 'images',
                        prop: 'info',
                        gimlimit: '500',
                        titles: mw.config.get( 'wgPageName' )
                    },
                    dataType: 'json',
                    type: 'GET',
                    success: function( data ) {
                        if ( data && data.query && data.query.pages ) {
                            mw.loader.load( mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/index.php?title=MediaWiki:Gadget-ImageAnnotator.js&action=raw&ctype=text/javascript' );
                        }
                    }
                });
            });
        } else {
            mw.loader.load( mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + '/index.php?title=MediaWiki:Gadget-ImageAnnotator.js&action=raw&ctype=text/javascript' );
        }
    }
}
*/


/**
 * Lékařská kalkulačka
 */
$( '.lekarska_kalkulacka').each( function() {
    var idName = $( this ).attr( 'id' );
    var scriptUrl = mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '/index.php?title=MediaWiki:L%C3%A9ka%C5%99sk%C3%A1_kalkula%C4%8Dka/' + idName.replace( 'lekarska_kalkulacka_', '') + '.js&action=raw&ctype=text/javascript';
    mw.loader.load( scriptUrl );
});

/**
 * Wikidata Embed
 */
if ( $('.wdEmbed').length > 0) { //je-li na strance element s tridou wdEmbed, nacti script MediaWiki:WikidataEmbed.js
  mw.loader.load(
  	mw.config.get("wgServer")
  	+ mw.config.get("wgScriptPath")
  	+ "/index.php?title=MediaWiki:WikidataEmbed.js&action=raw&ctype=text/javascript"
  );
}

/**
 * Přidání stylu klikatelných tlačítek (viz Šablona:Tlačítko)
 */
mw.hook('wikipage.content').add(function() {
    if ((mw.loader.getState('oojs-ui') === 'registered') && ($('.oo-ui-widget').length)) {
        mw.loader.using(['oojs-ui']);
    }
});


/**
 * Přidání CSS stylu do R wiki
 */
if($("#catlinks").length && $("#catlinks").html().indexOf("Kategorie:R wiki") > -1) {

    if(mw.config.get("wgNamespaceNumber") === 0) {
    	mw.loader.load(mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/index.php?title=MediaWiki:Rwiki.css&action=raw&ctype=text/css", "text/css");
    }
    
    document.getElementById("firstHeading").innerHTML = '<span id="rwiki_link"><a href="//www.wikiskripta.eu/w/Port%C3%A1l:R_wiki"><img src="//www.wikiskripta.eu/images/thumb/1/1b/R_logo.svg/40px-R_logo.svg.png"></a></span>' + document.getElementById("firstHeading").innerHTML;
}


/**
 *  Loga do patičky (OPVVV, NPO, EU)
 */
$("#footer").append("<img src='https://www.wikiskripta.eu/thumb.php?f=LogaPaticka.png&width=1000' width='500' class='ms-4' title='Podpořeno OP VVV č. CZ.02.2.69/0.0/0.0/16_015/0002362 :: Podpořeno z projektu „Transformace pro VŠ na UK“, financovaného z Národního plánu obnovy, registrační číslo NPO_UK_MSMT-16602/2022.'>");

/**
 *  Přesun TOC do infoboxu
 */
if( $("table.infobox").length > 0 && $("#toc").length > 0 ) {
	var cspan = 1;
	var attr = $("table.infobox tr:first td:first").attr('colspan');
	if (typeof attr !== typeof undefined && attr !== false) {
    	cspan = $("table.infobox tr:first td").prop("colspan");
	}
	$("table.infobox").append("<tr style='padding-top:10px;'><td colspan='" + cspan + "' id='infoboxtoc'></td></tr>");
	$("#infoboxtoc").append($("#toc"));
}