MediaWiki:Common.js
El Komunejo
(Malsamoj inter versioj)
(novaj versioj de kaŝskatolaj funkcioj laŭ la suprasoraba vikipedio, kie ĉio estis sukcese testita) |
(autoCollapse = 0) |
||
Linio 102: | Linio 102: | ||
//Collapsible Tables and Divs, [[:ru:ВП:СБ]] | //Collapsible Tables and Divs, [[:ru:ВП:СБ]] | ||
- | var autoCollapse = | + | var autoCollapse = 0 |
var collapseCaption = 'Kaŝi' | var collapseCaption = 'Kaŝi' | ||
var expandCaption = 'Montri' | var expandCaption = 'Montri' |
Kiel registrite je 14:17, 8. Okt 2008
/* Ĉiu ajn JavaSkriptaĵo ĉi tie estos ŝarĝita por ĉiu uzanto sur ĉiu paĝo. */ /* <pre> <nowiki> iletikedoj kaj rektaj klavoj */ ta = new Object(); ta['pt-userpage'] = new Array('.','Mia uzantopaĝo'); ta['pt-anonuserpage'] = new Array('.','La uzantopaĝo por la IP adreso sub kiu vi estas redaktanta'); ta['pt-mytalk'] = new Array('n','Mia diskutpaĝo'); ta['pt-anontalk'] = new Array('n','Diskuto pri redaktoj sub tiu ĉi IP adreso'); ta['pt-preferences'] = new Array('','Miaj preferoj'); ta['pt-watchlist'] = new Array('l','Listo de paĝoj kies ŝanĝojn vi priatentas.'); ta['pt-mycontris'] = new Array('y','Listo de miaj kontribuoj'); ta['pt-login'] = new Array('o','Vi estas invitita ensaluti, tamen ne estas devige.'); ta['pt-anonlogin'] = new Array('o','Vi estas invitita ensaluti, tamen ne estas devige.'); ta['pt-logout'] = new Array('o','Elsalutu'); ta['ca-talk'] = new Array('t','Diskuto pri la artikolo'); ta['ca-edit'] = new Array('e','Vi povas redakti tiun ĉi paĝon. Bv uzi la antaŭvidbutonon antaŭ ol konservi.'); ta['ca-addsection'] = new Array('+','Aldonu komenton al tiu diskuto.'); ta['ca-viewsource'] = new Array('e','Tiu paĝo estas protektita. Vi povas nur rigardi ties fonton.'); ta['ca-history'] = new Array('h','Antaŭaj versioj de tiu ĉi paĝo.'); ta['ca-protect'] = new Array('=','Protektu tiun ĉi paĝon'); ta['ca-delete'] = new Array('d','Forigu tiun ĉi paĝon'); ta['ca-undelete'] = new Array('d','Restarigu la redaktojn faritajn al tiu ĉi paĝo antaŭ ties forigo'); ta['ca-move'] = new Array('m','Renomu tiun ĉi paĝon'); ta['ca-nomove'] = new Array('','Vi ne rajtas renomi tiun ĉi paĝon'); ta['ca-watch'] = new Array('w','Aldonu tiun ĉi paĝon al via atentaro'); ta['ca-unwatch'] = new Array('w','Forigu tiun ĉi paĝon el via atentaro'); ta['search'] = new Array('f','Traserĉu tiun ĉi vikion'); ta['p-logo'] = new Array('','Ĉefpaĝo'); ta['n-mainpage'] = new Array('z','Vizitu la Ĉefpaĝon'); ta['n-portal'] = new Array('','Pri la projekto, kion vi povas fari, kie vi povas trovi ion'); ta['n-currentevents'] = new Array('','Trovu fonajn informojn pri nunaj eventoj'); ta['n-recentchanges'] = new Array('r','Listo de la lastaj ŝanĝoj en la vikio.'); ta['n-randompage'] = new Array('x','Vidu hazardan paĝon'); ta['n-help'] = new Array('','Serĉopaĝo.'); ta['n-sitesupport'] = new Array('','Subtenu nin per mono'); ta['t-whatlinkshere'] = new Array('j','Listo de ĉiuj vikiaj paĝoj kij ligas ĉi tien'); ta['t-recentchangeslinked'] = new Array('k','Lastaj ŝanĝoj en paĝoj kiuj ligas al tiu ĉi paĝo'); ta['feed-rss'] = new Array('','RSS-fonto por tiu ĉi paĝo'); ta['feed-atom'] = new Array('','Atom-fonto por ĉi paĝo'); ta['t-contributions'] = new Array('','Vidu la liston de kontribuoj de tiu ĉi uzanto'); ta['t-emailuser'] = new Array('','Sendu retmesaĝon al tiu ĉi uzanto'); ta['t-upload'] = new Array('u','Alŝutu bildojn aŭ dosierojn'); ta['t-specialpages'] = new Array('q','Listo de ĉiuj specialaj paĝoj'); ta['ca-nstab-main'] = new Array('c','Vidu la artikolon'); ta['ca-nstab-user'] = new Array('c','Vidu la personan paĝon de la uzanto'); ta['ca-nstab-media'] = new Array('c','Vidu la paĝon de la dosiero'); ta['ca-nstab-special'] = new Array('','Estas speciala paĝo, vi ne rajtas redakti ĝin.'); ta['ca-nstab-wp'] = new Array('a','Vidu la paĝon de la projekto'); ta['ca-nstab-image'] = new Array('c','Vidu la paĝon de la bildo'); ta['ca-nstab-mediawiki'] = new Array('c','Vidu la sisteman mesaĝon'); ta['ca-nstab-template'] = new Array('c','Vidu la ŝablonon'); ta['ca-nstab-help'] = new Array('c','Vidu la helppaĝon'); ta['ca-nstab-category'] = new Array('c','Vidu la paĝon de kategorioj'); // el la suprasoraba vikipedio. Ĝi estas uzata de la kaŝskatolaj funkcioj. // ============================================================ // 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 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 // ============================================================ //============================================================ // // KAŜSKATOLOJ // // pli fleksebla varianto el la suprasoraba vikipedio // ============================================================ // BEGIN Dynamic Navigation Bars // NEEDS Enable multiple onload functions // nowa wersija po ruskej wikipediji //Collapsible Tables and Divs, [[:ru:ВП:СБ]] var autoCollapse = 0 var collapseCaption = 'Kaŝi' var expandCaption = 'Montri' 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 // ============================================================ //============================================================ // // ELSTARAJ KAJ LEGINDAJ ARTIKOLOJ // //============================================================ /** * Aldonas apartan signon al interlingvaj ligiloj al elstaraj au legindaj artikoloj */ function LinkFA() { // links are only replaced in p-lang 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]; // FA- estas celita por respndi al ŝablono LigoElstara : nepre ne ŝanĝenda if (document.getElementById("FA-" + li.className)) { li.className += " FA"; li.title = "Ĉi tiu estas elstara artikolo."; } else if (document.getElementById("BA-" + li.className)) { li.className += " BA"; li.title = "Ĉi tiu estas leginda artikolo."; } else if (document.getElementById("PdQ-" + li.className)) { li.className += " PdQ"; li.title = "Ĉi tiu estas elstara portalo"; } } } addOnloadHook(LinkFA); //============================================================ // // ILARO // //============================================================ //============================================================ // Tabelkreilo //============================================================ /** * * English: Generate an array using Mediawiki syntax * * @author: fr:user:dake * @version: 0.1 */ function generateTableau(nbCol, nbRow, border, styleHeader, styleLine) { var code = "\n"; if (styleHeader==1) { code += '{'+'{TabelKapoLaŭĈarta}'+'}\n'; } else { code += '{| border="' + border + '"\n'; code += '|+ Tabeltitolo\n'; } for (var i=0;i<nbCol;i++) code += '! kapo ' + i + '\n' for (var j=0;j<nbRow;j++) { if ((j+1)%2==0 && styleLine==1) { code += '|-{'+'{GrizaLinio}'+'}\n' } else { code += '|-----\n' } for (var i=0;i<nbCol;i++) code += '| elemento\n'; } code += '|}'; insertTags('','', code); } /** * * English: Open a popup with parameters to generate an array. * The number of rows/columns can be modified. Some additional * parameters are related to templates available on :fr * * @author: fr:user:dake * @version: 0.1 */ function popupTableau() { var popup = window.open('','name','height=400,width=500'); javaCode = '<script type="text\/javascript">function insertCode(){'; javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ' javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ' javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); ' javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ' javaCode += 'var styleLine = document.paramForm.inputLine.checked; ' javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); ' javaCode += '}<\/script>'; popup.document.write('<html><head><title>Parametroj de la tabelo</title>'); popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>'); popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; *]]>*/<\/style>'); popup.document.write(javaCode); popup.document.write('</head><body>'); popup.document.write('<p>Bonvolu entajpi la parametrojn de la tabelo : </p>'); popup.document.write('<form name="paramForm">'); popup.document.write('Lininombro : <input type="text" name="inputRow" value="3" ><p>'); popup.document.write('Kolumnnombro : <input type="text" name="inputCol" value="3" ><p>'); popup.document.write('Randolarĝeco : <input type="text" name="inputBorder" value="1" ><p>'); popup.document.write('Griza tabelkapo (stilo lauĉarta) : <input type="checkbox" name="inputHeader" checked="1" ><p>'); popup.document.write('Alternaj grizaj linioj (stilo lauĉarta) : <input type="checkbox" name="inputLine" checked="1" ><p>'); popup.document.write('</form">'); popup.document.write('<p><a href="javascript:insertCode()"> Enmetu la kodon en la redaktofenestron</a></p>'); popup.document.write('<p><a href="javascript:self.close()"> Fermu</a></p>'); popup.document.write('</body></html>'); popup.document.close(); } //============================================================ // Enmeto de novaj butonoj en la redaktilarstrio //============================================================ //Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags //Plenigas la variablon mwCustomEditButtons (vidu /skins-1.5/commons/wikibits.js) por aldoni butonojn en la redaktostrio function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) { mwCustomEditButtons[mwCustomEditButtons.length] = {"imageId": imageId, "imageFile": imageFile, "speedTip": speedTip, "tagOpen": tagOpen, "tagClose": tagClose, "sampleText": sampleText}; } addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png','Tabelo','{|\n|-\n|\n|\n|}','','','mw-editbutton-array'); if (wgNamespaceNumber != 0) addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png','Forstreki','<s>','</s>','','mw-editbutton-strike'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png','Numerita listo','\n# elemento 1\n# elemento 2\n# elemento 3','','','mw-editbutton-enum'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Listo','\n* elemento A\n* elemento B\n* elemento C','','','mw-editbutton-liste'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Bildaro','\n<gallery>\nDosiero:M63.jpg|[[M63]]\nDosiero:Mona Lisa.jpg|[[La Gioconda]]\nDosiero:Truite arc-en-ciel.jpg|[[Fiŝo|Ĉielarka truto]]\n</gallery>','','','mw-editbutton-gallery'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Komento','<!--','-->','','mw-editbutton-comment'); addCustomButton('http://upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png','Redirekto','#REDIRECT [[',']]','redirektocelo','mw-editbutton-redir'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png','Ŝablono','{{','}}','enmetenda ŝablono aŭ paĝo','mw-editbutton-template'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png','Referenco','<ref>','</ref>','reference, citaĵo aŭ ligilo','mw-editbutton-ref'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png','Referenca sekcio','== Notoj kaj referencoj ==\n<references /> <!-- Helpo : http://eo.wikipedia.org/wiki/Helpo:Referencoj kaj piednotoj -->','','','mw-editbutton-references'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b0/Button_category02.png','Kategorio','[[Kategorio:',']]','Kategorionomo','mw-editbutton-category'); var viduAnkau = '<!-- Aneksprezentsugesto helpo : http://eo.wikipedia.org/wiki/Helpo:Referencoj kaj piednotoj -->\n' + '== Notoj kaj referencoj de la artikolo ==\n' + '<references/>\n' + '== Vidu ankaŭ ==\n' + '=== Rilataj artikoloj ===\n' + '* [[Anstataŭigenda]]\n' + '*\n' + '=== Eksteraj ligiloj kaj dokumentoj===\n' + '*\n'; addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png','Sekcio Vidu ankaŭ',viduAnkau,'','','mw-editbutton-voiraussi'); // Ŝanĝi la ligilon de la tabelkrea butono kaj forigas la subskriban butonon el artikolaj paĝoj function chang_buttons() { toolbarArray = document.getElementById('mw-editbutton-array'); if (toolbarArray) { toolbarArray.onclick = function() { popupTableau(); return false; } } var btnSigImg = document.getElementById('mw-editbutton-signature'); if (btnSigImg && wgNamespaceNumber == 0) btnSigImg.style.display = "none"; } hookEvent('load', chang_buttons); /** WikiMiniAtlas ******************************************************* * * Priskribo: WikiMiniAtlas estas ŝprucanta alklakebla kaj tirebla mondmapo. * La skripto estigas ke ĉiuj viaj koordinataj ligiloj montras la WikiMiniAtlas-ŝprucbutonon. * La skripto mem estas lokita sur meta ĉar ĝi estas uzata de multaj projektoj. * Vidu [[Meta:WikiMiniAtlas]] por plia informo. * Kreita de : [[:en:User:Dschwen]] */ document.write('<script type="text/javascript" src="' + 'http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js' + '&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400"></script>'); // Ebligas montri kaŝitajn kategoriojn por enskribitaj uzuloj // aldonante (+) kiel ĉe kaŝskatoloj function hiddencat() { var cl = document.getElementById('catlinks'); if(!cl) return; var hc = document.getElementById('mw-hidden-catlinks'); if(!hc) return; var nc = document.getElementById('mw-normal-catlinks'); if(!nc) return; if(hc.className == 'mw-hidden-cats-hidden') { var ahc = ' | <a onclick="javascript:toggleHiddenCats();" id="mw-hidden-cats-link" style="cursor:pointer; color:black;" title="Ĉi tiu artikolo apartenas al kaŝita(j) kategorio(j)">[+]</a>'; document.getElementById('mw-normal-catlinks').innerHTML += ahc; } } function toggleHiddenCats() { var hc = document.getElementById('mw-hidden-catlinks'); if(hc.className == 'mw-hidden-cats-hidden') { hc.setAttribute('class', 'mw-hidden-cat-user-shown'); document.getElementById('mw-hidden-cats-link').innerHTML = '[–]'; } else { hc.setAttribute('class', 'mw-hidden-cats-hidden'); document.getElementById('mw-hidden-cats-link').innerHTML = '[+]'; } } addOnloadHook(hiddencat); /** * Por akiri la valoron de kuketo */ function getCookieVal(name) { var cookiePos = document.cookie.indexOf(name + "="); var cookieValue = false; if (cookiePos > -1) { cookiePos += name.length + 1; var endPos = document.cookie.indexOf(";", cookiePos); if (endPos > -1) cookieValue = document.cookie.substring(cookiePos, endPos); else cookieValue = document.cookie.substring(cookiePos); } return cookieValue; } /** * getElementsByClass : priserĉas la erojn de la paĝo kies parametro "class" estas tiu prioserĉata */ function getElementsByClass(searchClass, node, tag) { if (node == null) node = document; if (tag == null) tag = '*'; return getElementsByClassName(node, tag, searchClass); } /** * Kaŝas la skatolojn de la ĉefpaĝo * * Aldonas ligilon sur la ĉefpaĝon por facile kaŝi la skatolojn * Memorigita per kuketo * Kopirajto 2007, fr:user:Plyd kaj fr:User:IAlex. Licencoj GFDL kaj GPL. * Esperantigita de eo:Vikipediisto:ArnoLagrange */ var kuketKaŝSkatolNomo = "kaŝSkatolChefpagho"; var KaŝSkatolVal = {}; var sumSkatolChefpagho = 0; function montruSkatolChefpagho(id) { videbla = KaŝSkatolVal[id] = (!KaŝSkatolVal[id]); getElementsByClass('chefpagh_enteno',null,'div')[id].style.display = videbla ? 'block' : 'none'; document.getElementById('KaŝSkatolChefpagho' + id).innerHTML = videbla ? 'kaŝi' : 'montri'; konserviKuketonChefpagho(); } function konserviKuketonChefpagho() { var date = new Date(); date.setTime(date.getTime() + 30*86400*1000); var val = 0; for ( var i=0; i< sumSkatolChefpagho ; i++ ) { if (!KaŝSkatolVal[i]) val = val | Math.pow(2,i); } document.cookie = kuketKaŝSkatolNomo + "=" + val + "; expires="+date.toGMTString() + "; path=/"; } function LigilojSkatolChefpagho() { var videbla = {}; // if (wgPageName != "Ĉefpaĝo") return; kuketSkatolChefpagho = getCookieVal(kuketKaŝSkatolNomo); for ( var i=0; i<11; i++) { var titolo = getElementsByClass('grizakapo',document,'h2')[i]; if (!titolo) break; var ligilo = 'kaŝi'; videbla[i] = !(getElementsByClass('chefpagh_enteno',null,'div')[i].style.display == 'none') ; if (!videbla[i]) ligilo = 'montri'; titolo.innerHTML += " <span style='font-size: xx-small; font-weight: normal; float: none; margin-right:100px' class='editsection'>[<a id='KaŝSkatolChefpagho" + i + "' href='javascript:montruSkatolChefpagho(" + i + ");'>" + ligilo + "</a>] </span>"; KaŝSkatolVal[i] = videbla[i]; sumSkatolChefpagho++; } kuketSkatolChefpagho = getCookieVal(kuketKaŝSkatolNomo); for ( var i=0; i< sumSkatolChefpagho ; i++ ) { n =Math.pow(2,i); aff = !(kuketSkatolChefpagho & n); if (!aff) montruSkatolChefpagho(i); } } addOnloadHook(LigilojSkatolChefpagho); /* </nowiki> </pre>*/