Architektúra

LydiaCMS tvorí 13 produkčných Composer balíčkov vrátane jadra a tri vývojárske nástroje. Okrem jadra pridáva každý balíček jednu schopnosť a inštaluje sa samostatne.

Balíčky

  • core — spustenie aplikácie, DI, smerovanie, oprávnenia, preklady a základ administrácie
  • menu, blog, forms, attributes, currencies, location, socials, units — obsahové moduly, každý s vlastnými entitami, routami a migráciami
  • integration, data, api, backup — import z webových služieb, konfigurovateľný dátový model s históriou verzií, REST/MCP rozhranie, zálohy a obnova
  • phpstan, rector, ecs — vývojárske nástroje, o ktorých je reč v časti o kvalite

Ako sa balíček zapojí

  • Registruje sa jedným rozšírením Nette (DI): entity, routy, služby a migrácie majú svoj vlastný balíček.
  • Každý balíček má verziu a idempotentné migrácie. Aktualizácia databázy je jeden príkaz, lydiacms:upgrade.

Generovanie administrácie z metadát (metadata-driven CRUD scaffolding)

Gridy a formuláre vznikajú z metadát Doctrine entít (cez 100 entít). Vlastná šablóna sa píše len tam, kde dáta nie sú ploché: strom menu, builder formulárov alebo varianty sociálnych sietí. Drobnosť typu nápoveda alebo placeholder sa rieši atribútom pri poli.

Položky menu v administrácii LydiaCMS
Položky menu: formulár položky s väzbou na submodul, záznam a rodiča a pod ním zoznam, ktorý sa radí presúvaním.
Builder formulára v administrácii LydiaCMS
Builder formulára: položky formulára (názov, typ, povinné, jazykové popisky) a záložka s odpoveďami.

Viacjazyčnosť a SEO v dátovom modeli

Každý záznam existuje v jazykových variantoch (dnes CS, EN, DE, FR, ES a SK) a každý variant je samostatný záznam v databáze. Pridanie ďalšieho jazyka preto nevyžaduje žiadnu zmenu kódu. SEO údaje (titulok, popis, obrázok a slug) sa nastavujú zvlášť pre každý záznam a jazyk.

Adresy stránok sa ukladajú v databáze vrátane celej cesty cez predkov. Táto stránka napríklad žije na /projekty/lydiacms/architektura. Skrátená adresa bez predkov sa trvalo presmeruje (301) na úplnú cestu. Keď zmením slug stránky, stará adresa sa presmeruje na novú.

SEO záložka záznamu s jazykovými verziami
SEO záložka záznamu: spoločné vlastnosti a jazykové verzie (názov, popis, titulok omrvinkovej navigácie, slug) v samostatných záložkách.

Oprávnenia dedia po strome kontextov

Kontexty tvoria strom (systém → frontend, admin, API → balíček → submodul → záznam) a každý je zdrojom ACL. Predvolené pravidlo sa nastavuje len raz pre celý menný priestor (administrácia a API sú zatvorené, frontend otvorený) a všetko pod ním dedí. Nový submodul ani záznam preto nepotrebuje vlastné pravidlá. Pravidlo pri balíčku platí pre všetky jeho submoduly a pravidlo pri submoduli, povoľujúce aj zakazujúce, ho prebije.

Matica práv roly Administrátor v administrácii LydiaCMS
Matica práv roly Administrátor. Plná zelená znamená povolené priamo, obrysová zdedené z nadradeného kontextu (pri blogu a menu sa pravidlo na balíčku prejaví aj na jeho submoduli).
  • Vstup do administrácie sa odvodzuje z pravidiel. Kto smie v administrácii čokoľvek zobraziť, dostane sa do nej. Žiadny ďalší prepínač neexistuje.
  • Strop oprávnení. Nikto nemôže povoliť ani prideliť viac, než má sám, takže si nikto nezvýši vlastné práva.
  • Predvoľba pre obsahovú prácu jedným kliknutím doplní pravidlá pre stránky, blog, menu a médiá a nikdy nedáva mazanie, export, nastavenia ani správu používateľov a rolí. Výsledkom sú obyčajné pravidlá, ktoré sa dajú v matici ďalej upravovať.

Oprávnenie (zobraziť, vytvoriť, upraviť, zmazať, zmeniť stav, exportovať) má rozsah admin, frontend alebo API a môže byť obmedzené na kontexty vzorom s wildcardmi, napríklad api.core.**. Rovnaké ACL platí pre administráciu aj pre rozhranie pre AI.

Médiá a cron úlohy v administrácii

Mediálna knižnica pri každom súbore ukazuje, kde sa používa, takže je vidieť, čo jeho zmazanie rozbije. Cron úlohy majú vlastný záznam každého behu s výsledkom a časom ďalšieho spustenia.

Mediálna knižnica v administrácii LydiaCMS
Mediálna knižnica: nahrávanie, filter podľa typu a pri každom súbore zoznam záznamov, v ktorých sa používa.
Cron úlohy v administrácii LydiaCMS
Cron úlohy: rozvrh, posledné a nasledujúce spustenie a log posledných behov.

← LydiaCMS