/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
* Maintainers: [[en:User:R. Koot]]
*/
var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
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.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
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] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
collapseTable( i );
} else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
var element = NavigationBoxes[i];
while ( element = element.parentNode ) {
if ( hasClass( element, 'outercollapse' ) ) {
collapseTable( i );
break;
}
}
}
}
}
addOnloadHook( createCollapseButtons );
/** Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
var hasClass = ( function() {
var reCache = {};
return function( element, className ) {
return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
};
})();
/* Todo código JavaScript presente aqui será carregado por todos os usuários em cada página carregada. */
/*jslint browser: true, white: true, regexp: true, plusplus: true*/
/*global $, mw, importScript, importStylesheet */
//Scripts para páginas e/ou domínios específicos
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ){
importScript( 'MediaWiki:Common.js/watchlist.js');
} else if ( mw.config.get( 'wgIsMainPage' ) ) {
/**
* Melhorias na página principal
* Adiciona um link a lista completa de Wikipédias em outras línguas
*
* @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' );
});
} else if ( $.inArray( mw.config.get( 'wgPageName' ), [ 'Wikipédia:Esplanada/propostas', 'Wikipédia:Esplanada/geral' ] ) !== -1 ) {
/*
* 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§ion=new&preload=Template:Esplanada2/Preload';
if ( mw.config.get( 'wgUserLanguage' ) !== 'pt' ) {
href += '/en';
}
$( '#ca-addsection a' ).attr( 'href', href );
if ( mw.config.get( 'skin' ) === 'vector' ) {
// Move o botão "editar" para o menu de ações
$( '#ca-edit' ).appendTo( '#p-cactions ul' );
}
});
}
if ( $.client.profile().name === 'msie' ) {
//scripts específicos para Internet Explorer
importScript( 'MediaWiki:Common.js/IEFixes.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âmetros &withCSS= e &withJS= para a URL
* Permite que sejam testados scripts e folhas de estilos do domínio MediaWiki
* sem precisar editar páginas .css ou .js pessoais
*/
var extraJS = mw.util.getParamValue( 'withJS' ),
extraCSS = mw.util.getParamValue( 'withCSS' );
if ( extraJS && extraJS.match( /^MediaWiki:[^&<>=%]*\.js$/ ) ) {
importScript( extraJS );
}
if ( extraCSS && extraCSS.match( /^MediaWiki:[^&<>=%]*\.css$/ ) ) {
importStylesheet( extraCSS );
}
/** Correlatos
* Adiciona links para os projetos correlatos no menu lateral, a partir da [[Predefinição:Correlatos]].
* TODO: Remover quando o [[bugzilla:708]] for resolvido
* @author: ???
*/
$(function() {
var cl, iProjectHTML, iProject, ptb;
iProjectHTML = document.getElementById( 'interProject' );
if ( iProjectHTML ) {
iProjectHTML = iProjectHTML.innerHTML;
iProject = document.createElement( 'div' );
if ( mw.config.get('skin') === 'vector' ) {
iProject.className = 'portal collapsed';
cl = 'body';
} else {
iProject.className = 'portlet';
cl = 'pBody';
}
iProject.innerHTML = '<h5>Correlatos<\/h5><div class="' + cl + '">' + iProjectHTML;
iProject.setAttribute( 'id', 'p-correlatos' );
iProject.id = 'p-correlatos';
ptb = document.getElementById( 'p-tb' );
ptb.parentNode.insertBefore( iProject, ptb.nextSibling );
}
});