Diferencia entre revisiones de «MediaWiki:Common.js»
Sin resumen de edición Etiqueta: Revertido |
Sin resumen de edición Etiqueta: Revertido |
||
| Línea 1: | Línea 1: | ||
$(document).ready(function () { | $(document).ready(function () { | ||
// Añadir clase al <body> si el usuario NO ha iniciado sesión | |||
if (mw.config.get('wgUserName') === null) { | if (mw.config.get('wgUserName') === null) { | ||
document.body.classList.add('anon-user'); | document.body.classList.add('anon-user'); | ||
} | } | ||
const skin = mw.config.get('skin'); | const skin = mw.config.get('skin'); | ||
const user = mw.config.get('wgUserName'); | const user = mw.config.get('wgUserName'); | ||
const action = mw.config.get('wgAction'); | const action = mw.config.get('wgAction'); | ||
if (action === 'view') { | if (action === 'view') { | ||
if (user === null && skin === 'vector-2022') { | if (user === null && skin === 'vector-2022') { | ||
console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022"); | console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022"); | ||
$('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide(); | $('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide(); | ||
$('#ca-view, #ca-history').hide(); | $('#ca-view, #ca-history').hide(); | ||
$('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image').closest('li').hide(); | $('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image').closest('li').hide(); | ||
} | } | ||
if (user !== null && skin === 'vector-2022') { | if (user !== null && skin === 'vector-2022') { | ||
console.log("🔧 Configurando interfaz personalizada"); | console.log("🔧 Configurando interfaz personalizada"); | ||
| Línea 41: | Línea 33: | ||
observer.observe(document.body, { childList: true, subtree: true }); | observer.observe(document.body, { childList: true, subtree: true }); | ||
// | // Añadir botón "Ejecutar tareas" | ||
mw.util.addPortletLink( | mw.util.addPortletLink( | ||
'p-tb', | 'p-tb', | ||
| Línea 103: | Línea 95: | ||
}); | }); | ||
// | // Mover el botón debajo de "Reemplazar texto" | ||
const runJobsItem = $('#pt-runjobs').closest('li'); | const runJobsItem = $('#pt-runjobs').closest('li'); | ||
const target = $('a:contains("Reemplazar texto")').closest('li'); | const target = $('a:contains("Reemplazar texto")').closest('li'); | ||
| Línea 112: | Línea 104: | ||
} | } | ||
// | // Mejor MutationObserver para eliminar el botón "Discusión" y otros en la barra sticky y menús | ||
new MutationObserver(() => { | new MutationObserver(() => { | ||
const selectors = [ | |||
.mw-sticky-header-element #ca-talk, | '.mw-sticky-header-element [id^="ca-talk"]', | ||
.mw-sticky-header-element # | '#p-views [id^="ca-talk"]', | ||
.mw-sticky-header-element | '.mw-sticky-header-element a[title*="Discusión"]', | ||
'#p-views a[title*="Discusión"]', | |||
.mw-sticky-header-element | '.mw-sticky-header-element [id^="ca-watch"]', | ||
#p-views | '#p-views [id^="ca-watch"]', | ||
'.mw-sticky-header-element [id^="ca-unwatch"]', | |||
#p-views | '#p-views [id^="ca-unwatch"]', | ||
'.mw-sticky-header-element [id^="ca-protect"]', | |||
#p-views | '#p-views [id^="ca-protect"]', | ||
'.mw-sticky-header-element [id^="ca-unprotect"]', | |||
'#p-views [id^="ca-unprotect"]' | |||
]; | |||
const elementsToRemove = []; | |||
selectors.forEach(sel => { | |||
document.querySelectorAll(sel).forEach(el => elementsToRemove.push(el)); | |||
}); | |||
elementsToRemove.forEach(el => { | |||
const li = el.closest('li'); | |||
if (li) { | |||
li.remove(); | |||
} else { | |||
el.remove(); | |||
} | |||
}); | |||
}).observe(document.body, { | }).observe(document.body, { | ||
childList: true, | childList: true, | ||
Revisión del 01:51 25 jun 2025
$(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');
if (action === 'view') {
if (user === null && skin === 'vector-2022') {
console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022");
$('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide();
$('#ca-view, #ca-history').hide();
$('#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");
function ocultarElementosUsuario() {
$('#pt-watchlist-2').hide();
$('#pt-mytalk').hide();
$('#ca-talk').hide();
}
ocultarElementosUsuario();
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 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);
}
}
}
// Mejor MutationObserver para eliminar el botón "Discusión" y otros en la barra sticky y menús
new MutationObserver(() => {
const selectors = [
'.mw-sticky-header-element [id^="ca-talk"]',
'#p-views [id^="ca-talk"]',
'.mw-sticky-header-element a[title*="Discusión"]',
'#p-views a[title*="Discusión"]',
'.mw-sticky-header-element [id^="ca-watch"]',
'#p-views [id^="ca-watch"]',
'.mw-sticky-header-element [id^="ca-unwatch"]',
'#p-views [id^="ca-unwatch"]',
'.mw-sticky-header-element [id^="ca-protect"]',
'#p-views [id^="ca-protect"]',
'.mw-sticky-header-element [id^="ca-unprotect"]',
'#p-views [id^="ca-unprotect"]'
];
const elementsToRemove = [];
selectors.forEach(sel => {
document.querySelectorAll(sel).forEach(el => elementsToRemove.push(el));
});
elementsToRemove.forEach(el => {
const li = el.closest('li');
if (li) {
li.remove();
} else {
el.remove();
}
});
}).observe(document.body, {
childList: true,
subtree: true
});
});