site:for-user:susanin:manager:menu

Это старая версия документа!


ГлавнаяПользователю СусанинаИнструкции Редакторам → Боковое меню

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

9

Меню способно отображать один уровень вложенности, верхние ссылки обладающие вложенными элементами имеют стрелочку справа (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) // возвращает меню в виде айтемов для виджета меню

  • site/for-user/susanin/manager/menu.1554021410.txt.gz
  • Последние изменения: 2020/09/24 09:42
  • (внешнее изменение)