MediaWiki:Common.js

z Kitakija

(rozdźěl mjez wersijomaj)
Dźi do: Nawigacija, Pytać
S
S (18 wersijow: Systemowe zdźělenki)

Wersija z 12:35, 10. dec 2009

/* <source lang="javascript">
Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. 
 
Execute function on page load *********************************************
  *
  *  Description: Wrapper around addOnloadHook() for backwards compatibility.
  *               Will be removed in the near future.
  */
/* z ruskeje wikipedije */
/* Чтоб была возможность изменить поведение кнопки "+" (добавление новой темы) для страниц обсуждения */ 
addOnloadHook(function(){
  var plus = document.getElementById('ca-addsection');
  if (!plus) return;
  var custom = document.getElementById('add-custom-section');
  if (!custom) return;
  plus.firstChild.setAttribute('href', custom.getElementsByTagName('A')[0].href);
})
 
//po ruskej wikipediji
//according to russian wikipedia
 
//import module
importedScripts = {} 
function importScript2(page, lang) {
page = '?title=' + encodeURIComponent(page.replace(' ','_'))
if (lang) page = 'http://' + lang + '.wikipedia.org/w/index.php' + page
else page = wgScript + page
if (importedScripts[page]) return
importedScripts[page] = true
var s = document.createElement('script')
s.type = 'text/javascript'
s.src = page + '&action=raw&ctype=text/javascript'
document.getElementsByTagName('head')[0].appendChild(s)
}
// end import module
 
// ============================================================
// BEGIN hasclass
//hasClass, from en.wp and ru.wp
var hasClass = (function (){
var reCache = {}
return function (element, className){
   return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className)
  }
})()
 
 
function addLoadEvent(f) {addOnloadHook(f)} //for backwards compatibility
// END hasclass
// ============================================================
 
// ============================================================
// BEGIN Configuration for "star" logo in front of interwiki links to Featured Articles
 
/** set to false in Special:Mypage/monobook.js to switch off this "feature" */
var linkFA_enabled  = true;
 
/** description that is displayed when cursor hovers above FA and GA interwiki links */
var linkFA_description = "Tutón nastawk bu jako ekscelentny pohódnoćeny.";
var linkGA_description = "Tutón nastawk bu jako čitanja hódny pohódnoćeny.";
/** 
* star logo for featured articles in other languages,
* see Template:Link_FA and MediaWiki:Common.css
*/
function linkFA() {
     // early exit when disabled
     if (!linkFA_enabled) return;
 
     // skins need to be treated differently
     if (skin == "monobook" || skin == "simple") {
         newer();
     } 
     else if (skin == "cologneblue" || skin == "nostalgia" || skin == "standard") {
         older();
     } 
 
     /** skin == "monobook" || skin == "simple" */
     function newer() {
         // links are to replaced in p-lang only
         var pLang = document.getElementById("p-lang");
         if (!pLang) return;
         var lis = pLang.getElementsByTagName("li");
         for (var i = 0; i < lis.length; i++) {
             var li = lis[i];
             // only links with a corresponding Link_FA template are interesting
             if (document.getElementById(li.className + "-fa")) {
             // additional class so the template can be hidden with CSS
             li.className += " FA";
             // change title
             li.title = linkFA_description;
             }else if (document.getElementById(li.className + "-ga")) {
             // additional class so the template can be hidden with CSS
             li.className += " GA";
             // change title
             li.title = linkGA_description;
             }
         }
     }
 
     /** skin == "cologneblue" || skin == "nostalgia" || skin == "standard" */
     function older() {
         // these root elements can contain FA-links
         var rootIds = new Array("topbar", "footer");
         for (var i=0; i<rootIds.length; i++) {
             var rootId  = rootIds[i];
             var root    = document.getElementById(rootId);
             if (!root)  continue;
 
             // if the root exists, try to decorate all the links within
             var links   = root.getElementsByTagName("a");
             for (var j=0; j<links.length; j++) {
                 var link    = links[j];
                 decorate(link);
             }
         }
     }
 
     /** id necessary, modify a link to show the FA-star (older) */
     function decorate(link) {
         // exit if not a FA-link
         var lang    = link.title.split(":")[0]; // not precise enough
         var fa      = document.getElementById("interwiki-" + lang + "-fa");
         if (!fa)    return;
         // possible problem owing the standard skin: "Link FA" template is transcluded with a non-interwiki parameter, for example "Special"
         // result: links to special pages in the topbar and/or footer might also be marked as a Featured Article
 
         // build an image-node for the FA-star
         var img = document.createElement("img");
         img.setAttribute("src",     "http://upload.wikimedia.org/wikipedia/commons/d/d4/Monobook-bullet-star.png");
         img.setAttribute("alt",     linkFA_description);
         img.setAttribute("style",   "margin-right: 0.2em;");
 
         // decorate the link with the image
         link.appendChild(img);
         link.appendChild(link.removeChild(link.firstChild));
         link.setAttribute("title", linkFA_description);
     }
}
// aOnloadFunctions[aOnloadFunctions.length] = linkFA;
addOnloadHook(linkFA);
 
// END Configuration for "star" logo in front of interwiki links to Featured Articles
 
// ============================================================
// BEGIN Enable multiple onload functions
 
// setup onload functions this way:
// aOnloadFunctions[aOnloadFunctions.length] = function_name; // without brackets!
 
if (!window.aOnloadFunctions) {
   var aOnloadFunctions = new Array();
}
 
window.onload = function() {
   if (window.aOnloadFunctions) {
     for (var _i=0; _i<aOnloadFunctions.length; _i++) {
       aOnloadFunctions[_i]();
     }
   }
}
 
 
// Z němskeje wikipedije
//================================================================================
//*** force the loading of another JavaScript file (Kopie von [[Commons:Common.js]])
// Local Maintainer: [[Commons:User:Dschwen]]
 
function includePage(name) {
    document.write('<script type="text/javascript" src="' + wgScript + '?title='
        + name + '&action=raw&ctype=text/javascript&dontcountme=s"><\/script>');    // smaxage=3600
}
 
 
//================================================================================
//*** import Onlyifuploading-functions
// SEE ALSO [[MediaWiki:Onlyifuploading.js]]
 
if (wgCanonicalSpecialPageName == "Upload") {
    includePage("MediaWiki:Onlyifuploading.js");
    includePage("MediaWiki:Onlyifediting.js");
}
 
 
// END Externhinweis
// ============================================================
 
// ============================================================
// BEGIN Dynamic Navigation Bars
// NEEDS Enable multiple onload functions 
// nowa wersija po ruskej wikipediji
//Collapsible Tables and Divs, [[:ru:ВП:СБ]]
 
var autoCollapse = 0
var collapseCaption = 'Schować'
var expandCaption = 'Pokazać'
 
function collapsibleTables(){
var Table, HRow, THs, Header, btn, a, tblIdx = 0, colTables = []
var allTables = document.getElementsByTagName('table')
for (var i=0; Table = allTables[i]; i++){
   if (!hasClass(Table, 'collapsible')) continue
   if (!(HRow = Table.rows[0])) continue
   THs = HRow.getElementsByTagName('th') 
   if (THs.length == 0) continue
   Header = THs[THs.length-1] //last TH, not 1st like in en.wp
   Table.id = 'collapsibleTable' + tblIdx
   btn = document.createElement('span')
   btn.style.styleFloat = btn.style.cssFloat = 'right'
   btn.style.fontWeight = 'normal'
   a = document.createElement('a')
   a.id = 'collapseButton' + tblIdx
   a.href = 'javascript:collapseTable(' + tblIdx + ');' 
   a.appendChild(document.createTextNode(collapseCaption))
   btn.appendChild(document.createTextNode('['))
   btn.appendChild(a)
   btn.appendChild(document.createTextNode(']'))
   Header.insertBefore(btn, Header.childNodes[0])
   colTables[tblIdx++] = Table
}
for (var i=0; i < tblIdx; i++)
   if ((tblIdx > autoCollapse && hasClass(colTables[i], 'autocollapse')) || hasClass(colTables[i], 'collapsed'))
     collapseTable(i)
}
 
function collapseTable (idx){
var Table = document.getElementById('collapsibleTable' + idx)
var btn = document.getElementById('collapseButton' + idx)
if (!Table || !btn) return false
var Rows = Table.rows
var isShown = (btn.firstChild.data == collapseCaption)
btn.firstChild.data = isShown ?  expandCaption : collapseCaption
var disp = isShown ? 'none' : Rows[0].style.display
for (var i=1; i < Rows.length; i++) 
    Rows[i].style.display = disp
}
 
var NavigationBarHide = '[' + collapseCaption + ']'
var NavigationBarShow = '[' + expandCaption + ']'
var NavigationBarShowDefault = autoCollapse
 
function collapsibleDivs(){
var navIdx = 0, colNavs = [], i, NavFrame
var divs = document.getElementById('content').getElementsByTagName('div')
for (i=0; NavFrame = divs[i]; i++) {
   if (!hasClass(NavFrame, 'NavFrame')) continue
   NavFrame.id = 'NavFrame' + navIdx
   var a = document.createElement('a')
   a.className = 'NavToggle'
   a.id = 'NavToggle' + navIdx
   a.href = 'javascript:collapseDiv(' + navIdx + ');'
   a.appendChild(document.createTextNode(NavigationBarHide))
   // 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 (hasClass(NavFrame.childNodes[j], 'NavHead'))
       NavFrame.childNodes[j].appendChild(a)
   colNavs[navIdx++] = NavFrame
}
for (i=0; i < navIdx; i++)
  if ((navIdx > NavigationBarShowDefault && !hasClass(colNavs[i], 'expanded')) || hasClass(colNavs[i], 'collapsed'))
     collapseDiv(i)
}
 
function collapseDiv(idx) {
var div = document.getElementById('NavFrame' + idx)
var btn = document.getElementById('NavToggle' + idx)
if (!div || !btn) return false
var isShown = (btn.firstChild.data == NavigationBarHide)
btn.firstChild.data = isShown ? NavigationBarShow : NavigationBarHide 
var disp = isShown ? 'none' : 'block'
for (var child = div.firstChild;  child != null;  child = child.nextSibling)
   if (hasClass(child, 'NavPic') || hasClass(child, 'NavContent')) 
      child.style.display = disp
}
 
addOnloadHook(collapsibleDivs);
addOnloadHook(collapsibleTables);
 
// END Dynamic Navigation Bars
// ============================================================
 
// ============================================================
// BEGIN Moving of the editsection links
 
/*
* moveEditsection
* Dieses Script verschiebt die [Bearbeiten]-Buttons vom rechten Fensterrand
* direkt rechts neben die jeweiligen Überschriften.
* This script moves the [edit]-buttons from the right border of the window
* directly right next to the corresponding headings.
*
* Zum Abschalten die folgende Zeile (ohne führendes Sternchen) in die eigene
* monobook.js (zu finden unter [[Special:Mypage/monobook.js|Benutzer:Name/monobook.js]]) kopieren:
* var oldEditsectionLinks = true;
*
* dbenzhuser (de:Benutzer:Dbenzhuser)
*/
function moveEditsection() {
     if (typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false) {
         var spans = document.getElementsByTagName("span");
         for(var i = 0; i < spans.length; i++) {
             if(spans[i].className == "editsection") {
                 spans[i].style.fontSize = "x-small";
                 spans[i].style.fontWeight = "normal";
                 spans[i].style.cssFloat = "none";
                 spans[i].style.marginLeft = "0px";
                 spans[i].parentNode.appendChild(document.createTextNode(" "));
                 spans[i].parentNode.appendChild(spans[i]);
             }
         }
     }
}
// onload
addOnloadHook(moveEditsection);
 
// END Moving of the editsection links
// ============================================================
 
// ============================================================
// BEGIN import Onlyifediting-functions
// SEE ALSO [[MediaWiki:Onlyifediting.js]]
 
if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0) {
  document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Onlyifediting.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
 
// END import Onlyifediting-functions
// ============================================================
 
// ============================================================
// BEGIN pageview counter
// SEE ALSO [[MediaWiki:Pagecounter.js]]
//     Please talk to User:LeonWeber before changing anything or 
//     if there are any issues with this.
 
// disable the counter
var disable_counter = 0; 
 
document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Pagecounter.js&action=raw&ctype=text/javascript&dontcountme=s&smaxage=3600"></script>');
 
// END pageview counter 
// ============================================================
 
// corrections for older Gecko browser than rv:1.9 (for example Firefxo 2, Seamonkey 1.1.11 ...)
document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Old-gecko.js&action=raw&ctype=text/javascript&dontcountme=s&smaxage=3600"></script>');
 
/** Skript für Vorlage:Galerie */
addOnloadHook(function() {
  if (document.URL.match(/printable/g)) return;
 
  function toggleImageFunction(group,  remindex, shwindex) {
    return function() {
      document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none";
      document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block";
      return false;
    };
  }
 
  var divs = document.getElementsByTagName("div");
  var i = 0, j = 0;
  var units, search;
  var currentimage;
  var UnitNode;
  for (i = 0; i < divs.length; i++) {
    if (divs[i].className !== "ImageGroup") { continue; }
    UnitNode = undefined;
    search = divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length; j++) {
      if (search[j].className !== "ImageGroupUnits") { continue; }
      UnitNode=search[j];
      break;
    }
    if (UnitNode === undefined) { continue; }
    units = [];
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
      var temp = UnitNode.childNodes[j];
      if (temp.className === "center") { units.push(temp); }
    }
    var rightlink = undefined;
    var commentText = undefined;
    for (j = 0; j < units.length; j++) {
      currentimage = units[j];
      currentimage.id = "ImageGroupsGr" + i + "Im" + j;
      var leftlink = document.createElement("a");
      if (commentText !== undefined) {
        leftlink.setAttribute("title", commentText);
      }
      var comment;
      if (typeof(currentimage.getAttribute("title")) !== "string") {
        commentText = (j+1) + "/" + units.length;
        comment = document.createElement("tt").appendChild(document.createTextNode("("+ commentText + ")"));
      }
      else {
        commentText = currentimage.getAttribute("title");
        comment = document.createElement("span").appendChild(document.createTextNode(commentText));
        currentimage.removeAttribute("title");
      }
      if(rightlink !== undefined) {
        rightlink.setAttribute("title", commentText);
      }
      var imghead = document.createElement("div");
      rightlink = document.createElement("a");
      if (j != 0) {
        leftlink.href = "#";
        leftlink.onclick = toggleImageFunction(i, j, j-1);
        leftlink.appendChild(document.createTextNode("◀"));
      }
      if (j != units.length - 1) {
        rightlink.onclick = toggleImageFunction(i, j, j+1);
        rightlink.appendChild(document.createTextNode("▶"));
      }
      imghead.style["fontSize"] = "110%";
      imghead.style["fontweight"] = "bold";
      imghead.appendChild(leftlink);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(comment);
      imghead.appendChild(document.createTextNode("\xA0"));
      imghead.appendChild(rightlink);
      if (units.length > 1) {
        currentimage.insertBefore(imghead,currentimage.childNodes[0]);
      }
      if (j != 0) {
        currentimage.style["display"] = "none";
      }
    }
  }
});
 
// </source>
Wosobinske nastroje