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

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.