API administracji CMS Total.js: zarządzanie stroną z kodu, kopia zapasowa i przywracanie
Wszystko, co robi interfejs administracji, przechodzi przez jeden endpoint: POST /admin/ z treścią { "schema": "<name>", "data": { ... } } (trasy API Total.js, zobacz trasy API). Adres pochodzi z linii $api : /admin/ pliku config. Uwierzytelnij się ciasteczkiem sesji (POST /admin/ z schema: "login" oraz login i password), nagłówkiem x-token albo przez OpenPlatform (instalacja i pierwsze uruchomienie).
Akcje
| Plugin | Wywołania (schema) | Uprawnienie |
|---|---|---|
| Account | login, logout, admin_read, admin_save (nazwa, login, hasło), account | sesja |
| Pages | pages_list, pages_read, pages_save, pages_clone, pages_remove, pages_links, pages_html (odczytuje HTML), pages_save_html (id, html, do 5 MB), pages_copy (from, to) | pages |
| Layouts | layouts_list, layouts_read, layouts_save, layouts_clone, layouts_remove, layouts_html, layouts_save_html, layouts_import | layouts |
| Widgets | widgets_list, widgets_read, widgets_save, widgets_remove, widgets_detail | widgets |
| Navigation | nav_list, nav_read, nav_save, nav_remove, nav_editor | navigation |
| Redirects | redirects_list, redirects_read, redirects_save (url, target, permanent), redirects_remove | redirects |
| Variables | variables_read, variables_save (vars) | variables |
| Posts | posts, posts_read, posts_create, posts_update, posts_remove, posts_clear, posts_categories | posts |
| Files | files_list, files_rename, files_clear, files_remove, i wgrywanie poniżej | files |
| Settings | settings_read, settings_save, settings_test (sprawdza ustawienia SMTP), chatgpt | settings |
| Dashboard | dashboard_online, dashboard_referers, dashboard_browsers, dashboard_pages, dashboard_stats | brak |
Uprawnienie admin (i każdy użytkownik z flagą sa, w tym Bot tokenu) ma dostęp do wszystkich. Wywołanie bez uprawnienia dostaje błąd, a login jest jedynym wywołaniem, które nie wymaga sesji.
Utwórz stronę i jej treść:
{ "schema": "pages_save", "data": { "name": "About", "layoutid": "<layout id>", "url": "/about/", "title": "About us" } }
{ "schema": "pages_save_html", "data": { "id": "<page id>", "html": "<h1>About us</h1>" } }pages_save odpowiada { "success": true }; id odczytasz przez pages_list. Dla layoutu layouts_save odpowiada id layoutu w value. Gdy w aktualizacji brakuje pola, pole jest czyszczone (title, którego nie wyślesz, zapisze się puste), więc wysyłaj cały rekord.
Wgrywanie plików
POST /admin/upload/ przyjmuje wgranie multipart (do 10 MB), a POST /admin/upload/base64/ treść JSON z data URI (png, jpeg lub gif). Oba odpowiadają listą { id, name, type, ext, size, url }, gdzie url to /download/<id>.<ext>.
Kopia zapasowa, przywracanie i czyszczenie
Trzy trasy z controllers/api.js działają na całej stronie i wymagają uprawnienia admin:
| Trasa | Co robi |
|---|---|
GET /admin/backup/ | pobiera cały magazyn plików (metadane, HTML stron i layoutów, pliki i wpisy) jako jeden plik tekstowy nazwany od strony i daty |
POST /admin/restore/ | wgrywa taki plik (do 100 MB) i go ładuje. |
GET /admin/clear/ | usuwa zawartość strony. Porzuca magazyn plików i ładuje go ponownie, więc strony, layouty, widżety i reszta są usuwan |
Zrób kopię zapasową, zanim wypróbujesz którąkolwiek z nich, nigdy nie otwieraj /admin/clear/ w przeglądarce z ciekawości i trzymaj token w tajemnicy: z nim pojedyncze GET opróżnia stronę.