# Ustawienia, wpisy, pliki i odwiedzający w CMS Total.js oraz gdzie wszystko jest zapisane

> Ustawienia CMS Total.js, menedżer wpisów, sposób serwowania i zmiany rozmiaru wgranych plików, statystyki odwiedzających i panel, integracja z OpenPlatform oraz model danych strony.

Framework: cms
Product: CMS (cms@8071e48)
Language: pl
Content-SHA256: 5133c9f63ea888b9d0c35cdb0dce6046785562795dbfd444b32e9a7c251cc468
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Ustawienia

Wtyczka *Settings* (`settings_read`, `settings_save`; uprawnienie `settings`) edytuje konfigurację, którą CMS trzyma w metadanych strony i przy każdym starcie ładuje do `CONF`:

| Klucz | Znaczenie |
|---|---|
| `name` | nazwa strony, używana w `<title>` każdej strony poza `/` oraz w nazwie pliku kopii zapasowej |
| `url` | publiczny adres strony; CMS aktualizuje go także na podstawie hosta żądań administracji |
| `smtp` | ustawienia SMTP jako tekst JSON (`server`, `from`, `user`, `password`, `port`); `settings_test` je sprawdza |
| `icon` | ikona strony |
| `$tms`, `secret_tms` | publikuje zdarzenia przez TMS oraz sekret tego połączenia |
| `op_reqtoken`, `op_restoken` | tokeny aplikacji [OpenPlatform](/en/openplatform/how-an-app-connects/); gdy ustawione są oba, logowanie do administracji zastępuje logowanie OpenPlatform |
| `totalapi` | klucz do usług API Total.js |

Wtyczki mogą dodawać kolejne klucze, które pojawiają się w tym samym formularzu. Wartości z pliku `config` (`$api`, `cdn`, `salt` oraz, jeśli go dodasz, `token`) nie są tu edytowane.

## Wpisy

Wtyczka *Posts* to mały menedżer artykułów, zapisanych we własnym pliku NoSQL w magazynie. Wpis ma `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` i `date`; administracja wyświetla je od najnowszych (po 100 na stronę), a `posts_categories` zwraca używane kategorie. Wpisy to dane dla Twojego kodu: publiczny renderer CMS (`controllers/default.js`) ich nie drukuje, więc musi je odczytać i narysować Twój widżet lub trasa.

## Pliki

Wtyczka *Files* zapisuje wgrane pliki w magazynie plików i oznacza je jako publiczne. `GET /download/<id>.<ext>` serwuje plik publiczny (tylko publiczne; reszta odpowiada 404). Dla obrazów `?s=<percent>` zwraca mniejszy JPEG (wartość musi mieścić się między 10 a 80, jakość 80), a `?download=1` wymusza pobranie. Trasy wgrywania i ich limity opisano w [API administracji](/en/cms/the-admin-api/).

## Odwiedzający i panel

Moduł `modules/visitors.js` liczy wizyty na stronach publicznych przez skrypt `/visitors.js`, który zawiera każda strona: unikalnych odwiedzających, odsłony, przeglądarki, źródła odesłań, ruch z wyszukiwarek, social i bezpośredni, mobile i desktop, godziny doby oraz osoby online (odwiedzający jest online przez 20 minut bez aktywności). Wtyczka *Dashboard* rysuje te liczby z `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` i `dashboard_pages`.

## OpenPlatform

Gdy ustawione są `op_reqtoken` i `op_restoken`, CMS loguje ludzi przez [OpenPlatform](/en/openplatform/what-is-openplatform/) (moduł `modules/openplatform.js`), a każda wtyczka dokłada swoje uprawnienie do listy, którą OpenPlatform pokazuje przy przypisywaniu grup: `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` i `admin`. Pamiętaj o regule OpenPlatform: aplikacja jest widoczna tylko dla grup, które jej przypiszesz.

## Model danych

`MAIN.db` przechowuje metadane strony (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` i `storage`) i jest zapisywany jako jeden dokument JSON o nazwie `meta` w magazynie plików. HTML każdej strony i layoutu to plik tego magazynu, którego nazwą jest id strony lub layoutu. `FUNC.load()` odczytuje metadane przy starcie, kompiluje widżety (uruchamiając ich funkcję `install`) i odbudowuje cache; `FUNC.save()` zapisuje je z powrotem. Dlatego kopia zapasowa magazynu jest kopią zapasową strony.
