MediaWiki:Common.js
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
$(document).ready(function () {
// Añadir clase al <body> si el usuario NO ha iniciado sesión
if (mw.config.get('wgUserName') === null) {
document.body.classList.add('anon-user');
}
const skin = mw.config.get('skin');
const user = mw.config.get('wgUserName');
const action = mw.config.get('wgAction');
// Solo ejecutar personalizaciones en modo "view" para no interferir con edición, etc.
if (action === 'view') {
if (user === null && skin === 'vector-2022') {
console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022");
// Ocultar menú herramientas completo, botón incluido
$('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide();
// Ocultar pestañas de historial y vista principal
$('#ca-view, #ca-history').hide();
// Ocultar pestañas de tipo de contenido ("Artículo", "Categoría", etc.)
$('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image').closest('li').hide();
}
if (user !== null && skin === 'vector-2022') {
console.log("🔧 Configurando interfaz personalizada para usuario logueado");
function ocultarElementosUsuario() {
// Ocultar lista de seguimiento en menú desplegable
$('#pt-watchlist-2').hide();
// Ocultar botón "Añadir a favoritos" / "Quitar de favoritos"
$('#ca-watch, #ca-unwatch').hide();
}
ocultarElementosUsuario();
// Observar cambios para ocultar si se recarga o cambia DOM dinámicamente
const observer = new MutationObserver(ocultarElementosUsuario);
observer.observe(document.body, { childList: true, subtree: true });
// Añadir botón "Ejecutar tareas"
mw.util.addPortletLink(
'p-tb',
'#',
'Ejecutar tareas',
'pt-runjobs',
'Ejecutar tareas pendientes desde el navegador'
);
$('#pt-runjobs').on('click', function (e) {
e.preventDefault();
if ($('#runjobs-msg').length) return;
const heading = document.querySelector('#firstHeading');
if (!heading) return;
const $msg = $(`
<div id="runjobs-msg" style="margin: 1em 0; font-size: 90%; display: flex; align-items: center; gap: 1em;">
¿Ejecutar las tareas pendientes ahora?
<button id="runjobs-confirm">✅ Sí</button>
<button id="runjobs-cancel">❌ No</button>
</div>
`);
$(heading).after($msg);
$('#runjobs-cancel').on('click', () => {
$('#runjobs-msg').remove();
});
$('#runjobs-confirm').on('click', () => {
$('#runjobs-msg').html('⏳ Ejecutando tareas...');
fetch('/trigger-jobs.php')
.then(res => res.text())
.then(msg => {
$('#runjobs-msg').html(`
<div style="font-size: 90%; display: flex; align-items: center; gap: 1em;">
${msg.trim()}
<button id="runjobs-close">Aceptar</button>
</div>
`);
$('#runjobs-close').on('click', () => {
$('#runjobs-msg').remove();
});
})
.catch(err => {
$('#runjobs-msg').html(`
<div style="display: flex; align-items: center; gap: 1em; font-size: 90%;">
❌ Error de red: ${err}
<button id="runjobs-close">Aceptar</button>
</div>
`);
$('#runjobs-close').on('click', () => {
$('#runjobs-msg').remove();
});
});
});
});
// Mover el botón "Ejecutar tareas" debajo de "Reemplazar texto"
const runJobsItem = $('#pt-runjobs').closest('li');
const target = $('a:contains("Reemplazar texto")').closest('li');
if (runJobsItem.length && target.length) {
runJobsItem.insertAfter(target);
}
}
}
});