Архітектура.

Вивчення DXPR BuilderРозширенняАрхітектура та API

DXPR Builder має три частини: форматувальник поля на PHP, редактор, що працює в браузері, і набір маршрутів, які редактор викликає, щоб зберігати й отримувати дані. Ця сторінка пояснює, як вони пасують одне одному.

Форматувальник поля

Вміст це HTML, збережений у звичайному текстовому полі Drupal (text, text_long або text_with_summary). Поле стає редагованим, коли його показ перегляду використовує форматувальник DXPR Builder (dxpr_builder_text, у src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php).

Форматувальник завантажує редактор лише коли виконуються всі ці умови:

  • глядач оплачуваний: користувач 1, або активний обліковий запис із edit with dxpr builder, який не виключено з редагування DXPR Builder;
  • глядач може оновити сутність;
  • обліковий запис має адресу електронної пошти;
  • ліміти користувачів і вмісту ліцензії не перевищено;
  • сайт не в списку блокування сервера ліцензій, а сторінка не є сторінкою ревізій.

Усі інші отримують оброблений HTML: токени шляхів розгорнуто, блоки та подання Drupal рендерено в їхні заповнювачі, атрибути редактора data-az* вилучено, а бібліотеки, потрібні вмісту, приєднано. Вивід для залогінених користувачів не кешується (max-age 0), бо він несе налаштування для кожного користувача.

Редактор

Редактор це набір файлів JavaScript, завантажених як бібліотека dxpr_builder/editor.builder. Вони походять із DXPR CDN, або з власної теки dxpr_builder/ модуля, коли вона містить локальну збірку; налаштування Asset source на General Settings з’являється лише тоді. Редактор розбирає HTML поля в дерево об’єктів елементів і записує його назад у HTML під час збереження.

Типи елементів походять із двох місць у dxpr_builder/build/:

Тека Типи елементів
dxpr-builder/core-elements/ Container, Section, Row, Column, Tabs та їхні панелі tab, toggle і slide
dxpr-elements/elements/ Елементи вмісту та елементи макета Collapsibles, Carousel і Positioned Layers

Кожен елемент тримає свої налаштування у власному HTML: атрибути data-azat-*, класи та вбудовані стилі. Збережений HTML це єдиний запис макета; окремого сховища макета немає. Сторінка Власні елементи показує формат.

Розбір наявного HTML

Розмітка без атрибутів конструктора відображається на елементи, коли редактор її завантажує. Контейнери, рядки та колонки Bootstrap стають розділами, рядками та колонками. Розпізнані компоненти стають своїми елементами, наприклад кнопки, сповіщення, картки, цитати, зображення, піктограми, смуги прогресу, вкладки та колапсибли. Текст, таблиці та інша вбудована розмітка стають елементами Text, а <iframe> стає елементом HTML. Вільні теги <script> і <style> та коментарі відкидаються. Правила знаходяться в dxpr-builder/base-element/parse-html.js.

Маршрути, які викликає редактор

Редактор зберігає через /dxpr_builder/ajax, завантажує файли через /dxpr_builder/ajax/file_upload і досягає ШІ через /dxpr_builder/ajax/ai/*. Більшість маршрутів перевіряють перевірку доступу оплачуваного користувача та CSRF-токен; повний список із вимогами доступу наведено в Довіднику API.

Сутності конфігурації

Тип сутності Префікс конфігурації Містить
dxpr_builder_page_template dxpr_builder.page_template Повносторінкові макети
dxpr_builder_user_template dxpr_builder.user_template Розділи, збережені редакторами для повторного використання
dxpr_builder_profile dxpr_builder.dxpr_builder_profile Обмеження для кожної ролі на елементи, блоки, подання, шаблони, набори піктограм і кнопки текстового редактора

Перевірка ліцензії

Ключ продукту це JWT. DxprBuilderLicenseService надсилає його на сервер ліцензій DXPR, який повертає статус ліцензії та її ліміти користувачів і вмісту; результат кешується. Без ключа продукту діє безкоштовний рівень: один користувач і 100 елементів вмісту. Служба також тримає синхронізованим список редакторів цього сайту на сервері.