Глава 3. Панель управления (Административная зона)

03-07-26 15:36

В этой главе подробно рассматривается устройство и возможности панели управления (административной зоны) CMS Seditio. Вы узнаете, как устроен интерфейс управления, как конфигурировать ядро, модули и плагины, как работает уникальный механизм управления экстраполями (словарями), как обслуживать базу данных, очищать кэш и вести системный аудит событий.


3.1. Обзор интерфейса панели администратора

Административная панель Seditio CMS доступна по адресу ваш_домен/admin (или index.php?module=admin) для пользователей, входящих в группу «Администраторы» (по умолчанию группа с ID = 5). Доступ к разделам панели разграничивается стандартной системой прав (ACL).

Двухпанельная структура интерфейса

Интерфейс панели администратора разделен на две основные функциональные области:

  1. Сайдбар (Левая боковая панель / Sidebar): Имеет темное оформление. В верхней части выводится аватар текущего администратора и приветствие (например, «Hi, Amro»). Ниже расположен вертикальный список ссылок на главные разделы управления.
  2. Основное содержимое (Правая часть / Main Content): Здесь отображаются рабочие формы, списки элементов, таблицы статистики.
  • Верхнее горизонтальное меню: Располагается прямо над основной областью контента. В левой части выводятся «хлебные крошки» (навигационная цепочка / breadcrumbs, например: Administration panel > Home или Administration panel > Configuration), а также кнопка быстрого перехода на сайт Go to site. В правой части находятся ссылки на профиль администратора (Profile), личные файлы (My files), количество непрочитанных ЛС (No private messages) и кнопку выхода (Logout).

Динамическая структура сайдбара

Сайдбар Seditio не является жестко зафиксированным: установленные модули и плагины могут динамически добавлять в него собственные пункты и раскрывающиеся подразделы.

При сборке страницы админки загрузчик /system/core/admin/admin.header.php сканирует каталоги активных компонентов и ищет в них файлы описания меню:

  • Для модулей: /modules/{имя_модуля}/admin/{имя_модуля}.admin.menu.php
  • Для плагинов: /plugins/{имя_плагина}/admin/{имя_плагина}.admin.menu.php

Этот файл должен возвращать ассоциативный массив конфигурации меню. Если файл найден и у пользователя есть права на просмотр компонента, его пункт автоматически встраивается в сайдбар. Все пункты сортируются по ключу order (по возрастанию), а при совпадении — по алфавиту названия.

Пример 1. Динамическое меню модуля Страниц (page)

Файл: /modules/page/admin/page.admin.menu.php

return array(
    'title'     => 'core_page',                       // Языковой ключ для названия пункта в сайдбаре ($L['core_page'])
    'order'     => 10,                                 // Позиция сортировки (модуль выводится выше остальных)
    'adminlink' => sed_url('admin', 'm=page&s=manager'), // Основная ссылка при клике на пункт меню
    'sections'  => array(                              // Массив подразделов выпадающего меню
        'queue' => array(
            'label' => 'adm_valqueue',                 // Название: "Очередь валидации"
            'auth'  => array('admin', 'any', 'A'),     // Доступно только администраторам
            'param' => 'mn'                            // GET-параметр ссылки (будет сгенерировано: m=page&mn=queue)
        ),
        'add' => array(
            'label' => 'addnewentry',                  // Название: "Добавить страницу"
            'auth'  => array('page', 'any', 'A'),      // Права на запись/модерацию в модуле страниц
            'param' => 's'                             // Ссылка: m=page&s=add
        ),
        'manager' => array(
            'label' => 'adm_pagemanager',              // Название: "Управление страницами"
            'auth'  => array('page', 'any', 'A'),
            'param' => 's'                             // Ссылка: m=page&s=manager
        ),
        'structure' => array(
            'label' => 'adm_structure',                // Название: "Структура разделов"
            'auth'  => array('admin', 'a', 'A'),
            'param' => 'mn'                            // Ссылка: m=page&mn=structure
        )
    )
);

Пример 2. Одиночный пункт меню плагина Корзины (trashcan)

Файл: /plugins/trashcan/admin/trashcan.admin.menu.php

return array(
    'title'     => 'Trashcan',                 // Название пункта меню
    'order'     => 15,                          // Порядок сортировки
    'adminlink' => sed_url('admin', 'm=trashcan'), // Ссылка
    'auth'      => array('plug', 'trashcan', 'A'), // Доступно только администраторам плагина корзины
    'sections'  => array()                     // Подменю отсутствует (пункт выводится как одиночная кнопка)
);

3.2. Главные настройки системы (Конфигурация)

Настройка всех параметров Seditio осуществляется в разделе «Конфигурация» (m=config).

Подразделы конфигурации ядра (o=core)

Ядро системы разбито на строго определенные категории настроек:

  1. Main setup (Основные настройки): Глобальные параметры сайта (название, описание, e-mail администратора, скин сайта по умолчанию, язык интерфейса по умолчанию, типы контента).
  2. Time and date (Время и дата): Форматы отображения даты и времени по всему сайту, часовой пояс сервера и пользователей.
  3. Skins (Скины): Настройка тем оформления (основной скин сайта, скин панели администратора).
  4. Languages (Языковые пакеты): Настройка доступных локализаций на сайте.
  5. Menu slots (Слоты меню): Глобальные текстовые области (слоты) для ввода HTML/JS-кода сквозных блоков сайта (например, кодов баннеров, линий верха и низа сайта, навигационных списков меню).
  6. Images (Изображения): Конфигурация обработки картинок (библиотека GD, качество сжатия jpeg/webp, максимальные и минимальные размеры загружаемых картинок).
  7. Plugins (Плагины): Глобальные параметры для работы расширений (например, выбор текстового редактора по умолчанию).
  8. HTML Meta (HTML Мета-теги): Настройка шаблонов для генерации тега заголовка браузера (<title>) для различных разделов сайта с использованием динамических макросов (плейсхолдеров {MAINTITLE} — имя сайта, {SUBTITLE} — подзаголовок сайта, {TITLE} — заголовок текущей страницы/раздела). Позволяет задать индивидуальные шаблоны вывода для главной страницы, форумов, галереи, PFS и плагинов.
  9. Home page (Главная страница): Настройка SEO-параметров исключительно для главной страницы сайта. Здесь задаются: Homepage title (заголовок главной страницы), Homepage meta description (описание сайта для поисковых систем) и Homepage meta keywords (ключевые слова сайта). Все эти параметры являются опциональными и используются поисковыми роботами для индексации главной страницы.

Конфигурация модулей и плагинов (o=module / o=plug)

Каждый установленный модуль или плагин может иметь свои параметры. Они считываются из его .setup.php файла при установке и записываются в таблицу базы данных sed_config.

В интерфейсе редактирования настроек администратору доступны две полезные функции:

  1. Сбросить к значениям по умолчанию (Reset): Сбрасывает настройки компонента к исходным значениям, прописанным разработчиком в файле setup.
  2. Добавить недостающие параметры (Add missing parameters): Если вы обновили плагин или модуль до новой версии, где появились новые настройки, эта кнопка просканирует setup-файл и добавит новые опции в базу данных без необходимости переустановки компонента.

3.3. Управление модулями и плагинами

В Seditio разделы «Модули» (m=modules) и «Плагины» (m=plug) служат для инсталляции, контроля состояния и быстрого администрирования расширений.

1. Панель управления модулями (m=modules)

Этот раздел выводит сводную таблицу всех модулей, обнаруженных в каталоге /modules/. Для каждого модуля отображаются:

  • Название (Modules): Имя модуля (сопровождается иконкой) и ссылка на карточку его описания.
  • Код (Code): Системный идентификатор модуля в CMS (например, forums, gallery, page, pfs, pm, polls, users).
  • Версия (Version): Версия сборки модуля (например, 1.0.0).
  • Статус (Running): Текущее состояние работы модуля:
    • Running (Работает) — модуль полностью активен и доступен на сайте.
    • Paused (Приостановлен) — модуль временно отключен администратором.
    • Not installed (Не установлен) — файлы модуля загружены, но он не установлен в систему.
  • Инструменты быстрого действия:
    • Настройки (Configuration / Иконка шестеренки): Ведет на страницу конфигурации данного модуля. Если у модуля нет собственных настроек, иконка не отображается.
    • Права (Rights / Иконка замочка): Перенаправляет в матрицу прав доступа (ACL) для быстрой настройки разрешений на чтение, запись или модерирование этого модуля для различных групп пользователей.
    • Открыть (Open / Иконка стрелочки): Быстрый переход в публичный раздел данного модуля на сайте.

2. Панель управления плагинами (m=plug)

Раздел устроен аналогично панели модулей и выводит список всех плагинов из папки /plugins/:

  • Название и описание: Иконка, название плагина и краткое описание его функционала. При переходе по ссылке открывается карточка плагина со списком его файлов и хуков.
  • Код (Code) и Версия (Version): Системный идентификатор плагина (например, comments, tags, sedcaptcha) и его текущая версия.
  • Статус (Status):
    • Running (Работает) — плагин полностью активен.
    • Paused (Приостановлен) — плагин отключен.
    • Partially running (Работает частично) — часть хуков/частей плагина активна, часть временно отключена.
    • Not installed (Не установлен) — плагин готов к установке.
  • Инструменты быстрого действия:
    • Настройки (Configuration / Иконка шестеренки): Переход в форму детальной конфигурации плагина (если плагин регистрирует свои настройки).
    • Права (Rights / Иконка замочка): Быстрое редактирование прав доступа (ACL) для плагина.
    • Открыть (Open / Иконка стрелочки): Быстрый переход к странице плагина на сайте (доступно для плагинов, имеющих самостоятельный раздел с хуком standalone).

3. Матрица прав доступа (ACL) для компонентов (на примере Форумов)

При клике на иконку замочка («Права») напротив любого модуля или плагина администратор переходит в интерфейс настройки прав доступа (Rights).

На странице настройки прав для модуля (например, Rights / Forums для управления доступом к форуму) представлена таблица со следующей структурой:

  • Группы пользователей (Groups): Полный список зарегистрированных в системе групп (например, Team members, Moderators, Inactive, Banned, Members, Guests и др.).
  • Права группы (Rights per group / Иконка замка): Быстрый переход к индивидуальной матрице прав для выбранной группы.
  • Матрица базовых прав: Для каждой группы выводятся три чекбокса с графическими индикаторами (их расшифровка находится внизу страницы в блоке Help):
    1. Read (Чтение / Иконка пустого листа): Разрешает пользователям этой группы просматривать разделы модуля (например, читать темы на форуме).
    2. Write (Запись / Иконка листа с карандашом): Позволяет пользователям создавать контент (писать сообщения, создавать новые темы, отправлять комментарии).
    3. Administration (Администрирование / Иконка молнии): Предоставляет группе административные и модераторские права внутри этого модуля (например, возможность удалять и переносить чужие темы на форуме).
  • Аудит изменений (Set by): Отображает имя администратора, который в последний раз редактировал или сохранял права для этой группы (например, Amro). Это позволяет отслеживать, кто именно вносил изменения в настройки безопасности.
  • Быстрый переход (Open): Зеленая стрелочка для открытия текущих настроек группы.

После настройки чекбоксов администратор нажимает кнопку «Обновить» (Update) внизу таблицы для применения изменений в БД.


3.4. Управление пользователями и правами групп (User Groups & ACL)

Раздел «Пользователи» (admin.php?m=users) предназначен для ведения списков групп пользователей, настройки их базовых параметров и полного разграничения прав доступа (ACL — Access Control List) ко всем системным ресурсам ядра, модулей и плагинов.

1. Интерфейс списка групп пользователей (User groups)

На этой странице администратор видит список всех существующих групп пользователей:

  • Идентификатор (#ID): Системный ID группы в базе данных. Некоторые ID зарезервированы ядром Seditio:
    • 5 — Team members (Члены команды / Администраторы).
    • 6 — Moderators (Модераторы).
    • 4 — Members (Зарегистрированные пользователи).
    • 3 — Banned (Заблокированные пользователи).
    • 2 — Inactive (Неактивные / Ожидающие активации).
    • 1 — Guests (Гости / Незарегистрированные посетители).
  • Название группы (Groups): Имя группы (например, Team members, Moderators, Russian team).
  • Участники (Members): Общее количество пользователей, добавленных в эту группу.
  • Основная группа (Main): Количество пользователей, у которых данная группа выбрана в качестве основной (определяет скин, права и отображение роли пользователя по умолчанию).
  • Флаги состояния:
    • Enabled (Yes/No) — активна ли группа.
    • Hidden (Yes/No) — скрыта ли группа от обычных пользователей в списках.
  • Права (Rights / Иконка замочка): Ссылка на глобальную матрицу прав для этой группы пользователей.

2. Глобальная матрица прав группы (на примере Rights: Team members)

При переходе по иконке замочка («Права») напротив нужной группы открывается полная таблица настроек доступа ко всем разделам системы:

  • Разделы ядра (Core): Список всех системных контроллеров ядра (например, Administration panel — доступ в админку, Directories & Extra fields — доступ к словарям, Gallery — галерея, Home page — главная страница, Log — журнал логов, Manage — инструменты администрирования, Menu manager — меню, Users — управление пользователями).
  • Разделы модулей и плагинов: Список всех установленных в системе модулей и плагинов.
  • Базовые права (Чекбоксы Read, Write, Administration):
    • Read (Чтение / Иконка пустого листа) — право просматривать раздел.
    • Write (Запись / Иконка листа с карандашом) — право добавлять и редактировать контент в разделе.
    • Administration (Администрирование / Иконка молнии) — право администрировать и модерировать раздел.
  • Аудит изменений (Set by): Фиксирует логин администратора, последним изменившего права доступа для данного раздела в этой группе (например, Amro).

Благодаря этой гибкой матрице можно создать любую роль пользователя — от простого редактора, имеющего право только писать статьи в раздел Pages, до технического администратора или глобального модератора форумов.


3.5. Локализация интерфейса (Языковые пакеты)

В Seditio CMS реализована гибкая мультиязычная архитектура локализации интерфейса. Все текстовые константы, системные сообщения, подписи элементов управления и шаблонов не зашиты жестко в исходном коде, а вынесены в языковые файлы:

  • Глобальные языковые файлы: Находятся в папке /system/lang/ (например, /system/lang/ru/main.ru.lang.php — основной языковой файл для русского языка). Они переводят ядро, базовые системные константы и заголовки.
  • Локальные файлы модулей: Располагаются внутри папок самих модулей (например, /modules/page/lang/page.ru.lang.php содержит переводы для модуля страниц).
  • Локальные файлы плагинов: Хранятся в папках плагинов (например, /plugins/contact/lang/contact.ru.lang.php отвечает за перевод формы обратной связи).

Администратор может переключать глобальный язык сайта по умолчанию в разделе конфигурации. Если на сайте включена мультиязычность, Seditio автоматически считывает языковые предпочтения из профиля пользователя (поле user_lang) или его текущей сессии и подгружает соответствующий языковой пакет.


3.6. Управление словарями и экстраполями (CCK / Extra Fields, m=dic)

Раздел «Словари» (admin.php?m=dic) в Seditio — это мощный визуальный конструктор базы данных (аналог CCK в Drupal или Extra Fields в Cotonti). Он позволяет администратору расширять стандартную структуру таблиц базы данных (страниц pages, пользователей users, разделов форума и т.д.), добавляя новые поля прямо из панели управления без необходимости писать SQL-запросы или использовать phpMyAdmin.

Конструктор базируется на двух системных таблицах базы данных:

  1. sed_dic (Словари): Содержит мета-описания самих полей (системный код, заголовок, тип данных, целевую таблицу БД, параметры валидации).
  2. sed_dic_items (Элементы словаря): Содержит варианты значений (термины/элементы) для конкретного словаря.

Ключевая концепция и архитектурное отличие Seditio:

Важной особенностью Seditio является независимость и гибкость использования этих таблиц. Сами справочники (описанные в sed_dic) могут как использоваться в качестве экстраполей (физических колонок в таблицах БД), так и выступать автономными справочниками данных. При этом использование дочерних элементов из sed_dic_items зависит от типа поля:

  • Использование без элементов (sed_dic без sed_dic_items): Если экстраполе является простым текстовым полем ввода (input), числовым полем или полем длинного текста (textarea / WYSIWYG), то создается только запись в таблице sed_dic. Задействовать дочерние элементы в sed_dic_items не требуется, так как пользователь будет вводить произвольный текст или число вручную.
  • Использование с элементами (sed_dic + sed_dic_items): Если поле ввода требует выбора из предустановленного списка (например, выпадающий список Selectbox, переключатели Radiobox или множественный выбор), то в таблице sed_dic_items создаются соответствующие термины (варианты выбора). Каждый элемент имеет свой ключ и текстовое описание (например, для словаря «Цвет автомобиля» элементами будут: red: Красный, blue: Синий). Seditio использует эти записи для автоматического рендеринга выпадающих списков в формах.

Как работает механизм словарей (экстраполей):

  1. Создание словаря (sed_dic): Администратор создает новый словарь, указывает его заголовок, системный код (который станет физическим именем колонки в БД, например page_price или user_phone) и целевую таблицу (например, таблицу страниц pages).
  2. Заполнение элементов (sed_dic_items) при необходимости: Если выбран тип поля «Список» (Selectbox / Radiobox), администратор переходит в управление элементами данного словаря и добавляет варианты выбора (термины).
  3. Выбор типа поля и параметров: Задаются типы данных (строка VARCHAR, текст TEXT, число INT/DECIMAL, чекбокс TINYINT), при необходимости включается WYSIWYG-редактор, настраиваются валидация и значение по умолчанию.

Автоматическая интеграция в систему:

После сохранения нового поля Seditio автоматически производит следующие действия:

  • Модификация БД: Выполняет SQL-запрос ALTER TABLE к соответствующей таблице базы данных (например, sed_pages), добавляя физическую колонку с указанным типом и параметрами.
  • Генерация TPL-тегов: Создает набор тегов для использования в HTML-шаблонах оформления. Например, для поля page_price будут доступны теги:
    • {PAGE_PRICE} — выводит значение поля (для простых полей) или выбранный вариант из словаря.
    • {PAGE_PRICE_TITLE} — выводит название (заголовок) поля.
  • Формы ввода: Автоматически выводит новые поля в публичной части и админке при создании/редактировании страниц (в модуле page) либо при заполнении профиля (в модуле users).

3.7. Инструменты обслуживания базы данных и очистки кэша

Для обеспечения высокой скорости работы и технической исправности сайта в панели управления предусмотрены встроенные инструменты обслуживания (admin.php?m=cache и admin.php?m=manage).

Управление внутренним кэшем (m=cache)

В Seditio CMS используется гибридная система кэширования для минимизации нагрузки на базу данных и процессор. Движок разделяет кэшируемые данные на три независимых типа, каждым из которых администратор может управлять из панели администрирования:

  1. Системный кэш (БД):

    • Где хранится: В таблице базы данных sed_cache в виде сериализованных данных PHP.
    • Что кэшируется: Глобальные настройки конфигурации сайта (sed_config), структура разделов и категорий страниц, списки и хуки установленных модулей и плагинов.
    • Управление: Кнопка «Очистить всё» (Purge) выполняет очистку таблицы sed_cache. Это заставляет ядро Seditio заново считать структуру модулей, плагинов и категорий при следующем обращении к сайту и перезаписать кэш.
  2. Кэш шаблонов (Файловая система):

    • Где хранится: В каталоге /datas/cache/ на сервере в виде скомпилированных PHP-файлов шаблонов.
    • Что кэшируется: Сгенерированные HTML-шаблоны интерфейса сайта (TPL-файлы). Шаблонизатор XTemplate компилирует TPL-файлы в оптимизированный PHP-код для предотвращения повторного синтаксического анализа разметки при каждом обращении к странице.
    • Управление: Кнопка «Очистить кэш шаблонов» (Purge TPL cache) вызывает функцию sed_tplcache_clear(), удаляющую скомпилированные файлы из папки /datas/cache/. Рекомендуется использовать после ручного редактирования tpl-файлов для немедленного обновления интерфейса.
  3. Кэш ЧПУ (Файловая система):

    • Где хранится: В файле /datas/cache/sed_urls.php.
    • Что кэшируется: Скомпилированный массив правил роутинга и человекопонятных (SEF) URL для ядра, модулей и плагинов, отсортированный по позициям (приоритетам).
    • Управление:
      • Удалить кэш ЧПУ: Удаляет файл sed_urls.php с сервера.
      • Пересоздать кэш ЧПУ (Regenerate SEF URLs): Принудительно запускает функцию sed_urls_generate(), которая заново сканирует правила роутинга, пересортировывает их по приоритетности и генерирует свежий файл кэша.

Инструменты управления БД (m=manage)

Здесь администратор может выполнять операции по очистке устаревших данных:

  • Очистка неактивных сессий пользователей.
  • Поиск и управление заблокированными IP-адресами (Бан-лист).
  • Оптимизация таблиц базы данных MySQL для восстановления фрагментированного дискового пространства.

3.8. Логирование системных событий и аудит действий пользователей

Для контроля безопасности и отслеживания изменений в Seditio встроен системный журнал логов (admin.php?m=log).

Системный логгер сохраняет все события в таблицу базы данных sed_logger. Каждая запись содержит:

  • Уникальный ID события.
  • Дату и точное время совершения действия.
  • IP-адрес пользователя (с возможностью быстрого перехода к поиску активности по данному IP).
  • Имя (логин) пользователя, совершившего действие.
  • Группу события (категорию лога).
  • Детальный текстовый лог (описание действия или ошибки).

Группы системного журнала:

  • Администрирование (adm): Логирует действия в админ-панели — изменение глобальных настроек сайта, обновление конфигурации модулей, очистку кэша.
  • Пользователи (usr): Фиксирует регистрации новых аккаунтов, изменения паролей, редактирование профилей, удаление пользователей, смену групп.
  • Безопасность (sec): Логирует неудачные попытки авторизации, блокировки по IP, попытки несанкционированного доступа к закрытым разделам сайта.
  • Форумы (for): Действия модераторов (удаление/перенос тем, редактирование сообщений).
  • Плагины (plg): Установка, обновление и удаление плагинов, ошибки при вызове хуков.
  • Система (sys): Системные предупреждения, ошибки выполнения скриптов, события обновления CMS.

Администратор с полными правами (isadmin) может просматривать журналы с постраничной разбивкой и фильтрацией по группам, а также полностью очищать журнал событий кнопкой «Очистить всё» (выполняет операцию TRUNCATE над таблицей логов).

Ratings:
(0.00)

No comments yet