AdminTools - инструментарий для админов

Набор инструментов для администраторов и пользователей админки. Все описанные возможности управляются системными настройками.

Избранные элементы

У каждого типа элементов в тулбаре появилась звездочка, которая включает и отключает режим избранных элементов. В контекстное меню каждого элемента добавлены пункты "Добавить в избранное" и "Удалить из избранного". За внешний вид избранных элементов отвечает css класс "x-element-favorite". Чтобы изменить иконку, укажите класс иконки в системной настройке admintools_favorites_icon. Например, "icon-star" или "icon-heart". Названия иконом можно узнать на странице Font Awesome, только вместо "fa" нужно писать "icon". Текущие состояния фильтров и элементов хранятся в поле Extended пользователя. Т.е. у каждого пользователя будут свои избранные элементы, посмотреть которые можно зайдя в настройки пользователя.

Журнал элементов

Журнал измененных элементов зачитывается из системной таблицы modx_manager_log.

Тут достаточно всё просто. Таблицу можно отфильтровать по пользователю, дате и названию элемента. Кликнув на элемент можно перейти в диалог для его редактирования.

Последнее состояние системных настроек

Эта возможность позволяет запоминать последнее состояние интерфейса системных настроек. Все знают, что системные настройки всегда открываются для ядра («core»). Теперь, если данная фича включена, то системные настройки откроются для того же пространства имён (namespace) и подраздела (area), которые были выбраны в прошлый раз. Эти настройки также индивидуальны для каждого пользователя.

Отключение проверки прав для пользователей при формировании дерева элементов

Это очень полезная настройка, которая позволяет сократить время загрузки дерева и уменьшить потребляемую память, так как элементы грузятся не в объекты, а в массив. Тут конечно все зависит от количества открытых разделов и папок в них. Чем больше их открыто, тем ощутимее разница. Разработчикам, которым не нужны права на элементы, такая оптимизация будет не лишней. Для пользователей с sudo правами проверки нет.

По-умолчанию, проверка включена.

Очистка кэша ресурса

Эта настройка отвечает за очистку кэша только сохраняемого ресурса, а не всего сайта. Идея взята у Василия, но логика немного другая. Я постарался сохранить изначальное назначение чекбокса "Очистить кэш". Если он не отмечен, то работает как и положено - ничего не очищается. Если он установлен и настройка admintools_clear_only resource_cache включена, то удаляется кэш только текущего ресурса. Если настройка выключена, то удаляется весь кэш. По-умолчанию она выключена.

При включении этой настройки важно понимать, что изменения конкретной страницы не отразятся на других кэшированных(!) страницах, где изменённая страница вызывается. Это может быть страница новостей или блок похожих статей. Хотя, как правило, такие страницы используют некэшированный вызов сниппетов. Именно поэтому MODX изначально удаляет кэш всех страниц.

Создание кэша ресурса

Данная настройка работает вместе с предыдущей. Если отметить чекбокс «Создать кэш», то при сохранении ресурса кэш страницы будет создан заново. В противном случае он будет создан при первом просмотре страницы на сайте.

Убираем описание из меню "Приложения"

Добавил возможность убирать описание компонентов в меню "Приложения", чтобы немного уменьшить его. Есть, конечно, системная настройка topmenu_show_descriptions. Но она отключает описание у всех пунктов меню. Не знаю как другим, а мне нравится меню с описанием - функционально и эстетично. Поэтому не хочется убирать описание у всех. По-умолчанию включена.

Аутентицикация в админку через email

Данная фича даёт возможность залогиниться в админке просто указав имя пользователя или email. На почту придет ссылка, кликнув на которую в течение определённого времени произойдет аутентификация в админке.

Настройка

Для начала нужно её включить в системных настройках, по-умолчанию она выключена. Там же нужно указать id страницы, на которой будет размещаться форма. Удобнее всего создать новую страницу с пустым шаблоном, на которой вызывать сниппет adminLogin, отвечающий за авторизацию.

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=[[++modx_charset]]" />
    <meta name="robots" content="noindex" />
    <base href="[[++site_url]]" />
    <title>[[*pagetitle]]</title>
</head>  
<body>
    [[!adminLogin]]
</body>
</html>

Так получается максимально похоже на админку. Сама форма находится в чанке tpl.login.form.

Как это работает

Для аутентификации нужно ввести логин или email. На указанный (существующий в базе) или найденный по логину email будет выслана ссылка с одноразовым токеном. Он будет активен согласно системной настройке authorization_ttl. По-умолчанию, 10 минут. По истечению этого времени он аннулируется. Также как и при аутентификации через него. Второй раз зайти по одной и той же ссылке не получится.

Внимание!

Пользователь может залогиниться только с того же IP адреса и в том же браузере, с которого был отправлен запрос.

Аутентификация доступна только для тех пользователей, которым разрешен доступ в админку. Повторно отправить запрос можно только после деактивации текущего токена, что снижает риск брут-форс атаки.

Аутентификация происходит через стандартный login-процессор, поэтому все события отрабатывают как положено.

Пользовательские заметки

Пользовательские заметки - это такой маленький эвернотик. В него можно сохранять какие-то наработки, шаблоны и черновики. Особенно должно быть удобно для командной работы. Для личного использования пригодятся приватные заметки, которые может видеть только пользователь их создавший. Заметки можно импортировать и экспортировать, что позволяет переносить базу знаний и различных заготовок с сайта на сайт.

Как это работает

В меню пользователя добавлен пункт "Заметки". При нажатии на него открывается отдельное окно с заметками. Чтобы добавить заметку, нужно нажать кнопку + на панели инструментов и в открывшемся диалоге заполнить нужные поля.

Изменить заметку можно как вызвав диалог редактирования (двойной клик, кнопка в строке или контекстное меню), так и прямо в нижней части списка заметок. Кликнув по заметке в списке, в нижней части окна появляется её текст. При изменении текста внизу окна появляются 2 кнопки - Сохранить и Отменить. Нижную часть окна можно увеличить или уменьшить с помощью стандартного разделителя - кликаете на его и тянете вверх или низ.

Чтобы проще было искать заметки, добавлен поиск с возможностью выбора места - в наименованиях заметки, в содержании, в тегах или везде сразу.

Связь ресурсов и шаблонов

Если включить эту настройку, то у шаблонов появится вкладка с зависимыми ресурсами, использующими текущий шаблон. А у ресурса - ссылка на текущий шаблон. Помогает при разработке.

Основная задача данной функции - исключить пропадание меню при малейшем отклонении мыши. Если настройка меню включена, то меню открывается и закрывается с небольшой задержкой.

Права доступа к ресурсам на сайте

Этот альтернативный механизм прав доступа упрощает настройку доступа пользователей к страницам сайта. Права указываются для каждой страницы. Подробнее можно почитать тут.

Таблица плагинов

Эта таблица представляет собой плоский список плагинов системы, для которых определены события. Она позволяет увидеть какие плагины для каких событий сработают и в каком порядке.

В этом интерфейсе доступны следующие операции:

  • Создание плагина.
  • Отключение плагина.
  • Удаление плагина.
  • Привязка к новому событию.
  • Отвязка от текущего события.
  • Изменение вида списка - группировка по плагинам или по событиям.
  • Фильтр списка по плагинам или событиям.

Более подробнее можно почитать тут.

Цветовые темы

Цветовые темы помогут немного разнообразить админку. В базовую версию входят 2 цветовые темы - "dark" и "purple". Укажите желаемую тему в системной настройке admintools_theme.

Темы также можно создавать самостоятельно. Для этого скопируйте файл purple.css, находящийся в папке assets/components/admintools/css/mgr/themes и измените цвета по желанию.

Правила именования следующие — в системной настройке admintools_theme указываете название темы, которое будет соответствовать названию файла, а в файле стилей имя класса темы должно состоять из названия темы и суффикса "-theme". Вот пример для темы dark:

.dark-theme #modx-navbar {
    background-color: #272e3c !important;
    background-image: none;
    box-shadow: none;
}
...

Поля ресурса с изменяемой высотой

Форма ресурса содержит 3 поля textarea - описание, аннотация и содержимое. Последнее достаточно большое. Плюс обычно к нему подключают редактор. А вот первые два для больших текстов не очень подходят. Для решения этой проблемы AdminTools добавляет к ним CSS стиль для вертикального изменения размера.

Эта возможность подойдёт для тех, кто привык работать с правым сайдбаром. Укажите значение right в системной настройке modx_tree_position. Для левого положения укажите left или оставьте настройку пустой.

В некоторых компонентах эта возможность не работает.

Пользовательские файлы стилей и скриптов

Возможность подключения собственных css и js файлов в интерфейсе менеджера обеспечивают 2 системные настройки - admintools_custom_css и admintools_custom_js. Если файлов несколько, их нужно перечислить через запятую. Вот один из примеров использования.

Запрет действий с пакетами

Чтобы запретить действия над пакетами в системной настройке admintools_package_actions укажите соответствующие права в формате:

{package1:{action1:false, action2:"Сообщение для action2.", message:"Сообщение по-умолчанию."},
package2:{...}}

Имя пакета регистрозависимо. Доступные действия:

  • install - установка
  • reinstall - переустановка
  • uninstall - деинсталляция
  • update - обновление
  • remove - удаление
  • checkupdate проверить обновление
  • details - посмотреть детали
  • all - "Все действия"
  • message - сообщение

Чтобы запретить действие, можно указать для него или false или сообщение. В первом случае сообщение будет искаться в ключе message. Этот ключ пригодится, если нужно вывести одно сообщение для всех действий. Таким образом, для каждого действия можно указать своё сообщение или для всех одно общее или вперемешку — для некоторых определить, для остальных общее.

# Запретить удаление пакета
{Ace:{remove:"Удаление запрещено!"}}

# Запретить удаление и деинсталяцию пакета
{Ace:{uninstall:false, remove:false, message:"Действие запрещено!"}}

# Запретить установку определённого пакета
{Ace:{install:"Данный пакет устанавливать запрещено по причине несовместимости!"}}

# Запретить все действия для пакета. 
{Ace:{all:"Все действия с этим пакетом запрещены!"}}

# Разрешить только некоторые действия для пакета.
{Ace:{details:true, all:"Это действие запрещено!"}}

Подгрузка пользователя только текущего контекста

В базовой версии MODX в случае, когда пользователь залогинен в админке (контекст "mgr"), а на сайте находится как гость, MODX загружает в $modx->user пользователя из админки. Хотя вы можете ожидать анонима. Чтобы отключить это поведение, включите системную настройку admintools_only_current_context_user.

Блокировка админ панели

Позволяет блокировать админку без разлогинивания. Возможны 2 режима работы - автоматическая блокировка при отсутвии активности и ручная. Первая включается в системной настройке admintools_lock_timeout. В ней нужно указать количество минут бездействия для автоблокировки. А самостоятельно заблокировать админку можно в верхнем меню пользователя выбрав пункт "Заблокировать".

Разблокировать админку можно указав пароль пользователя или код, указанный в системной настройке admintools_unlock_code.

Индикатор новых сообщений

Отображает в верхнем меню количество непрочитанных сообщений. Проверка сообщений происходит только при открытии страницы. Т.е. чтобы увидеть новые сообщения, нужно обновить страницу.

Системные параметры

Ключ По-умолчанию Описание
admintools_animate_menu true Включает анимацию главного меню.
admintools_enable_favorite_elements true Включает функционал избранных элементов.
admintools_favorites_icon Иконка избранного элемента, которая заменит стандартную иконку, например, "icon-star".
admintools_enable_elements_log Добавляет кнопку на панель инструментов дерева элементов, которая открывает окно с логом измененных элементов.
admintools_remember_system_settings true Восстанавливает последние фильтры системных настроек.
admintools_check_elements_permissions true Отключает проверку прав на элементы при загрузке дерева. Это ускоряет построение дерева элементов. Укажите "false", чтобы отключить проверку.
admintools_clear_only resource_cache false Если включено, то при сохранении ресурса удаляется только его кэш, а не кэш всего сайта.
admintools_hide_component_description true Скрывает описание компонентов в меню "Приложения".
admintools_email_authorization false Включает механизм аутентификации через email. Должен быть определен ID ресурса с формой. (loginform_resource).
admintools_authorization_ttl 600 Время в секундах, в течение которого можно аутентифицироваться по высланной ссылке.
admintools_loginform_resource ID ресурса, который используется для входа в менеджер сайта.
admintools_enable_notes true Включает функционал заметок пользователя.
admintools_template_resource_relationship true Добавляет шаблону вкладку с зависимыми ресурсами, а ресурсу ссылку на шаблон.
admintools_alternative_permissions true Включает механизм альтернативных прав доступа для ресурсов.
admintools_plugins_events true Добавляет кнопку на панель инструментов плагинов дерева элементов, которая вызывает окно со списком событий.
admintools_theme default Цветовые темы админки. Доступные значения: default, dark и purple. Если оставить пустой, то применится тема default (стандартная тема MODX).
admintools_modx_tree_position left Положение сайдбара с деревом. Доступные значения: left, right.
admintools_custom_css Список файлов стилей, которые нужно подключить в интерфейсе менеджера.
admintools_custom_js Список файлов скриптов для подключения в интерфейсе менеджера
admintools_package_actions Позволяет запретить определённые действия с пакетами. Формат: {package:{action1:'Сообщение', action2:false, message:'Сообщение по-умолчанию'}}
admintools_only_current_context_user false Отключает установку пользователя, залогиненного в админке, для незалогиненного пользователя на сайте.
admintools_lock_timeout 0 Количество минут, через которое произойдёт блокировка админ панели при отсутствии активности. 0 отключает автоблокировку.
admintools_unlock_code Код быстрой разблокировки админ панели. Оставьте пустым, чтобы разблокировать по паролю.
admintools_show_lockmenu Показывать меню блокировки в меню пользователя.

Проект на Github.

Статьи про AdminTools.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.