MediaWiki:Common.js
Wikisource, a biblioteca livre
Nota: Após gravar, terá de limpar a cache do seu navegador para ver as alterações. Mozilla / Firefox / Safari: pressione Shift enquanto clica em Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (Command-R num Macintosh); Konqueror:: clique no botão Recarregar ou pressione F5; Opera: limpe a cache em Ferramentas → Preferências (Tools → Preferences); Internet Explorer: pressione Ctrl enquanto clica em Recarregar ou pressione Ctrl-F5.
/* Scripts specific to Internet Explorer */ if (navigator.appName == "Microsoft Internet Explorer") { /** Internet Explorer bug fix ************************************************** * * Description: Fixes IE horizontal scrollbar bug * Maintainers: [[User:Tom-]]? */ var oldWidth; var docEl = document.documentElement; function fixIEScroll() { if (!oldWidth || docEl.clientWidth > oldWidth) doFixIEScroll(); else setTimeout(doFixIEScroll, 1); oldWidth = docEl.clientWidth; } function doFixIEScroll() { docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; } document.attachEvent("onreadystatechange", fixIEScroll); document.attachEvent("onresize", fixIEScroll); /** * Remove need for CSS hacks regarding MSIE and IPA. */ if (document.createStyleSheet) { document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";'); } //Import scripts specific to Internet Explorer 6 if (navigator.appVersion.substr(22, 1) == "6") { importScript("MediaWiki:Common.js/IE60Fixes.js") } } // ============================================================ // 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 // ============================================================ function addLoadEvent(func) { if (window.addEventListener) window.addEventListener("load", func, false); else if (window.attachEvent) window.attachEvent("onload", func); } /* Barras de navegação */ /** Barras de navegação dinâmica ************************************************************ * Origem: [[:it:MediaWiki:Common.js]] ********************************************************************************************/ // set up the words in your language var NavigationBarHide = ' [ocultar]'; var NavigationBarShow = ' [exibir]'; // 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'; } } NavToggle.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'; } } NavToggle.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); // 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 (NavFrame.childNodes[j].className == "NavHead") { NavFrame.childNodes[j].appendChild(NavToggle); } } 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); } } } addLoadEvent(createNavigationBarToggleButton); /* Interwikis */ function interwikiExtra() { // iterate over all <span>-elements for(var i=0; a = document.getElementsByTagName("span")[i]; i++) { // if found a linkInfo span if(a.className == "interwiki-info") { // iterate over all <li>-elements var count=0; for(var j=0; b = document.getElementsByTagName("li")[j]; j++) { if(b.className == "interwiki-" + a.id) { b.innerHTML = b.innerHTML + " "+a.title; if(a.title == "(vo)") { b.title = "Texto original"; } } else if(b.className == "interwiki-" + a.id.substr(0,a.id.length-1)) { count = count+1; if(a.id.charAt(a.id.length-1) == count) { b.innerHTML = b.innerHTML + " "+a.title; } } } } } } addLoadEvent(interwikiExtra); /********************** *** Add arrows on sidebar to compare current page to interlanguage link'd page *** by [[user:Pathoschild]], based on older script by unknown **********************/ function BilingualLink() { if(document.getElementById('p-lang') != null) { // get list of links var biboxes = document.getElementById('p-lang').getElementsByTagName('li'); // iterate over links for(var i=0; i<biboxes.length; i++) { // get link var bilink = biboxes[i].getElementsByTagName('a')[0]; // create new URL var bilang = bilink.getAttribute('href').match(/http:\/\/([^\.]+)\.wikisource/)[1]; var bilanglink = wgServer + '/wiki/' + wgPageName + '?match=' + bilang; // create link var bianchor = document.createElement('a'); bianchor.setAttribute('href',bilanglink); bianchor.setAttribute('title','Compare this page with the '+bilang+' version.'); bianchor.appendChild(document.createTextNode(' ⇔')); // add link biboxes[i].appendChild(bianchor); } } } addOnloadHook(BilingualLink); /* Upload no Commons */ function linkUploadToCommons() { if (document.getElementById("carrega-para-commons")) return; var li_carrega = document.getElementById("t-upload"); if (!li_carrega) return; var afegit = li_carrega.nextSibling; var ul_eines = li_carrega.parentNode; var li = document.createElement("li"); li.id = "carrega-para-commons"; li.innerHTML = '<a href="http://commons.wikimedia.org/wiki/Special:Upload">Carregar no Commons</a>'; if (afegit) ul_eines.insertBefore(li, afegit); else ul_eines.appendChild(li); } addLoadEvent(linkUploadToCommons); /* Correlatos na lateral */ // InterProjekt-Links (vgl. [[MediaZilla:708]]) document.write('<style type="text/css">#interProject, #sisterProjects {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}<\/style>'); function iProject() { if (document.getElementById("interProject")) { var iProject = document.getElementById("interProject").innerHTML; var interProject = document.createElement("div"); interProject.style.marginTop = "0.7em"; interProject.innerHTML = '<h5>Correlatos<\/h5><div class="pBody">'+iProject+'<\/div>'; document.getElementById("p-tb").appendChild(interProject); } } addOnloadHook(iProject); /* Layout para Discussão */ /** * Transformer certaines pages en page de discussion avec le modèle {{page de discussion}} */ function TransformeEnDiscussion() { var transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion"); if(transformeEnPDD) document.body.className = "ns-1"; } addOnloadHook(TransformeEnDiscussion); /* Botões extras */ function mwInsertEditButton(parent, item) { var image = document.createElement("img"); image.width = 23; image.height = 22; image.src = item.imageFile; image.border = 0; image.style.cursor = "pointer"; var ref = document.createElement("a") ref.setAttribute("href", "javascript:insertTags(\"" + item.tagOpen + "\",\"" + item.tagClose + "\",\"" + item.sampleText + "\");") ref.setAttribute("title", item.speedTip); ref.appendChild(image); parent.appendChild(ref); } // Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText) { mwCustomEditButtons[mwCustomEditButtons.length] = {"imageFile": imageFile, "speedTip": speedTip, "tagOpen": tagOpen, "tagClose": tagClose, "sampleText": sampleText}; } addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/8f/Button_poeme.png','Poesia','<poem>\\n','\\n</poem>',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png','Categoria','\[\[Categoria:','\]\]','título da categoria'); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png','Inserir nota de rodapé','<ref>','</ref>',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9a/Button_references.png','Gerar índice das notas de rodapé','<references />','',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/78/Button_titre.png','Barra de navegação padrão','\{\{navegar\\n|obra=','\\n|autor=\\n|anterior=\\n|posterior=\\n|seção=\\n|notas=\\n}\}',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/03/Button_chapitre.png','Barra de navegação para Hinos','\{\{hino\\n|obra=','\\n|letra por=\\n|melodia por=\\n|notas=\\n}\}',''); addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/38/Button_plume.png','Predefinição para páginas de prefixo Autor:','\{\{autor\\n| InicialUltimoNome =','\\n| Imagem =\\n| Nome =\\n| Datas =\\n| Wikipedia =\\n| Wikiquote =\\n| Wikicommons =\\n| MiscBio =\\n}\}',''); /* onglets */ /* modifica ''discussione'' in ''fonte'' (it.wikisource) */ function onglets() { if( document.getElementById("copyrightinfo") ) { var a = document.getElementById("ca-talk"); if(a){ a = a.firstChild; var s = a.innerHTML; var i = s.lastIndexOf('Discussão'); a.innerHTML = s.substring(0,i)+"dados de copyright"; } } } addOnloadHook(onglets); /* killTitle: nasconde il titolo e i link alle pagine madri Da [[:it:Utente:Pietrodn]]. */ function killTitle() { if(document.getElementById('NoTitle')) { var fh = getElementsByClassName('firstHeading')[0]; var sp = getElementsByClassName('subpages')[0]; var ss = document.getElementById('siteSub'); fh.style.display = ss.style.display = 'none'; if(sp) sp.style.display = 'none'; } } function getElementsByClassName(classname) { lst = document.getElementsByTagName('*'); newlst = new Array(); i = 0; for (i=0; i < lst.length; i++) { if(lst[i].className == classname) newlst.push(lst[i]); } return newlst; } addLoadEvent(killTitle); /** Opção de visualização para página transclusionada**************************************** * Origem: [[:fr:MediaWiki:Monobook.js]] * Autor: ThomasV * Descrição: Permite ocultar/visualização as ligações para textos transclusionados do domínio * Página. ********************************************************************************************/ //Cookies function SetCookie(name,value) { document.cookie = name + "=" + escape(value); } function GetCookie(name) { var i =0; while (i < document.cookie.length) { if (document.cookie.substr(i,name.length) == name) { var valend = document.cookie.indexOf(";",i+name.length+1); if (valend == -1) { valend = document.cookie.length; } return unescape(document.cookie.substring(i+name.length+1,valend)); } i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } } function OptionText() { var indexNavigationBar = 0; // iterate over all < span >-elements until class "OptionText" is found for( var i=0; SpanElem = document.getElementsByTagName("span")[i]; i++ ) { // if found an option span if (SpanElem.className == "OptionText") { //SpanElem.style.display = 'none'; OptionTitle = SpanElem.title; OptionStyle = SpanElem.firstChild.getAttribute('style'); //check if option was already encountered... if(!document.getElementById(OptionTitle)){ //read cookie var DisplayOptionDefault = false; CookieDisplayOption = GetCookie ("Display"+OptionTitle) if (CookieDisplayOption ) { if (CookieDisplayOption == "false") DisplayOptionDefault = false; } var PageDisplay = document.createElement("li"); PageDisplay.setAttribute('id', OptionTitle); var PageDisplayLink = document.createElement("a"); OptionText = document.createTextNode("Desativar "+OptionTitle); PageDisplayLink.appendChild(OptionText); PageDisplayLink.setAttribute('href','javascript:displayOptionText("'+OptionTitle+'","' + OptionStyle +'", '+DisplayOptionDefault+');'); PageDisplay.appendChild(PageDisplayLink); var optlist = document.getElementById("optlist"); if(!optlist) { var displayOptions = document.createElement("div"); displayOptions.style.marginTop = "0.7em"; displayOptions.innerHTML = '<h5>Opções de visualização<\/h5><div class="pBody"><ul id="optlist"></ul><\/div>'; document.getElementById("p-tb").appendChild(displayOptions); optlist = document.getElementById("optlist"); } optlist.appendChild(PageDisplay); displayOptionText(OptionTitle,OptionStyle,DisplayOptionDefault); } } } } function displayOptionText(optiontitle, optionstyle, bool) { SetCookie ("Display"+optiontitle,bool); var PageDisplayLink = document.getElementById(optiontitle).firstChild;; // iterate over all < span >-elements for( var i=0; SpanElem = document.getElementsByTagName("span")[i]; i++ ) { // if found an option text if ((SpanElem.className == "OptionText") && (SpanElem.title == optiontitle)) { if(bool==true ) { SpanElem.setAttribute('style',optionstyle); PageDisplayLink.firstChild.data = (optiontitle); PageDisplayLink.setAttribute('href', 'javascript:displayOptionText("'+optiontitle+'","'+optionstyle+'", false);'); } if(bool==false) { SpanElem.setAttribute('style','null'); PageDisplayLink.firstChild.data = (optiontitle); PageDisplayLink.setAttribute('href', 'javascript:displayOptionText("'+optiontitle+'","'+optionstyle+'", true);'); } } } } addOnloadHook(OptionText); /* Forçar mostrar previsão a IPs no domínio Anexo: */ /* para reduzir a quantia de fichas criadas acidentalmente */ /* by 555, baseado em script de Marc Mongenet, 2006, fr.wikipedia */ function forcePreview() { if (wgUserName != null || wgAction != "edit" || wgNamespaceNumber != 110) return; saveButton = document.getElementById("wpSave"); if (!saveButton) return; saveButton.disabled = true; saveButton.value = "Salvar página"; saveButton.style.fontWeight = "normal"; document.getElementById("wpPreview").style.fontWeight = "bold"; } addOnloadHook(forcePreview); /* Fim do forçar mostrar previsão a IPs no domínio Anexo: */ /********************** *** Automatically generate page footer from values in {{navegar}} *** by [[user:GrafZahl]] **********************/ function DisplayFooter() { if(document.getElementById && wgNamespaceNumber==0) { nofooter = document.getElementById('nofooter'); hp = document.getElementById('headerprevious'); hn = document.getElementById('headernext'); content = document.getElementById('bodyContent'); catlinks = document.getElementById('catlinks'); footer = document.createElement('table'); //header_template = document.getElementById('headertemplate'); if( (!((content) && (footer))) || (nofooter)) return; footer.setAttribute('class', 'headertemplate'); footer.setAttribute('id', 'footertemplate'); footer.setAttribute('style', 'margin-top:1em; clear:both;'); /* Begin footer HTML code */ tr = document.createElement('tr'); //create the 'previous' link if (hp) { td = document.createElement('td'); td.setAttribute('align', 'left'); td.setAttribute('width', '33%'); fp = hp.cloneNode(true); fp.setAttribute('id', 'footerprevious'); td.appendChild(fp); } tr.appendChild(td); //create the 'top' link td = document.createElement('td'); td.setAttribute('align', 'center'); td.setAttribute('width', '34%'); a = document.createElement('a'); a.setAttribute('href', '#top'); text = document.createTextNode('Voltar ao topo da página'); a.appendChild(text); td.appendChild(a); tr.appendChild(td); //create the 'next' link if (hn) { td = document.createElement('td'); td.setAttribute('align', 'right'); td.setAttribute('width', '33%'); fn = hn.cloneNode(true); fn.setAttribute('id', 'footernext'); td.appendChild(fn); tr.appendChild(td); } footer.appendChild(tr); /* End footer HTML code */ if(catlinks) // place footer before category box content.insertBefore(footer, catlinks); else content.appendChild(footer); } } addOnloadHook(DisplayFooter); /*HERE STARTS THE WORKING-CODE OF "METABOXES"*/ /* Funcionament de la Plantilla:Metacaixa Implementat per: Usuari:Peleguer. Actualitzat per Joanjoc seguint les indicacions d'en Martorell */ function MetaCaixaInit(){ //S'executa al carregar-se la pàgina, si hi ha metacaixes, // s'assignen els esdeveniments als botons //alert("MetaCaixaInit"); var i=0 //Inicialitzem comptador de caixes for (i=0;i<=9;i++){ var vMc = document.getElementById("mc"+i); if (!vMc) break; //alert("MetaCaixaInit, trobada Metacaixa mc"+i); var j=1 //Inicialitzem comptador de botons dins de la caixa var vPsIni = 0 //Pestanya visible inicial for (j=1;j<=9;j++){ var vBt = document.getElementById("mc"+i+"bt"+j); if (!vBt) break; //alert("MetaCaixaInit, trobat botó mc"+i+"bt"+j); vBt.onclick = MetaCaixaMostraPestanya; //A cada botó assignem l'esdeveniment onclick //alert (vBt.className); if (vBt.className=="mcBotoSel") vPsIni=j; //Si tenim un botó seleccionat, en guardem l'index } //alert ("mc="+i+", ps="+j+", psini="+vPsIni ); if (vPsIni == 0) { //Si no tenim cap botó seleccionat, n'agafem un aleatòriament vPsIni = 1+Math.floor((j-1)*Math.random()) ; //alert ("Activant Pestanya a l'atzar; _mc"+i+"bt"+vPsIni +"_"); document.getElementById("mc"+i+"ps"+vPsIni).style.display = "block"; document.getElementById("mc"+i+"ps"+vPsIni).style.visibility = "visible"; document.getElementById("mc"+i+"bt"+vPsIni).className="mcBotoSel"; } } } function MetaCaixaMostraPestanya(){ //S'executa al clicar una pestanya, //aquella es fa visible i les altres s'oculten var vMcNom = this.id.substr(0,3); //A partir del nom del botó, deduïm el nom de la caixa var vIndex = this.id.substr(5,1); //I l'index var i=1 for (i=1;i<=9;i++){ //busquem totes les pestanyes d'aquella caixa //alert(vMcNom+"ps"+i); var vPsElem = document.getElementById(vMcNom+"ps"+i); if (!vPsElem) break; if (vIndex==i){ //Si és la pestanya bona la mostrem i canviem la classe de botó vPsElem.style.display = "block"; vPsElem.style.visibility = "visible"; document.getElementById(vMcNom+"bt"+i).className="mcBotoSel"; } else { //Sinó, l'ocultem i canviem la classe de botó vPsElem.style.display = "none"; vPsElem.style.visibility = "hidden"; document.getElementById(vMcNom+"bt"+i).className="mcBoto"; } } return false; //evitem la recàrrega de la pàgina } addOnloadHook(MetaCaixaInit); /*HERE FINISHES THE WORKING-CODE OF "METABOXES"*/ document.write('<script type="text/javascript" src="http://de.wiktionary.org/w/index.php?title=MediaWiki:If-search.js&action=raw&ctype=text/javascript&dontcountme=s"><\/script>'); /* OCR button */ function addOCR(form,value){ if(value =="OCR"){ s = form.elements["wpTextbox1"].value; if(s==""){ form.elements["wpTextbox1"].value="{"+"{"+"OCR"+"}"+"}"; form.elements["wpSummary"].value="/*OCR*/"; } proofreadPageFillForm(); } } function addOCRButton(){ if((wgCanonicalNamespace == "Página") && (!wgCurRevisionId) && (self.proofreadPageViewURL)){ var sb = document.getElementById("wpSave"); if(sb){ //sb.parentNode.innerHTML = sb.parentNode.innerHTML+'<input id="wpOcr" name="ocr" type="submit" accesskey="o" value="OCR" title="OCR" onclick="addOCR(this.form,this.value);"/>'; input=document.createElement("input"); input.setAttribute('id','wpOcr'); input.setAttribute('type','submit'); input.setAttribute('title','OCR'); input.setAttribute('value','OCR'); input.setAttribute('tabindex','10'); input.setAttribute('onclick',"addOCR(this.form,this.value);"); sb.parentNode.insertBefore(input,sb) } var msg = document.getElementById("noTextMsg"); if(msg){ s = msg.innerHTML; s = s.replace(/vous pouvez <a href=(.*?)<\/a> ou (.*?)modifier cette page<\/a>\./g, 'vous pouvez ajouter le texte, ou demander une OCR automatique depuis la $2page d\'édition</a>.' ); msg.innerHTML=s; } var msg = document.getElementById("msgNewarticletext"); if(msg){ msg.innerHTML='You are editing a page that does not exist.<br/>You may request an OCR by clicking on the OCR button at the bottom of this page.'; } } } addOnloadHook(addOCRButton); var proofreadpage_debug=1;