Админка для иерархической модели объекта на MongoDB
Зависимости
Компонент добавляет на сайт админку для компонента Иерархическая модель объекта на MongoDB.
Допустим вы создали следующую модель:
define('N_ENUM_1', 1); define('N_ENUM_2', 2); define('N_ENUM_3', 3); class TestMongoModel extends NodeMongoModel { public function __construct($id = NULL, $onlyShow = false, $lang = LANG) { parent::__construct("test", $id, $onlyShow, $lang); // Базовый констуктор всегда вызываем самым первым $this->NInit('test_const', NT_CONST, 'Константа'); $this->NInit('test_str', NT_STR, 'Строка'); $this->NInit('test_text', NT_TEXT, 'Текст'); $this->NInit('test_float', NT_FLOAT, 'Флоат'); $this->NInit('test_int', NT_INT, 'Инт'); $this->NInit('test_img', NT_IMG, 'Картинка'); $this->NInit('test_file', NT_FILE, 'Файл'); $this->NInit('test_enum', NT_ENUM, 'Перечисление'); $this->NInit('test_bool', NT_BOOL, 'Булеан'); $this->NInit('test_date', NT_DATE, 'Дата'); $this->NInit('test_udate', NT_UDATE, 'Юникс Дата'); $this->NInit('test_enum', NT_ENUM, 'Покупатель'); $this->NInitEnum('test_enum', N_ENUM_1, 'Вариант 1'); $this->NInitEnum('test_enum', N_ENUM_2, 'Вариант 2'); $this->NInitEnum('test_enum', N_ENUM_3, 'Вариант 3'); $this->NSetClassTitle('Тестовая модель'); // Не обязательно, но пригодится для админки } };
Чтобы в админке появился раздел для редактирования всех объектов этого класса (и добавления новых), нужно сделать лишь следующее:
- Создать в папке /src/admin/ файл с произвольным именем, допустим test.php
- Записать в файл следующее содержимое:
<?php IncludeCom("admin/node_model/list", array ( // Поля модели, которые мы хотим в видеть в списке объектов (на данный момент поддерживаются не все типы) "table" => array("test_const", "test_str", "test_text", "test_float", "test_int", "test_udate"), // Имя нашего класса "class" => "TestMongoModel", // Поле, по которому сортировать элементы по умолчанию. Не обязательный параметр. "order" => "test_udate", // Прямой (1) или обратный (-1) порядок сортировки по умолчанию. Не обязательный параметр. "order_dir" => -1, )); ?>
- Создать в папке /core/config/ файл с произвольным именем, допустим test.php
- Записать в файл следующее содержимое:
<?php require_once BASEPATH . 'core/config/admin_menu.php'; GetQuery(); // Чтобы фунция SiteRoot корректно заработала нужно проинициализировать LANG в функции GetQuery $g_config['admin_menu'][] = array ( 'link' => SiteRoot('admin/test'), // Скрипт который мы добавили на сайт в первом пункте 'name' => 'Тест', // Название пункта меню 'label' => 'Это тест', // Всплывающая подсказка 'css' => '', 'list' => array() ); ?>
Больше никаких действий не требуется.