MediaWiki:Monobook.js
Klikipedia - klikowa encyklopedia
/*
'''Wyłączenie poszczególnych możliwości/skryptów'''
* Dodanie linka [edytuj] dla sekcji nagłówkowej
window.addEditTopLinkDone = true;
* Oznaczanie artykułów medalowych (dla interwiki)
window.LinkFADone = true;
* Dynamiczne szablony nawigacyjne
window.createNavigationBarToggleButtonDone = true;
* Automatyczne opisy zmian
window.przyciskiOpisDone = true;
* Menu dla edittools (''obecnie i tak nieaktywne'')
window.addCharSubsetMenuDone = true;
==== Dodanie linka [edytuj] dla sekcji nagłówkowej ====
* Pomysł: [[:en:User:Pile0nades]]
* Wykonanie: Maciej Jaros [[:pl:User:Nux]]
* Licencja: [http://opensource.org/licenses/gpl-license.php GNU General Public License v2]
<pre>
*/
// Liczba nagłówków drugiego, trzeciegiego i czwartego stopnia
// jakie muszą się pojawić w artykule, żeby pojawił się link
var addEditTopLinkNumHeaders = 2; // dla 2 => dla dwóch i więcej się pojawi
function addEditTopLink() {
//
// somehow it gets run twice on some pages - stop that
if (window.addEditTopLinkDone)
return
;
window.addEditTopLinkDone = true;
//
// if this is preview page or there is no edit tab, stop
if (!wgIsArticle)
return
;
//
// if there are no edit-section links then stop
var spans = document.getElementById("bodyContent").getElementsByTagName("span");
var i;
for (i = 0; i < spans.length; i++) {
if (spans[i].className == 'editsection')
break
;
}
if (i>=spans.length)
return
;
//
// additional checkup to stop
var test = document.getElementById("bodyContent").getElementsByTagName("h2").length +
document.getElementById("bodyContent").getElementsByTagName("h3").length +
document.getElementById("bodyContent").getElementsByTagName("h4").length;
// note that there is always siteSub (h3)
if (test<=addEditTopLinkNumHeaders)
return
;
//
// get first header element
var fst_h1 = document.getElementById("content").getElementsByTagName("h1")[0];
//
// Creating elements
//
// create div
var div = document.createElement("DIV");
div.className = 'editsection';
// create link
var link = document.createElement("A");
link.href = document.getElementById("ca-edit").getElementsByTagName("a")[0].href + '§ion=0';
link.setAttribute('title', 'edytuj sekcję nagłówkową artykułu');
link.appendChild(document.createTextNode('edytuj'));
// append link and stuff to div
div.appendChild(document.createTextNode('['));
div.appendChild(link);
div.appendChild(document.createTextNode(']'));
//
// Styling
//
// font-size:53%; <= 188/100 = 0.53 <= h1 font-size = 188%
div.style.cssText = 'position:absolute; right:0px; font-size:53%; bottom:-1.5em';
// IE fix -- text is smaller there (set in CSS) and
// relative>absolute just dont work there (is positioned relative to body)
if (clientPC.indexOf('msie')!=-1 && clientPC.indexOf('opera') == -1)
div.style.cssText='position:absolute; right:1.5em; font-size:42%; top:3.7em'
;
// add an extra margin if there is no content in contentSub
// (which works pretty much the same if it is there)
if (document.getElementById("contentSub").innerHTML=='')
fst_h1.style.cssText = 'position:relative; margin-bottom:0.9em';
else
fst_h1.style.cssText = 'position:relative';
;
//
// Insert div container into the DOM before the h1
//
fst_h1.appendChild(div);
}
addOnloadHook(addEditTopLink);
/*
</pre>
==== Standardowe zakładki ====
<pre>
*/
var ta = new Object();
ta['pt-userpage'] = new Array('.','Moja osobista strona');
ta['pt-anonuserpage'] = new Array('.','Strona użytkownika numeru IP spod którego edytujesz');
ta['pt-mytalk'] = new Array('n','Moja strona dyskusji');
ta['pt-anontalk'] = new Array('n','Dyskusja o edycjach z tego numeru IP');
ta['pt-preferences'] = new Array('','Moje preferencje');
ta['pt-watchlist'] = new Array('l','Lista stron obserwowanych');
ta['pt-mycontris'] = new Array('y','Lista moich edycji');
ta['pt-login'] = new Array('o','Zachęcamy do zalogowania się, choć nie jest to obowiązkowe.');
ta['pt-anonlogin'] = new Array('o','Zachęcamy do zalogowania się, choć nie jest to obowiązkowe');
ta['pt-logout'] = new Array('o','Wylogowanie');
ta['ca-talk'] = new Array('t','Dyskusja o zawartości tej strony.');
ta['ca-edit'] = new Array('e','Możesz edytować tę stronę. Przed zapisaniem zmian użyj przycisku podgląd.');
ta['ca-addsection'] = new Array('+','Dodaj swój komentarz do dyskusji');
ta['ca-viewsource'] = new Array('e','Ta strona jest zabezpieczona. Możesz zobaczyć tekst źródłowy.');
ta['ca-history'] = new Array('h','Starsze wersje tej strony.');
ta['ca-protect'] = new Array('=','Zabezpiecz tę stronę.');
ta['ca-delete'] = new Array('d','Usuń tę stronę');
ta['ca-undelete'] = new Array('d','Przywróć wersję tej strony sprzed usunięcia');
ta['ca-move'] = new Array('m','Przenieś tę stronę.');
ta['ca-nomove'] = new Array('','Nie masz wystarczających uprawnień do przeniesienia tej strony');
ta['ca-watch'] = new Array('w','Dodaj tę stronę do listy obserwowanych');
ta['ca-unwatch'] = new Array('w','Usuń tę stronę z listy obserwowanych');
ta['search'] = new Array('f','Szukaj w Wikipedii');
ta['p-logo'] = new Array('','Strona główna');
ta['n-mainpage'] = new Array('z','Zobacz stronę główną Wikipedii');
ta['n-portal'] = new Array('','O projekcie, co możesz zrobić, gdzie możesz znaleźć informacje');
ta['n-currentevents'] = new Array('','Informacje o aktualnych wydarzeniach');
ta['n-recentchanges'] = new Array('r','Lista ostatnich zmian w artykułach Wikipedii');
ta['n-randompage'] = new Array('x','Pokaż losowo wybraną stronę');
ta['n-help'] = new Array('','Zapoznaj się z obsługą Wikipedii');
ta['n-sitesupport'] = new Array('','Wesprzyj nas');
ta['t-whatlinkshere'] = new Array('j','Pokaż listę stron linkujących do tego artykułu');
ta['t-recentchangeslinked'] = new Array('k','Ostatnie zmiany w stronach linkujących do tej strony');
ta['feed-rss'] = new Array('','Nagłówki RSS z tej strony');
ta['feed-atom'] = new Array('','Atom feed dla tej strony');
ta['t-contributions'] = new Array('','Pokaż listę edycji tego użytkownika');
ta['t-emailuser'] = new Array('','Wyślij e-mail do tego użytkownika');
ta['t-upload'] = new Array('u','Wyślij plik na serwer Wikipedii');
ta['t-specialpages'] = new Array('q','Lista wszystkich specjalnych stron');
ta['ca-nstab-main'] = new Array('c','Zobacz stronę artykułu');
ta['ca-nstab-user'] = new Array('c','Zobacz stronę osobistą Wikipedysty');
ta['ca-nstab-media'] = new Array('c','Pokaż stronę pliku');
ta['ca-nstab-special'] = new Array('','To jest specjalna strona. Nie możesz jej edytować.');
ta['ca-nstab-wp'] = new Array('c','Zobacz stronę projektu');
ta['ca-nstab-image'] = new Array('c','Zobacz stronę grafiki');
ta['ca-nstab-mediawiki'] = new Array('c','Zobacz komunikat systemowy');
ta['ca-nstab-template'] = new Array('c','Zobacz szablon');
ta['ca-nstab-help'] = new Array('c','Zobacz stronę pomocy');
ta['ca-nstab-category'] = new Array('c','Zobacz stronę kategorii');
/*
</pre>
==== Oznaczanie artykułów medalowych ====
<pre>
*/
function LinkFA()
{
// stop before starting
if (window.LinkFADone)
return;
// check only if there is any interwiki
if (document.getElementById('p-lang'))
{
// iterate over all <span>-elements
var sps = document.getElementById('bodyContent').getElementsByTagName('span');
var langs = document.getElementById('p-lang').getElementsByTagName('li');
for(var i=0; i<sps.length; i++) {
// if found a FA span
if(sps[i].className == 'FA') {
// iterate over all <li>-elements
for(var j=0; j<langs.length; j++) {
// if found a FA link
if(langs[j].className == "interwiki-" + sps[i].id) {
langs[j].style.padding = "0 0 0 16px";
langs[j].style.backgroundImage = "url('http://upload.wikimedia.org/wikipedia/en/6/60/LinkFA-star.png')";
langs[j].style.backgroundRepeat = "no-repeat";
langs[j].title = "Ten artykuł to 'Artykuł na medal'";
// there can be only one ;)
break;
}
}
}
}
}
}
addOnloadHook(LinkFA);
/*
</pre>
==== Dynamiczne szablony nawigacyjne ====
<pre>
*/
// set up the words in your language
var NavigationBarHide = '[ Ukryj ]';
var NavigationBarShow = '[ Pokaż ]';
// 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:
// indexNavBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavBar);
var NavFrame = document.getElementById("NavFrame" + indexNavBar);
if (!NavFrame || !NavToggle)
return
;
// values to be set
var currDisplay;
var currTitle;
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide)
{
currDisplay = 'none';
currTitle = NavigationBarShow;
}
// if hidden now
else if (NavToggle.firstChild.data == NavigationBarShow)
{
currDisplay = 'block';
currTitle = NavigationBarHide;
}
for (var NavChild=NavFrame.firstChild; NavChild!=null; NavChild=NavChild.nextSibling)
{
if (NavChild.nodeType==1) // only if this is an element node
{
if (NavChild.className=='NavPic' || NavChild.className=='NavContent')
NavChild.style.display = currDisplay
else if (NavChild.className == 'NavToggle')
NavChild.firstChild.data = currTitle
;
}
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
// stop before starting
if (window.createNavigationBarToggleButtonDone)
return;
var i;
var indexNavBar = 0;
var divs = document.getElementById('bodyContent').getElementsByTagName("div");
// iterate over all < div >-elements
for (i=0; i<divs.length; i++)
{
// if found a navigation bar
if (divs[i].className == "NavFrame")
{
var NavFrame = divs[i];
indexNavBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavBar + ');');
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' + indexNavBar);
}
}
// if more Navigation Bars found than Default then hide all
if (NavigationBarShowDefault < indexNavBar)
{
for(i=1; i<=indexNavBar; i++)
toggleNavigationBar(i)
;
}
}
addOnloadHook(createNavigationBarToggleButton);
/*
</pre>
==== Importowanie funkcji działających podczas edycji ====
* '''Zobacz:''' [[MediaWiki:Onlyifediting.js]]
<pre>
*/
if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0)
{
if (wgCanonicalNamespace != "Special")
{
document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Onlyifediting.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
}
/*
</pre>
==== Dodatkowe zakładki ====
* Używane m.in. do dostarczenia linków do narzędzi dla obrazków Duesentrieba.
* Tutaj tylko ustawienia, pełny skrypt: [[MediaWiki:Extra-tabs.js]]
<pre>
*/
//
// skrypt niepotrzebny dla stron specjalnych
if (wgNamespaceNumber != -1)
{
// Interface strings
var tab_check_usage = 'Wykorzystanie';
var tab_categorize = 'Kategoryzacja';
var tab_log = 'Log';
var tab_gallery = 'Galeria';
// var tab_orphans = 'Nieużywane';
var tab_untagged = 'Bez licencji';
var tab_tree = 'Drzewo';
var tab_catscan = 'CatScan';
var tab_blocklog = 'Blocklog';
// embeds the global script
document.write('<script type="text/javascript" src="/w/index.php?title=MediaWiki:Extra-tabs.js&action=raw&ctype=text/javascript"><\/script>');
}
/*
</pre>
==== Wikicharts ====
* Author: [[:de:User:LeonWeber]]
* Nie należy tu nic zmieniać bez konsultacji z autorem.
<pre>
*/
// this should be adjusted to a good value.
// BE CAREFULL, you will break zedler if it's too low!
// And then DaB. will kill Leon :-(
var disable_counter = 0;
var counter_factor = 300;
function pgcounter_setup()
{
if(disable_counter == 0)
{
var url = window.location.href;
if(Math.floor(Math.random()*counter_factor)==42) // the probability thing
{
if(wgIsArticle==true) // do not count history pages etc.
{
var pgcountNs = wgCanonicalNamespace;
if(wgCanonicalNamespace=="")
{
pgcountNs = "0";
}
var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(wgTitle) + "&factor=" + counter_factor + "&wiki=plwiki";
var img = new Image();
img.src = cnt_url;
}
}
}
}
// Do not use aOnloadFunctions[aOnloadFunctions.length] = pgcounter_setup;, some browsers don't like that.
pgcounter_setup();
/*
</pre>
==== sidebarProceduraAwaryjna ====
* Author: Maciej Jaros [[:pl:User:Nux]]
* Licence: CC-BY or GPL
* A temporary solution to the sidebar problem. Delete as soon as it will be solved.
* See bug 5092 for details: http://bugzilla.wikimedia.org/show_bug.cgi?id=5092
<pre>
*/
function sidebarProceduraAwaryjna()
{
//
// 'p-techniczne' is the id of the element
// that is available when sidebar is available
var element = document.getElementById('p-techniczne');
if (element)
return //fixing is not needed
;
// fixing our main nav-bar
var element = document.getElementById('p-navigation');
element.innerHTML = '<h5>nawigacja</h5> \
<div class="pBody"> \
<ul> \
<li id="n-mainpage"><a href="/wiki/Strona_g%C5%82%C3%B3wna">Strona główna</a></li> \
<li id="n-Kategorie"><a href="/wiki/Wikipedia:Kategorie_G%C5%82%C3%B3wne">Kategorie artykułów</a></li> \
<li id="n-recentchanges"><a href="/wiki/Specjalna:Recentchanges">Ostatnie zmiany</a></li> \
<li id="n-randompage"><a href="/wiki/Specjalna:Random">Losuj stronę</a></li> \
<li id="n-help"><a href="/wiki/Wikipedia:Pomoc">Pomoc</a></li> \
<li id="n-sitesupport"><a href="http://wikimediafoundation.org/wiki/Dary_pieni%C4%99%C5%BCne">Dary pieniężne</a></li> \
</ul> \
</div>';
//
// adding extra nav-bars (1)
var element = document.getElementById('p-search');
var newEl = document.createElement('div');
newEl.className = 'portlet';
newEl.id = 'p-techniczne';
newEl.innerHTML = '<h5>techniczne</h5> \
<div class="pBody"> \
<ul> \
<li id="n-portal"><a href="/wiki/Wikipedia:Portal_wikipedyst%C3%B3w">Portal wikipedystów</a></li> \
<li id="n-contact"><a href="/wiki/Wikipedia:Kontakt">Kontakt z Wikipedią</a></li> \
<li id="n-bug_in_article"><a href="http://adamdziura.9g.pl/wikipedia/wikibug.php">Zgłoś błąd</a></li> \
<li id="n-bad-image"><a href="http://adamdziura.9g.pl/wikipedia/badimage.php">Zgłoś złą grafikę</a></li> \
</ul> \
</div>';
element.parentNode.insertBefore(newEl, element);
//
// adding extra nav-bars (2)
var newEl = document.createElement('div');
newEl.className = 'portlet';
newEl.id = 'p-zmiany';
newEl.innerHTML = '<h5>zmiany</h5> \
<div class="pBody"> \
<ul> \
<li id="n-recentchanges"><a href="/wiki/Specjalna:Recentchanges">Ostatnie zmiany</a></li> \
<li id="n-recentchanges_in_category"><a href="/wiki/Wikipedia:Ostatnie_zmiany_tematyczne">Zmiany tematyczne</a></li> \
<li id="n-changes-in-category"><a href="http://adamdziura.9g.pl/wikipedia/changes-in-category.php">Zmiany w kategorii</a></li> \
</ul> \
</div>';
element.parentNode.insertBefore(newEl, element);
}
addOnloadHook(sidebarProceduraAwaryjna);
/*
</pre>
==== Small search keyboard ====
* Author: Maciej Jaros [[:pl:User:Nux]]
* Licence: CC-BY or [http://opensource.org/licenses/gpl-license.php GNU General Public License v2]
<pre>
*/
if (wgNamespaceNumber == -1 && wgPageName=="Specjalna:Search")
{
addOnloadHook(addSearchKeyboard);
}
function addSearchKeyboard() {
var subEl = document.getElementById('results');
var newEl = document.createElement('div');
newEl.className = 'search_keyboard';
newEl.innerHTML = "\
<b>Klawiaturka:\
<a onclick=\"insertTagsTo_('ą','','','lsearchbox');return false\" href=\"#\">ą</a>\
<a onclick=\"insertTagsTo_('ć','','','lsearchbox');return false\" href=\"#\">ć</a>\
<a onclick=\"insertTagsTo_('ę','','','lsearchbox');return false\" href=\"#\">ę</a>\
<a onclick=\"insertTagsTo_('ł','','','lsearchbox');return false\" href=\"#\">ł</a>\
<a onclick=\"insertTagsTo_('ń','','','lsearchbox');return false\" href=\"#\">ń</a>\
<a onclick=\"insertTagsTo_('ó','','','lsearchbox');return false\" href=\"#\">ó</a>\
<a onclick=\"insertTagsTo_('ś','','','lsearchbox');return false\" href=\"#\">ś</a>\
<a onclick=\"insertTagsTo_('ź','','','lsearchbox');return false\" href=\"#\">ź</a>\
<a onclick=\"insertTagsTo_('ż','','','lsearchbox');return false\" href=\"#\">ż</a></b>\
";
newEl.style.cssText = 'margin-left:25%; width:50%; font-size:small;';
subEl.parentNode.insertBefore(newEl, subEl);
}
/*
</pre>
==== funkcja insertTagsTo_ ====
* Author: phpBB Team, WikiMedia, Maciej Jaros [[:pl:User:Nux]]
* Licence: [http://opensource.org/licenses/gpl-license.php GNU General Public License v2]
<pre>
*/
//
// Apply tagOpen/tagClose to selection in given textarea/input,
// use sampleText instead of selection if there is none.
// Copied and adapted from phpBB
// outputid = 'some_id_of_a_textarea_or_a_text_input'
function insertTagsTo_(tagOpen, tagClose, sampleText, outputid) {
var txtarea = document.getElementById(outputid);
if (!txtarea)
return
;
// IE
if (document.selection && !is_gecko) {
var theSelection = document.selection.createRange().text;
if (!theSelection)
theSelection=sampleText;
txtarea.focus();
if (theSelection.charAt(theSelection.length - 1) == " ") { // exclude ending space char, if any
theSelection = theSelection.substring(0, theSelection.length - 1);
document.selection.createRange().text = tagOpen + theSelection + tagClose + " ";
} else {
document.selection.createRange().text = tagOpen + theSelection + tagClose;
}
// Mozilla
} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if (endPos-startPos)
replaced = true;
var scrollTop = txtarea.scrollTop;
var myText = (txtarea.value).substring(startPos, endPos);
if (!myText)
myText=sampleText;
if (myText.charAt(myText.length - 1) == " ") { // exclude ending space char, if any
subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
} else {
subst = tagOpen + myText + tagClose;
}
txtarea.value = txtarea.value.substring(0, startPos) + subst +
txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
//set new selection
if (replaced) {
var cPos = startPos+(tagOpen.length+myText.length+tagClose.length);
txtarea.selectionStart = cPos;
txtarea.selectionEnd = cPos;
} else {
txtarea.selectionStart = startPos+tagOpen.length;
txtarea.selectionEnd = startPos+tagOpen.length+myText.length;
}
txtarea.scrollTop = scrollTop;
// All other browsers get no toolbar.
// There was previously support for a crippled "help"
// bar, but that caused more problems than it solved.
}
// reposition cursor if possible
if (txtarea.createTextRange)
txtarea.caretPos = document.selection.createRange().duplicate();
}
// END OF MediaWiki:Monobook.js
// </pre>