Järjestelmäviesti:Common.js

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Paina Ctrl-F5.
 /* '''Suomenkielisen Wikikirjaston JavaScript'''
  * Tämän sivun koodi liitetään jokaiseen sivulataukseen 
  *
  * Tämä sivu on suojattu [[Wikipedia:Ylläpitäjät|vain ylläpitäjien]] muokattavaksi. Mikäli haluat
  * muutoksia JavaScript-koodiin, voit tehdä oman [[Toiminnot:Mypage/monobook.js|monobook.js]]-tiedoston tai
  * esittää pyynnön jollekin tämän koodin ylläpitäjistä.
  *
  * Ylläpitäjät:
  * [[Käyttäjä:Usp|Usp]] ([[Keskustelu käyttäjästä:Usp|keskustelu]])
  */

 /* ============================================================
  * BEGIN Muokkaa-linkki otsikon viereen
  * Muokkaa-linkki karkaa kohdaltaan, jos otsikon vieressä on taulukko tai kuva.
  * Tämä korjaa ongelman.
  * Lähde:http://fi.wikipedia.org/wiki/Järjestelmäviesti:Gadget-muokkaa-linkki.js
 */
function setModifySectionStyle() {
  try {
    if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
    var spans = document.getElementsByTagName("span");
    for (var s = 0; s < spans.length; ++s) {
      var span = spans[s];
      if (span.className == "editsection") {
        span.style.fontSize = "xx-small";
        span.style.fontWeight = "normal";
        span.style.cssFloat = span.style.styleFloat = "none";
        span.parentNode.appendChild(document.createTextNode(" "));
        span.parentNode.appendChild(span);
      }
    }
  } catch (e) { /* something went wrong */ }
}
 
$(setModifySectionStyle);

 /* END Muokkaa-linkki otsikon viereen
  * ============================================================
 */

 /* BEGIN Muokkaa-linkki johdantoon
  * ============================================================
 */

$(function ()
{
  // if this is preview page or generated page, stop
  if(document.getElementById("wikiPreview") || window.location.href.indexOf("/wiki/Special:") != -1) return;
 
  // get the page title
  var pageTitle = document.title.split(" – ")[0].replace(" ", "_"); 
 
  // create div and set innerHTML to link
  var divContainer = document.createElement("div");
  divContainer.innerHTML = '<div class="editsection" style="float:right;margin-left:5px;margin-right:15px;margin-top:3px;">[<a href="/w/index.php?title='+mw.config.get('wgPageName')+'&amp;action=edit&amp;section=0" title="'+mw.config.get('wgPageName')+'">muokkaa</a>]</div>';
 
  // insert divContainer into the DOM before the h1
  if(window.location.href.indexOf("&action=edit") == -1)
    document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);
 
  if(window.location.href.indexOf("&action=edit&section=0") != -1)
    document.getElementById("wpSummary").value = "/* Intro */ ";
});

/* Test if an element has a certain class **************************************
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 */
 var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
})();
 
 /* END Muokkaa-linkki johdantoon
  * ============================================================
 */

 /* BEGIN navbox
  * ============================================================
 */
 // Faster Dynamic Navigation
 
 // set up the words in your language
 var NavigationBarHide = '▲';
 var NavigationBarShow = '▼';
 
 var NavigationTitleHide = 'hide contents';
 var NavigationTitleShow = 'show contents';
 
 function collapseTable(e)
 {
   e = e || window.event;
   var target = e.target || e.srcElement;
   var table, NavToggle = target;
   
   if ( !hasClass(NavToggle, 'navigation') ) {
     while (NavToggle && NavToggle.nodeName != "TH")
       NavToggle = NavToggle.parentNode;
     if (NavToggle && NavToggle.lastChild && hasClass(NavToggle.lastChild, 'navigation'))
       NavToggle = NavToggle.lastChild;
     else
       return;
   }
   
   table = NavToggle.parentNode;
   while (table && !hasClass(table, 'collapsible'))
       table = table.parentNode;
   if (!table)
     return;
   
   var rows = table.getElementsByTagName( "tr" ); 
   
   if (NavToggle.firstChild.data == NavigationBarHide) {
     for ( var i = 1; i < rows.length; i++ ) {
       rows[i].style.display = "none";
     }
     NavToggle.firstChild.data = NavigationBarShow;
     NavToggle.parentNode.setAttribute('title', NavigationTitleShow);
   } else if (NavToggle.firstChild.data == NavigationBarShow) {
     for ( var i = 1; i < rows.length; i++ ) {
       rows[i].style.display = rows[0].style.display;
     }
     NavToggle.firstChild.data = NavigationBarHide;
     NavToggle.parentNode.setAttribute('title', NavigationTitleHide);
   }
 }
 
 function createCollapseButtons()
 {
   var tables = document.getElementsByTagName( "table" ), NavToggle, NavToggleText, NavHead;
   
   for ( var i = 0; i < tables.length; i++ ) {
     if ( !hasClass( tables[i], "collapsible" ) )
       continue;
     
     NavHead = tables[i].getElementsByTagName("th");
     /* only add button if there is a header row to work with */
     if (NavHead) {
       NavToggle = document.createElement( "a" );
       NavToggleText = document.createTextNode(hasClass(tables[i], "selected") ? NavigationBarShow : NavigationBarHide);
       NavToggle.setAttribute("class", "navigation");
       NavToggle.appendChild( NavToggleText );
       
       NavHead[0].appendChild(NavToggle);
       NavHead[0].onclick = collapseTable;
       
       // only bother to emulate click if if toggle button was added
       if (document.createEvent) { // DOM 2 and DOM 3 compliant browsers
         var e = document.createEvent("MouseEvents");
         e.initMouseEvent("click", true,true, window, 0,0,0,0,0, false,false,false,false, 0, null);
         NavHead[0].dispatchEvent(e);
       } else if (NavHead[0].fireEvent) { // IE
         NavHead[0].fireEvent("onclick");
       }
     }
   }
 }
 
 // shows and hides content and picture (if available) of navigation bars
 function toggleNavigationBar(e)
 {
   e = e || window.event;
   var target = e.target || e.srcElement;
   var NavFrame, NavToggle = target;
   
   if ( !hasClass(NavToggle, 'navigation') ) {
     while (NavToggle && !hasClass(NavToggle, 'NavHead') && !hasClass(NavToggle, 'title'))
       NavToggle = NavToggle.parentNode;
     if (NavToggle && NavToggle.lastChild && hasClass(NavToggle.lastChild, 'navigation'))
       NavToggle = NavToggle.lastChild;
     else
       return;
   }
   
   NavFrame = NavToggle.parentNode;
   while (NavFrame && !hasClass(NavFrame, 'NavFrame') && !hasClass(NavFrame, 'collapsible'))
       NavFrame = NavFrame.parentNode;
   if (!NavFrame)
     return;
   
   if (NavToggle.firstChild.data == NavigationBarHide) {
     for (var NavChild=NavFrame.firstChild; NavChild != null; NavChild=NavChild.nextSibling) {
       if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic'))
         NavChild.style.display = 'none';
     }
     NavToggle.firstChild.data = NavigationBarShow;
     NavToggle.parentNode.setAttribute('title', NavigationTitleShow);
   } else if (NavToggle.firstChild.data == NavigationBarShow) {
     for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
       if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic'))
         NavChild.style.display = 'block';
     }
     NavToggle.firstChild.data = NavigationBarHide;
     NavToggle.parentNode.setAttribute('title', NavigationTitleHide);
   }
 }
 
 // adds show/hide-button to navigation bars
 function createNavigationBarToggleButton()
 {
   // iterate over all div elements
   var NavFrame=document.getElementsByTagName("div");
   
   for (var i=0; i < NavFrame.length; i++)
   {
     if ( !hasClass(NavFrame[i], "NavFrame") && !hasClass(NavFrame[i], "collapsible") )
       continue;
     
     var NavToggle = document.createElement("a");
     var NavToggleText = document.createTextNode(hasClass(NavFrame[i], "selected") ? NavigationBarShow : NavigationBarHide);
     
     NavToggle.className = 'navigation';
     NavToggle.appendChild(NavToggleText);
     
     // add NavToggle-Button as element inside of NavHead
     for (var j=0; j < NavFrame[i].childNodes.length; j++) {
       var NavHead = NavFrame[i].childNodes[j];
       
       if (!hasClass(NavHead, "NavHead") && !hasClass(NavHead, "title"))
         continue;
       NavHead.appendChild(NavToggle);
       NavHead.onclick = toggleNavigationBar;
       
       // only bother to emulate click if if toggle button was added
       if (document.createEvent) { // DOM 2 and DOM 3 compliant browsers
         var e = document.createEvent("MouseEvents");
         e.initMouseEvent("click", true,true, window, 0,0,0,0,0, false,false,false,false, 0, null);
         NavHead.dispatchEvent(e);
       } else if (NavHead.fireEvent) { // IE
         NavHead.fireEvent("onclick");
       }
       break;
     }
   }
 }

 $( createCollapseButtons );
 $( createNavigationBarToggleButton );
 /* END navbox
  * ============================================================
 */

/*
mw-collapsible-custom  tekee sivun alussa olevasta navigaatiovalikosta
avattavan ja suljettavan siten, että se on mobiililaitteissa 
vakiona kiinni.

Järjestelmä muistaa cookiella lyhyen aikaa sen, että oliko 
valikko kiinni vai auki.

3.2.2018 Kimmo Virtanen / Zache

*/
$(function() {
	
	// Näyttää valikon ja tallentaa tilan keksiin
	function showtable(table)
	{
		table.find(".buttonindicator").html("[<a class='mw-collapsible-text'>Piilota</a>]");
		table.removeClass("mw-collapsed");
		table.removeClass("mw-collapsible-minervahide");
		table.find("tbody").show();
		mw.cookie.set("showfiwikibooksnavi", 1, { path: '/', secure: false });
	}
	
	// Piilottaa valikon ja tallentaa tilan keksiin
	function hidetable(table)
	{
		table.find(".buttonindicator").html("[<a class='mw-collapsible-text'>Näytä</a>]");
		table.addClass("mw-collapsed");
		table.find("tbody").hide();
		mw.cookie.set("showfiwikibooksnavi", 2, { path: '/', secure: false });
	}
	
	// Lisätään näytä / piilota -valikko.
	var e=$(".mw-collapsible-custom");
	if (e.length>0)
	{
		var buttonindicator=$("<div>[<a class='mw-collapsible-text'>Piilota</a>]</div>");
		buttonindicator.addClass("buttonindicator");
		
		// Päivitetään tekstit sen perusteella, että onko valikko piilotettu CSS-säännöllä.
		if (e.find("tbody").is(':visible')===false)
		{
			e.addClass("mw-collapsed");
			buttonindicator.html("[<a class='mw-collapsible-text'>Näytä</a>]");
		}		

		var clickhandler=function() {
			var table=$(this).closest("table");
			if (table.hasClass("mw-collapsible-custom")) {
				if (table.hasClass("mw-collapsed"))
				{
					showtable(table);
				}
				else
				{
					hidetable(table);
				}
			}
		};
		
		var caption=e.find("caption").first();
		caption.prepend(buttonindicator);
		caption.click(clickhandler);	
		caption.addClass("collapsible-heading");

		// Muistetaan valikon edellinen tila
		mw.loader.using([
			'mediawiki.cookie'
		]).then( function () {
			if (mw.cookie.get("showfiwikibooksnavi")==1)
			{
				showtable(e);
			}
			else if (mw.cookie.get("showfiwikibooksnavi")==2)
			{
				hidetable(e);
			}
		});
	}
});

mw.loader.using( ['mediawiki.util','mediawiki.page.ready'], function() { 
	mw.hook('wikipage.content').add(function($where) {
		var $content = mw.util.$content, $what = $where.find('.topicon').css('display', 'inline');
		
		if ( $what.length ) {
			$content.find(':header').eq(0).wrapInner('<span />').append( $('<span id="page-status" />').append($what) );
		}
		
		$what = $where.find('#top-navigation').remove().slice(0,1).addClass('subpages');
		if ( $what.length ) { $content.find('.subpages').eq(0).replaceWith($what); }
		
		$what = $where.find('#bottom-navigation').remove().slice(0,1);
		if ( $what.length ) { $where.append($what); }
	});
});