# Setările, articolele, fișierele și vizitatorii CMS-ului Total.js și unde se păstrează totul

> Setările CMS-ului Total.js, managerul de articole, cum sunt servite și redimensionate fișierele încărcate, statisticile vizitatorilor și panoul, integrarea cu OpenPlatform și modelul de date al site-ului.

Framework: cms
Product: CMS (cms@8071e48)
Language: ro
Content-SHA256: 86e01d1f839b3c2d86480bd8a99d83e00bb62f6e5fb11c82a79d8504a9f36f35
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Setări

Pluginul *Settings* (`settings_read`, `settings_save`; permisiunea `settings`) editează configurația pe care CMS-ul o păstrează în metadatele site-ului și o încarcă în `CONF` la fiecare pornire:

| Cheie | Semnificație |
|---|---|
| `name` | numele site-ului, folosit în `<title>` al fiecărei pagini în afară de `/` și în numele fișierului de backup |
| `url` | adresa publică a site-ului; CMS-ul o actualizează și din host-ul cererilor din administrare |
| `smtp` | setările SMTP ca text JSON (`server`, `from`, `user`, `password`, `port`); `settings_test` le încearcă |
| `icon` | o pictogramă pentru site |
| `$tms`, `secret_tms` | publică evenimentele prin TMS și secretul acelei conexiuni |
| `op_reqtoken`, `op_restoken` | tokenurile unei aplicații [OpenPlatform](/en/openplatform/how-an-app-connects/); când sunt setate ambele, autentificarea în administrare este înlocuită cu cea din OpenPlatform |
| `totalapi` | o cheie pentru serviciile API Total.js |

Pluginurile pot adăuga mai multe chei, care apar în același formular. Valorile din fișierul `config` (`$api`, `cdn`, `salt` și, dacă îl adaugi, `token`) nu se editează aici.

## Articole

Pluginul *Posts* este un mic manager de articole, păstrate într-un fișier NoSQL propriu în spațiul de stocare. Un articol are `name`, `category`, `picture`, `summary`, `body`, `reference`, `icon`, `color`, `hidden` și `date`; administrarea le listează de la cel mai nou (100 pe pagină), iar `posts_categories` returnează categoriile folosite. Articolele sunt date pentru propriul tău cod: randatorul public al CMS-ului (`controllers/default.js`) nu le afișează, deci un widget sau o rută a ta trebuie să le citească și să le deseneze.

## Fișiere

Pluginul *Files* păstrează încărcările în spațiul de stocare de fișiere și le marchează ca publice. `GET /download/<id>.<ext>` servește un fișier public (doar cele publice; restul răspund 404). Pentru imagini, `?s=<percent>` returnează un JPEG mai mic (valoarea trebuie să fie între 10 și 80, cu calitate 80), iar `?download=1` forțează descărcarea. Rutele de încărcare și limitele lor sunt în [API-ul administrării](/en/cms/the-admin-api/).

## Vizitatori și panoul

Modulul `modules/visitors.js` numără vizitele paginilor publice prin scriptul `/visitors.js` pe care îl include fiecare pagină: vizitatori unici, afișări, browsere, referrere, trafic din căutare, social și direct, mobil și desktop, orele zilei și oamenii online (un vizitator este online 20 de minute fără activitate). Pluginul *Dashboard* desenează aceste cifre din `dashboard_stats`, `dashboard_online`, `dashboard_browsers`, `dashboard_referers` și `dashboard_pages`.

## OpenPlatform

Când `op_reqtoken` și `op_restoken` sunt setate, CMS-ul autentifică oamenii prin [OpenPlatform](/en/openplatform/what-is-openplatform/) (modulul `modules/openplatform.js`), iar fiecare plugin adaugă permisiunea sa în lista pe care OpenPlatform o arată când atribui grupuri: `pages`, `layouts`, `widgets`, `navigation`, `posts`, `files`, `redirects`, `variables`, `settings` și `admin`. Ține minte regula OpenPlatform: o aplicație este vizibilă doar pentru grupurile cărora le-o atribui.

## Modelul de date

`MAIN.db` păstrează metadatele site-ului (`pages`, `layouts`, `widgets`, `redirects`, `vars`, `nav`, `config` și `storage`) și este salvat ca un singur document JSON numit `meta` în spațiul de stocare de fișiere. HTML-ul fiecărei pagini și al fiecărui layout este un fișier din acel spațiu, al cărui nume este id-ul paginii sau al layoutului. `FUNC.load()` citește metadatele la pornire, compilează widgeturile (rulând funcția lor `install`) și reconstruiește cache-urile; `FUNC.save()` le scrie la loc. De aceea un backup al spațiului de stocare este un backup al site-ului.
