Repository navigation
Conversation
A menu item can sit under a top-level item of the same menu. The parent is given as its position in the submitted menu, so a new menu can be saved in one request; parents are stored first so a child can point at its parent's id, while the order keeps the menu's sequence. - an item cannot sit under itself, under a child or under a position the menu does not have; the service keeps its own check for items built without the input validation - menu items expose their parentId in the API Co-authored-by: Ruben van der Linde <ruben@conduction.nl> Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Remko <remko@conduction.nl>
remko48
added this pull request to stack #24
October 12, 2026 11:39
rjzondervan
reviewed
Oct 12, 2026
3 of 5 tasks
…t in the output - an item placed under itself is already refused because its parent then has a parent too, so comparing the parent's position with its own adds nothing - the serialization test now sets a parent and checks that it is returned Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Remko <remko@conduction.nl>
The menu parameters document both page targets and parentIndex. The dashboard item put in front of a new application's menu moves every parent position down by one, so children stay under their parent. Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
3 of 5 tasks
# Conflicts: # lib/Controller/ContextController.php # lib/Service/ContextService.php # openapi.json # src/types/openapi/openapi.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A menu item can now sit under another item, so an application's menu can group its pages. Only one level deep: a parent cannot itself have a parent.
What changes
tables_contexts_menu_itemgets a nullableparent_id.parentIndex, the position of the parent in the same payload (a non-negative whole number). Positions are used instead of ids because the whole menu is replaced on save, and new items don't have an id yet.parent_id. A parent may therefore come after its child in the payload.orderkeeps the sequence of the whole payload.parentIdis added to each menu item in the response (OpenAPI and TS types regenerated).Page target
The rewritten menu parameter docs include
'page'next toparentIndex. Children under the dashboard item work like under any other item. Since create stores a submitted menu as it is (#21), noparentIndexneeds shifting. Tests:ContextServiceTest::testCreateKeepsChildrenOfASubmittedMenuUnderTheirParent,testCreateStoresChildrenUnderTheStartPageItem,MenuItemInputTest::testResolvingTheStartPageKeepsTheParent. Prepared in the Conduction fork for porting upstream by @remko48. Prepared with Claude Code.🖼️ Screenshots
Backend only, no UI changes.
🏁 Checklist
/backport to stableX.X🤖 AI (if applicable)