MediaWiki:Common.js
Aus Kitakien
(Unterschied zwischen Versionen)
K (nowy skript z ruskeje wikipedije) |
(+hasclass z ruskeje wikipedije) |
||
Zeile 16: | Zeile 16: | ||
plus.firstChild.setAttribute('href', custom.getElementsByTagName('A')[0].href); | plus.firstChild.setAttribute('href', custom.getElementsByTagName('A')[0].href); | ||
}) | }) | ||
+ | |||
+ | // ============================================================ | ||
+ | // 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 | ||
+ | // ============================================================ | ||
// ============================================================ | // ============================================================ |
Version vom 11:53, 27. Mai 2008
/* <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); }) // ============================================================ // 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 interwiki links */ var linkFA_description = "Tutón nastawk bu jako ekscelentny 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")) continue; // additional class so the template can be hidden with CSS li.className += " FA"; // change title li.title = linkFA_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](); } } } // END Enable multiple onload functions // ============================================================ // ============================================================ // BEGIN Externhinweis // NEEDS Enable multiple onload functions /* function externHinweis() { if ( (document.getElementById("pt-login")) && // ob der Benutzer NICHT angemeldet ist (document.getElementById("ca-edit")) && // ob die seite nicht geschützt ist (!document.getElementById("ca-nstab-user")) && // ob die seite keine benutzerseite ist (document.referrer != "") && // ob der referrer nicht leer ist (document.referrer.search(/wikipedia\.org/) == -1) // ob der Referrer NICHT wikipedia.org enthält ) { var externHinweis = document.createElement("div"); externHinweis.setAttribute('id','externHinweis'); // Hier kann der Text verändert werden. // Bitte keine einfachen Anführungsstriche im Text verwenden! // Wikisyntax funktioniert nicht! externHinweis.innerHTML = 'Witaj! Móžeš zmylki porjedźić abo nastawk rozšěrić.; document.getElementById("content").appendChild(externHinweis); } } aOnloadFunctions[aOnloadFunctions.length] = externHinweis; */ // END Externhinweis // ============================================================ // ============================================================ // BEGIN Dynamic Navigation Bars // NEEDS Enable multiple onload functions // nowa wersija po ruskej wikipediji //Collapsible Tables and Divs, [[:ru:ВП:СБ]] var autoCollapse = 2 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 // ============================================================ // </source>