MediaWiki:Common.js
Z Wiki JU
Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.
- Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
- Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
- Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5.
/* 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 – Advanced profil, whitelist NS (remove z DOM), přejmenování, default check */
(function () {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'Search') return;
// 1) Vynutit profil=advanced (provedeme jednou přesměrováním)
const url = new URL(location.href);
if (url.searchParams.get('profile') !== 'advanced') {
url.searchParams.set('profile', 'advanced');
location.replace(url.toString());
return;
}
// ===== KONFIGURACE =====
// Povolené ID standardních NS (0=Hlavní, 6=Soubor, 10=Šablona, 14=Kategorie)
const ALLOW_IDS = new Set([0, 6, 10, 14]);
// Povolené názvy (pro vlastní NS, které nemají pevné ID tady v kódu)
// + přidáváme i „Stránky“ (přejmenovaný Hlavní)
const ALLOW_NAMES = new Set([
'(Hlavní)', 'Hlavní', 'Stránky',
'Aktuality',
'PřF', 'Binolupa – Přirodovědecká fakulta',
'Šablona', 'Soubor', 'Kategorie'
]);
// Defaultně zaškrtnout (podle ID) – Stránky/Hlavní
const DEFAULT_CHECK_IDS = new Set([0]);
// Přejmenování (původní text -> nový text)
const RENAME = new Map([
['(Hlavní)', 'Stránky'],
['Hlavní', 'Stránky'],
['PřF', 'Binolupa – Přirodovědecká fakulta']
]);
const norm = s => String(s || '').replace(/\u00A0/g, ' ').replace(/\s+/g, ' ').trim();
const isPrF = t => /^(PřF|Binolupa – Přirodovědecká fakulta)$/i.test(norm(t));
function process() {
// Schovej horní profilové záložky (Články / Multimédia / Všechno / Rozšířené)
const tabs = document.querySelector('.mw-search-profile-tabs');
if (tabs) tabs.style.display = 'none';
const root = document.querySelector('#mw-searchoptions') || document.querySelector('.mw-search-nsoptions');
if (!root) return;
// OOUI občas přidá mezidiv – bereme skutečné „řádky“ s checkboxem
root.querySelectorAll('.oo-ui-fieldLayout').forEach(row => {
const cb = row.querySelector('input[type="checkbox"]');
const labelEl = row.querySelector('label.oo-ui-labelElement-label');
if (!cb || !labelEl) return;
// Zjisti ID NS
let nsId = NaN;
const m = cb.id && cb.id.match(/mw-search-ns(\d+)/);
if (m) nsId = parseInt(m[1], 10);
if (isNaN(nsId)) {
const v = cb.getAttribute('value');
if (v && /^\d+$/.test(v)) nsId = parseInt(v, 10);
}
// Ulož původní text (1×)
if (!row.dataset.origLabel) row.dataset.origLabel = norm(labelEl.textContent);
const orig = row.dataset.origLabel;
// Přejmenuj (jen vizuálně; dělá se jednou)
if (!row.dataset.renamed && RENAME.has(orig)) {
labelEl.textContent = RENAME.get(orig);
row.dataset.renamed = '1';
}
const current = norm(labelEl.textContent);
// Ponechat jen whitelist: dle ID nebo názvu (před/po přejmenování)
const keep = ALLOW_IDS.has(nsId) || ALLOW_NAMES.has(orig) || ALLOW_NAMES.has(current);
if (!keep) {
// >>> KONEČNÉ: pryč z DOM, ať to NIKDY nic nepřebije
row.remove();
return;
}
// Defaultně zaškrtnout Stránky (ID 0) + PřF (dle názvu)
if (DEFAULT_CHECK_IDS.has(nsId) || isPrF(orig) || isPrF(current)) {
cb.checked = true;
}
});
}
// Poprvé po načtení obsahu
mw.hook('wikipage.content').add(process);
// Sleduj JEN kontejner s volbami; když OOUI přestaví DOM, znovu to prožeň
(function observe() {
const root = document.querySelector('#mw-searchoptions') || document.querySelector('.mw-search-nsoptions');
if (!root) { setTimeout(observe, 120); return; }
new MutationObserver(() => process()).observe(root, { childList: true, subtree: true });
})();
})();