Это старая версия документа!
Главная → Пользователю Сусанина → Инструкции Редакторам → Боковое меню
Боковое меню
Краткое описание
В системе предусмотрена возможность отображать разные пункты левого меню для каждого из типов пользователей, в левом меню сверху написан тип пользователя (1) под которым произведен вход:
Меню способно отображать один уровень вложенности, верхние ссылки обладающие вложенными элементами имеют стрелочку справа (3), а развернутый пункт меню выглядит как под номером (2)
Создание пункта меню
Создание верхнего пункта меню
Для создания верхнего пункта меню необходимо выбрать для какого типа пользователя создается пункт и нажать на ссылку «Добавить пункт верхнего уровня»
Для примера сделаем пункт меню со ссылкой на создание новой заявки:
На этот адрес должен вести пункт меню
И так, в окне создания пункта:
- Название(1) - Отображаемое название пункта меню
- Ссылка(2) - Ссылка, куда он должен вести (начинается со слэша)
- Активность(3) - Пункт меню будет подсвечен как активный если мы на странице с таким адресом (БЕЗ слэша в начале)
- Иконка(4) - Рядом с названием будет отображаться иконка. Список иконок (работают не все)
После нажатия кнопки «Сохранить», в меню выбранного типа пользователей будет добавлен новый пункт
Создание подпункта меню
Создание подпункта происходит точно так же как и верхнего пункта меню с той лишь разницей что кликнуть нужно на ссылку «Добавить внутрь» напротив пункта в который нужно добавить подпункт:
Удаление пункта/подпункта меню
Чтобы удалить пункт или подпункт меню необходимо кликнуть по ссылке «Удалить» напротив необходимого пункта/подпункта.
ВНИМАНИЕ: Удаление произойдет сразу (без дополнительных вопросов) и все подпункты удалятся (если удаляете пункт с подпунктами)
Массив Меню
Массив в unserialize виде представляет из себя следующее:
- каждый верхний пункт меню - массив
- вложенный пункт меню - массив в элементе items:Araray основного пункта
- обязательные элементы в пункте (желтый):
- label - отвечает за заголовок пункта
- url - отвечает за ссылку пункта (в формате: /controller/action)
- не обязательные элементы (белый):
- icon - содержит часть CSS класса иконки glyphicon («glyphicon glyphicon-home» ⇒ «home»)
- active - ссылка на страницу, при нахождении на которой пункт меню будет выделен как активный (в формате: controller/action)
- items - массив с массивами вложенных пунктов меню
- Если ссылка содержит GET аргументы (красный):
- url - элемент пункта меню превращается из строки в ассоциативный массив, в котором первый элемент имеет ключ url и точно так же как и в обычном случае содержит ссылку, а последующие элементы массива это ключ(аргумент) → значение(значение) для url-адреса («type» ⇒ 10) → (controller/action?type=10)
- active - так же как и url превращается в ассоциативный массив, первый элемент с ключом active содержит ссылку как и в обычном случае, а второй(он же последний) элемент - массив содержащий пары ключ → значение для определения аргументов ([«type» ⇒ 10])
После сборки массива он с помощью метода serialize упаковывается в базу
На что обратить внимание
- Ссылка в элементе массива url вначале имеет слэш (/controller/action), а в элементе active слэша нет (controller/action)
- если ссылка меню сложная и имеет GET аргументы (параметры) в url адресе, то элементы массива url и active изменяются. Теперь они не строкового типа - а массивы. с первым элементом понятно, он сохранился строковым как и раньше, но в случае с url у нас массив имеет первый элемент:String ссылку а ПОСЛЕДУЮЩИЕ arg ⇒ value, а в массиве active у нас всего два элемента, первый так же String, а ВТОРОЙ - МАССИВ с arg ⇒ value
Для примера:
["url" => "/controller/action", "firstArg" => 10, "secondArg" => "view"]
["active" => "controller/action", ["firstArg" => 10, "secondArg" => "view"]]
Основные методы
public static function getMenuByType($type) // возвращает меню из базы в serialize формате для определенного типа пользователя
public static function renderTopMenu($arrTopMenuLinks) // возвращает html код верхнего меню по массиву ссылок из параметров приложения
public static function createMenuFromBase($menu, $nowPage, $nowParams) // возвращает меню в виде айтемов для виджета меню





