Page tree
Skip to end of metadata
Go to start of metadata

Принципы

Почти все параметры ЛК, отвечающие за конкретную функциональность настраиваются, через отдельные программные сущности — виджеты. Основная особенность виджета — он может быть настроен индивидуально под каждого клиента. Для каждого виджета в ЛК существует программная обвязка. Так, каждому типу виджета соответствует класс на ruby, а каждому объекту виджета — объект класса. В данный момент все настройки виджеты получают из YML-файлов. Формат настроек в файле индивидуален для каждого типа виджета, но существует общая часть.

Конфигурационные файлы

В качестве конфигурационных файлов для виджетов используются все YML-файлы в директориях $latera_default/widgets, $latera_client/widgets, $server_client/widgets (файлы объединяются именно в таком порядке). Каждый файл после считывания преобразуется в ruby-объекты класса Hash, которые затем рекурсивно объединяются.

Например, виджет ссылок на главной странице может быть сконфигурирован следующим образом. В файле $latera_default/widgets/navigation_links.yml содержатся настройки инсталляции по умолчанию.

$latera_default/widgets/navigation_links.yml
navigation_links:
  index:
    personal_data:
      position: 1
      icon: profile
      links: [passwords, notifications_subscription]

Ключ «navigation_links» обозначает тип виджета. Он совпадает с названием файла, хотя в общем случае этого не требуется (но настоятельно рекомендуется). Вложенный ключ «index» обозначает конкретный объект виджета. В данном случае объект index используется на главной странице ЛК (это предопределенное поведение). К нему может быть добавлен файл $latera_client/widgets/navigation_links.yml со следующим содержимым:

$latera_client/widgets/navigation_links.yml
navigation_links:
  index:
    actions:
      position: 1
      links: [friends]
    personal_data:
      position: 2

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

navigation_links:
  index:
    actions:
      position: 1
      links: [friends]
    personal_data:
      position: 2
      icon: profile
      links: [passwords, notifications_subscription]

Объекту виджета будет доступна следующая информация:

actions:
  position: 1
  links: [friends]
personal_data:
  position: 2
  icon: profile
  links: [passwords, notifications_subscription]
  • No labels