MediaWiki:Common.js: Porovnání verzí

Z Wiki JU
Ofara (diskuse | příspěvky)
Bez shrnutí editace
značka: revertováno
Ofara (diskuse | příspěvky)
Bez shrnutí editace
značka: revertováno
Řádek 63: Řádek 63:
//Vyhledávání
//Vyhledávání


/* Special:Search – vynutit profil=advanced + ponechat jen vybrané jmenné prostory (OOUI) */
/* Special:Search – profil=advanced, default zaškrtnutí + přejmenování + úprava UI */
(function () {
(function () {
   if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return;
   if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return;


   // 1) vynutit profil=advanced
   // 1) Profil = advanced
   const url = new URL(location.href);
   const u = new URL(location.href);
   if (url.searchParams.get('profile') !== 'advanced') {
   if (u.searchParams.get('profile') !== 'advanced') {
     url.searchParams.set('profile', 'advanced');
     u.searchParams.set('profile', 'advanced');
     location.replace(url.toString());
     location.replace(u.toString());
     return;
     return;
   }
   }


   // 2) které NÁZVY ponechat (všechno ostatní skryjeme)
   // Pomocné – normalizace textu (OOUI občas vkládá NBSP apod.)
  // uprav dle potřeby:
   const norm = s => String(s || '').replace(/\u00A0/g, ' ').replace(/\s+/g, ' ').trim();
  const KEEP = new Set([
    '(Hlavní)', 'Aktuality', 'Soubor', 'Kategorie', 'PřF'
  ]);
 
  // pomocné: normalizace textu štítku (OOUI může vkládat NBSP apod.)
   const norm = s => s.replace(/\u00A0/g, ' ').replace(/\s+/g, ' ').trim();


   function apply() {
   function apply() {
Řádek 88: Řádek 82:
     if (!root) return;
     if (!root) return;


     // projdi všechny řádky s checkboxy jmenných prostorů
     // 2) Schovat horní lištu profilů (Články / Multimédia / Všechno / Rozšířené)
    const tabs = document.querySelector('.mw-search-profile-tabs');
    if (tabs) tabs.style.display = 'none';
 
    // 3) Projít řádky s checkboxy NS
     root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => {
     root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => {
       const label = row.querySelector('label.oo-ui-labelElement-label');
       const label = row.querySelector('label.oo-ui-labelElement-label');
       if (!label) return;
       const cb    = row.querySelector('input[type="checkbox"]');
       const name = norm(label.textContent || '');
       if (!label || !cb) return;


       // schovej vše, co NENÍ v whitelistu (a pro jistotu odškrtni)
      const text = norm(label.textContent);
       if (!KEEP.has(name)) {
 
        row.style.display = 'none';
       // PŘEJMENOVÁNÍ
        const cb = row.querySelector('input[type="checkbox"]');
       if (text === '(Hlavní)') label.textContent = 'Stránky';
         if (cb) cb.checked = false;
      if (text === 'PřF')      label.textContent = 'Binolupa – Přirodovědecká fakulta';
 
      // DEFAULT ZAŠKRTNUTÍ (Hlavní + PřF)
      if (text === '(Hlavní)' || text === 'PřF') {
         if (!cb.checked) cb.checked = true;
       }
       }
     });
     });
   }
   }


   // poprvé po načtení stránky, až je DOM hotový
   // Poprvé po načtení obsahu
   mw.hook('wikipage.content').add(apply);
   mw.hook('wikipage.content').add(apply);


   // OOUI přestavuje DOM po kliknutí na „Všechno/Nic“ → aplikuj znovu
   // Aplikovat znovu při každém přestavění DOM (Všechno/Nic apod.)
   const mo = new MutationObserver(apply);
   const mo = new MutationObserver(apply);
   mo.observe(document.body, { childList: true, subtree: true });
   mo.observe(document.body, { childList: true, subtree: true });
  // (volitelné) schovat horní lištu profilů (Články / Multimédia / Všechno / Rozšířené)
  // odkomentuj, pokud ji nechceš vůbec ukazovat:
  // mw.hook('wikipage.content').add($c => { $c.find('.mw-search-profile-tabs').hide(); });
})();
})();

Verze z 25. 9. 2025, 08:03

/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky */

//Zpětná vazba

$(function () {
  // Zruš jQuery UI vzhled tlačítka
  $('.articleFeedbackv5-submit').button('destroy');
});

document.addEventListener('DOMContentLoaded', function () {
  document.querySelectorAll('.extern-download').forEach(el => {
    el.style.cursor = 'pointer';
    el.style.color = '#0645AD';
    el.style.textDecoration = 'underline';
    el.addEventListener('click', () => {
      const a = document.createElement('a');
      a.href = el.getAttribute('data-url');
      a.setAttribute('download', '');
      a.style.display = 'none';
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
    });
  });
});

(function () {
  var NOTE_ID = 'af5-note';
  var NOTE_HTML =
    '<div id="' + NOTE_ID + '" class="articleFeedbackv5-note">' +
      '<b>Tento formulář slouží pouze jako zpětná vazba pro tuto stránku.</b> ' +
      'Řešíte-li nějaký problém, napište e-mail na ' +
      '<a href="/Servicedesk/Seznam_e-mailových_adres_pro_zadávání_požadavků">službu,</a> které se Váš problém týká.' +
    '</div>';

   function injectNote(root) {
    var $title = (root ? $(root) : $(document))
      .find('.articleFeedbackv5-title-wrap')
      .first();

    if (!$title.length) return false;                 // nadpis není
    if (document.getElementById(NOTE_ID)) return true; // už vloženo

    $title.after(NOTE_HTML);                          // vložit pod nadpis
    return true;
  }

  if (injectNote()) return;

  var obs = new MutationObserver(function (mutations) {
    for (var m of mutations) {
      if (injectNote(m.target)) {
        obs.disconnect();
        break;
      }
    }
  });

  obs.observe(document.body, { childList: true, subtree: true });
  setTimeout(function () { injectNote(); obs.disconnect(); }, 5000);
})();

//Vyhledávání

/* Special:Search – profil=advanced, default zaškrtnutí + přejmenování + úprava UI */
(function () {
  if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return;

  // 1) Profil = advanced
  const u = new URL(location.href);
  if (u.searchParams.get('profile') !== 'advanced') {
    u.searchParams.set('profile', 'advanced');
    location.replace(u.toString());
    return;
  }

  // Pomocné – normalizace textu (OOUI občas vkládá NBSP apod.)
  const norm = s => String(s || '').replace(/\u00A0/g, ' ').replace(/\s+/g, ' ').trim();

  function apply() {
    const root = document.querySelector('#mw-searchoptions') || document.querySelector('.mw-search-nsoptions');
    if (!root) return;

    // 2) Schovat horní lištu profilů (Články / Multimédia / Všechno / Rozšířené)
    const tabs = document.querySelector('.mw-search-profile-tabs');
    if (tabs) tabs.style.display = 'none';

    // 3) Projít řádky s checkboxy NS
    root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => {
      const label = row.querySelector('label.oo-ui-labelElement-label');
      const cb    = row.querySelector('input[type="checkbox"]');
      if (!label || !cb) return;

      const text = norm(label.textContent);

      // PŘEJMENOVÁNÍ
      if (text === '(Hlavní)') label.textContent = 'Stránky';
      if (text === 'PřF')      label.textContent = 'Binolupa – Přirodovědecká fakulta';

      // DEFAULT ZAŠKRTNUTÍ (Hlavní + PřF)
      if (text === '(Hlavní)' || text === 'PřF') {
        if (!cb.checked) cb.checked = true;
      }
    });
  }

  // Poprvé po načtení obsahu
  mw.hook('wikipage.content').add(apply);

  // Aplikovat znovu při každém přestavění DOM (Všechno/Nic apod.)
  const mo = new MutationObserver(apply);
  mo.observe(document.body, { childList: true, subtree: true });
})();