Release v0.3.15
Release 0.3.15
Changelog
Added
- Dashboard menu form: Split into definition (code, base, name, context, icon) and configuration (permission checker, depth, collapsible, CSS classes).
MenuTypecomposesMenuDefinitionTypeandMenuConfigType. New menu and “edit definition” (pencil) show only definition; “edit configuration” (gear) shows only configuration. Optionsection(basic|config|null) onMenuType. - Dashboard item form: Same split.
MenuItemTypeaccepts optionsection; “add item” and “edit identity” (pencil) show only definition (type, icon, labels); “edit configuration” (gear) shows only configuration (position, parent, link, permission). Partial and Live component supportsection_focus; form only includes the requested section when opened from the corresponding modal. - Redirect to referer: After successful form submission (create/update menu or item, delete, copy, import, move up/down), the controller redirects to the request Referer when it is a same-origin URL; otherwise redirects to the usual route. Preserves fragment for move actions (e.g.
#item-123). - Import in modal: Import form is loaded and submitted via AJAX in a modal; on success the page redirects to referer (or index).
- Dashboard UI: Two actions per menu row (pencil = edit definition, gear = edit configuration) and per item row (pencil = edit identity, gear = edit configuration). Modal title and scroll target follow the opened section.
- Translations:
dashboard.edit_identity,dashboard.edit_config,form.menu_type.section_definition,form.menu_type.section_config(en, es, fr). - Dockerfile: Added Node.js, npm and pnpm for building dashboard assets inside the container.
Changed
- MenuItem: Property
labelis now nullable (for divider items). GettergetLabel()returns''when null; setter accepts?string. Database columnlabelis nullable. - Twig:
_menu_form_partialand_item_form_partialno longer usefield.vars.rendered(removed in Symfony 6.3+); they iterate and render each field once. Menu and item partials render only the section that matchessection_focus(and only that block is present in the form whensectionis set). - Full-page forms:
menu_form.html.twiganditem_form.html.twigshow the config section only whenform.configis defined (new menu / new item usesection => basic, so config is omitted).
Full Changelog: v0.3.14...v0.3.15