API: Верхнее меню узла
API: Верхнее меню узла
Базовый путь: /api/v1/nodes/{nodeId}/menu
GET /nodes/{nodeId}/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 — теперь см. раздел «Доступ к пунктам».
Управление (право edit на узел)
GET /nodes/{nodeId}/menu/manage
Настройки и плоский список пунктов в порядке дерева (с parentId).
PUT /nodes/{nodeId}/menu/settings
{ "inheritFromParent": true }POST /nodes/{nodeId}/menu/items
{ "title": "Документы", "url": "#/nodes/uuid/libraries/uuid", "parentId": null, "openInNewTab": false, "sortOrder": 10, "inheritAccessFromParent": false, "userIds": ["user-uuid"], "groupIds": ["group-uuid"]}PATCH /nodes/{nodeId}/menu/items/{itemId}
Можно обновить parentId для смены вложенности.
POST /nodes/{nodeId}/menu/items/{itemId}/move
Перемещение в редакторе:
{ "action": "up" }{ "action": "down" }{ "action": "into", "targetId": "uuid-родителя" }{ "action": "out" }DELETE /nodes/{nodeId}/menu/items/{itemId}
UI
- Верхняя полоса под заголовком страницы — на всех страницах узла (списки, библиотеки, страницы).
- Редактор — в Настройках узла → вкладка «Верхнее меню» (при праве
editна узел).
URL пунктов
- Внутренние страницы:
/portal/lists/zadachi,/portal/pages/welcome - Папка подменю:
# - Внешние ссылки:
https://...(опция «в новой вкладке»)
См. routes.md.