Плюшка CMS#17.01.2018 новое

/* Создан для быстрой разработки приложений */
Скачать Демо

14.4. Элементы управления админкой

13.10.2015

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

controller::adminACTIONLink() { return array(); }
controller::adminACTIONLink2($data) { return array(); }

Тут ACTION — это имя действия, а имя действия, как было сказано, определяет какая страница будет отображена в браузере.

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

Каждая из этих функций должна вернуть массив массивов, каждый из которых описывает одну из «кнопок». Поля такого массива следующие:

0 => Модуль.Действие, по которому определяется имеет ли авторизованный пользователь доступ к выполнению данной операции. Это поле сравнивается с полем «module» в описанной выше таблице «right».

1 => условное имя файла изображения без директория и расширения. Например, если указать «edit», то это будет соответствовать файлу /admin/public/edit16.png.

2 => текст, всплывающая подсказка, появляющаяся при наведении курсора мыши.

3 => текст для атрибутов ALT и TITLE тега .
4 => произвольный JavaScript, для события onclick тега . В этом поле, например, может быть запрос подтверждения для удаления элемента сайта.

Обязательными являются только первые 2 параметра.

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

Вот пример первой процедуры:

protected function adminBlogLink() {
return array(
array('article.category','?controller=article&action=category&id='.$this->category['id'],'edit','Править заголовок, мета-теги блога'),
array('article.article','?controller=article&action=article&categoryId='.$this->category['id'].'&blog','new','Добавить новую статью в блог')
);
}

Из всех перечисленных в этом массиве кнопок будут созданы только те, на действие которых пользователь имеет право (за это отвечает первый параметр).

Вторая процедура должна вернуть точно такой же массив как и первая. Для этого ей передаётся один параметр, который содержит данные одного элемента из множества (одной записи блога, например).

Данные для этой процедуры «поставляются» из представления вызовом $this->admin($item), где $item - блок данных, который должен быть передан в процедуру построения кнопок. Обычно эта часть представления выглядит так:

foreach($this->data as $item) {
...
$this->admin($item);
...
}

Виджеты также могут иметь кнопки административного интерфейса. Для этой цели в них предусмотрены две процедуры:

widget::adminLink() { return array(); }
widget::adminLink2($data) { return array(); }

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

$this->admin($item);