Блоки кода
Блоков кода в конструкторе ещё нет. Решение принято, правила зафиксированы, код не написан.
Страница нужна сейчас потому, что от этих правил зависит, стоит ли рассчитывать на блоки кода при выборе платформы, — и потому что одно из правил ограничивает то, чего обычно ждут.
Три блока, и они разные по опасности #
Блок HTML. Произвольная разметка, выполняется как есть. Контексты: страница, урок, виджет. В письмах и сообщениях — нет: там разметку определяет почта и мессенджер, и произвольный HTML туда просто не доедет.
Блок CSS. Стили автоматически ограничиваются документом, в котором стоят. Автору для этого ничего писать не надо — ограничение делает движок при сборке страницы. Урок оформляет себя, а не соседний урок и не админку.
Границу с темой школы стоит держать в голове: CSS-блок оформляет свою страницу, тема оформляет всю школу. Страница, переоформившая админку, — это дефект, а не возможность.
Блок JavaScript. Выполняется на странице, где стоит. Три ограничения, и они не обсуждаются.
Пользовательский код никогда не выполняется на экранах админки #
Ни на одном. Предпросмотр внутри редактора рисуется во вложенном изолированном кадре, который отдаётся отдельным путём и без сессии администратора.
Причина прямая: иначе техспециалист, написавший три строки в уроке, получает сессию владельца школы. В продукте, который стоит у сотен клиентов, это вопрос времени, а не вероятности.
Право на код выдаётся отдельно #
Отдельное право, по умолчанию только у владельца. Оно не входит в право редактировать курс: редактировать курс и писать исполняемый код — разные полномочия. На экране выдачи написано словами, что этот человек получит доступ к данным всех, кто откроет страницу.
Журнал правок и реестр вставок #
Журнал — у всех трёх блоков: кто, когда, что было до, с откатом.
Реестр вставок — один экран, где видно все места в школе, где стоит пользовательский код. Без него через полгода никто не помнит, откуда на странице оплаты взялся чужой скрипт, и снять его боятся.
Отдельно: отзыв права на код не выключает уже написанное. Уволившийся техспециалист перестаёт создавать и править, но его виджет продолжает работать — иначе увольнение ломало бы продажи школы посреди дня. Вместо выключателя — видимость: владелец получает список того, что этот человек создавал, и может отключить сам, увидев предпросмотр изменений.
Риск, названный прямо #
Дав школе исполняемый код, мы отдаём ей часть ответственности за безопасность её же учеников. Это сознательный размен: без блоков кода продукт не закрывает работу технического специалиста, а именно он принимает решение о покупке. Ограничения выше устроены так, чтобы ошибка школы стоила школе, а не всем установкам сразу.