Drupal is a registered trademark of Dries Buytaert

emm

5 sites No security coverage
View on drupal.org

A modern interface for Drupal menu management.

Enhanced Menu Manager (EMM) replaces the default Drupal 10/11 menu link overview with an interactive tree view. It is designed to handle menus of any size, specifically addressing the usability issues encountered with complex or deeply nested site navigation.

Forked from Enhanced Taxonomy Manager (ETM), adapted specifically for the Drupal menu system.

🚧 Work in Progress

EMM is in active development.

This is a complete reimagining of the Drupal Menu UI. Core functionality is stable and used in production, but we are actively seeking feedback — especially on visual compatibility with heavily customized admin themes.

If you run into issues, please submit a ticket in the queue. Bug reports and feature requests are appreciated as we work to stabilize the codebase.

Share the Vision: If you see the potential in this approach, please share the module with your network. The more people testing and contributing, the sooner we can reach a state where we never have to rely on the core menu page again.

The Problem

The core menu interface becomes unwieldy with large hierarchies. Drag-and-drop becomes sluggish, there is no search functionality, and reorganizing complex navigation requires repeated page reloads and risky "Save" button commits that affect the entire menu at once.

Why Upgrade to EMM?

EMM offers a completely different approach to menu management built on modern UI standards:

  • UI/UX: Modern CSS/SVG design tokens — no jQuery UI widgets.
  • Speed: Operations are staged in the browser for instant feedback — no AJAX round-trip per drag.
  • Safety: Local Undo (Ctrl+Z) history, snapshots, and confirmation dialogs protect against mistakes.
  • Performance: Lazy-loading and pagination handle large menus without freezing the browser.
  • AI: Optional submodule for automated restructuring and organization via natural language.

Key Features

Drag-and-Drop with Client-Side Staging

  • SortableJS: Stable drag-and-drop that works on desktop and touch devices.
  • Nesting: Reorder siblings and reparent menu links in a single gesture.
  • Instant Feedback: Position changes are staged locally — every drag, move, and nest is reflected immediately with zero server delay.
  • Save When Ready: A pulsing "Save Order" button and a warning bar appear when you have unsaved changes. Click Save Now to commit all changes in a single batch, or Discard to reload and revert.
  • Entity API Compliance: All saves go through Drupal's Entity API, so hooks, access checks, cache invalidation, and menu tree rebuilds work correctly.
  • Safety: Confirmation dialogs for large moves, and the browser warns you before navigating away with unsaved changes.

Navigation & Search

  • Live Filter: Debounced search to locate menu links instantly.
  • "Go to in Tree": Selecting a search result expands the tree path and scrolls to the link.
  • A–Z Filtering: Quick letter links for browsing large menus alphabetically.
  • Keyboard Navigation: Arrow keys, Home/End, and shortcut keys for power users. A built-in Guide panel documents all available shortcuts.

History & Recovery

  • Undo/Redo: Standard Ctrl+Z / Ctrl+Shift+Z support for recent actions.
  • Snapshots: Create a named backup before reorganizing. Restore any snapshot with one click.

Site Builder Tools

  • Link Merging: Combine duplicate links and reassign children.
  • Bulk Operations: Enable, disable, or delete multiple links at once.
  • Inline Editing: Double-click to rename menu links in place.
  • Clone: Duplicate a link (with or without children) in one click.
  • Find & Replace: Search and replace across link titles with preview before applying.
  • Move Dialog: Move a link to any parent via a searchable modal — no drag required.

Diagnostics

  • Statistics: At-a-glance dashboard showing link counts, depth distribution, and letter frequency chart.
  • Health Check: Detects orphan links, depth violations, and other structural issues with suggested fixes.
  • Duplicate Scanner: Identifies menu links with identical titles and shows their locations.

Import / Export

  • CSV Download: Export the menu structure for use in Excel or other tools.
  • Copy List: Export as a formatted text list for documentation.
  • Bulk Import: Paste a hierarchical list (using dashes -) to build menus quickly.

AI Integration (Optional)

The EMM AI submodule integrates with the Drupal AI module. It supports OpenAI, Anthropic, and local LLMs via Ollama.

Capabilities

  • Restructure Engine: Describe changes in plain English. The AI proposes operations (move, rename, merge) which you review and apply.
  • Chat Interface: Ask questions about the menu structure or issue commands conversationally.
  • Structure Tools: Suggest parent links for orphans, detect duplicates, and generate link descriptions.

Performance

Designed to handle large menus efficiently:

  • Lazy Loading: Child links are fetched only when a parent is expanded.
  • Pagination: Large sibling sets are paginated to manage memory usage.
  • Zero-Latency Interface: Drag, drop, and nest items instantly. The browser handles UI logic, eliminating the sluggish "wait-to-save" lag of core Drupal menus.
  • Entity API: All persistence uses Drupal's Entity API and query builder — no direct SQL. Hooks, access checks, and caching are handled correctly.

Installation

composer require drupal/emm
drush en enhanced_menu_manager

For AI features:

composer require drupal/ai
drush en emm_ai

Requirements

Related Projects

EMM is part of a family of Enhanced Manager modules that share a common architecture:

Activity

Total releases
8
First release
Feb 2026
Latest release
2 weeks ago
Release cadence
0 days
Stability
0% stable

Release Timeline

Releases

Version Type Release date
1.0.0-beta1 Pre-release Feb 16, 2026
1.0.0-alpha7 Pre-release Feb 16, 2026
1.0.0-alpha6 Pre-release Feb 14, 2026
1.0.0-alpha5 Pre-release Feb 14, 2026
1.0.0-alpha4 Pre-release Feb 14, 2026
1.0.0-alpha3 Pre-release Feb 14, 2026
1.0.0-alpha2 Pre-release Feb 13, 2026
1.0.0-alpha1 Pre-release Feb 13, 2026