Ir al contenido

Diferencia entre revisiones de «MediaWiki:Common.js»

De Caballipedia
Se ha deshecho la revisión 264345 de Fmoglop (disc.)
Etiquetas: Deshacer Revertido
Sin resumen de edición
 
(No se muestran 15 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 specialPage = mw.config.get('wgCanonicalSpecialPageName');


   // 🛠️ Ocultar elementos si el usuario NO ha iniciado sesión y la skin es Vector-2022
   // ❌ No ejecutar scripts personalizados SOLO en la página de subida
   if (user === null && skin === 'vector-2022') {
  // Esto evita conflictos con Upload y MediaViewer
     console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022");
   if (specialPage === 'Upload') {
     return;
  }


    // Ocultar menú herramientas completo, botón incluido
  // Solo ejecutar personalizaciones en modo "view"
    $('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide();
  if (action === 'view') {


     // Ocultar pestañas de historial y vista principal
     // 🛠️ Ocultar elementos si el usuario NO ha iniciado sesión y la skin es Vector-2022
     $('#ca-view, #ca-history').hide();
     if (user === null && skin === 'vector-2022') {


    // Ocultar pestañas de tipo de contenido ("Artículo", "Categoría", etc.)
      console.log("🛠️ Ocultando elementos para usuarios anónimos en Vector-2022");
    $('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image').closest('li').hide();
 
  }
      // Ocultar menú herramientas completo, botón incluido
      $('#vector-page-tools, #vector-page-tools-dropdown-checkbox, label[for="vector-page-tools-dropdown-checkbox"]').hide();


  // 👤 Configuración personalizada para usuarios logueados con skin Vector-2022
      // Ocultar pestañas de historial y vista principal
  if (user !== null && skin === 'vector-2022') {
      $('#ca-view, #ca-history').hide();
    console.log("🔧 Configurando interfaz personalizada");


    function ocultarElementosUsuario() {
      // Ocultar pestañas de tipo de contenido ("Artículo", "Categoría", etc.)
       $('#pt-watchlist-2').hide();
       $('#ca-nstab-main, #ca-nstab-category, #ca-nstab-special, #ca-nstab-image')
      $('#pt-mytalk').hide();
        .closest('li')
      $('#ca-talk').hide();
        .hide();
     }
     }


     ocultarElementosUsuario();
     // 👤 Configuración personalizada para usuarios logueados con skin Vector-2022
    const observer = new MutationObserver(ocultarElementosUsuario);
    if (user !== null && skin === 'vector-2022') {
    observer.observe(document.body, { childList: true, subtree: true });
 
      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()}


    // 🔹 Añadir botón "Ejecutar tareas"
                    <button id="runjobs-close">Aceptar</button>
    mw.util.addPortletLink(
      'p-tb',
      '#',
      'Ejecutar tareas',
      'pt-runjobs',
      'Ejecutar tareas pendientes desde el navegador'
    );


    $('#pt-runjobs').on('click', function (e) {
                  </div>
      e.preventDefault();
                `);


      if ($('#runjobs-msg').length) return;
                $('#runjobs-close').on('click', () => {
                  $('#runjobs-msg').remove();
                });


      const heading = document.querySelector('#firstHeading');
              })
      if (!heading) return;


      const $msg = $(`
              .catch(err => {
        <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').html(`
        $('#runjobs-msg').remove();
                  <div style="display: flex;
      });
                              align-items: center;
                              gap: 1em;
                              font-size: 90%;">


      $('#runjobs-confirm').on('click', () => {
                    ❌ Error de red: ${err}
        $('#runjobs-msg').html('⏳ Ejecutando tareas...');


        fetch('/trigger-jobs.php')
                    <button id="runjobs-close">Aceptar</button>
          .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', () => {
                  </div>
              $('#runjobs-msg').remove();
                `);
            });
 
          })
                $('#runjobs-close').on('click', () => {
          .catch(err => {
                  $('#runjobs-msg').remove();
            $('#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');
        // 🔹 Mover el botón debajo de "Reemplazar texto"
    if (runJobsItem.length && target.length) {
        const runJobsItem = $('#pt-runjobs').closest('li');
      runJobsItem.insertAfter(target);
        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();


  // 🚫 Ocultar botón de ayuda que aparece en el panel lateral si se vacía el menú de herramientas
  if (user === null && skin === 'vector-2022') {
    $('#vector-page-tools-help, .mw-portlet-help').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();

});
```