ZuloOne
English
Sign in
Menu

Menu — menu

Updated

What it is#

The tree of model ribbon items. An authoritative collection file (with model.json dependencies): an item deleted from the file is DELETED from the database on apply (unlike other metadata kinds, where a file missing from a folder does not affect the database). Items without a template are the "model menu" — visible to everyone on top of any UI template.

JSON envelope#

One file per model, Menu/menu.json, "kind": "Menu", a flat items array with parentMetaId links inside it:

{
  "kind": "Menu",
  "items": [
    {
      "caption": { "en": "Common", "ru": "Общие" },
      "displayOrder": 0, "icon": "fluent-color:globe-24",
      "targetType": "Group",
      "metaId": "<GUID Group>", "name": "Common", "modelId": "<GUID Model>"
    },
    {
      "caption": { "en": "Dictionaries", "ru": "Справочники" },
      "parentMetaId": "<GUID Group>",
      "displayOrder": 0, "icon": "fluent-color:database-48",
      "targetType": "Group",
      "metaId": "<GUID Subgroup>", "name": "Dictionaries", "modelId": "<GUID Model>"
    },
    {
      "caption": { "en": "Countries", "ru": "Страны" },
      "parentMetaId": "<GUID Subgroup>",
      "displayOrder": 1, "icon": "fluent-color:globe-24",
      "targetType": "Dictionary", "targetMetaId": "<GUID Country Dictionary>",
      "metaId": "<GUID Item>", "name": "Country", "modelId": "<GUID Model>"
    }
  ]
}

targetType: group (no target), Dictionary, Document, Register, virtual total, report, custom report, Url, standalone page, user command (a leaf launches a command instead of opening a page). Services are not put into the menu — they are code, not interface items. Your own subgroup can be grafted into another model's group through parentMetaId pointing to the other model's metaId (additive menu extension, without editing someone else's file).

C# base#

None — pure data read by the ribbon builder.

Events / Chain of Command#

None.

Example#

Common/Menu/menu.json — group Common → subgroup Dictionaries → items Country/Region/City/... (see the convention for subgroups by object kind in the root CLAUDE.md).

Was this page helpful?