MediaWiki:Common.js e Ajuda:Página de testes/2: diferenças entre as páginas

(Diferenças entre páginas)
Página 1
Página 2
Conteúdo apagado Conteúdo adicionado
Desfeita a edição 62511167 de Albertoleoncio (As categorias não estão nos artigos, estão nas discussões deles)
Etiqueta: Desfazer
 
 
Linha 1: Linha 1:
/* Qualquer código JavaScript presente aqui será carregado por todos os usuários em cada página carregada. */
/* Todo código JavaScript presente aqui será carregado por todos os usuários em cada página carregada. */
/*jshint camelcase: true, curly: true, eqeqeq: true, immed: true, latedef: true, newcap: true, noarg: true, noempty: true, nonew: true, quotmark: single, trailing: true, undef: true, unused: true, bitwise: true, forin: true, regexp: true, strict: true, onevar: true, laxbreak: true */
/*global mw, $ */


( function () {
'use strict';
/**
/**
* Extração de um parâmetro da URL atual ou da URL fornecida
* Oculta botão editar da [[Wikipédia:Esplanada/propostas]] e da [[Wikipédia:Esplanada/geral]]
* @deprecated: Use mw.util.getParamValue(paramName, [optional: url]) em vez desta função.
*/
function getURLParamValue( paramName, url ) {
return mw.util.getParamValue( paramName, url );
}

/* Test if an element has a certain class
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*
*
* @deprecated: Use $(element).hasClass() instead.
* @author: Helder (https://github.com/he7d3r)
* @license: CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0/>
*/
*/
var hasClass = (function () {
/* Desativado por causar erro: $.collapsibleTabs.getSettings(...) is undefined ([[phab:T177108]])
var reCache = {};
mw.loader.using( 'mediawiki.util', function () {
function hideEditButton() {
return function (element, className) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp( '(?:\\s|^)' + className + '(?:\\s|$)' ))).test(element.className);
var temp = 'Template:Esplanada2/Preload';
};
})();


//Scripts para páginas e/ou domínios específicos
if ( mw.config.get( 'wgUserLanguage' ) !== 'pt' ) {
switch( mw.config.get( 'wgCanonicalNamespace' ) ) {
temp += '/en';
case 'Special':
}
switch( mw.config.get( 'wgTitle' ) ) {
case 'Pesquisar':
// Scripts específicos para a página de pesquisas
//TAREFA: Corrigir o script da página de pesquisa para que funcione com o servidor seguro
if ( mw.config.get( 'wgServer' ) !== 'https://secure.wikimedia.org' ) {
importScript( 'MediaWiki:Common.js/search.js' );
}
break;
case 'Carregar imagem':
importScript( 'MediaWiki:UploadForm.js' );
break;
case 'Páginas vigiadas':
importScript( 'MediaWiki:Common.js/watchlist.js');
break;
}
break;
case 'Project':
case 'Project_talk':
switch( mw.config.get( 'wgTitle' ) ) {
case 'Página principal':
/**
* Melhorias na página principal
* Adiciona um link a lista completa de wikipédias em outras línguas e altera o texto exibido na aba
*
* @author: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
* @source: [[en:MediaWiki:Common.js]]
*/
$(function () {
mw.util.addPortletLink( 'p-lang', mw.util.wikiGetlink( 'Wikipédia:Wikipédia em outras línguas' ),
'Lista completa', 'interwiki-completelist', 'Lista completa de Wikipédias' );
if ( mw.config.get( 'wgUserLanguage' ).substr( 0, 2 ) === 'pt' ) {
$( '#ca-nstab-project a' ).text( 'Página principal' );
}
});
break;
case 'Esplanada/propostas':
case 'Esplanada/geral':
/*
* Oculta botão editar da [[Wikipédia:Esplanada/propostas]] e da [[Wikipédia:Esplanada/geral]]
*/
$(function () {
var href = mw.util.wikiGetlink( mw.config.get( 'wgPageName' ) )
+ '?action=edit&section=new&preload=Template:Esplanada2/Preload';
if ( mw.config.get( 'wgUserLanguage' ).substr( 0, 2 ) !== 'pt' ) {
href += '/en';
}
$( '#ca-addsection a' ).attr( 'href', href );
if ( 'vector' === mw.config.get( 'skin' ) ) {
// Move o botão "editar" para o menu de ações
$('#ca-edit').appendTo('#p-cactions ul');
}
});
break;
}
break;
case 'File':
// Adiciona links para versões PNG em imagens SVG
importScript( 'MediaWiki:Common.js/SVGPNG.js' );
break;
case 'MediaWiki':
break;
default:
// Todos os demais domínios
importScript( 'MediaWiki:Wikibugs.js' );
}


if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) {
$( '#ca-addsection' ).find( 'a' ).attr(
//scripts específicos para editar páginas
'href',
importScript( 'MediaWiki:Common.js/edit.js' );
mw.util.getUrl( mw.config.get( 'wgPageName' ), {
}
action: 'edit',
if ( $.client.profile().name === 'msie' ) {
section: 'new',
//scripts específicos para Internet Explorer
preload: temp
importScript( 'MediaWiki:Common.js/IEFixes.js' );
} )
}
);


/**
if ( mw.config.get( 'skin' ) === 'vector' ) {
* Adiciona as predefinições {protegido} e {protegido-ip} às páginas protegidas
// Move o botão "editar" para o menu de ações
* @author: [[:pt:User:Rei-artur]]
$( '#p-cactions' ).removeClass( 'emptyPortlet' ).find( 'ul' ).append( $( '#ca-edit' ) );
}
*/
if ( mw.config.get( 'wgAction' ) === 'view'
&& !mw.config.get( 'wgCanonicalSpecialPageName' )
&& !$.isEmpty( mw.config.get( 'wgRestrictionEdit' ) )
&& ( mw.config.get( 'wgRestrictionEdit' )[0] === 'autoconfirmed' || mw.config.get( 'wgRestrictionEdit' )[0] === 'sysop' )
&& mw.config.get( 'wgPageName' ) !== 'Wikipédia:Página_principal' )
{
importScript( 'MediaWiki:Topicon.js' );
}
}

if ( $.inArray( mw.config.get( 'wgPageName' ), [ 'Wikipédia:Esplanada/propostas', 'Wikipédia:Esplanada/geral' ] ) !== -1 ) {
/**
$( hideEditButton );
* Banners para dicas e doações vista apenas por anônimos
* Frases aleatórias que podem ser vistas por anônimos
*
* @author: [[:en:User:Gmaxwell]], [[:en:User:MZMcBride]]
*/
if ( mw.config.get( 'wgUserName' ) === null ) {
importScript( 'MediaWiki:WikiBanners.js' );
}

/**
* Manter no servidor seguro quem se loga pelo servidor seguro quando muda para outro projeto
* Sem este código, o usuário logado por https quando segue um interwiki, usa http e será deslogado (os logins são independentes).
*/
if ( mw.config.get( 'wgServer' ) === 'https://secure.wikimedia.org' ) {
importScript( 'MediaWiki:Common.js/secure.js' );
}

/** Parâmetro &withJS= para a URL
* Permite que sejam testados scripts do domínio MediaWiki
* sem precisar editar [[Especial:Minha página/vector.js]]
*/
var extraJS = mw.util.getParamValue( 'withJS' );
if (extraJS && extraJS.match( '^MediaWiki:[^&<>=%]*\.js$' )) {
importScript(extraJS);
}

/**
* Link destaque
*
* 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 foi classificado como destacado.';
} else if (document.getElementById(InterwikiLinks[i].className + '-fl' )) {
InterwikiLinks[i].className += ' FL';
InterwikiLinks[i].title = 'Este anexo foi classificado como destacado.';
}
}
}
}
}
});*/

$( LinkFA );

/**
/**
* Link bom
* Parâmetros &withCSS= e &withJS= para a URL
*
*
* Adiciona estrela prateada ao lado da ligação dos artigos bons das outras Wikipédias
* Permite que sejam testados scripts e folhas de estilos do domínio MediaWiki
* sem precisar editar páginas ".css" ou ".js" pessoais
* @source https://www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @revision 2020-04-04
*/
*/
mw.loader.using( ['mediawiki.util'], function () {
function Bominterwiki() {
if (document.getElementById( 'p-lang' )) {
var extraCSS = mw.util.getParamValue( 'withCSS' ),
var InterwikiLinks = document.getElementById( 'p-lang' ).getElementsByTagName( 'li' );
extraJS = mw.util.getParamValue( 'withJS' );


for (var i = 0; i < InterwikiLinks.length; i++) {
if ( extraCSS ) {
if (document.getElementById(InterwikiLinks[i].className + '-bom' )) {
// WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
InterwikiLinks[i].className += ' BOM';
if ( /^MediaWiki:[^&<>=%#]*\.css$/.test( extraCSS ) ) {
InterwikiLinks[i].title = 'Este artigo foi classificado como bom.';
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
}
mw.notify( 'Só são permitidas páginas do domínio MediaWiki.', { title: 'Valor withCSS inválido' } );
}
}
}
}
}


$( Bominterwiki );
if ( extraJS ) {

// WARNING: DO NOT REMOVE THIS "IF" - REQUIRED FOR SECURITY (against XSS/CSRF attacks)
/** Correlatos
if ( /^MediaWiki:[^&<>=%#]*\.js$/.test( extraJS ) ) {
* Adiciona links para os projetos correlatos no menu lateral, a partir da [[Predefinição:Correlatos]].
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
* TODO: Remover quando o [[bugzilla:708]] for resolvido
*/
function adiciona_correlatos() {
if (iProjectHTML = document.getElementById( 'interProject' )) {
iProjectHTML = iProjectHTML.innerHTML;
var iProject = document.createElement( 'div' );
if (self.skin === 'vector' ) {
iProject.className = 'portal';
cl = 'body';
} else {
} else {
iProject.className = 'portlet';
mw.notify( 'Só são permitidas páginas do domínio MediaWiki.', { title: 'Valor withJS inválido' } );
cl = 'pBody';
}
}
iProject.innerHTML = '<h5>Correlatos<\/h5><div class="' + cl + '">' + iProjectHTML;
iProject.setAttribute( 'id', 'p-correlatos' );
iProject.id = 'p-correlatos';
var ptb = document.getElementById( 'p-tb' );
ptb.parentNode.insertBefore(iProject, ptb.nextSibling);
}
}
} );
}


$( adiciona_correlatos );
// Ocultar a barra de sumário das páginas de pedidos
mw.loader.using( 'mediawiki.util', function () {
if ( /Wikipédia:Pedidos\/(?!Outros|Revisão_de_ações_administrativas$)/.test( mw.config.get( 'wgPageName' ) ) && mw.util.getParamValue( 'section' ) === 'new' ) {
$( '.mw-summary' ).hide();
}
} );


/**
/**
* Altera o título da página
* Editnotices mágicos ****************************************************
*
*
* A função procura por um banner como:
* Descrição: Adiciona editnotices nas páginas de desambiguação e biografias de pessoas vivas.
* <nowiki><div id="RealTitleBanner">Div que está oculto</nowiki>
* Mantenedores: [[:en:User:RockMFR]]
* <nowiki><span id="RealTitle">título</span></nowiki>
*
* <nowiki></div></nowiki>
* @param {string} name
* Um elemento com id=DisableRealTitle desabilita a função
* @source: [[w:en:MediaWiki:Common.js]]
*/
*/
rewritePageH1 = function () {
function addEditIntro( name ) {
try {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
var realTitleBanner = document.getElementById( 'RealTitleBanner' );
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
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. */
}
}
}
$( rewritePageH1 );



if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
/**
$( function () {
* WikiMiniAtlas é uma popup com um mapa do mundo para clicar e arrastar disponível nos artigos com geocoordenadas
if ( document.getElementById( 'disambig' ) ) {
* Ver [[meta:WikiMiniAtlas]] para maiores informações
addEditIntro( 'MediaWiki:Editnotice-0-Desambiguação' );
* @author: [[w:User:Dschwen]]
*/
var metaBase = 'http://meta.wikimedia.org';
if ( mw.config.get( 'wgServer' ) === 'https://secure.wikimedia.org' ) {
metaBase = 'https://secure.wikimedia.org/wikipedia/meta';
}
mw.loader.load( metaBase + '/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );

/**
* Permite criar tabelas para esconder/expandir
* Ver [[:en:Wikipédia:NavFrame]].
* @author: [[User:R. Koot]]
* TODO: Remover quando [[mw:ResourceLoader/Default_modules#jQuery.makeCollapsible]] estiver em uso e
* as predefinições forem adaptadas para usar o novo plugin
*/
var autoCollapse = 2,
collapseCaption = 'Esconder',
expandCaption = 'Expandir';

/**
* @param {number} tableIndex Índice da tabela a ser alterada
* @return {boolean} Caso não encontre a tabela ou o botão com o índice informado retorna false
*/
function collapseTable( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );

if ( !Table || !Button ) {
return false;
}

var Rows = Table.rows;

if (Button.firstChild.data == collapseCaption) {
for (var i = 1; i < Rows.length; i++) {
Rows[i].style.display = 'none';
}
}
Button.firstChild.data = expandCaption;
} );
} else {
for (var i = 1; i < Rows.length; i++) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}

function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = new Object();
var Tables = document.getElementsByTagName( 'table' );

for (var i = 0; i < Tables.length; i++) {
if (hasClass(Tables[i], 'collapsible' )) {

/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
if (!Header) continue;

NavigationBoxes[tableIndex] = Tables[i];
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex);

var Button = document.createElement( 'span' );
var ButtonLink = document.createElement( 'a' );
var ButtonText = document.createTextNode(collapseCaption);

Button.style.styleFloat = 'right';
Button.style.cssFloat = 'right';
Button.style.fontWeight = 'normal';
Button.style.textAlign = 'right';
Button.style.width = '6em';

ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex);
ButtonLink.setAttribute( 'href', 'javascript:collapseTable(' + tableIndex + ');' );
ButtonLink.appendChild(ButtonText);

Button.appendChild(document.createTextNode( '[' ));
Button.appendChild(ButtonLink);
Button.appendChild(document.createTextNode( ']' ));


Header.insertBefore(Button, Header.childNodes[0]);
$( function () {
tableIndex++;
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
}
}
if ( $.inArray( 'Pessoas vivas', cats ) !== -1 ) {

addEditIntro( 'MediaWiki:Editnotice-0-BPV' );
for (var i = 0; i < tableIndex; i++) {
if (hasClass(NavigationBoxes[i], 'collapsed' ) || (tableIndex >= autoCollapse && hasClass(NavigationBoxes[i], 'autocollapse' ))) {
collapseTable(i);
}
}
} );
}
}
}


$( createCollapseButtons );
// Scripts para páginas específicas


/**
/**
* Barras de navegação dinâmicas (experimental)
* IPBan Desktop
* Ver [[Wikipédia:NavFrame]].
* @author [[w:pt:User:Danilo.mac]]
* @author [[w:pt:User:Albertoleoncio]]
* @author: UNMAINTAINED
* TODO: Remover quando [[mw:ResourceLoader/Default_modules#jQuery.makeCollapsible]] estiver em uso e
* as predefinições forem adaptadas para usar o novo plugin
*/
*/


// set up the words in your language
mw.loader.using(['mediawiki.user']).then( function () {
var NavigationBarHide = '[' + collapseCaption + ']',
$(function () {
NavigationBarShow = '[' + expandCaption + ']';
var IPBanNamespaces = [0, 2, 4, 6, 10, 14, 100, 104, 710, 828];

var caEdit = document.getElementById('ca-edit');
/**
if (mw.user.isAnon() && IPBanNamespaces.indexOf(mw.config.get('wgNamespaceNumber')) > -1) {
* Shows and hides content and picture (if available) of navigation bars
mw.util.addCSS( '.mw-editsection{display:none}li#ca-ve-edit{display:none !important;}' );
* @param {number} indexNavigationBar: the index of navigation bar to be toggled
if(caEdit && caEdit.firstChild) {
* @return {boolean} Caso não encontre a tabela ou o botão com o índice informado retorna false
caEdit.firstChild.href = 'https://pt.wikipedia.org/w/index.php?title=Especial:Entrar&returnto=' + encodeURIComponent(mw.config.get('wgPageName'));
*/
caEdit.firstChild.innerHTML = 'Editar';
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 (hasClass(NavChild, 'NavPic' )) {
NavChild.style.display = 'none';
}
if (hasClass(NavChild, '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 (hasClass(NavChild, 'NavPic' )) {
NavChild.style.display = 'block';
}
if (hasClass(NavChild, '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
var divs = document.getElementsByTagName( 'div' );
for (
var i = 0;
NavFrame = divs[i];
i++) {
// if found a navigation bar
if (hasClass(NavFrame, '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);
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling) {
if (hasClass(NavChild, 'NavPic' ) || hasClass(NavChild, 'NavContent' )) {
if (NavChild.style.display == 'none' ) {
NavToggleText = document.createTextNode(NavigationBarShow);
break;
}
}
}

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 (hasClass(NavFrame.childNodes[j], 'NavHead' )) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar);
}
}
}

$( createNavigationBarToggleButton );

/**
* Caixa com abas, feitas com a [[Predefinição:Metacaixa]]
* @source: [[:w:fr:MediaWiki:Common.js]] (traduzido de [[:w:ca:MediaWiki:Common.js]])
* @author: [[:w:ca:User:Peleguer]], [[:w:ca:User:Joanjoc]], [[:w:fr:User:Antaya]] (adaptação), [[:w:pt:Rei-artur]] (adaptação)
*/
function CadreOngletInit() {
var i = 0;
for (i = 0; i <= 9; i++) {
var vMb,
vBt,
j,
vOgIni = 0;
vMb = document.getElementById( 'mb' + i);
if ( !vMb ) {
break;
}
for ( j = 1; j <= 9; j++ ) {
vBt = document.getElementById( 'mb' + i + 'bt' + j );
if ( !vBt ) {
break;
}
vBt.onclick = CadreOngletVoirOnglet;
if (vBt.className === 'mbBoutonSel' ) {
vOgIni = j;
}
}
if (vOgIni === 0) {
vOgIni = 1 + Math.floor((j - 1) * Math.random());
document.getElementById( 'mb' + i + 'og' + vOgIni).style.display = 'block';
document.getElementById( 'mb' + i + 'og' + vOgIni).style.visibility = 'visible';
document.getElementById( 'mb' + i + 'bt' + vOgIni).className = 'mbBoutonSel';
}
}
}
/*
* @return {boolean} Retorna false ao terminar a execução
*/
function CadreOngletVoirOnglet() {
var vMbNom = this.id.substr( 0, 3 ),
vIndex = this.id.substr( 5, 1 ),
i;
for ( i = 1; i <= 9; i++ ) {
var vOgElem = document.getElementById( vMbNom + 'og' + i );
if ( !vOgElem ) {
break;
}
if ( vIndex == i ) {
vOgElem.style.display = 'block';
vOgElem.style.visibility = 'visible';
document.getElementById(vMbNom + 'bt' + i).className = 'mbBoutonSel';
} else {
vOgElem.style.display = 'none';
vOgElem.style.visibility = 'hidden';
document.getElementById(vMbNom + 'bt' + i).className = 'mbBouton';
}
}
return false;
}

/**
* retour si ailleurs que sur l'espace utilisateur,
* sachant que c'est une horreur au niveau de l'accessibilité
* et qu'il est impossible de 'récupérer' ou de recycler ce script
* (celui-ci fonctionnant par inclusion de sous pages)
*/
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 || mw.config.get( 'wgNamespaceNumber' ) !== 102 ) {
$( CadreOngletInit );
}