feat(17-04): menu plugin admin with registry types, URL checks and tree reorder
- golem15.menu plugin, tables golem15_menu_menus and golem15_menu_menu_entries with the PHP columns plus a nullable url_pattern (D-02) - MenuEntry BeforeSave ports PHP beforeSave: nest columns 0, menu from the parent, sort_order after the menu's last - entry type dropdown: url, divider and the signpost registry types; reference depends on type through signpost.ReferenceOptions - URL scheme allowlist (errors.url_scheme), target _self or _blank, menu and parent cycle checks - menu filter, toolbar reorder/create/delete and config_reorder.yaml partitioned by menu - navigation Menus with Menus and Menu entries, permission golem15.menu.manage_menu, en and pl phrasebooks - TestMenuAdminSmoke
This commit is contained in:
14
controllers/menuentries/config_filter.yaml
Normal file
14
controllers/menuentries/config_filter.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
# ===================================
|
||||
# Filter Scope Definitions
|
||||
# ===================================
|
||||
#
|
||||
# The menu filter replaces the PHP toolbar's menu select. Its name is the
|
||||
# reorder partition column, so the list's Reorder button opens the filtered
|
||||
# menu.
|
||||
|
||||
scopes:
|
||||
menu_id:
|
||||
label: golem15.menu::lang.models.menuentry.menu
|
||||
modelClass: Golem15\Menu\Models\Menu
|
||||
nameFrom: name
|
||||
scope: FilterMenu
|
||||
25
controllers/menuentries/config_form.yaml
Normal file
25
controllers/menuentries/config_form.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
# ===================================
|
||||
# Form Behavior Config
|
||||
# ===================================
|
||||
|
||||
# Record name
|
||||
name: golem15.menu::lang.models.menuentry.label
|
||||
|
||||
# Model Form Field configuration
|
||||
form: ~/plugins/golem15/menu/models/menuentry/fields.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: Golem15\Menu\Models\MenuEntry
|
||||
|
||||
# Default redirect location
|
||||
defaultRedirect: golem15/menu/menuentries
|
||||
|
||||
# Create page
|
||||
create:
|
||||
redirect: golem15/menu/menuentries/update/:id
|
||||
redirectClose: golem15/menu/menuentries
|
||||
|
||||
# Update page
|
||||
update:
|
||||
redirect: golem15/menu/menuentries
|
||||
redirectClose: golem15/menu/menuentries
|
||||
46
controllers/menuentries/config_list.yaml
Normal file
46
controllers/menuentries/config_list.yaml
Normal file
@@ -0,0 +1,46 @@
|
||||
# ===================================
|
||||
# List Behavior Config
|
||||
# ===================================
|
||||
#
|
||||
# The PHP list showed the top-level entries of one menu picked in a toolbar
|
||||
# select; here every entry is listed, the menu filter picks the menu, and
|
||||
# the reorder page edits the tree.
|
||||
|
||||
# Model List Column configuration
|
||||
list: ~/plugins/golem15/menu/models/menuentry/columns.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: Golem15\Menu\Models\MenuEntry
|
||||
|
||||
# List Title
|
||||
title: golem15.menu::lang.models.menuentry.label_plural
|
||||
|
||||
# Link URL for each record
|
||||
recordUrl: golem15/menu/menuentries/update/:id
|
||||
|
||||
# Message to display if the list is empty
|
||||
noRecordsMessage: backend::lang.list.no_records
|
||||
|
||||
# Records to display per page
|
||||
recordsPerPage: 20
|
||||
|
||||
# Options to provide the user when selecting how many records to display per page
|
||||
perPageOptions: [20, 40, 80, 100, 120]
|
||||
|
||||
# Displays the list column set up button
|
||||
showSetup: true
|
||||
|
||||
# Displays the sorting link on each column
|
||||
showSorting: true
|
||||
|
||||
# Display checkboxes next to each record
|
||||
showCheckboxes: true
|
||||
|
||||
# The menu filter (config_filter.yaml)
|
||||
filter: config_filter.yaml
|
||||
|
||||
# Toolbar: reorder (config_reorder.yaml), create and delete selected
|
||||
toolbar:
|
||||
buttons: [reorder, create, delete]
|
||||
search:
|
||||
prompt: backend::lang.list.search_prompt
|
||||
27
controllers/menuentries/config_reorder.yaml
Normal file
27
controllers/menuentries/config_reorder.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
# ===================================
|
||||
# Reorder Behavior Config
|
||||
# ===================================
|
||||
#
|
||||
# The PHP reorder_config.yaml, scoped to one menu through the partition: the
|
||||
# page lists the entries of one menu as a tree and saves parent_id and
|
||||
# sort_order. The PHP toolbar partial is not supported.
|
||||
|
||||
# Reorder Title
|
||||
title: golem15.menu::lang.models.menuentry.reorder_title
|
||||
|
||||
# Attribute name
|
||||
nameFrom: title
|
||||
|
||||
# Model Class name
|
||||
modelClass: Golem15\Menu\Models\MenuEntry
|
||||
|
||||
# Tree columns
|
||||
parentColumn: parent_id
|
||||
sortColumn: sort_order
|
||||
|
||||
# One menu at a time
|
||||
partition:
|
||||
column: menu_id
|
||||
relation: menu
|
||||
nameFrom: name
|
||||
label: golem15.menu::lang.models.menuentry.menu
|
||||
Reference in New Issue
Block a user