Файл admin.main.php в Cotonti CMF

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

Основное назначение и место в системе:

Файл admin.main.php является частью административной панели в системе управления контентом Cotonti CMF. Этот файл управляет отображением основной страницы админ-панели и загружается для обработки запросов, связанных с настройками и управлением системой.

  • Основное назначение: Файл отвечает за:

    • Проверку прав доступа.
    • Формирование заголовков страницы.
    • Вывод контента административной панели.
    • Интеграцию с плагинами для расширяемости.
  • Место в системе: Этот файл является ключевым для управления административной частью интерфейса системы и взаимодействует с различными модулями и плагинами для отображения информации и выполнения администрирования. Он является основным элементом для генерации страниц админки.


Суть содержания кода:

  1. Проверка прав доступа:

    • Проверяется, имеет ли текущий пользователь права на доступ к административной панели с помощью функции cot_auth(), и блокируется доступ, если права не разрешены.
  2. Загрузка и подключение плагинов:

    • Код включает и подключает дополнительные файлы плагинов с помощью cot_getextplugins(). Это позволяет расширить функциональность административной панели сторонними модулями.
  3. Определение параметров и инициализация переменных:

    • Код инициализирует переменные для управления навигацией, заголовками и контентом страницы.
    • Используются глобальные переменные Cot::$usr для получения информации о пользователе и Cot::$L для локализации.
  4. Маршрутизация и обработка контроллеров:

    • Используется класс Router, который управляет маршрутизацией запросов, обрабатывая различные действия на странице админки. Проверяется, если запрашивается расширение, то загружается соответствующий контроллер и его действия.
  5. Режим совместимости (Legacy Mode):

    • Есть поддержка устаревших версий Cotonti для обеспечения совместимости с предыдущими версиями системы, что позволяет избежать сломанных функций при обновлениях.
  6. Формирование заголовков:

    • Файл формирует основной заголовок страницы с учетом информации, переданной через $adminTitle и других параметров.
  7. Работа с шаблонами:

    • Используется объект XTemplate для загрузки и обработки шаблонов. На основе этого создаются HTML-страницы для вывода в браузер.
  8. Вывод данных:

    • В шаблон передаются данные для отображения: хлебные крошки, заголовок, основной контент и помощь.
  9. Обработка AJAX:

    • Для страницы предусмотрена обработка AJAX-запросов, что позволяет динамично обновлять содержимое страницы без полной перезагрузки.

Список функций/методов:

  1. cot_auth():

    • Проверяет права доступа пользователя для конкретной части админ-панели. В данном контексте она используется для получения прав на просмотр и редактирование данных на странице.
  2. cot_block():

    • Блокирует дальнейшее выполнение кода, если не выполнены необходимые условия доступа (например, если пользователь не имеет прав на чтение).
  3. cot_getextplugins():

    • Возвращает список плагинов, подключаемых к системе для расширения функциональности. Это позволяет динамически добавлять дополнительные возможности в административный интерфейс.
  4. Router::getInstance()->routeAdmin():

    • Получает текущий маршрут для администрирования с использованием системы маршрутизации. Она определяет, какой контроллер и действия необходимо выполнить для данного запроса.
  5. cot_title():

    • Формирует полный заголовок страницы с учетом переданных параметров.
  6. cot_breadcrumbs():

    • Формирует хлебные крошки для навигации по административной панели, что помогает пользователю ориентироваться в структуре интерфейса.
  7. cot_tplfile():

    • Загружает шаблон для текущего модуля. Используется для отображения административной страницы.
  8. XTemplate->assign():

    • Присваивает переменные шаблона, которые затем будут использованы для отображения данных в HTML.
  9. XTemplate->parse():

    • Обрабатывает шаблон и формирует его финальное представление.
  10. XTemplate->out():

    • Выводит содержимое шаблона в HTML-страницу.
  11. require_once:

    • Подключает необходимые файлы, такие как заголовок и футер, для корректного отображения страницы.

Классы, с которыми взаимодействует:

  1. Router:
    • Этот класс используется для обработки маршрутов админ-панели. Он управляет тем, какой контроллер и действие будут выполнены в зависимости от запроса.
    • Взаимодействует с методом getInstance(), который создает или возвращает существующий экземпляр класса маршрутизатора.
  2. XTemplate:
    • Класс шаблонов, с помощью которого происходит привязка данных к шаблону и их дальнейший вывод в HTML.

Характеристика стиля PHP:

  1. Использование глобальных переменных:

    • Применяются глобальные переменные, такие как Cot::$usr, Cot::$cfg, и Cot::$out, что является характерной чертой стиля фреймворка Cotonti. Это позволяет централизованно управлять настройками и данными.
  2. Использование ООП (Объектно-Ориентированного Программирования):

    • В коде используются классы, такие как Router и XTemplate, что демонстрирует переход на объектно-ориентированный стиль, позволяя инкапсулировать логику и работать с объектами.
  3. Модульность:

    • Код активно использует хуки (например, cot_getextplugins()), что позволяет расширять функциональность без изменения основного кода, следуя принципам модульности и гибкости.
  4. Чистота и структурированность кода:

    • Код написан с явным разделением логики и представления, что позволяет легко модифицировать и расширять систему, особенно за счет использования шаблонов и плагинов.

В целом, файл admin.main.php в Cotonti выполняет ключевую роль в организации работы административной панели и является примером гибкой и расширяемой системы с использованием объектов и плагинов для различных административных действий.

находится по адресу: /system/admin/admin.main.php движка php-фреймворка Cotonti.

 

<?php
/**
 * Панель администратора
 *
 * @package Cotonti
 * @copyright (c) Cotonti Team
 * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
 */

use cot\router\Router; // Подключение класса Router для обработки маршрутов

(defined('COT_CODE') && defined('COT_ADMIN')) or die('Wrong URL.'); // Проверка правильности URL для защиты от несанкционированного доступа

list(Cot::$usr['auth_read'], Cot::$usr['auth_write'], Cot::$usr['isadmin']) = cot_auth('admin', 'any'); // Получение прав доступа пользователя на чтение, запись и администрирование
cot_block(Cot::$usr['auth_read']); // Блокировка доступа, если нет прав на чтение

$enabled[0] = Cot::$L['Disabled']; // Массив для обозначения состояния "выключено"
$enabled[1] = Cot::$L['Enabled']; // Массив для обозначения состояния "включено"

$id = cot_import('id', 'G', 'TXT'); // Получение параметра 'id' из глобальных GET данных
$po = cot_import('po', 'G', 'TXT'); // Получение параметра 'po' из глобальных GET данных
$c = cot_import('c', 'G', 'TXT'); // Получение параметра 'c' из глобальных GET данных
$p = cot_import('p', 'G', 'TXT'); // Получение параметра 'p' из глобальных GET данных
$l = cot_import('l', 'G', 'TXT'); // Получение параметра 'l' из глобальных GET данных
$o = cot_import('o', 'P', 'TXT'); // Получение параметра 'o' из глобальных POST данных
$w = cot_import('w', 'P', 'TXT'); // Получение параметра 'w' из глобальных POST данных
$u = cot_import('u', 'P', 'TXT'); // Получение параметра 'u' из глобальных POST данных
$s = cot_import('s', 'G', 'ALP', 24); // Получение параметра 's' из глобальных GET данных, ожидается строка из алфавита длиной 24 символа

$adminPath = [[cot_url('admin'), Cot::$L['Adminpanel']]]; // Массив для пути навигации, включает ссылку на панель администратора
$adminTitle = ''; // Инициализация переменной для заголовка страницы
$adminHelp = ''; // Инициализация переменной для помощи на странице
$adminMain =  ''; // Инициализация переменной для основного контента страницы

/* === Hook для плагинов === */
foreach (cot_getextplugins('admin.main') as $pl) { // Для каждого плагина, подключаемого в админпанель
    include $pl; // Подключение плагина
}
/* ===== */

$route = Router::getInstance()->routeAdmin(); // Получение маршрута для админ-панели через объект Router

if (!empty($route->extensionCode)) { // Если существует код расширения для маршрута
    // Проверка прав на администрирование для указанного расширения
    list(Cot::$usr['auth_read'], Cot::$usr['auth_write'], Cot::$usr['isadmin'])
        = cot_auth($route->extensionCode, 'any'); // Получение прав доступа для расширения
    cot_block(Cot::$usr['isadmin']); // Блокировка доступа, если нет прав администратора

    $adminTitle = $cot_modules[$route->extensionCode]['title'] ?? ''; // Установка заголовка страницы в зависимости от расширения
}
if (!empty($route->includeFiles)) { // Если указаны файлы для подключения
    foreach ($route->includeFiles as $includeFile) { // Для каждого файла в списке
        require_once $includeFile; // Подключение файла
    }
} elseif ($route->controller !== null && $route->action !== null) { // Если контроллер и действие не пустые
    $adminMain = $route->controller->runAction($route->action); // Выполнение действия контроллера для маршрута
}
unset($route); // Очистка переменной маршрута

Объяснение кода:

  • Основное назначение: Этот файл управляет админ-панелью и обработкой различных маршрутов, связанных с администрированием в системе Cotonti.
  • Основные действия:
    • Получение и проверка прав доступа для администраторов.
    • Инциализация и обработка GET и POST данных.
    • Подключение плагинов для панели управления.
    • Определение маршрута для админ-панели с помощью класса Router.
    • Включение соответствующих файлов и выполнение действий контроллеров для обработанных маршрутов.
if (isset(Cot::$cfg['legacyMode']) && Cot::$cfg['legacyMode']) { // Если включен режим совместимости с устаревшими версиями
    // @deprecated in 0.9.24 (for backward compatibility)
    if (!empty($adminhelp)) { // Если переменная $adminhelp не пуста
        $adminHelp = $adminhelp; // Присваиваем $adminHelp значение из $adminhelp
    }
    if (!empty($adminmain)) { // Если переменная $adminmain не пуста
        $adminMain = $adminmain; // Присваиваем $adminMain значение из $adminmain
    }
    if (!empty($adminpath)) { // Если переменная $adminpath не пуста
        $adminPath = $adminpath; // Присваиваем $adminPath значение из $adminpath
    }
}

$titleParams = [ // Массив параметров для заголовка страницы
	'ADMIN' => Cot::$L['Administration'], // Название раздела администрирования
	'SUBTITLE' => $adminTitle, // Подзаголовок страницы
];
if (!isset(Cot::$out['head'] )) { // Если в выводе нет заголовка
    Cot::$out['head']  = ''; // Инициализируем переменную заголовка
}
Cot::$out['head'] .= Cot::$R['code_noindex']; // Добавляем мета-тег noindex в заголовок страницы для предотвращения индексации

Cot::$out['subtitle'] = empty($adminTitle) // Если переменная $adminTitle пуста
    ? cot_title('{ADMIN}', $titleParams) // Заголовок по умолчанию
    : cot_title('{SUBTITLE} - {ADMIN}', $titleParams); // Заголовок с подзаголовком

require_once Cot::$cfg['system_dir'] . '/header.php'; // Подключение файла заголовка страницы

$t = new XTemplate(cot_tplfile('admin', 'core')); // Создание нового объекта шаблона с файлом 'admin' для админ-панели

$t->assign([ // Присваиваем переменным шаблона значения
	'ADMIN_BREADCRUMBS' => cot_breadcrumbs($adminPath, false), // Хлебные крошки для навигации
	'ADMIN_TITLE' => $adminTitle, // Заголовок страницы
	'ADMIN_MAIN' => $adminMain, // Основной контент страницы
	'ADMIN_HELP' => $adminHelp, // Текст помощи для администратора
]);

/* === Hook для плагинов === */
foreach (cot_getextplugins('admin.tags') as $pl) { // Для каждого плагина в 'admin.tags'
	include $pl; // Подключение плагина
}
/* ===== */

$t->parse('MAIN.BODY'); // Парсим основной контент
if (!COT_AJAX) { // Если не выполняется AJAX-запрос
	$t->parse('MAIN'); // Парсим всю страницу
	$t->out('MAIN'); // Выводим содержимое основной части
} else { // Если это AJAX-запрос
	$t->out('MAIN.BODY'); // Выводим только основное тело страницы
}

require_once Cot::$cfg['system_dir'] . '/footer.php'; // Подключение файла футера страницы

Объяснение кода:

  • Основное назначение: Этот код отвечает за построение и отображение страницы админ-панели, включая обработку параметров, подключение плагинов, а также управление контентом страницы.
  • Основные действия:
    • Проверка и обработка параметров, связанных с режимом совместимости с устаревшими версиями.
    • Формирование заголовка и подзаголовка страницы.
    • Подключение и вывод основной части страницы с использованием шаблона.
    • Обработка AJAX-запросов для динамичного обновления контента без перезагрузки страницы.
    • Подключение файлов заголовка и футера для правильного отображения страницы.

 

 

8 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 03.08.2026 13:51

  • Страница размещена: 28.01.2025 18:28
  • Последнее обновление: 28.01.2025 18:28

Похожие страницы

Файл admin.cache.disk.php в Cotonti CMF
1 Файл admin.cache.disk.php в движке Cotonti CMF является частью административной панели, предназначенной для управления
Файл admin.config.php в Cotonti CMF
2 Основное назначение файла и его место в системе Файл admin.config.php является частью административной панели системы
Файл admin.extensions.php в Cotonti CMF
3 Файл "admin.extensions.php" в движке Cotonti CMF является важным компонентом административной части системы,
Файл admin.extrafields.php в Cotonti CMF
4 Файл admin.extrafields.php в движке Cotonti CMF предназначен для управления дополнительными полями (extra fields) в
Файл admin.functions.php в Cotonti CMF
5 Основное назначение файла admin.functions.php и его место в системе Файл admin.functions.php в системе Cotonti CMF