Перейти к содержимому

API: Меню узла

Базовый путь верхнего меню: /api/v1/nodes/{nodeId}/menu
Боковое меню: те же операции под /api/v1/nodes/{nodeId}/side-menu.

Эффективное меню для текущего пользователя с учётом:

  • наследования от родительского узла;
  • фильтрации пунктов по группам доступа.

Ответ (дерево):

{
"items": [
{
"id": "uuid",
"parentId": null,
"title": "Раздел",
"url": "#",
"openInNewTab": false,
"sortOrder": 0,
"children": [
{
"id": "uuid2",
"parentId": "uuid",
"title": "Задачи",
"url": "#/nodes/{nodeId}/lists/{listId}",
"openInNewTab": false,
"sortOrder": 0,
"children": []
}
]
}
],
"sourceNodeId": "uuid",
"inherited": false
}
  • Пункты образуют дерево через parent_id.
  • Пункт-группа без ссылки: url: "#".
  • Удаление родителя каскадно удаляет дочерние пункты.

В node_menu_settings.inherit_from_parent (по умолчанию true):

  • true и есть родитель — используется меню родителя (рекурсивно вверх);
  • false — только пункты, заданные на этом узле;
  • у корневого узла при inherit=true показываются собственные пункты.

У каждого пункта настраивается видимость:

  • inheritAccessFromParent (по умолчанию true для вложенных) — наследовать списки пользователей и групп от родительского пункта меню;
  • userIds — пользователи, которым виден пункт (пусто = не ограничено по пользователям);
  • groupIds — группы, участникам которых виден пункт (пусто = не ограничено по группам).

Правило: если оба списка пусты (и наследование отключено или пункт корневой) — пункт видят все с доступом к узлу. Достаточно совпадения по пользователю или по группе. portal_admin видит всё.

Скрытый родительский пункт скрывает и дочерние.

Ранее использовались только groupIds — теперь см. раздел «Доступ к пунктам».

Настройки и плоский список пунктов в порядке дерева (с parentId).

{ "inheritFromParent": true }
{
"title": "Документы",
"url": "#/nodes/uuid/libraries/uuid",
"parentId": null,
"openInNewTab": false,
"sortOrder": 10,
"inheritAccessFromParent": false,
"userIds": ["user-uuid"],
"groupIds": ["group-uuid"]
}

Можно обновить parentId для смены вложенности.

Перемещение в редакторе:

{ "action": "up" }
{ "action": "down" }
{ "action": "into", "targetId": "uuid-родителя" }
{ "action": "out" }
  • Верхняя полоса под заголовком страницы — на всех страницах узла (списки, библиотеки, страницы).
  • Редактор — в Настройках узла → вкладка «Верхнее меню» (при праве edit на узел).

В редакторе верхнего и бокового меню колонка Доступ показывает сводку («Как у родителя», «Все с доступом к узлу», число пользователей/групп).

Кнопка Настроить… открывает модальное окно «Доступ к пункту меню» с одним чип-пикером: пользователи и группы в одном поле (тот же UX, что при назначении ACL). Пустой список — пункт видят все с доступом к узлу.

В API по-прежнему передаются раздельные userIds и groupIds; UI собирает их из единого выбора субъектов.

Модель и UI доступа те же, базовый путь: /api/v1/nodes/{nodeId}/side-menu (те же manage / settings / items / move / principal-options). Редактор — Настройки узла → «Боковое меню».

  • Внутренние страницы: /lists/zadachi, /pages/welcome
  • Папка подменю: #
  • Внешние ссылки: https://... (опция «в новой вкладке»)

См. routes.md.