Wiki
Přihlášení editora
Nesprávné heslo.
Markdown [[Odkaz na článek]] · # Nadpis · **tučně**
Náhled
Náhled se zobrazí automaticky…
Znaky: 0 Slova: 0 Řádky: 0
# Nadpis H1/H2
## Sekce H2
### Pod H3
**tučně** tučné
*kurzíva* kurzíva
[[Název]] wiki odkaz
[text](url) odkaz
- položka seznam
1. první čísl. seznam
> citace blokquote
`kód` inline kód
--- oddělovač

✂ Citovat výstřižek

Načítám výstřižky…

✨ AI zárodek wiki hesla

Zadej slug výstřižku — AI vygeneruje zárodek hesla v Markdownu.

const API = 'wiki_api.php'; const params = new URLSearchParams(location.search); const editSlug = params.get('slug') || ''; let isNew = !editSlug; let previewOn = true; let saveTimer; // ── Auth ────────────────────────────────────────────────────────────────────── async function checkAuth() { try { const r = await fetch(`${API}?action=check_auth`); const d = await r.json(); if (d.editor) { initEditor(); return; } } catch(e) {} // Není přihlášen — zobrazit overlay } async function doLogin() { const val = document.getElementById('auth-input').value; const r = await fetch(API, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ action:'auth', heslo: val }) }); if (r.ok) { document.getElementById('auth-overlay').classList.add('hidden'); initEditor(); } else { document.getElementById('auth-error').style.display = 'block'; document.getElementById('auth-input').value = ''; document.getElementById('auth-input').focus(); } } document.getElementById('auth-btn').addEventListener('click', doLogin); document.getElementById('auth-input').addEventListener('keydown', e => { if(e.key==='Enter') doLogin(); }); // ── Init ────────────────────────────────────────────────────────────────────── async function initEditor() { document.getElementById('saveBtn').disabled = false; document.getElementById('navInfo').innerHTML = isNew ? 'Nový článek' : `Editace: ${editSlug}`; // Načíst kategorie pro autocomplete try { const r = await fetch(`${API}?action=list`); const d = await r.json(); const kats = [...new Set((d.clanky||[]).map(c=>c.kategorie).filter(Boolean))].sort(); document.getElementById('katList').innerHTML = kats.map(k=>`