Architektura.
Kreator DXPR ma trzy części: formater pola w PHP, edytor działający w przeglądarce oraz zestaw tras wywoływanych przez edytor do zapisywania i pobierania danych. Ta strona wyjaśnia, jak do siebie pasują.
Formater pola
Treść to HTML przechowywany w zwykłym polu tekstowym Drupala (text,
text_long albo text_with_summary). Pole staje się edytowalne, gdy
jego wyświetlanie używa formatera DXPR Builder
(dxpr_builder_text, w
src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php).
Formater wczytuje edytor tylko, gdy spełnione są wszystkie te warunki:
- przeglądający jest rozliczany: użytkownik 1 albo aktywne konto z
edit with dxpr builder, niewykluczone z edycji w kreatorze DXPR; - przeglądający może aktualizować encję;
- konto ma adres e-mail;
- limity użytkowników i treści licencji nie są przekroczone;
- witryna nie znajduje się na liście blokowanych serwera licencji, a strona nie jest stroną rewizji.
Wszyscy pozostali dostają przetworzony HTML: rozwinięte tokeny ścieżek, bloki
i widoki Drupala wyrenderowane w swoich symbolach zastępczych, usunięte
atrybuty edytora data-az* i dołączone biblioteki potrzebne treści.
Wynik dla zalogowanych użytkowników nie jest buforowany (max-age 0),
ponieważ niesie ustawienia dla użytkownika.
Edytor
Edytor to zestaw plików JavaScript wczytywanych jako biblioteka
dxpr_builder/editor.builder. Pochodzą z DXPR CDN
albo z własnego katalogu dxpr_builder/ modułu, gdy zawiera on
lokalną kompilację; ustawienie Asset source w General Settings
pojawia się tylko wtedy. Edytor parsuje HTML pola do drzewa
obiektów elementów i zapisuje go z powrotem do HTML przy zapisie.
Typy elementów pochodzą z dwóch miejsc w dxpr_builder/build/:
| Katalog | Typy elementów |
|---|---|
dxpr-builder/core-elements/ |
Container, Section, Row, Column, Tabs i ich panele kart, przełączników i slajdów |
dxpr-elements/elements/ |
Elementy treści oraz elementy układu Collapsibles, Carousel i Positioned Layers |
Każdy element trzyma swoje ustawienia we własnym HTML: atrybuty data-azat-*,
klasy i style osadzone. Zapisany HTML jest jedynym zapisem układu; nie ma
osobnego magazynu układu.
Własne elementy pokazują format.
Parsowanie istniejącego HTML
Znaczniki bez atrybutów kreatora mapowane są na elementy, gdy edytor je wczytuje. Kontenery, wiersze i kolumny Bootstrapa stają się sekcjami, wierszami i kolumnami. Rozpoznane komponenty stają się swoimi elementami, na przykład przyciski, alerty, karty, cytaty blokowe, obrazy, ikony, paski postępu, karty i zwijane panele. Tekst, tabele i inne znaczniki osadzone stają się elementami Text, a <iframe> staje się elementem HTML. Luźne tagi <script> i <style> oraz komentarze są odrzucane. Reguły znajdują się w dxpr-builder/base-element/parse-html.js.
Trasy wywoływane przez edytor
Edytor zapisuje przez /dxpr_builder/ajax, przesyła pliki przez
/dxpr_builder/ajax/file_upload i sięga do AI przez
/dxpr_builder/ajax/ai/*. Większość tras sprawdza kontrolę dostępu
rozliczanego użytkownika i token CSRF; pełna lista z wymaganiami
dostępu znajduje się w dokumentacji API.
Encje konfiguracyjne
| Typ encji | Prefiks konfiguracji | Zawiera |
|---|---|---|
dxpr_builder_page_template |
dxpr_builder.page_template |
Pełnostronicowe układy |
dxpr_builder_user_template |
dxpr_builder.user_template |
Sekcje zapisane przez redaktorów do ponownego użycia |
dxpr_builder_profile |
dxpr_builder.dxpr_builder_profile |
Limity dla roli na elementy, bloki, widoki, szablony, zestawy ikon i przyciski edytora tekstu |
Sprawdzanie licencji
Klucz produktu to JWT. DxprBuilderLicenseService wysyła go do
serwera licencyjnego DXPR, który zwraca status licencji oraz jej
limity użytkowników i treści; wynik jest buforowany. Bez klucza produktu
obowiązuje plan darmowy: jeden użytkownik i 100 elementów treści. Usługa
utrzymuje też w synchronizacji listę redaktorów witryny na serwerze.