Feature RTC Language Change PR-6.2-dev Pending

User tests: Successful: Unsuccessful:

avatar TLWebdesign
TLWebdesign
10 Apr 2026

Pull Request resolves # .

  • I read the Generative AI policy and my contribution is either not created with the help of AI or is compatible with the policy and GNU/GPL 2 or later.

Summary of Changes

This pull request adds module assignment inheritance for menu items.
This is one of the projects from the Joomla 8 Sprint. More info here: https://developer.joomla.org/features/45-joomla-6-x/53-simplify-onboarding/995-ui-ux-intelligent-module-assignment.html

  • Adds an optional inherit flag to #__modules_menu.
  • Adds a component option to enable or disable module inheritance (opt-in).
  • Extends the module assignment UI with inheritance controls for parent menu items.
  • Supports Inherit for direct children and Inherit all for the full descendant tree.
  • Materializes inherited module assignments when menu items are saved, copied, or moved.
  • Preserves inheritance settings when modules are copied or duplicated.
  • Improves the module assignment tree UI by locking inherited items, showing an “Inherited from ancestor” badge, and clearing inheritance when using the global “Assign to menu items -> None” action.
  • Adds accessibility labels for the inheritance dropdowns.

Testing Instructions

  1. Go to System -> Manage -> Extensions -> Modules -> Options.
  2. Enable module inheritance.
  3. Create or edit a site module.
  4. Open the Menu Assignment tab.
  5. Select a parent menu item that has child menu items.
  6. Set the parent item inheritance dropdown to Inherit.
  7. Confirm only direct child menu items are selected and locked.
  8. Change the parent item inheritance dropdown to Inherit all.
  9. Confirm all descendant menu items are selected and locked.
  10. Confirm descendant inheritance dropdowns are hidden and replaced with an Inherited from ancestor badge.
  11. Save the module.
  12. Reopen the module and confirm the inheritance setting is retained only on the configured parent item.
  13. Create a new child menu item below the inherited parent.
  14. Confirm the module assignment is applied to the new child menu item after saving.
  15. Move a menu item or subtree below a parent with inheritance enabled.
  16. Confirm inherited module assignments are applied to the moved item or subtree.
  17. In the module assignment tree, click the global None button.
  18. Confirm all menu assignments are unchecked and all inheritance dropdown values are reset to No inheritance.

Actual result BEFORE applying this Pull Request

  • Module assignments can only be configured manually per module and menu item.
  • When assigning a module to a parent menu item, child menu items do not automatically receive that module assignment. Site administrators need to manually select each child item, and newly created or moved child menu items do not inherit the parent’s module assignment.
  • There is no UI to indicate or manage module assignment inheritance in the menu assignment tree.

Expected result AFTER applying this Pull Request

  • When module inheritance is enabled, site administrators can configure module assignment inheritance directly in the module assignment tree.
  • A parent menu item can be set to inherit assignments to direct children or to all descendants. Inherited child items are automatically selected and locked in the UI, while descendant inheritance controls covered by Inherit all show an Inherited from ancestor badge instead of a misleading
    disabled dropdown.
  • Saving, copying, and moving menu items applies the relevant inherited module assignments automatically. The assignment UI remains accessible, and the inheritance dropdowns have meaningful accessible names.

Link to documentations

Please select:

  • Documentation link for guide.joomla.org:

  • No documentation changes for guide.joomla.org needed

  • Pull Request link for manual.joomla.org:

  • No documentation changes for manual.joomla.org needed

avatar TLWebdesign TLWebdesign - open - 10 Apr 2026
avatar TLWebdesign TLWebdesign - change - 10 Apr 2026
Status New Pending
avatar joomla-cms-bot joomla-cms-bot - change - 10 Apr 2026
Category SQL Administration com_admin Postgresql com_menus com_modules Language & Strings Repository NPM Change JavaScript Installation
avatar TLWebdesign TLWebdesign - change - 10 Apr 2026
The description was changed
avatar TLWebdesign TLWebdesign - edited - 10 Apr 2026
avatar TLWebdesign TLWebdesign - change - 10 Apr 2026
Labels Added: Language Change NPM Resource Changed PR-6.2-dev
avatar TLWebdesign TLWebdesign - change - 10 Apr 2026
The description was changed
avatar TLWebdesign TLWebdesign - edited - 10 Apr 2026
avatar github-actions[bot]
github-actions[bot] - comment - 12 Apr 2026

This pull request has conflicts, please resolve those before we can evaluate the pull request.

avatar TLWebdesign TLWebdesign - change - 30 Apr 2026
Labels Added: Conflicting Files
avatar joomla-cms-bot joomla-cms-bot - change - 30 Apr 2026
Category SQL Administration com_admin Postgresql com_menus com_modules Language & Strings Repository NPM Change JavaScript Installation SQL Administration com_admin Postgresql com_menus com_modules Language & Strings Installation JavaScript
avatar brianteeman
brianteeman - comment - 9 May 2026

@TLWebdesign any chance of fixing the conflicts and moving out of draft status so it can be tested in time for the 6.2 release please

avatar TLWebdesign TLWebdesign - change - 9 May 2026
Labels Added: Feature
Removed: Conflicting Files NPM Resource Changed
avatar TLWebdesign
TLWebdesign - comment - 9 May 2026

@brianteeman i think i fixed it now.

avatar exlemor exlemor - test_item - 13 May 2026 - Tested successfully
avatar exlemor
exlemor - comment - 13 May 2026

I have tested this item ✅ successfully on 008aaaf

I have successfully tested this PR. Seems to work great now! (hug)

Thanks @TLWebdesign!


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar exlemor
exlemor - comment - 13 May 2026

I have tested this item ✅ successfully on 008aaaf

I have successfully tested this PR. Seems to work great now! (hug)

Thanks @TLWebdesign!


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar LadySolveig
LadySolveig - comment - 14 May 2026

Nice work @TLWebdesign ! Found an inconsistent behaviour when "inherit" or "inherit all" is set on a parent, the subtree items of type url/heading/alias/separator were skipped during force-checking, leaving them unchecked while their siblings
appeared checked. But after save and reload all are checked.

Additionally, switching back to "no inheritance" left these items stuck in their previous checked state with no way
to manually correct it since they are always disabled. Everything is displayed consistently again only after reloading the page.

This is happening on chrome and firefox - I made you a screen-record.

module_inherit.mp4

The changes in my review fixes this inconsistency.

Even though it makes perfect sense to me to mark these types (like alias, url etc.) as well in conjunction with the new "Inherit" option. I still find it confusing that they are marked in the exact same way, given that it is quite obviously impossible to load a module onto them (since there is, after all, no actual page to load a module for these types).

Instead of this...

grafik

I personally would prefer something like this

grafik

I opened a PR on your Repo for this additional style changes,

TLWebdesign#1

Now you can decide, if you only want the js fix from the review or both :)

avatar LadySolveig
LadySolveig - comment - 14 May 2026

Nice work @TLWebdesign ! Found an inconsistent behaviour when "inherit" or "inherit all" is set on a parent, the subtree items of type url/heading/alias/separator were skipped during force-checking, leaving them unchecked while their siblings appeared checked. But after save and reload all are checked.

Additionally, switching back to "no inheritance" left these items stuck in their previous checked state with no way
to manually correct it since they are always disabled. Everything is displayed consistently again only after reloading the page.

This is happening on chrome and firefox - I made you a screen-record.

module_inherit.mp4

The changes in my review fixes this inconsistency.

Even though it makes perfect sense to me to mark these types (like alias, url etc.) as well in conjunction with the new "Inherit" option. I still find it confusing that they are marked in the exact same way, given that it is quite obviously impossible to load a module onto them (since there is, after all, no actual page to load a module for these types).

Instead of this...

grafik

I personally would prefer something like this

grafik

I opened a PR on your Repo for this additional style changes,

TLWebdesign#1

Now you can decide, if you only want the js fix from the review or both :)

avatar TLWebdesign
TLWebdesign - comment - 14 May 2026

Of course i want improvements. Thanks very much 😁

avatar LadySolveig
LadySolveig - comment - 14 May 2026

Only one questiion - if I move a menu item out of subtree that was inherit

grafik

than it is expected behaviour that it stays checked, right?

grafik
avatar TLWebdesign
TLWebdesign - comment - 14 May 2026

Yes things should stay checked.

avatar LadySolveig LadySolveig - test_item - 14 May 2026 - Tested successfully
avatar LadySolveig
LadySolveig - comment - 14 May 2026

I have tested this item ✅ successfully on 0457056


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar LadySolveig
LadySolveig - comment - 14 May 2026

I have tested this item ✅ successfully on 0457056


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar exlemor exlemor - test_item - 14 May 2026 - Tested successfully
avatar exlemor
exlemor - comment - 14 May 2026

I have tested this item ✅ successfully on 0457056

Hi @TLWebdesign, I was able to test this again - successfully (and the grey-out checkbox on Safari for Heading, URL etc are better).

I get the use of the feature, and I like it... the only thing visually that makes it a bit hard on my brain is the placement of the ∨ (caret symbol) between the ∟ and the ✅ on the line, it might be easier to follow visually if the order was:


∨ ∟ ✅
∨ ∟ ⃞

instead of:


∟ ∨ ✅
∟ ∨ ⃞


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar exlemor
exlemor - comment - 14 May 2026

I have tested this item ✅ successfully on 0457056

Hi @TLWebdesign, I was able to test this again - successfully (and the grey-out checkbox on Safari for Heading, URL etc are better).

I get the use of the feature, and I like it... the only thing visually that makes it a bit hard on my brain is the placement of the ∨ (caret symbol) between the ∟ and the ✅ on the line, it might be easier to follow visually if the order was:


∨ ∟ ✅
∨ ∟ ⃞

instead of:


∟ ∨ ✅
∟ ∨ ⃞


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar TLWebdesign TLWebdesign - change - 17 May 2026
Labels Added: Updates Requested
avatar richard67 richard67 - change - 17 May 2026
Labels Removed: Updates Requested
avatar richard67 richard67 - alter_testresult - 17 May 2026 - LadySolveig: Tested successfully
avatar richard67 richard67 - alter_testresult - 17 May 2026 - exlemor: Tested successfully
avatar TLWebdesign
TLWebdesign - comment - 17 May 2026

I get the use of the feature, and I like it... the only thing visually that makes it a bit hard on my brain is the placement of the ∨ (caret symbol) between the ∟ and the ✅ on the line, it might be easier to follow visually if the order was:

That would be separate PR and out of scope of this one. The caret before the content makes sense to me tho because you are expanding the thing that comes after it. instead of what is "around" it if you adjust it like you proposed.

avatar richard67 richard67 - alter_testresult - 17 May 2026 - LadySolveig: Tested successfully
avatar richard67 richard67 - alter_testresult - 17 May 2026 - exlemor: Tested successfully
avatar richard67
richard67 - comment - 17 May 2026

I've restored the previous human test results in the issue tracker as the 2 commits which have invalidated the test count were not related to the tests:

  • The update SQL scripts where changed to use the /** CAN FAIL **/ installer hint. That has been suggested by me and I have verified that it has been applied correctly in this PR.
  • Code comments were improved.
avatar richard67 richard67 - change - 17 May 2026
Status Pending Ready to Commit
avatar richard67
richard67 - comment - 17 May 2026

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar richard67
richard67 - comment - 17 May 2026

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/47570.

avatar brianteeman
brianteeman - comment - 22 May 2026

sorry but I find this really confusing especially understanding the difference between "inherit" and "inherit all"

when i see inherit next to a menu item i assume it means that this menu item inherits its module assignments but it actually means something else "the modules for this menu item are inherited by the child menu items"

avatar brianteeman
brianteeman - comment - 22 May 2026

sorry but I find this really confusing especially understanding the difference between "inherit" and "inherit all"

when i see inherit next to a menu item i assume it means that this menu item inherits its module assignments but it actually means something else "the modules for this menu item are inherited by the child menu items" Except when its "inherited from ancesstor" when it does mean both "the menu item inherits from the parent" AND "the child menu items inherit from this setting"

avatar brianteeman
brianteeman - comment - 22 May 2026

I get the use of the feature, and I like it... the only thing visually that makes it a bit hard on my brain is the placement of the ∨ (caret symbol) between the ∟ and the ✅ on the line, it might be easier to follow visually if the order was:

100% agree with you. Even though I knew there was an open issue for this (#44764) and it was something I had even tried to fix I was still tricked by it with this PR wondering why it was inheriting by sample layouts and nto blog

image
avatar brianteeman
brianteeman - comment - 22 May 2026

i can see that this works but I find it very confusing

avatar TLWebdesign TLWebdesign - change - 22 May 2026
Labels Added: RTC
avatar bembelimen
bembelimen - comment - 23 May 2026

i can see that this works but I find it very confusing

Do you have any idea how to improve?

avatar brianteeman
brianteeman - comment - 23 May 2026

The first is to fix the existing bug with the way items at the same level do not appear to be when one or more also have sublevels

The other is finding different terminology as inherit is the wrong word but I don't have a suggestion yet. (Children inherit form parents but in this UI it's the parents that have the label inherit). Propogate might be a more accurate word but it's not very understandable

avatar brianteeman
brianteeman - comment - 23 May 2026

i wonder if it makes more sense in english to say inheritable instead of inherit

avatar brianteeman
brianteeman - comment - 23 May 2026

i wonder if it makes more sense in english to say inheritable instead of inherit

image
avatar TLWebdesign
TLWebdesign - comment - 23 May 2026

OK so i thought about it and discussed it with codex to be fair. We came up with these two options:
If we want to stay consistent in our naming in feature and in UI i would go for inherit. if we don't think it matters much if we call the feature "module menu inhertance" but n UI we speak about assignments, then the second option would also be an option. I prefer first.

First option

COM_MODULES_ENABLE_INHERITANCE_LABEL="Enable Module Assignment Inheritance"
COM_MODULES_ENABLE_INHERITANCE_DESC="When enabled, child menu items can inherit module assignments from parent menu items on the assignment tab."

COM_MODULES_INHERIT_NONE="No inheritance"
COM_MODULES_INHERIT="Child items inherit"
COM_MODULES_INHERIT_ALL="All descendants inherit"
COM_MODULES_INHERITANCE_MENU_ITEM_LABEL="Inheritance setting for %s"
COM_MODULES_INHERITED_FROM_ANCESTOR="Inherits from ancestor"

Second option

COM_MODULES_ENABLE_INHERITANCE_LABEL="Enable Automatic Child Assignment"
COM_MODULES_ENABLE_INHERITANCE_DESC="When enabled, modules can be automatically assigned to child menu items from the menu assignment tab."

COM_MODULES_INHERIT_NONE="No child assignment"
COM_MODULES_INHERIT="Assign to child items"
COM_MODULES_INHERIT_ALL="Assign to all descendant items"
COM_MODULES_INHERITANCE_MENU_ITEM_LABEL="Child assignment setting for %s"
COM_MODULES_INHERITED_FROM_ANCESTOR="Assigned from ancestor"
avatar rytechsites
rytechsites - comment - 26 May 2026

OK so i thought about it and discussed it with codex to be fair. We came up with these two options: If we want to stay consistent in our naming in feature and in UI i would go for inherit. if we don't think it matters much if we call the feature "module menu inhertance" but n UI we speak about assignments, then the second option would also be an option. I prefer first.

First option

COM_MODULES_ENABLE_INHERITANCE_LABEL="Enable Module Assignment Inheritance"
COM_MODULES_ENABLE_INHERITANCE_DESC="When enabled, child menu items can inherit module assignments from parent menu items on the assignment tab."

COM_MODULES_INHERIT_NONE="No inheritance"
COM_MODULES_INHERIT="Child items inherit"
COM_MODULES_INHERIT_ALL="All descendants inherit"
COM_MODULES_INHERITANCE_MENU_ITEM_LABEL="Inheritance setting for %s"
COM_MODULES_INHERITED_FROM_ANCESTOR="Inherits from ancestor"

Second option

COM_MODULES_ENABLE_INHERITANCE_LABEL="Enable Automatic Child Assignment"
COM_MODULES_ENABLE_INHERITANCE_DESC="When enabled, modules can be automatically assigned to child menu items from the menu assignment tab."

COM_MODULES_INHERIT_NONE="No child assignment"
COM_MODULES_INHERIT="Assign to child items"
COM_MODULES_INHERIT_ALL="Assign to all descendant items"
COM_MODULES_INHERITANCE_MENU_ITEM_LABEL="Child assignment setting for %s"
COM_MODULES_INHERITED_FROM_ANCESTOR="Assigned from ancestor"

I prefer the 2nd option... I think using the turn 'child assignment' goes more inline with parent vs child menu items.

avatar MacJoom
MacJoom - comment - 14 Jun 2026

I need an opinion from a native English speaker here. Technically it works — we just need to agree on the wording. I tend to prefer the second option.

avatar brianteeman
brianteeman - comment - 15 Jun 2026

@MacJoom we had a meeting about this last week. There should be a lot of changes coming - not just the strings - as other issues were identified with the UI

avatar MacJoom
MacJoom - comment - 15 Jun 2026

@MacJoom we had a meeting about this last week. There should be a lot of changes coming - not just the strings - as other issues were identified with the UI

Thanks i have it on 'Do not merge'

Add a Comment

Login with GitHub to post a comment