Pereiti prie turinio

MediaWiki:Common.js

Pranešimas iš Vikipedijos, laisvosios enciklopedijos.

Dėmesio: Išsaugoję turite išvalyti naršyklės spartinančią saugyklą (cache): Mozilla/Safari/Konqueror: spausdami Shift pasirinkite reload (arba Ctrl-Shift-R), IE: Ctrl-F5, Opera: F5.

/* Bet koks čia parašytas JavaScript bus paleistas kieviename puslapyje kievienam naudotojui. */
 
/** Interwiki links to featured articles ***************************************
*
*  Description: Highlights interwiki links to featured articles (or
*               equivalents) by changing the bullet before the interwiki link
*               into a star.
*  Maintainers: [[User:R. Koot]]
*/
 
function LinkFA() {
if ( document.getElementById( "p-lang" ) ) {
	var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
 
	for ( var i = 0; i < InterwikiLinks.length; i++ ) {
		if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) && InterwikiLinks[i].className.indexOf( "badge-featuredarticle" ) === -1 ) {
			InterwikiLinks[i].className += " FA"
			InterwikiLinks[i].title = "This is a featured article in another language.";
		} else if ( document.getElementById( InterwikiLinks[i].className + "-ga" ) && InterwikiLinks[i].className.indexOf( "badge-goodarticle" ) === -1 ) {
			InterwikiLinks[i].className += " GA"
			InterwikiLinks[i].title = "This is a good article in another language.";
		}
	}
}
}
 
$( LinkFA );

/* Import more specific scripts if necessary */
 
if (mw.config.get('wgAction') == "edit" || mw.config.get('wgAction') == "submit" || mw.config.get('wgCanonicalSpecialPageName') == "Upload") //scripts specific to editing pages
{
	importScript("MediaWiki:Common.js/edit.js")
}
/*else if (wgPageName == "Special:Watchlist") //watchlist scripts
{
importScript("MediaWiki:Common.js/watchlist.js")
}
else if (wgPageName == "Special:Search") //scripts specific to Special:Search
{
importScript("MediaWiki:Common.js/search.js")
}*/
  if (mw.config.get('wgNamespaceNumber')==0 || mw.config.get('wgNamespaceNumber')==100){
    importScript("MediaWiki:Common.js/Osm.js")
  }

/*
===Collapsible tables===
*/

/** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[Vikipedija:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */
 
  if (typeof(window.NavigationBarShowDefault) == 'undefined') { window.NavigationBarShowDefault = 0; }
var autoCollapse = 2;
  if (NavigationBarShowDefault > 2) autoCollapse = NavigationBarShowDefault;
var collapseCaption = "slėpti";
var expandCaption = "rodyti";
 
function collapseTable( tableIndex )
{
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
     if ( !Table || !Button ) {
         return false;
     }
 
     var Rows = Table.rows;
 
     if ( Button.firstChild.data == collapseCaption ) {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = "none";
         }
         Button.firstChild.data = expandCaption;
     } else {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = Rows[0].style.display;
         }
         Button.firstChild.data = collapseCaption;
     }
}
 
function createCollapseButtons()
{
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var Tables = document.getElementsByTagName( "table" );
 
     for ( var i = 0; i < Tables.length; i++ ) {
         if ( $(Tables[i]).hasClass( "collapsible" ) ) {
 
             /* only add button and increment count if there is a header row to work with */
             var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
             if (!HeaderRow) continue;
             var Header = HeaderRow.getElementsByTagName( "th" )[0];
             if (!Header) continue;
 
             NavigationBoxes[ tableIndex ] = Tables[i];
             Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
             var Button     = document.createElement( "span" );
             var ButtonLink = document.createElement( "a" );
             var ButtonText = document.createTextNode( collapseCaption );
 
             Button.style.styleFloat = "right";
             Button.style.cssFloat = "right";
             Button.style.fontWeight = "normal";
             Button.style.textAlign = "right";
             Button.style.width = "6em";
 
             ButtonLink.style.color = Header.style.color;
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
             ButtonLink.appendChild( ButtonText );
 
             Button.appendChild( document.createTextNode( "[" ) );
             Button.appendChild( ButtonLink );
             Button.appendChild( document.createTextNode( "]" ) );
 
             Header.insertBefore( Button, Header.childNodes[0] );
             tableIndex++;
         }
     }
 
     for ( var i = 0;  i < tableIndex; i++ ) {
         if ( $(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" ) ) ) {
             collapseTable( i );
         }
     }
}
 
$( createCollapseButtons );

/** Dynamic Navigation Bars (experimental) *************************************
 *
 *  Description: See [[Vikipedija:NavFrame]].
 *  Maintainers: UNMAINTAINED
 */
 
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
 
// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar){
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
    if (!NavFrame || !NavToggle) {
        return false;
    }
 
    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if ($(NavChild).hasClass( 'NavContent') || $(NavChild).hasClass( 'NavPic')) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;
 
    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if ($(NavChild).hasClass( 'NavContent') || $(NavChild).hasClass( 'NavPic')) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
    var indexNavigationBar = 0;
    // iterate over all < div >-elements 
    var divs = document.getElementsByTagName("div");
    for (var i = 0; NavFrame = divs[i]; i++) {
        // if found a navigation bar
        if ($(NavFrame).hasClass( "NavFrame")) {
 
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
            var isCollapsed = $(NavFrame).hasClass( "collapsed" );
            /*
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
 
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(var j=0; j < NavFrame.childNodes.length; j++) {
                if ($(NavFrame.childNodes[j]).hasClass( "NavHead")) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}
 
$( createNavigationBarToggleButton );

/* Kad nerodytų Pagrindinis puslapis, pradiniame psl.*/
var isPortal = (mw.config.get('wgCanonicalNamespace') == "Portal" && mw.config.get('wgPageName').indexOf("/") == -1);
var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1) || mw.config.get('wgAction') != "view" );

mw.loader.using(['mediawiki.util']).then(function () {
	if ((mw.config.get('wgIsMainPage') || isPortal) && !isDiff) {
		mw.util.addCSS('#lastmod, #siteSub, #contentSub, h1.firstHeading { display: none  !important; }');
	}
});

/**
 * Create a new DOM node for the current document.
 *    Basic usage:  var mySpan = newNode('span', "Hello World!")
 *    Supports attributes and event handlers*: var mySpan = newNode('span', {style:"color: red", focus: function(){alert(this)}, id:"hello"}, "World, Hello!")
 *    Also allows nesting to create trees: var myPar = newNode('p', newNode('b',{style:"color: blue"},"Hello"), mySpan)
 *
 * *event handlers, there are some issues with IE6 not registering event handlers on some nodes that are not yet attached to the DOM,
 * it may be safer to add event handlers later manually.
**/
function newNode(tagname){
 
  var node = document.createElement(tagname);
 
  for( var i=1;i<arguments.length;i++ ){
 
    if (typeof arguments[i] == 'string'){ //Text
      node.appendChild( document.createTextNode(arguments[i]) );
 
    } else if (typeof arguments[i] == 'object'){ 
 
      if (arguments[i].nodeName){ //If it is a DOM Node
        node.appendChild(arguments[i]);
 
      } else { //Attributes (hopefully)
        for (var j in arguments[i]) {
          if (j == 'class') { //Classname different because...
            node.className = arguments[i][j];
 
          } else if (j == 'style'){ //Style is special
            node.style.cssText = arguments[i][j];
 
          } else if (typeof arguments[i][j] == 'function'){ //Basic event handlers
            try { node.addEventListener(j,arguments[i][j],false); //W3C
            } catch(e) {try{ node.attachEvent('on'+j,arguments[i][j],"Language"); //MSIE
            } catch(e) { node['on'+j]=arguments[i][j]; }}; //Legacy
 
          } else{
            node.setAttribute(j,arguments[i][j]); //Normal attributes
 
          }
        }
      }
    }
  }
 
  return node;
}


/*Nuorodos į sister sites virš interwiki*/
/*
#########
### ProjectLinks
###  by [[user:Pathoschild]] (idea from an older, uncredited script)
###    * generates a sidebar list of links to other projects from {{projectlinks}}
#########
*/
function Projectlinks() {
        var elements = new Array();
        var spans = document.getElementsByTagName('span');
 
        // filter for projectlinks
        for (var i=0, j=0; i<spans.length; i++) {
                if (spans[i].className == 'interProject') {
                        elements[j] = spans[i].getElementsByTagName('a')[0];
                        j++;
                }
        }
 
        if (j == 0)
            return;
 
        // sort alphabetically
        function sortbylabel(a,b) {
                // get labels
                a = a.innerHTML.replace(/^.*<a[^>]*>(.*)<\/a>.*$/i,'$1');
                b = b.innerHTML.replace(/^.*<a[^>]*>(.*)<\/a>.*$/i,'$1');
 
                // return sort order
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
        }
        elements.sort(sortbylabel);
 
        // Create the list of project links
        var pllist = newNode('ul');
        for (var i=0; i<elements.length; i++) {
                pllist.appendChild(newNode('li', elements[i]));
        }
        var projectBox = newNode('div', {'class': 'portlet portal', id: 'p-projects'}, 
            newNode('h5', 'Kituose projektuose'),
            newNode('div', {'class': 'pBody body'}, pllist)
        );
 
        var insert = document.getElementById('p-tb');
        if (!insert)
            return;
 
        if (insert.nextSibling)
            insert.parentNode.insertBefore(projectBox, insert.nextSibling);
        else
            insert.parentNode.appendChild(projectBox);
}
 
$(Projectlinks);

/** WikiMiniAtlas *******************************************************
*
*  Description: WikiMiniAtlas is a popup click and drag world map.
*               This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
*               The script itself is located on meta because it is used by many projects.
*               See [[Meta:WikiMiniAtlas]] for more information. 
*  Maintainers: [[User:Dschwen]]
*/

mw.loader.load("//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript");

function addWikifButton() {
	var toolbar = document.getElementById('toolbar')
	if (!toolbar) return
	var i = document.createElement('img')
	i.src = '//upload.wikimedia.org/wikisource/ru/d/d1/Button-wikifikator.png'
	i.alt = i.title = 'викификатор'
	i.onclick = function () { Wikify(); }
	i.style.cursor = 'pointer'
	toolbar.appendChild(i)
}
if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') {
	mw.loader.load('//lt.wikipedia.org/w/index.php?title=MediaWiki:Wikificator.js‎&action=raw&ctype=text/javascript')
	$(addWikifButton)
}