MediaWiki:Common.js

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

Uwaga: aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5 lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Przejdź do Menu → Ustawienia (Opera → Preferencje w Mac), a następnie Prywatność i bezpieczeństwo → Wyczyść dane przeglądania → Opróżnij pamięć podręczną.
/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony.
*/

// Frame Busting
if (top != self) top.location.href = self.location.href;

/*
* pageInfo, instrukcja obsługi:
   * pageInfo.namespace          numer przestrzeni nazw (równe wgNamespaceNumber)
   * pageInfo.name               pełna nazwa strony
   * pageInfo.title              tytuł strony, czyli ostatnia część po '/' albo jest równe pageInfo.name, gdy nigdzie nie występuje slash
   * pageInfo.book               tytuł książki
   * pageInfo.action             akcja taka jaka jest w adresie URL pod "action=", w przypadku normalnego czytania strony, action jest równe "get"
   * pageInfo.diff               null w przypadku, gdy nie porównujemy wersji, w przeciwnym wypadku wartość występującą w adresie URL
*/
/* Skrypt odpowiedzialny za wyświetlanie szablonu Nagłówek [[Szablon:Nagłówek]]*/
jQuery(function(){
     var strona=document.getElementById('strona');
     if(strona!=null){
         var footer = document.getElementById('mojaStopka1');
	     if (footer != null) {
		    strona.appendChild(footer);
         }
    }else{
       var strona2=document.getElementById('bodyContent');
       if(strona2!=null){
             var footer = document.getElementById('mojaStopka1');
	         if (footer != null) {
		        strona2.appendChild(footer);
             }	
       }
    }  
});
/* Koniec skryptu odpowiedzialnego za wyświetlanie szablonu Nagłówek [[Szablon:Nagłówek]]*/


function PageInfoInit()
{
   var _g = /_/g;
   this.name = mw.config.get('wgPageName').replace(/_/g, ' ')
   this.namespace = mw.config.get('wgNamespaceNumber');

   var i = this.name.search(/\/[^\/]*$/g);
   this.title = this.name.slice(i + 1);

   this.book = this.name.replace(/\/.*/g, "");

   if ( document.URL.search("//pl.wikibooks.org/w/index.php") != -1 ) {
      re = /\&diff=/g;
      this.diff = re.test(document.URL);
      re = /\&action=[^\&]*/g;
      this.action = document.URL.match(re);
      if ( this.action == null ) {
         this.action = 'get';
         } else {
            this.action = this.action[0].slice(8, this.action[0].length);
         }
   } else {
      this.diff = null;
      this.action = 'get';
   }
}

var pageInfo = new PageInfoInit();

if ( mw.config.get('wgPageName') == "Wikibooks:Dodatki" ) {
  // dodawanie mikropodsumowania
  // użycie: w [[Wikibooks:Dodatki]]
  // kod: <span class="microsummary"><span>http://blebleble</span><span>tekst</span></span>
  var WARNING = "Potrzebujesz przeglądarki obsługującej mikropodsumowania.";
  function addGenerator(url) {
    if (typeof window.sidebar == "object" &&
        typeof window.sidebar.addMicrosummaryGenerator == "function")
      window.sidebar.addMicrosummaryGenerator(url);
    else
      alert(WARNING);
  }
  $(function() {
   var elements = document.getElementsByTagName("span");
   for ( var i=0; i<elements.length; ++i ) {
      var el = elements[i];
      if ( el.getAttribute("class") == "microsummary" ) {
         var url = el.firstChild.firstChild.data.replace(/\"/g, "\\\""); // ->span1->text
         var anchor = document.createElement("a");
         anchor.href = 'javascript:addGenerator("' + url + '")';
         anchor.appendChild(document.createTextNode(el.lastChild.firstChild.data)); // ->span2->text
         while ( el.firstChild ) el.removeChild(el.firstChild);
         el.appendChild(anchor);
      }
   }
  });
}

/** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[en:Wikipedia:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */

var autoCollapse = 2;
var collapseCaption = "ukryj";
var expandCaption = "pokaż";

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 );
        } 
        else if ( $(NavigationBoxes[i]).hasClass( "innercollapse" ) ) {
            var element = NavigationBoxes[i];
            while (element = element.parentNode) {
                if ( $(element).hasClass( "outercollapse" ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}

$( createCollapseButtons );


/** Dynamic Navigation Bars (experimental) *************************************
 *
 *  Description: See [[Wikipedia: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( 'NavPic' ) ) {
                NavChild.style.display = 'none';
            }
            if ( $(NavChild).hasClass( 'NavContent') ) {
                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( 'NavPic')) {
                NavChild.style.display = 'block';
            }
            if ($(NavChild).hasClass( 'NavContent')) {
                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")) {
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}

$( createNavigationBarToggleButton );

// Wyszukiwanie Google

var googleSearchInitialized = false;
function insertGoogleSearch() {
	if ( mw.config.get('wgNamespaceNumber') != 0 || googleSearchInitialized ) {
		return;
	}
	googleSearchInitialized = true;

	var google = "http://www.google.com/custom?sa=Google+Search&domains=pl.wikibooks.org/wiki/PAGE&sitesearch=pl.wikibooks.org/wiki/PAGE";
	var ul = jQuery('#p-tb ul')[0];

	if (!ul) {
		return;
	}

	var link = document.createElement('a');

	var book = pageInfo.book;
	if ( book.length == 1 || book.indexOf('++') != -1 || encodeURIComponent(book) != book ) {
		google = "http://www.google.com/custom?sa=Google+Search&domains=pl.wikibooks.org/wiki/&sitesearch=pl.wikibooks.org/wiki/&q=%22PAGE%22"
	}

	link.href = google.replace(/PAGE/g, encodeURIComponent(book));
	link.appendChild(document.createTextNode("Szukaj w podręczniku"));

	var li = document.createElement('li');
	li.id = "google-trick-search";

	li.appendChild(link);

	ul.insertBefore(li, ul.firstChild);
}

$(insertGoogleSearch);