EasySettings - системные настройки здорового человека

Всем привет! В прошлой заметке я рассказывал, как переродился modSizeControl, а сейчас, как и обещал, покажу новый бесплатный компонент, который заменяет страницу «Системные настройки» удобной формой.

Лет семь назад я писал статью «Разработка компонента без злосчастного ExtJS», где посмеивался над нытьём в телеграм-чате по поводу ExtJS. Прошло время, нытьё никуда не делось, и чего уж там — я и сам к нему присоединился. Потому что каждый раз, когда нужно поменять пару настроек, происходит одно и то же: выбираем пространство имён в фильтре, выбираем раздел во втором фильтре, листаем постраничную навигацию, дважды кликаем по ячейке «Значение», промахиваемся, кликаем ещё раз, вводим значение, жмём Enter и ждём, пока строка сохранится. Потом следующая. А описание настройки прячется за плюсиком, который тоже нужно нажать.
Вот и решил, что хватит ныть, пора сделать.
Что изменилось
- Никаких двойных кликов. Каждая настройка — строка: слева название, описание и ключ, справа поле. Поле сразу редактируемое и подходит типу: переключатель Да/Нет, число, пароль с кнопкой «Показать», JSON с проверкой, растущее текстовое поле, список вариантов у комбобоксов ядра.
- Раздел целиком. Никакой пагинации: слева дерево пространств имён и разделов в стиле MODX, у каждого раздела свой адрес (&ns=core&area=site), работают «Назад» и «Вперёд» браузера.
- Сохранение пачкой. Меняете сколько угодно значений, изменённые строки отмечаются, а внизу появляется панель «Отменить» / «Сохранить». Или Ctrl+S.
- Нормальный поиск. По названию, ключу, описанию и значению во всех пространствах имён сразу, с подсветкой совпадений. И он находит переводы из файлов лексикона, которые поиск ядра не видит.
- Сортировка по ключу, названию или дате изменения. Удобно, когда нужно вспомнить, что же вы там меняли на прошлой неделе.

Текстовые настройки ядра, у которых на самом деле фиксированный набор значений — log_level, link_tag_scheme, friendly_alias_translit и другие, — показываются списком. Больше не нужно открывать документацию, чтобы вспомнить, что там было: abs или full.

Правый клик никуда не делся
Привычка к правому клику никуда не денется, поэтому он по строке открывает меню, как в гриде MODX: «Редактировать», «Скопировать ключ», «Вернуть сохранённое значение» и «Удалить». Правый клик по полю ввода оставляет меню браузера — вставлять из буфера ведь тоже как-то нужно.

В окне правки меняется всё: тип поля, пространство имён, раздел, название, описание и значение. Название и описание пишутся в лексикон на языке менеджера и только если их действительно поменяли. Кто правил настройку в русском менеджере штатным окном, тот знает, почему я это уточняю.

События
Вкладка «Системные события» тоже на месте: события по группам, подписанные на них плагины, поиск и сортировка по числу плагинов. Пользовательские события можно создавать и удалять, события ядра — как и раньше, нельзя.

А как же ExtJS?
Этот вопрос в комментариях точно прозвучит, так что отвечу заранее. Интерфейс написан на Svelte, ExtJS в нём только там, где без него никак: поля сторонних дополнений со своим xtype рисуются их собственными компонентами, подтверждения и уведомления — штатными окнами MODX. При этом внешне страница от менеджера не отличается: вкладки, кнопки, окна и цвета те же, что в MODX 3 или MODX 2. Адрес страницы, пункт меню и права остаются прежними.

Каждая настройка сохраняется процессором ядра, так что вся логика MODX работает как раньше: перезагрузка конфигурации, пересчёт URI при смене friendly_urls, проверка прав. Если одна настройка не сохранилась, остальные всё равно сохранятся.
Настройки раздела грузятся при переходе к нему, поэтому на сайте с тремя десятками дополнений страница открывается так же быстро, как на чистой установке.
А если хочется по-старому?
Можно, а зачем?! Кнопка «Классический вид» открывает штатную таблицу, а на ней рядом с Help! появляется кнопка «Удобный вид», чтобы вернуться обратно. Выключить компонент совсем можно настройкой easysettings.enabled.

Требования
- MODX Revolution 2.x или 3.x.
- PHP 7.4+.
- Право settings, как у штатной страницы, а для вкладки событий — events.
Пожалуй, на этом всё, остальное про интерфейс — в документации.
Бесплатные компоненты в серии на этом закончились. Следующий — размером 16×16 пикселей.
Спасибо за внимание!
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 1
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Что такое Svelte? Почему с ним? Вопрос мой только о том, что если каждое дополнение будет ставить свои либы и фреймворки — будет тот еще зоопарк :)