Skip to content

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 souboru site.json a přiložených médií na hostiteli,
  • scripts/new-school.js: skript uvnitř kontejneru cms, který zakládá školu, složku médií, roli a redaktora,
  • scripts/import-site.js: skript uvnitř kontejneru cms pro 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ě.

Seznam škol v administraci

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

Úprava založené školy v administraci

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.

  1. Otevřete terminál v kořenovém adresáři platformy.
  2. Spusťte kontrolu balíčku příkazem:
    bash
    node tools/validate-site.mjs data/skoly/zs-priklad
  3. Pokud validátor vypíše řádky začínající CHYBA, opravte uvedené cesty v site.json nebo doplňte chybějící soubory v media/. 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:

  1. V testovacím prostředí spusťte:
    bash
    tools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz
  2. Na produkčním serveru (VPS) přidejte proměnnou WEBYSKOL_PROD=1, aby Docker Compose použil i produkční konfiguraci docker-compose.prod.yml:
    bash
    WEBYSKOL_PROD=1 tools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz
  3. Skript postupně vypíše tři kroky: 1/3 kontrola site.json, 2/3 kopie do kontejneru a 3/3 založení školy a import.
  4. Na konci vypíše souhrn ve formátu JSON. V objektu editor.invite najdete 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 ​

  1. Pokud má škola jen testovací adresu bez vlastní domény, web je ihned dostupný na adrese https://<slug>.<SITE_BASE_DOMAIN>.
  2. Pokud má škola vlastní doménu vyplněnou v poli Doména webu (school.domain), přidejte tuto doménu do proměnné SITE_HOSTS v souboru .env na serveru.
  3. 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:

  1. Pro bezpečné doplnění a aktualizaci záznamů bez mazání spusťte tools/nova-skola.sh s přepínačem --update:
    bash
    tools/nova-skola.sh data/skoly/zs-priklad redaktor@zspriklad.cz --update
  2. 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.js s přepínačem --reset:
    bash
    docker 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.

PoleK čemu sloužíPovinnéTip
<adresář> / --siteSlož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> / --editorE-mail redaktora. Založí účet s rolí Redaktor školy a záznam v Redaktor školy.NeNovému uživateli vypíše ve výsledku zvací odkaz invite.
--slugZkratka 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.
--nameOficiá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.
--shortKrátký název školy do titulku a patičky.NeVýchozí hodnota je --name.
--domainDoména webu bez https:// a www.NeU existující školy přepíše stávající doménu.
--firstnameJméno nově zakládaného redaktora.NeVýchozí hodnota je Redaktor.
--lastnamePříjmení nově zakládaného redaktora.NeVýchozí hodnota je krátký název školy nebo slug.
--updateAktualizuje existující školu podle přirozených klíčů bez mazání dat.NeStejně pojmenovaná média v media znovu nenahrává (mediaReused).
--password-envProměnná prostředí s heslem pro okamžitou aktivaci redaktora.NeUrčeno jen pro laboratorní testy, v produkci používejte pozvánku.

Režimy skriptu scripts/import-site.js ​

PoleK čemu sloužíPovinnéTip
(výchozí create)Založí novou školu a nahraje obsah.NePokud škola nebo složka médií už existuje, skončí chybou.
--updateDoplní a upraví záznamy podle path stránky, slug článku či kategorie a key média.NeNic nemaže, vhodné pro doplnění stránek za provozu.
--resetSmaže články, stránky, kategorie, soubory ve složce školy i záznam Škola a nahraje vše znovu.NeSmaž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 path od nejvyšší úrovně a sám nastavuje vazbu Nadřazená stránka (parent) i Úvodní stránka (homepage u stránky s path: "" nebo isHomepage: 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.js bez 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 pages v site.json musí 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 poli media v site.json, případně fyzický soubor chybí ve složce media/.

Související ​