Diferencia entre revisiones de «MediaWiki:Common.js»
Sin resumen de edición Etiqueta: Reversión manual |
Sin resumen de edición |
||
| (No se muestran 2 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
```javascript | |||
// Añadir clase al <body> si el usuario NO ha iniciado sesión | // Añadir clase al <body> si el usuario NO ha iniciado sesión | ||
$(document).ready(function () { | $(document).ready(function () { | ||
| Línea 7: | Línea 8: | ||
$(function () { | $(function () { | ||
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'); | ||
const specialPage = mw.config.get('wgCanonicalSpecialPageName'); | |||
// ❌ No ejecutar scripts personalizados SOLO en la página de subida | |||
// Esto evita conflictos con Upload y MediaViewer | |||
if (specialPage === 'Upload') { | |||
return; | |||
} | |||
// Solo ejecutar personalizaciones en modo "view" | // Solo ejecutar personalizaciones en modo "view" | ||
if (action === 'view') { | if (action === 'view') { | ||
// 🛠️ Ocultar elementos si el usuario NO ha iniciado sesión y la skin es Vector-2022 | // 🛠️ Ocultar elementos si el usuario NO ha iniciado sesión y la skin es Vector-2022 | ||
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"); | ||
| Línea 24: | Línea 35: | ||
// Ocultar pestañas de tipo de contenido ("Artículo", "Categoría", etc.) | // 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(); | $('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image') | ||
.closest('li') | |||
.hide(); | |||
} | } | ||
// 👤 Configuración personalizada para usuarios logueados con skin Vector-2022 | // 👤 Configuración personalizada para usuarios logueados con skin Vector-2022 | ||
if (user !== null && skin === 'vector-2022') { | if (user !== null && skin === 'vector-2022') { | ||
console.log("🔧 Configurando interfaz personalizada"); | console.log("🔧 Configurando interfaz personalizada"); | ||
| Línea 38: | Línea 52: | ||
ocultarElementosUsuario(); | ocultarElementosUsuario(); | ||
const observer = new MutationObserver(ocultarElementosUsuario); | |||
// ⚠️ Evitar observer agresivo en páginas especiales | |||
if (mw.config.get('wgNamespaceNumber') !== -1) { | |||
const observer = new MutationObserver(ocultarElementosUsuario); | |||
observer.observe(document.body, { | |||
childList: true, | |||
subtree: true | |||
}); | |||
} | |||
// 🔹 Añadir botón "Ejecutar tareas" | // 🔹 Añadir botón "Ejecutar tareas" | ||
mw.util.addPortletLink( | if (!document.getElementById('pt-runjobs')) { | ||
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); | |||
} | |||
} | } | ||
} | } | ||
} | } | ||
}); | }); | ||
// Elimina la casilla "Vigilar esta página" en el formulario de edición | |||
$(function () { | |||
$('input[name="wpWatchthis"]') | |||
.prop('checked', false) | |||
.closest('div, label, span, p') | |||
.hide(); | |||
}); | |||
``` | |||
Revisión actual - 00:33 29 may 2026
```javascript
// Añadir clase al <body> si el usuario NO ha iniciado sesión
$(document).ready(function () {
if (mw.config.get('wgUserName') === null) {
document.body.classList.add('anon-user');
}
});
$(function () {
const skin = mw.config.get('skin');
const user = mw.config.get('wgUserName');
const action = mw.config.get('wgAction');
const specialPage = mw.config.get('wgCanonicalSpecialPageName');
// ❌ No ejecutar scripts personalizados SOLO en la página de subida
// Esto evita conflictos con Upload y MediaViewer
if (specialPage === 'Upload') {
return;
}
// Solo ejecutar personalizaciones en modo "view"
if (action === 'view') {
// 🛠️ Ocultar elementos si el usuario NO ha iniciado sesión y la skin es Vector-2022
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();
}
// 👤 Configuración personalizada para usuarios logueados con skin Vector-2022
if (user !== null && skin === 'vector-2022') {
console.log("🔧 Configurando interfaz personalizada");
function ocultarElementosUsuario() {
$('#pt-watchlist-2').hide();
$('#pt-mytalk').hide();
$('#ca-talk').hide();
}
ocultarElementosUsuario();
// ⚠️ Evitar observer agresivo en páginas especiales
if (mw.config.get('wgNamespaceNumber') !== -1) {
const observer = new MutationObserver(ocultarElementosUsuario);
observer.observe(document.body, {
childList: true,
subtree: true
});
}
// 🔹 Añadir botón "Ejecutar tareas"
if (!document.getElementById('pt-runjobs')) {
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);
}
}
}
}
});
// Elimina la casilla "Vigilar esta página" en el formulario de edición
$(function () {
$('input[name="wpWatchthis"]')
.prop('checked', false)
.closest('div, label, span, p')
.hide();
});
```