MediaWiki:Common.js: mudanças entre as edições

De Projeto ESG da DPS TECH SA
Ir para navegação Ir para pesquisar
Conteúdo deletado Conteúdo adicionado
Sem resumo de edição
Etiqueta: Revertido
Sem resumo de edição
Etiqueta: Reversão manual
 
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 2: Linha 2:


/* Ocultar links para páginas especiais de usuários não registrados */
/* Ocultar links para páginas especiais de usuários não registrados */
if ( mw.config.get( 'wgUserName' ) === null ) {
$(function () {
$( function () {
// Variável para controlar se já escondeu
// Exemplo: Oculta o link "Páginas especiais" na navegação lateral (Vector skin)
let searchHidden = false;
$( '#n-specialpages' ).hide();

// Função principal para ocultar elementos
// Se você quiser ocultar um link específico, como "Mudanças recentes" (RecentChanges)
const hideElementsForAnonymous = function() {
// Se está logado, não fazer nada
// $( '#n-recentchanges' ).hide();

if (mw.config.get('wgUserName') !== null) {
// Oculte itens adicionais do menu "Ferramentas" (toolbox) conforme necessário
return;
// $( '#t-whatlinkshere' ).hide(); // Oculta "Páginas afluentes"
}

// Se escondeu, verificar se elementos reapareceram
/* --- NOVO: esconder a busca apenas para anônimos --- */

if (searchHidden) {
// Skins clássicas (Vector legado, MonoBook)
// Verificar se algum elemento de busca está visível
const searchVisible = $('#p-search').is(':visible') ||
$( '#p-search, #searchform, #searchInput' ).hide();

$('.vector-search-box').is(':visible') ||
// Vector 2022 (barra de busca no topo)
$('#searchInput').is(':visible');
$( '.vector-search-box, .vector-search-box-input, .vector-search-box-form' ).hide();

if (!searchVisible) {
// Fallback: se algum elemento for re-inserido dinamicamente, garante ocultação
return; // Já está oculto, não precisa fazer nada
// (ex.: carregamentos tardios ou gadgets que recriam a busca)
}
const hideSearch = function () {
}
$( '#p-search, #searchform, #searchInput' ).hide();
$( '.vector-search-box, .vector-search-box-input, .vector-search-box-form' ).hide();
// 1. Ocultar páginas especiais da navegação
$('#n-specialpages').hide();
};

// Observa mudanças no DOM por alguns segundos para pegar inserções tardias
// 2. Ocultar TODAS as variações possíveis de busca
const searchSelectors = [
const observer = new MutationObserver( hideSearch );
observer.observe( document.body, { childList: true, subtree: true } );
'#p-search',
'#searchform',
setTimeout( () => observer.disconnect(), 5000 );
} );
'#searchInput',
}
'#simpleSearch',
'.mw-search',
'.vector-search-box',
'.vector-search-box-input',
'.vector-search-box-form',
'.vector-search-box-vue',
'.cdx-search-input',
'.cdx-text-input__input',
'[id*="search"]',
'[class*="search"]',
'input[name="search"]',
'.vector-header-end .vector-search-box',
'.vector-header-start .vector-search-box'
];
// Aplicar a cada seletor
searchSelectors.forEach(selector => {
try {
$(selector).each(function() {
$(this).hide();
$(this).css({
'display': 'none !important',
'visibility': 'hidden !important'
});
});
} catch (e) {
console.log('Erro com seletor:', selector, e);
}
});
// 3. Marcar como escondido
searchHidden = true;
// 4. Adicionar classe ao body para controle via CSS
$('body').addClass('anonymous-user');
};
// Executar imediatamente
hideElementsForAnonymous();
// Executar novamente após carregamento completo
$(window).on('load', hideElementsForAnonymous);
// Executar em intervalos curtos inicialmente
let intervalCount = 0;
const initialInterval = setInterval(() => {
hideElementsForAnonymous();
intervalCount++;
if (intervalCount > 10) { // Parar após 10 execuções (5 segundos)
clearInterval(initialInterval);
}
}, 500);
// Observar mudanças no DOM de forma mais agressiva
const observer = new MutationObserver(function(mutations) {
let shouldHide = false;
mutations.forEach(function(mutation) {
if (mutation.addedNodes.length > 0) {
// Verificar se algum nó adicionado contém elementos de busca
$(mutation.addedNodes).each(function() {
if ($(this).find(searchSelectors.join(',')).length > 0 ||
$(this).is(searchSelectors.join(','))) {
shouldHide = true;
}
});
}
});
if (shouldHide) {
hideElementsForAnonymous();
}
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['style', 'class', 'id']
});
// Monitorar cliques em qualquer link, especialmente "ENTRAR"
$(document).on('click', 'a', function(e) {
const href = $(this).attr('href') || '';
if (href.includes('Special:UserLogin') ||
href.includes('title=Special:UserLogin') ||
$(this).text().toLowerCase().includes('entrar') ||
$(this).attr('id') === 'pt-login') {
// Antes do redirecionamento, garantir que elementos estejam ocultos
setTimeout(hideElementsForAnonymous, 100);
setTimeout(hideElementsForAnonymous, 500);
}
});
// Monitorar mudanças na URL (para quando clicar em ENTRAR)
let lastUrl = location.href;
new MutationObserver(() => {
const url = location.href;
if (url !== lastUrl) {
lastUrl = url;
if (url.includes('Special:UserLogin')) {
setTimeout(hideElementsForAnonymous, 100);
setTimeout(hideElementsForAnonymous, 500);
}
}
}).observe(document, { subtree: true, childList: true });
});

Edição atual tal como às 09h37min de 16 de janeiro de 2026

/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */

/* Ocultar links para páginas especiais de usuários não registrados */
if ( mw.config.get( 'wgUserName' ) === null ) {
    $( function () {
        // Exemplo: Oculta o link "Páginas especiais" na navegação lateral (Vector skin)
        $( '#n-specialpages' ).hide();

        // Se você quiser ocultar um link específico, como "Mudanças recentes" (RecentChanges)
        // $( '#n-recentchanges' ).hide();

        // Oculte itens adicionais do menu "Ferramentas" (toolbox) conforme necessário
        // $( '#t-whatlinkshere' ).hide(); // Oculta "Páginas afluentes"

        /* --- NOVO: esconder a busca apenas para anônimos --- */

        // Skins clássicas (Vector legado, MonoBook)
        $( '#p-search, #searchform, #searchInput' ).hide();

        // Vector 2022 (barra de busca no topo)
        $( '.vector-search-box, .vector-search-box-input, .vector-search-box-form' ).hide();

        // Fallback: se algum elemento for re-inserido dinamicamente, garante ocultação
        // (ex.: carregamentos tardios ou gadgets que recriam a busca)
        const hideSearch = function () {
            $( '#p-search, #searchform, #searchInput' ).hide();
            $( '.vector-search-box, .vector-search-box-input, .vector-search-box-form' ).hide();
        };

        // Observa mudanças no DOM por alguns segundos para pegar inserções tardias
        const observer = new MutationObserver( hideSearch );
        observer.observe( document.body, { childList: true, subtree: true } );
        setTimeout( () => observer.disconnect(), 5000 );
    } );
}