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.
 /** JavaScript for the user toolbar
  * Author:  Niklas Laxström [[w:fi:user:Nikerabbit]]
  * License: Public domain
  * Version: 1 (Firefox fix)
  * Version: 2 Should work on most of the browsers
  * Version: 3 Area is hidden until activated with js
  * Version: 4 add missing check
  * Version: 5 some weird bugs
  */
 
 /* Globals */
 
 var btb_area = 'fiwikinews-bottom-toolbar';
 var btb_sc = 'fiwikinews-bottom-toolbar-sc';
 var btb_f = 'fiwikinews-bottom-toolbar-f';
 var btb_i_sc = 'fiwikinews-special-character';
 var btb_i_f = 'fiwikinews-feature';
 
 var nav_ua = navigator.userAgent.toLowerCase(); // Get client info
 var is_ie = ( $.client.profile().name == 'msie' );

 function initializebuttons() {
   $(document).ready(buttons);
 }
 
 /* Call our initializer */
$(document).ready(main_buttons);
 
 /** Painikkeita voidaan määritellä seuraavasti näkyväksi vain tietyillä sivuilla:
  * 
  *  Vain keskustelusivulla näkyvät painikkeet:
  *  if (tNamespaceNumber == 3) {
  *    // Painikekoodit
  *  }
  *
  *  Vain artikkeleissa näkyvät painikkeet:
  *  if (tNamespaceNumber === 0) {
  *    // Painikekoodit
  *  }
  *
  *  Käyttäjäryhmäkohtaiset painikkeet:
  *  if (wgUG.indexOf('user') != -1) {
  *    // Rekisteröityneiden käyttäjien painikkeet
  *  }
  *  if (wgUG.indexOf('sysop') != -1) {
  *    // Ylläpitäjien painikkeet
  *  }
  *  if (wgUG.indexOf('bureaucrat') != -1) {
  *    // Byrokraattien painikkeet
  *  }
  *  Ja niin edelleen. Mahdollisia hakuarvoja ovat:
  *  *              Kaikki käyttäjät
  *  user           Rekisteröityneet käyttäjät
  *  emailconfirmed Sähköpostin varmentaneet käyttäjät
  *  autoconfirmed  Käyttäjät joiden muutokset merkitään automaattisesti tarkastetuksi
  *  checkuser      Osoitepaljastinoikeudella varustetut käyttäjät
  *  sysop          Ylläpitäjät
  *  bureaucrat     Byrokraatit
  */
 function main_buttons() {
   var tNamespaceNumber = mw.config.get('wgNamespaceNumber');
   area = document.getElementById(btb_area);
   /* Don't waste time trying now */
   if (!area) return;
 
   addSpecialCharacter('”', 'Kaareva lainausmerkki');
   addSpecialCharacter('’', 'Kaareva puolilainausmerkki');
   addSpecialCharacter('–', 'Ajatusviiva');
   addSpecialCharacter('·', 'Kertomerkki');
   addSpecialCharacter('°', 'Astemerkki');
   addSpecialCharacter('š', 'Pieni hattu-s');
   addSpecialCharacter('Š', 'Iso hattu-s');
   addSpecialCharacter('ž', 'Pieni hattu-z');
   addSpecialCharacter('Ž', 'Iso hattu-z');
   addSpecialCharacter('ß', 'Saksalainen kaksois-s');
   /* addSpecialCharacter('¹', 'Yläindeksi 1');*/
   addSpecialCharacter('²', 'Yläindeksi 2');
   addSpecialCharacter('³', 'Yläindeksi 3');
   addSpecialCharacter(' ', 'Sitova välilyönti');
 
   /* addSpecialCharacter('←', 'Nuoli vasemmalle');
   addSpecialCharacter('→', 'Nuoli oikealle');*/

   var wgUG = mw.config.get('wgUserGroups', []).toString();
 
   // Alarivin mallinepainikkeet, vain rekisteröityneille
   if (wgUG.indexOf('user') != -1) {

     // Uutispainikkeet
     if (tNamespaceNumber === 0) {
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{julkaistu}}\\r\\n\';document.editform.wpSummary.value=\''+
                        'Merkitty julkaistuksi\';document.editform.wpWatchthis.checked=false;', 'julkaise', 
                        'Julkaise uutinen', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{oma}}\\r\\n\';document.editform.wpSummary.value=\''+
                        'Merkitty omaksi raportoinniksi\';document.editform.wpWatchthis.checked=false;', 'oma', 
                        'Merkitse omaksi raportoinniksi', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{tarkasta}}\\r\\n\';document.editform.wpSummary.value=\''+
                        'Tarkastettava\';document.editform.wpWatchthis.checked=false;', 'tarkasta', 
                        'Merkitse tarkastettavaksi', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{kehityksessä}}\\r\\n\';document.editform.wpSummary.value=\''+
                        'Uutinen kehityksessä\';document.editform.wpWatchthis.checked=false;', 'kehityksessä', 
                        'Merkitse kehitettäväksi', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{lähde}}\\r\\n\';document.editform.wpSummary.value=\''+
                        'Lähdepyyntö\';document.editform.wpWatchthis.checked=false;', 'lähde?', 
                        'Lähdepyyntö', 'fiwikinews-feature');
	   //Verkkoviite ref-tagien sisällä
       addFeatureButton('<ref>{'+'{Verkkoviite | Osoite = ', 
    					'| Nimeke = | Tekijä = | Tiedostomuoto = | Selite = | ' +
                        'Julkaisu = | Ajankohta = | Julkaisupaikka = | Julkaisija = | ' +
                        'Viitattu = | Kieli = }'+'}</ref>', '', 'Verkkoviite ref-tagein', 'Verkkoviite ref-tagein');
	   //Lehtiviite ref-tagien sisällä
       addFeatureButton('<ref>{'+'{Lehtiviite | Tekijä = ', 
    					'| Otsikko = | Julkaisu = | Ajankohta = | Vuosikerta = | Numero = | ' +
                        'Sivut = | Julkaisupaikka = | Julkaisija = | Selite = | Tunniste = | ' +
                        'www = | www-teksti = | Tiedostomuoto = | Viitattu = | ' + 
                        'Kieli = | Lopetusmerkki = }'+'}</ref>', '', 'Lehtiviite ref-tagein', 'Lehtiviite ref-tagein');
	   //Verkkoviite
       addFeatureButton('{'+'{Verkkoviite | Osoite = ', 
    					'| Nimeke = | Tekijä = | Tiedostomuoto = | Selite = | ' +
                        'Julkaisu = | Ajankohta = | Julkaisupaikka = | Julkaisija = | ' +
                        'Viitattu = | Kieli = }'+'}', '', 'Verkkoviite', 'Verkkoviite');
	   //Lehtiviite
       addFeatureButton('{'+'{Lehtiviite | Tekijä = ', 
    					'| Otsikko = | Julkaisu = | Ajankohta = | Vuosikerta = | Numero = | ' +
                        'Sivut = | Julkaisupaikka = | Julkaisija = | Selite = | Tunniste = | ' +
                        'www = | www-teksti = | Tiedostomuoto = | Viitattu = | ' + 
                        'Kieli = | Lopetusmerkki = }'+'}', '', 'Lehtiviite', 'Lehtiviite');
     }

     // Vain käyttäjän keskustelusivulla näkyvät huomautuspainikkeet
     if (tNamespaceNumber == 3) {
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'V1}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Ensimmäinen huomautus\';document.editform.wpWatchthis.checked=false;', 'V', 
                        'Ensimmäinen huomautus', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'V2}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Varoitus häiriköinnistä\';document.editform.wpWatchthis.checked=false;', 'V2', 
                        'Varoitus häiriköinnistä', 'fiwikinews-feature');
       /*addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'Hyvä yritys}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Hyvä yritys, ensi kerralla paremmin\';document.editform.wpWatchthis.checked=false;', 'T3', 
                        'Hyvä yritys, ensi kerralla paremmin', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'Liian epämerkittävä}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Artikkelisi ei ollut merkittävä\';document.editform.wpWatchthis.checked=false;', 'T4', 
                        'Artikkelisi ei ollut merkittävä', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'Rikoit tekijänoikeuksia}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Rikoit tekijänoikeuksia\';document.editform.wpWatchthis.checked=false;', 'T5', 
                        'Rikoit tekijänoikeuksia', 'fiwikinews-feature');*/
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'V3}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\''+
                        'Varoitus vakavasta häiriköinnistä\';document.editform.wpWatchthis.checked=false;', 'V7', 
                        'Varoitus vakavasta häiriköinnistä', 'fiwikinews-feature');
       addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'Hh}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\'[[Wikiuutiset:Ei henkilökohtaisia '+
                        'hyökkäyksiä]]\';document.editform.wpWatchthis.checked=false;', 'HH', 
                        'Varoitus henkilökohtaisesta hyökkäyksestä', 'fiwikinews-feature');
 
       /*addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                        '{subst:\'+\'mini}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value=\'Huomautus '+
                        'minityngistä\';document.editform.wpWatchthis.checked=false;', 'MT', 
                        'Huomautus minityngistä', 'fiwikinews-feature');*/
 
       //Estopainikkeet, vain ylläpitäjille
       if (wgUG.indexOf('sysop') != -1) {
         addSpecialButton('document.editform.wpTextbox1.value=\'{'+
                          '{Avoinproxy\'+\'}}\\r\\n\' + document.editform.wpTextbox1.value;document.editform.wpSummary.value='+
                          '\'Estetty ikuisesti avoimena proxyna\';document.editform.wpWatchthis.checked=false;', 
                          'Avoin proxy', 'Avoin proxy', 'fiwikinews-feature'); 
         addSpecialButton('document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+\'\\r\\n{'+
                          '{subst:\'+\'Esto|Eston pituus}} –~~\'+\'~~\\r\\n\';document.editform.wpSummary.value='+
                          '\'Sinut on estetty toistuvan häiriköinnin takia\';document.editform.wpWatchthis.checked=false;', 
                          'Esto', 'Esto', 'fiwikinews-feature');
       }
 
     }
 
     addSpecialButton('document.editform.wpTextbox1.value=\'{'+
                      '{\'+\'pikapoisto\'+\'}}\'+document.editform.wpTextbox1.value;document.editform.wpSummary.value='+
                      '\'Merkitty poistettavaksi välittömästi\\n\';document.editform.wpWatchthis.checked=false;', 'P', 
                      'Merkitty poistettavaksi välittömästi', 'fiwikinews-feature');
   }
/* <pre> */
 
   if (document.getElementById && document.createElement) {}
 
   if ((document.title.indexOf("Keskustelu")!=-1) && document.getElementById && document.createElement) {
     document.getElementById("editpage-copywarn").innerHTML += "<br>Tämä on keskustelusivu. Muista allekirjoittaa "+
                             "kaikki kommenttisi kirjoittamalla ~~" + "~~ kommenttisi loppuun.";
   }
 
 }
/* </pre> */
 
 function addSpecialCharacter(f1, ftitle) {
   k = document.getElementById(btb_sc);
   if ( k ) {
     if ( !is_ie ) {
       mySpan = document.createElement('span');
       myText = document.createTextNode(f1);
       mySpan.appendChild(myText);
 
       myOnClick = document.createAttribute('onclick');

		//Vuonna 2018 MediaWikistä poistui mediawiki.toolbar. Käytetään sen 
		//sijaan pienoisohjelman Gadget-mediawiki.toolbar.js mediawiki.toolbar
		//-toteutusta. Ks. Phabricator-task T30856 ja Mediawiki.orgin sivu 
		//Contributors/Projects/Removal_of_the_2006_wikitext_editor 
		myOnClick.nodeValue = 
			"$.when( mw.loader.using( 'ext.gadget.mediawiki.toolbar' ), " +
			"$.ready ).then( function () { " +
			"mw.toolbar.insertTags('" + f1 + "', '', ''); "+
			"} );";

	   //Käytöstä poistettu rivi. 
       //myOnClick.nodeValue = "insertTags('" + f1 + "', '', '')";

       mySpan.setAttributeNode(myOnClick);
 
       myClass = document.createAttribute('class');
       myClass.nodeValue = btb_i_sc;
       mySpan.setAttributeNode(myClass);
 
       myTitle = document.createAttribute('title');
       myTitle.nodeValue = ftitle;
       mySpan.setAttributeNode(myTitle);
 
       // Some spacing
       k.appendChild(document.createTextNode(' '));
       k.appendChild(mySpan);
 
     } else {
       // The nonstandard way
       k.innerHTML += " <span onClick=\"javascript:insertTags('" + f1 + "','','');\" class=\"" + 
                      btb_i_sc + "\" title=\"" + ftitle + "\" >" + f1 + "</span>";
     }
   }
 }
 
 function addSpecialCharacter() {
 }
 
 function addFeatureButton(f1, f2, f3, ftext, ftitle) {
   k = document.getElementById(btb_f);
   if ( k ) {
     if ( !is_ie ) {
       mySpan = document.createElement('span');
       myText = document.createTextNode(ftext);
       mySpan.appendChild(myText);
 
       myOnClick = document.createAttribute('onclick');

	   //Käytetään pienoisohjelman kautta tulevaa 
	   //mediawiki.toolbar-toteutusta. 
       myOnClick.nodeValue =
			"$.when( mw.loader.using( 'ext.gadget.mediawiki.toolbar' ), " +
			"$.ready ).then( function () { " +
			"mw.toolbar.insertTags('" + f1 + "','" + f2 + "','" + f3 + "'); "+
			"} );";

		//Käytöstä poistettu rivi. 
    	//myOnClick.nodeValue = "insertTags('" + f1 + "','" + f2 + "','" + f3 + "')";

       mySpan.setAttributeNode(myOnClick);
 
       mySpan.title = ftitle;
 
       myClass = document.createAttribute('class');
       myClass.nodeValue = btb_i_f;
       mySpan.setAttributeNode(myClass);
 
       // Some spacing
       k.appendChild(document.createTextNode(' '));
       k.appendChild(mySpan);
 
     } else {
       // The nonstandard way
       k.innerHTML += " <span onClick=\"javascript:insertTags('" + f1 + "','" + f2 + "','" + f3 + "');\" class=\"" + btb_i_f + "\" title=\"" + ftitle + "\" >" + ftext + "</span>"; 
     }
   }
 }
 
 function addSpecialButton(faction, ftext, ftitle, fclass) {
   k = document.getElementById(btb_f);
   if ( k ) {
     if ( !is_ie ) {
       mySpan = document.createElement('span');
       myText = document.createTextNode(ftext);
       mySpan.appendChild(myText);
 
       myOnClick = document.createAttribute('onclick');
       myOnClick.nodeValue = faction;
       mySpan.setAttributeNode(myOnClick);
 
       mySpan.title = ftitle;
 
       myClass = document.createAttribute('class');
       myClass.nodeValue = fclass;
       mySpan.setAttributeNode(myClass);
 
       // Some spacing
       k.appendChild(document.createTextNode(' '));
       k.appendChild(mySpan);
 
     } else {
       // The nonstandard way
       k.innerHTML += " <span onClick=\"" + faction + ";\" class=\"" + fclass + "\" title=\"" + 
                      ftitle + "\" >" + ftext + "</span>"; 
     }
   }
 }
 
 /* END */

 // ============================================================
 // BEGIN Dynamic Navigation Bars
 
 // set up the words in your language
 var NavigationBarHide = 'Piilota';
 var NavigationBarShow = 'Näytä';
 
 // set up max count of Navigation Bars on page,
 // if there are more, all will be hidden
 // NavigationBarShowDefault = 0; // all bars will be hidden
 // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
 var NavigationBarShowDefault = 0;
 
 
 // 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.className == 'NavPic') {
       NavChild.style.display = 'none';
     }
     if (NavChild.className == 'NavContent') {
       NavChild.style.display = 'none';
     }
     if (NavChild.className == 'NavToggle') {
       NavChild.firstChild.data = NavigationBarShow;
     }
   }
 
   // if hidden now
   } else if (NavToggle.firstChild.data == NavigationBarShow) {
     for (
       var NavChild = NavFrame.firstChild;
       NavChild != null;
       NavChild = NavChild.nextSibling
     ) {
       if (NavChild.className == 'NavPic') {
         NavChild.style.display = 'block';
       }
       if (NavChild.className == 'NavContent') {
         NavChild.style.display = 'block';
       }
       if (NavChild.className == 'NavToggle') {
         NavChild.firstChild.data = NavigationBarHide;
       }
     }
   }
 }
 
 // adds show/hide-button to navigation bars
 function createNavigationBarToggleButton()
 {
   var indexNavigationBar = 0;
   // iterate over all < div >-elements
   for(
     var i=0; 
     NavFrame = document.getElementsByTagName("div")[i]; 
     i++
   ) {
     // if found a navigation bar
     if (NavFrame.className == "NavFrame") {
 
       indexNavigationBar++;
       var NavToggle = document.createElement("a");
       NavToggle.className = 'NavToggle';
       NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
       NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
       var NavToggleText = document.createTextNode(NavigationBarHide);
       NavToggle.appendChild(NavToggleText);
 
       // add NavToggle-Button as first div-element 
       // in < div class="NavFrame" >
       NavFrame.insertBefore(
         NavToggle,
         NavFrame.firstChild
       );
       NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
     }
   }
   // if more Navigation Bars found than Default: hide all
   if (NavigationBarShowDefault < indexNavigationBar) {
     for(
       var i=1; 
       i<=indexNavigationBar; 
       i++
     ) {
       toggleNavigationBar(i);
     }
   }
 
 }
 
$(document).ready(createNavigationBarToggleButton);
 
 // END Dynamic Navigation Bars
 // ============================================================

 
 /**
 * Funktio välilehtien lisäämiseksi, alkuperäinen koodi
 * [[commons:MediaWiki:Extra-tabs.js]] lisättynä api-kutsulla
 * joka tarkastaa oletuksena sivun olemassaolon api.php kautta
 *
 * Käyttöesimerkki:
 * function myTabs() {
 *   // Omat muokkaukset, ei varsinainen sivu joten ohitetaan apikutsu
 *   global_append_tab('Toiminnot:Muokkaukset/' + mw.config.get('wgUserName'), 'Omat muokkaukset', 'ca-contribs',
false);
 *   // Välilehti omaan monobook.js-tiedostoon
 *   global_append_tab('Käyttäjä:' + mw.config.get('wgUserName') + '/monobook.js', 'monobook.js', 'ca-monobookjs');
 * }
 *
 * $( myTabs );
 */
function global_append_tab(url, name, id, apicheck) {
 
  if (apicheck != false) { apicheck = true; }
 
  var path = '/wiki/';
  if (url.substring(0, 9) == 'index.php') {
    path = '/w/';
  }
 
  var na = document.createElement('a');
  na.setAttribute('href', path + url);
 
  var xmlhttp = sajax_init_object();
 
  var txt = document.createTextNode(name);
  na.appendChild(txt);
 
  var li = document.createElement('li');
  if(id) li.id = id;
 
  if (apicheck == true) {
    try {
      xmlhttp.overrideMimeType('text/xml');
    } catch (e) { /* Sorry no bonus */ }
    xmlhttp.open( 'GET' , mw.config.get('wgServer') + wgScriptPath +
'/api.php?format=xml&action=query&prop=info&titles=' + encodeURIComponent(url), true );
    xmlhttp.onload = function () {
      var missing =
this.responseXML.documentElement.getElementsByTagName('page')[0].getAttribute('missing');
      if (missing == "") {
        li.setAttribute('class', 'new');
      }
    }
    xmlhttp.send(null);
  }
 
  li.appendChild(na);
 
  // Grab the element we want to append the tab and append the tab to it.
  var c1 = document.getElementById('column-one');
  var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
  tabs.appendChild(li);
}