Edytowalna sekcja = dane + schemat + render
Projektuj swobodnie. Ale zanim zgłosisz pracę, każda sekcja z treścią przechodzi panelizację. Edytowalna sekcja to zawsze trzy rzeczy naraz:
- Dane — klucz sekcji w
src/content/<strona>/{pl,en}.json. - Schemat — wpis w
src/content/settings/<strona>-schema.json. Typy pól:text,textarea,image,objectArray,stringArray,group, odwołanie do rekordu (ref), wybór. Etykiety po polsku i angielsku. - Render — komponent czyta wyłącznie z tych JSON-ów.
Panel sam rysuje formularz ze schematu. Klucz, którego nie ma w schemacie, jest w panelu niewidzialny, bez komunikatu. sc push wypisuje takie klucze, a kontrakt treści traktuje je jako naruszenie.
Nowa podstrona to jeszcze wpis w src/content/settings/pages.json (klucz, etykiety, katalog treści, opcjonalnie path). Strona sama pojawi się w panelu, a aktualizacje jej nie skasują.
Reguły, o których łatwo zapomnieć:
- Obrazki. Każde pole obrazka deklaruje
media.ratio(np."16:9", także w grupach i listach) — bez tego kontrakt nie przejdzie. Wartość pola to baza drabinki rozmiarów, a render robi<Pic>z właściwymsizes. Obrazek jest wspólny dla wszystkich języków. - Reguły pól.
maxLength,minLength,required,patternz komunikatem. Panel pokazuje licznik i odmawia zapisu. DajmaxLengthnagłówkom i przyciskom — to tańsze niż zgłoszenie „rozjechało się na telefonie”. - Sekcja powtarzana ma klucz
typ--instancja. - Języki są dynamiczne (
site.json, pierwszy jest domyślny). Nie wpisujpl|enna sztywno. Kontrakt sprawdza też, że strona pod/en/malang="en", a sekcje zgadzają się między językami. - Atomy wyglądu. Elementy oznaczone
data-sc-atom(plakietka, przycisk, pole) muszą mieć regułę w arkuszu.
Jeśli schemat ma uszkodzoną sekcję, panel ją pominie i nazwie powód. Reszta działa.