Saltar para o conteúdo

MediaWiki:Common.js: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
m
m
Linha 246: Linha 246:
hookEvent("load", iProject);
hookEvent("load", iProject);
/*



/** Force IP Preview ***********************************************************************
* Descrição: Obriga utilizadores não registrados a previsualizarem suas edições antes de salvá-las.
********************************************************************************************/
// Force IP to preview before saving changes.
// Copyright Marc Mongenet, 2006
function forcePreview()
{
if (wgUserName != null) return;
var saveButton = document.getElementById("wpSave");
if (!saveButton) return;
if (location.search.search(/&action=edit/) == -1) return;
saveButton.disabled = true;
saveButton.style.fontWeight = "normal";
document.getElementById("wpPreview").style.fontWeight = "bold";
}
addLoadEvent(forcePreview);




/** Importar módulos JavaScript e CSS *******************************************************
/** Importar módulos JavaScript e CSS *******************************************************

Revisão das 22h54min de 25 de janeiro de 2008

/* Any JavaScript here will be loaded for all users on every page load. */


 /** Tooltips ********************************************************************************
  *  Descrição: JS para exibir os "tooltips" da Wikipédia.
  ********************************************************************************************/
 ta = new Object();
 
 ta['pt-userpage'] = new Array('.','Minha página de usuário');
 ta['pt-anonuserpage'] = new Array('.','O número IP da página de usuário que está sendo editada é');
 ta['pt-mytalk'] = new Array('n','Minha discussão');
 ta['pt-anontalk'] = new Array('n','Discussão sobre este número IP');
 ta['pt-preferences'] = new Array('','Minhas preferências');
 ta['pt-watchlist'] = new Array('l','Lista de páginas vigiadas');
 ta['pt-mycontris'] = new Array('y','Lista de minhas contribuições');
 ta['pt-login'] = new Array('o','Você é encorajado a registrar-se ou autenticar-se, mas isso não é mandatório.');
 ta['pt-anonlogin'] = new Array('o','Você é encorajado a registrar-se ou autenticar-se, mas isso não é mandatório.');
 ta['pt-logout'] = new Array('o','Sair');
 ta['ca-talk'] = new Array('t','Discussão sobre o conteúdo da página');
 ta['ca-edit'] = new Array('e','Você pode editar esta página. Por favor, use o botão Mostrar Previsão antes de salvar.');
 ta['ca-addsection'] = new Array('+','Adicionar comentário a essa discussão');
 ta['ca-viewsource'] = new Array('e','Esta página está protegida; você pode exibir seu código, no entanto.');
 ta['ca-history'] = new Array('h','Edições anteriores desta página.');
 ta['ca-protect'] = new Array('=','Proteger esta página');
 ta['ca-delete'] = new Array('d','Apagar esta página');
 ta['ca-undelete'] = new Array('d','Restaurar edições feitas a esta página antes de sua eliminação');
 ta['ca-move'] = new Array('m','Renomear esta página');
 ta['ca-nomove'] = new Array('','Você não tem permissões para mover esta página');
 ta['ca-watch'] = new Array('w','Adicionar esta página aos artigos vigiados');
 ta['ca-unwatch'] = new Array('w','Remover esta página dos artigos vigiados');
 ta['search'] = new Array('f','Procurar neste wiki');
 ta['p-logo'] = new Array('','Página principal');
 ta['n-mainpage'] = new Array('z','Visita a página principal');
 ta['n-portal'] = new Array('','Sobre o projeto e coisas que você poder fazer aqui');
 ta['n-currentevents'] = new Array('','Informação temática sobre eventos atuais');
 ta['n-recentchanges'] = new Array('r','A lista de mudanças recentes neste wiki');
 ta['n-randompage'] = new Array('x','Carregar página aleatória');
 ta['n-help'] = new Array('','Um local reservado para auxílio');
 ta['n-sitesupport'] = new Array('','Ajude-nos');
 ta['t-whatlinkshere'] = new Array('j','Lista de todas as páginas que ligam-se a esta'); 
 ta['t-recentchangeslinked'] = new Array('k','Mudanças recentes em páginas relacionadas a esta'); 
 ta['feed-rss'] = new Array('','Feed RSS desta página'); 
 ta['feed-atom'] = new Array('','Feed Atom desta página'); 
 ta['t-contributions'] = new Array('','Ver as contribuições deste usuário'); 
 ta['t-emailuser'] = new Array('','Enviar um e-mail para este usuário'); 
 ta['t-upload'] = new Array('u','Carregar imagens ou arquivos de mídia'); 
 ta['t-specialpages'] = new Array('q','Lista de páginas especiais'); 
 ta['ca-nstab-main'] = new Array('c','Ver o conteúdo da página'); 
 ta['ca-nstab-user'] = new Array('c','Ver a página de usuário'); 
 ta['ca-nstab-media'] = new Array('c','Ver a página de mídia'); 
 ta['ca-nstab-special'] = new Array('','Esta é uma página especial, não pode ser editada.'); 
 ta['ca-nstab-wp'] = new Array('a','Ver a página de projeto'); 
 ta['ca-nstab-image'] = new Array('c','Ver a página de imagem'); 
 ta['ca-nstab-mediawiki'] = new Array('c','Ver a mensagem do sistema'); 
 ta['ca-nstab-template'] = new Array('c','Ver a predefinição'); 
 ta['ca-nstab-help'] = new Array('c','Ver a página de ajuda'); 
 ta['ca-nstab-category'] = new Array('c','Ver a página da categoria');
 ta['ca-nstab-portal'] = new Array('p','Ver o Portal');


 
 /** Helpers ************************************************************************
  *  Descrição:
  *      Autor:
  ********************************************************************************************/
 if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
 {
   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);
   attachEvent("onresize", fixIEScroll);
 }
 
 function addLoadEvent(func) 
 {
   if (window.addEventListener) 
     window.addEventListener("load", func, false);
   else if (window.attachEvent) 
     window.attachEvent("onload", func);
 }



 /** Link destaque ***************************************************************************
  *  Descrição: Adiciona estrela ao lado da ligação dos artigos destacados das outras Wikipédias
  ********************************************************************************************/
function LinkFA() 
 {
     if ( document.getElementById( "p-lang" ) ) {
         var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
 
         for ( var i = 0; i < InterwikiLinks.length; i++ ) {
             if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) {
                 InterwikiLinks[i].className += " FA"
                 InterwikiLinks[i].title = "Este artigo recebeu estatuto de destaque.";
             }
         }
     }
 }
 
 addOnloadHook( LinkFA );



 
 /** Barra de navegação **********************************************************************
  *  Descrição:
  ********************************************************************************************/
 // set up the words in your language
 var NavigationBarHide = '[ Esconder ]';
 var NavigationBarShow = '[ Expandir ]';
 
 // 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 = 1;
 
 
 // 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);


 
 /** Correlatos ******************************************************************************
  *  Descrição:Correlatos no menu lateral. Código copiado do de:wikt
  ********************************************************************************************/
 // InterProjekt-Links (vgl. [[MediaZilla:708]])
 document.write('<style type="text/css">#interProject {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);
  }
 }
 hookEvent("load", iProject);
 

 /** Importar módulos JavaScript e CSS *******************************************************
  *    Origem: [[:w:en:MediaWiki:Common.js]]
  * Descrição: Simplifica o código para instalação de módulos pessoais JavaScript e CSS
  *     Autor: [[:w:en:User:AzaToth]]
  ********************************************************************************************/
 importedScripts = {}; // object keeping track of included scripts, so a script ain't included twice
 function importScript( page ) {
     if( importedScripts[page] ) {
         return;
     }
     importedScripts[page] = true;
     var url = wgScriptPath
             + '/index.php?title='
             + encodeURIComponent( page.replace( / /g, '_' ) )
             + '&action=raw&ctype=text/javascript';
     var scriptElem = document.createElement( 'script' );
     scriptElem.setAttribute( 'src' , url );
     scriptElem.setAttribute( 'type' , 'text/javascript' );
     document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
 }
 
 function importStylesheet( page ) {
     var sheet = '@import "'
               + wgScriptPath
               + '/index.php?title='
               + encodeURIComponent( page.replace( / /g, '_' ) )
               + '&action=raw&ctype=text/css";'
     var styleElem = document.createElement( 'style' );
     styleElem.setAttribute( 'type' , 'text/css' );
     styleElem.appendChild( document.createTextNode( sheet ) );
     document.getElementsByTagName( 'head' )[0].appendChild( styleElem );
 }


 /** Importar módulos JavaScript de páginas da fr.wikipedia.org ******************************
  * Obs: Importar os demais scripts utilizados da página francesa e utilizar o
  * importScript() acima, que opossui a mesma função.
  ********************************************************************************************/
 function loadJs(page)
 {
  document.write('<script type="text/javascript" src="' +
                'http://fr.wikipedia.org/w/index.php?title=' + page +
                '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 }



 /** Altera o título da página **************************************************************
  *    Origem: [[:w:en:MediaWiki:Common.js]]
  * Descrição: A função procura por um banner como:
  * <nowiki><div id="RealTitleBanner">Div that is hidden</nowiki>
  *   <nowiki><span id="RealTitle">title</span></nowiki>
  * <nowiki></div></nowiki>
  * An element with id=DisableRealTitle disables the function.
  ********************************************************************************************/

 rewritePageH1 = function() {
    try {
        var realTitleBanner = document.getElementById("RealTitleBanner");
        if (realTitleBanner) {
            if (!document.getElementById("DisableRealTitle")) {
                var realTitle = document.getElementById("RealTitle");
                var h1 = document.getElementsByTagName("h1")[0];
                if (realTitle && h1) {
                    h1.innerHTML = realTitle.innerHTML;
                    realTitleBanner.style.display = "none";
                }
            }
        }
    } 
 catch (e) {
    /* Algo deu errado. */
    }
 }
 addOnloadHook(rewritePageH1);



 /** Pesquisa em vários motores de busca *****************************************************
  *    Origem: [[:w:en:MediaWiki:Common.js]]
  * Descrição: acrescenta um menu drop-down na página [[Especial:Search]] para pesquisar em vários motores de busca
  *     Autor: [[:w:en:User:Gracenotes]]
  ********************************************************************************************/
 if (wgPageName == "Especial:Search") {
         var searchEngines = [];
         addOnloadHook(SpecialSearchEnhanced);
 }
 
 function SpecialSearchEnhanced() {
         var createOption = function(site, action, mainQ, addQ, addV) {
                 var opt = document.createElement('option');
                 opt.appendChild(document.createTextNode(site));
                 searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
                 return opt;
         }
         var searchForm = document.forms['search'];
         var selectBox = document.createElement('select');
         selectBox.id = 'searchEngine';
         searchForm.onsubmit = function() {
                 var optSelected = searchEngines[document.getElementById('searchEngine').selectedIndex];
                 searchForm.action = optSelected[0];
                 searchForm.lsearchbox.name = optSelected[1];
                 searchForm.title.value = optSelected[3];
                 searchForm.title.name = optSelected[2];
         }
         selectBox.appendChild(createOption('Wikipédia', wgScriptPath + '/index.php', 'search', 'title', 'Especial:Search'));
         selectBox.appendChild(createOption('WikiWix', 'http://pt.wikiwix.com/', 'action', '', ''));
         selectBox.appendChild(createOption('Google', 'http://www.google.pt/search', 'q', 'as_sitesearch', 'pt.wikipedia.org'));
         selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'pt.wikipedia.org'));
         selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://pt.wikipedia.org'));
 
         searchForm.lsearchbox.style.marginLeft = '0px';
         var lStat = document.getElementById('loadStatus');
         lStat.parentNode.insertBefore(selectBox, lStat);
 }


 /** Wiki Mini Atlas ************************************************************************
  *  Descrição: Mini atlas para artigos com geocoodernadas.
  *      Autor: [[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&dontcountme=s"></script>');
  var wma_settings =
  {
      height : 300,
      width : 500
  }

if(document.getElementById && !document.location.href.match("action=edit") && !document.location.href.match("action=submit")) {
 function loadLoginForm() {
  var box = document.getElementById("irclogin");
  var html = null;
  if(box) {
    html  = '<form method="post" action="http://chatwikizine.memebot.com/cgi-bin/cgiirc/irc.cgi" target="_blank" id="loginform" name="loginform">';
    html += '  <input type="hidden" id="interface" "name="interface" value="nonjs"/>';
    html += '  <input type="text" size="25" id="Nickname" name="Nickname" value="' + nickify(wgUserName) + '" onfocus="clear_text(this)"/>';
    html += '  <select id="metodo" name="metodo" onChange="setServer();"> <option value="cgi">CGI</option><option value="Java">Java</option> </select>';
    html += '  <input type="hidden" name="Character_set" value="utf-8"/>';
    html += '  <input type="hidden" id="rede" name="Server" value="irc.freenode.net"/>';
    html += '  <input type="hidden" id="ch" name="Channel" value="#wikipedia-pt"/>';
    html += '  <input type="submit" value="entrar" onclick="document.getElementById(\'loginform\').submit();"/>';
    html += '</form>';
    box.innerHTML = html;
  }
 }
 function setServer() {
  var selMetodo=document.getElementById("metodo");
  var nmMetodo=selMetodo.options[selMetodo.selectedIndex].value;
  if(nmMetodo == 'Java') {
     document.getElementById("rede").name = 'h';
     document.getElementById("Nickname").name = 'n';
     document.getElementById("ch").name = 'ch';
     document.getElementById("loginform").action = 'http://czat.computerserv.pl/';
  }else if(nmMetodo == 'cgi') {
         document.getElementById("rede").name = 'Server';
         document.getElementById("Nickname").name = 'Nickname';
         document.getElementById("ch").name = 'Channel';
         document.getElementById("loginform").action = 'http://chatwikizine.memebot.com/cgi-bin/cgiirc/irc.cgi';
        }
  setjs();
  }

 
  function nickify(s) {
    if(s == null) {
      return "anon" + Math.floor(Math.random()*100);
    }
    s = s.toLowerCase();
    s = s.replace(" ", "_");
    s = s.replace(/á/g, 'a');
    s = s.replace(/é/g, 'e');
    s = s.replace(/í/g, 'i');
    s = s.replace(/[óő]/g, 'o');
    s = s.replace(/[úű]/g, 'u');
    s = s.replace(/[^a-z0-9_-]/g, '');
    return s;
  }
 
  var irclogin_cleared = 0;
  function clear_text(field) {
    if(irclogin_cleared == 0) {
      irclogin_cleared = 1;
      field.value = "";
    }
  }
  function setjs() {
    if(navigator.product == 'Gecko') {
      document.loginform["interface"].value = 'mozilla';
    } else if(window.opera && document.childNodes) {
      document.loginform["interface"].value = 'opera7';
    } else if(navigator.appName == 'Microsoft Internet Explorer' &&
      navigator.userAgent.indexOf("Mac_PowerPC") > 0) {
      document.loginform["interface"].value = 'konqueror';
    } else if(navigator.appName == 'Microsoft Internet Explorer') {
      document.loginform["interface"].value = 'ie';
    } else if(navigator.appName == 'Konqueror') {
      document.loginform["interface"].value = 'konqueror';
    } else if(window.opera) {
      document.loginform["interface"].value = 'opera';
    }
  }
 
  addOnloadHook(loadLoginForm);
}


 /** Corretor de transparência de PNG em Win IE 5.5 & 6.*************************************
  *      Autor: http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.
  *  Descrição: Mini atlas para artigos com geocoodernadas.
                Adapted for Wikipedia by Remember_the_dot and Edokter
                http://homepage.ntlworld.com/bobosola/pnginfo.htm states "This page contains more information for
                the curious or those who wish to amend the script for special needs", which I take as permission to
                modify or adapt this script freely. I release my changes into the public domain.
  ********************************************************************************************/
 
function PngFix()
{
    if (document.body.filters)
    {
        var documentImages = document.images
        for (var i = 0; i < documentImages.length;)
        {
            var img = documentImages[i]
            var imgSrc = img.src
            if (imgSrc.substr(imgSrc.length - 3).toLowerCase() == "png")
            {
                if (img.currentStyle.borderStyle == "none")
                {
                    img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(imgSrc) + "')"
                    img.src = "http://upload.wikimedia.org/wikipedia/commons/d/db/Must_left-click_image_again_before_saving.gif"
                    i++
                }
                else
                {
                    var outerSpan = document.createElement("span")
                    var innerSpan = document.createElement("span")
                    var outerSpanStyle = outerSpan.style
                    var innerSpanStyle = innerSpan.style
                    var imgStyle = img.currentStyle
 
                    outerSpan.id = img.id
                    outerSpan.className = img.className
                    outerSpan.title = img.title
                    outerSpanStyle.borderWidth = imgStyle.borderWidth
                    outerSpanStyle.borderStyle = imgStyle.borderStyle
                    outerSpanStyle.borderColor = imgStyle.borderColor
                    outerSpanStyle.display = "inline-block"
                    outerSpanStyle.fontSize = "0"
                    outerSpanStyle.verticalAlign = "middle"
                    if (img.parentElement.href) outerSpanStyle.cursor = "hand"
 
                    innerSpanStyle.width = img.width + "px"
                    innerSpanStyle.height = img.height + "px"
                    innerSpanStyle.display = "inline-block"
                    innerSpanStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + encodeURI(imgSrc) + "')"
 
                    outerSpan.appendChild(innerSpan)
                    img.parentNode.replaceChild(outerSpan, img)
                }
            }
            else
            {
                i++
            }
        }
    }
}
 
if (navigator.appName == "Microsoft Internet Explorer")
{
  var version = navigator.appVersion.substr(22, 3)
  if (version == "6.0" || version == "5.5")
  {
    window.attachEvent("onload", PngFix)
  }
}