MediaWiki:Common.js: Porovnání verzí
Z Wiki JU
Bez shrnutí editace |
Bez shrnutí editace značka: revertováno |
||
| Řádek 62: | Řádek 62: | ||
//Vyhledávání | //Vyhledávání | ||
/* Special:Search – vynutit profil=advanced + ponechat jen vybrané jmenné prostory (OOUI) */ | |||
(function () { | |||
if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return; | |||
// 1) vynutit profil=advanced | |||
const url = new URL(location.href); | |||
if (url.searchParams.get('profile') !== 'advanced') { | |||
url.searchParams.set('profile', 'advanced'); | |||
location.replace(url.toString()); | |||
return; | |||
} | |||
// 2) které NÁZVY ponechat (všechno ostatní skryjeme) | |||
// uprav dle potřeby: | |||
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() { | |||
const root = document.querySelector('#mw-searchoptions') || document.querySelector('.mw-search-nsoptions'); | |||
if (!root) return; | |||
// projdi všechny řádky s checkboxy jmenných prostorů | |||
root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => { | |||
const label = row.querySelector('label.oo-ui-labelElement-label'); | |||
if (!label) return; | |||
const name = norm(label.textContent || ''); | |||
// schovej vše, co NENÍ v whitelistu (a pro jistotu odškrtni) | |||
if (!KEEP.has(name)) { | |||
row.style.display = 'none'; | |||
const cb = row.querySelector('input[type="checkbox"]'); | |||
if (cb) cb.checked = false; | |||
} | |||
}); | |||
} | |||
// poprvé po načtení stránky, až je DOM hotový | |||
mw.hook('wikipage.content').add(apply); | |||
// OOUI přestavuje DOM po kliknutí na „Všechno/Nic“ → aplikuj znovu | |||
const mo = new MutationObserver(apply); | |||
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, 07:57
/* 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 – vynutit profil=advanced + ponechat jen vybrané jmenné prostory (OOUI) */
(function () {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return;
// 1) vynutit profil=advanced
const url = new URL(location.href);
if (url.searchParams.get('profile') !== 'advanced') {
url.searchParams.set('profile', 'advanced');
location.replace(url.toString());
return;
}
// 2) které NÁZVY ponechat (všechno ostatní skryjeme)
// uprav dle potřeby:
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() {
const root = document.querySelector('#mw-searchoptions') || document.querySelector('.mw-search-nsoptions');
if (!root) return;
// projdi všechny řádky s checkboxy jmenných prostorů
root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => {
const label = row.querySelector('label.oo-ui-labelElement-label');
if (!label) return;
const name = norm(label.textContent || '');
// schovej vše, co NENÍ v whitelistu (a pro jistotu odškrtni)
if (!KEEP.has(name)) {
row.style.display = 'none';
const cb = row.querySelector('input[type="checkbox"]');
if (cb) cb.checked = false;
}
});
}
// poprvé po načtení stránky, až je DOM hotový
mw.hook('wikipage.content').add(apply);
// OOUI přestavuje DOM po kliknutí na „Všechno/Nic“ → aplikuj znovu
const mo = new MutationObserver(apply);
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(); });
})();