Vzhled
Založení nové školy
Novou školu v Než zazvoní CMS zakládá správce platformy pomocí příkazového skriptu tools/nova-skola.sh ze složky projektu na serveru. Jediný příkaz zkontroluje vstupní balíček site.json se soubory v podsložce media/, vytvoří záznam Škola, připraví kořenovou složku školy v Knihovna médií, nahraje kategorie, stránky i aktuality a volitelně založí účet redaktora včetně zvacího odkazu.
Kde to najdete
Skripty pro založení a import školy se spouštějí z příkazové řádky na hostitelském serveru (vyžadují běžící kontejner cms):
tools/nova-skola.sh: hlavní skript na hostiteli, který spojí kontrolu dat, kopii do kontejneru a založení školy,tools/validate-site.mjs: samostatný validátor souborusite.jsona přiložených médií na hostiteli,scripts/new-school.js: skript uvnitř kontejnerucms, který zakládá školu, složku médií, roli a redaktora,scripts/import-site.js: skript uvnitř kontejnerucmspro samostatný import, aktualizaci (--update) nebo kompletní přehrání (--reset) obsahu školy.
Po dokončení skriptu najdete nově vytvořenou školu v administraci v levém menu pod Obsah webu → Škola. Na snímku níže vidíte přehled všech škol na platformě.

Po rozkliknutí záznamu školy můžete v administraci zkontrolovat nebo upravit její identitu, doménu a vzhled.

Postup krok za krokem
1. Příprava a kontrola složky se site.json
Před spuštěním importu připravte adresář školy, který obsahuje soubor site.json (ve formátu verze 1) a podsložku media/ se všemi obrázky a dokumenty.
- Otevřete terminál v kořenovém adresáři platformy.
- Spusťte kontrolu balíčku příkazem:bash
node tools/validate-site.mjs data/skoly/zs-priklad - Pokud validátor vypíše řádky začínající
CHYBA, opravte uvedené cesty vsite.jsonnebo doplňte chybějící soubory vmedia/. Chcete-li, aby kontrola skončila chybou i při varováních (VAROVÁNÍ), přidejte přepínač--strict.
2. Založení školy a nahrání obsahu jedním příkazem
Jakmile validace projde, spusťte skript tools/nova-skola.sh a předejte mu cestu k adresáři školy a e-mail budoucího redaktora:
- V testovacím prostředí spusťte:bash
tools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz - Na produkčním serveru (VPS) přidejte proměnnou
WEBYSKOL_PROD=1, aby Docker Compose použil i produkční konfiguracidocker-compose.prod.yml:bashWEBYSKOL_PROD=1 tools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz - Skript postupně vypíše tři kroky:
1/3 kontrola site.json,2/3 kopie do kontejnerua3/3 založení školy a import. - Na konci vypíše souhrn ve formátu JSON. V objektu
editor.invitenajdete vygenerovaný zvací odkaz (/admin/auth/register?registrationToken=...), který pošlete redaktorovi pro první nastavení hesla (viz Redaktoři školy).
3. Zprovoznění domény na produkčním serveru
- Pokud má škola jen testovací adresu bez vlastní domény, web je ihned dostupný na adrese
https://<slug>.<SITE_BASE_DOMAIN>. - Pokud má škola vlastní doménu vyplněnou v poli Doména webu (
school.domain), přidejte tuto doménu do proměnnéSITE_HOSTSv souboru.envna serveru. - Načtěte novou konfiguraci reverzní proxy příkazem:bash
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d caddy
4. Doplnění nebo přehrání obsahu existující školy
Potřebujete-li později upravit obsah ze změněného souboru site.json:
- Pro bezpečné doplnění a aktualizaci záznamů bez mazání spusťte
tools/nova-skola.shs přepínačem--update:bashtools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz --update - Pro úplné smazání obsahu i médií školy a opětovné nahrání od začátku zkopírujte složku do kontejneru a spusťte
scripts/import-site.jss přepínačem--reset:bashdocker compose exec -T cms node scripts/import-site.js /tmp/site-zs-priklad --reset
Pole a nastavení
Parametry skriptů nova-skola.sh a new-school.js
Skript tools/nova-skola.sh přijímá adresář se site.json, volitelný e-mail redaktora a další přepínače předává skriptu scripts/new-school.js. Samotný scripts/new-school.js umí v kontejneru založit i prázdnou školu bez site.json.
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
<adresář> / --site | Složka se site.json a media/. | Ne (u nova-skola.sh ano) | nova-skola.sh ji zkopíruje do /tmp/site-<slug> v kontejneru a po importu smaže. |
<e-mail> / --editor | E-mail redaktora. Založí účet s rolí Redaktor školy a záznam v Redaktor školy. | Ne | Novému uživateli vypíše ve výsledku zvací odkaz invite. |
--slug | Zkratka v adrese (např. zs-priklad) a název složky v Knihovna médií. | Ano (bez --site) | Při použití --site se načte z school.slug v site.json. |
--name | Oficiální Název školy při zakládání bez site.json. | Ano (bez --site) | Použije se, když škola v databázi ještě neexistuje. |
--short | Krátký název školy do titulku a patičky. | Ne | Výchozí hodnota je --name. |
--domain | Doména webu bez https:// a www. | Ne | U existující školy přepíše stávající doménu. |
--firstname | Jméno nově zakládaného redaktora. | Ne | Výchozí hodnota je Redaktor. |
--lastname | Příjmení nově zakládaného redaktora. | Ne | Výchozí hodnota je krátký název školy nebo slug. |
--update | Aktualizuje existující školu podle přirozených klíčů bez mazání dat. | Ne | Stejně pojmenovaná média v media znovu nenahrává (mediaReused). |
--password-env | Proměnná prostředí s heslem pro okamžitou aktivaci redaktora. | Ne | Určeno jen pro laboratorní testy, v produkci používejte pozvánku. |
Režimy skriptu scripts/import-site.js
| Pole | K čemu slouží | Povinné | Tip |
|---|---|---|---|
(výchozí create) | Založí novou školu a nahraje obsah. | Ne | Pokud škola nebo složka médií už existuje, skončí chybou. |
--update | Doplní a upraví záznamy podle path stránky, slug článku či kategorie a key média. | Ne | Nic nemaže, vhodné pro doplnění stránek za provozu. |
--reset | Smaže články, stránky, kategorie, soubory ve složce školy i záznam Škola a nahraje vše znovu. | Ne | Smaže i ruční úpravy redaktorů v administraci. Režim je dostupný při přímém spuštění skriptu scripts/import-site.js uvnitř kontejneru. |
Tipy a doporučení
Tip
Stránky a aktuality v site.json se při importu ve výchozím stavu rovnou publikují (published). Pokud chcete některou rozpracovanou stránku nebo článek nahrát pouze jako nepublikovaný koncept, nastavte u dané položky v site.json vlastnost "status": "draft".
- Rodičovské stránky se propojují automaticky: skript řadí stránky podle hloubky adresy
pathod nejvyšší úrovně a sám nastavuje vazbu Nadřazená stránka (parent) i Úvodní stránka (homepageu stránky spath: ""neboisHomepage: true). - Nepřejmenovávejte složku médií školy: kořenová složka školy v Knihovna médií je spárovaná se školou přes její
slug. Pokud byste složku v administraci ručně přejmenovali, redaktoři školy by ztratili přístup ke svým souborům.
Časté chyby
- Chyba „Škola … už existuje; použijte --update (doplnit) nebo --reset (smazat a nahrát znovu)“: spustili jste samostatný
scripts/import-site.jsbez přepínače nad školou, která již v databázi je nebo má založenou složku v knihovně médií. - Chyba „chybí úvodní stránka (path "" nebo isHomepage: true)“: v poli
pagesvsite.jsonmusí být právě jedna stránka s prázdnou cestou""nebo s příznakem"isHomepage": true. - Chyba „odkaz na médium … nemá položku v media“: v sekci stránky, v článku nebo v Markdown textu (
media:<klíč>) odkazujete na klíč souboru, který není uvedený v polimediavsite.json, případně fyzický soubor chybí ve složcemedia/.

