All Sub-menu Items appear as "current" when expanded Site Menu is printed
Components
Labels
Description
Context Information
Additional information (do not use)
Changes to be made in customized themes:
BEFORE:
<inp2:m_Link template='$template'/>
<inp2:st_CachedMenu render_as="sub_menu_element"/>
AFTER:
<inp2:m_Link template='$template' m_cat_id='$cat_id' use_section='$use_section' m_cat_page='1'/>
<inp2:st_CachedMenu render_as="sub_menu_element" category_id="$cat_id"/>
Attachments
- 05 Jan 2011, 08:46 AM
Activity
Dmitry Andrejev March 30, 2011 at 2:53 PM
Closing, since 5.1.2 release has been released.
Alex January 9, 2011 at 2:24 PM
Fix committed to [b]5.1.x branch/b. Commit Message:
Fixes #0000687: All Sub-menu Items appear as "current" when expanded Site Menu is printed
Dmitry Andrejev January 5, 2011 at 7:27 PM
Erik, Gleb, Nikita,
Please take a close look to this task since it will be affecting your TPL/HTMLs in the future.
If any questions, please feel free to ask in Google Groups. Link to discussion can be found in Reference field of this task.
Dmitry Andrejev January 5, 2011 at 7:22 PM
Reviewed and tested okay, please commit.
Alex January 5, 2011 at 8:50 AM
Here is test code, that I've placed in "footer.elm.tpl" of "advanced" theme:
----------------------
(edit note to get correct HTML!!!)
----------------------
FOOTER MENU:
<div>
<inp2:m_DefineElement name="top_menu_element">
<li>
<inp2:m_if check="m_Param" name="active">
ACTIVE:
</inp2:m_if>
<a href="<inp2:m_Link template='$template' m_cat_id='$cat_id' use_section='$use_section'/>">
<inp2:m_Param name="title"/>
</a>
<inp2:m_if check="m_Param" name="has_sub_menu">
<ul style="overflow: visible; border: 1px solid green;">
<inp2:st_CachedMenu render_as="sub_menu_element" category_id="$cat_id"/>
</ul>
</inp2:m_if>
</li>
</inp2:m_DefineElement>
<inp2:m_DefineElement name="sub_menu_element">
<li>
<inp2:m_if check="m_Param" name="active">
SUB ACTIVE:
</inp2:m_if>
<a href="<inp2:m_Link template='$template' m_cat_id='$cat_id' use_section='$use_section'/>">
<inp2:m_Param name="title"/>
</a>
</li>
</inp2:m_DefineElement>
<ul style="overflow: visible; border: 1px solid red;">
<inp2:st_CachedMenu render_as="top_menu_element" category_id="1"/>
</ul>
</div>
----------------------
You need to have some 2nd level sections to be created to test, e.g. "Directory -> Sub Directory 1". Code above don't show "SUB ACTIVE" (even if 2nd level sub section is selected) until patch is applied.
----------------------
All themes were using correct tags, so no changes required there.
Priority
Assignee
Reporter
Developer
Change Log Message
Patch Instructions
Patches must be submitted through Phabricator.
To submit patch via Command Line use Patches Workflow (via Arcanist) tutorial.
To submit patch via Web Interface use Patches Workflow (via Web Interface) tutorial.
All sub-menu items appear as current, when you are printing expanded site
menu version.
menu1
menu11
menu12
menu13
menu2
menu21
menu22
menu23
For example when you want print menu mentioned above and highlight current
page in it, then you should compare this using given tag:
*<inp2:m_if check="m_Get" name="m_cat_id"
equals_to="$cat_id">highlighted</inp2:m_if>* .
Mentioned above tag will always display "highlighted" because of "m_cat_id"
request variable, which is compare here is always overwritten from
*<inp2:st_CachedMenu
.../>* tag. It was done long ago to automatically pass category into menu
item links and for this tag to work: <inp2:m_Link template="$template"/>.
Proper way to build links to menu items is by directly passing category id
to them like this <inp2:m_Link template="$template" m_cat_id="$cat_id"/>.
As a fix I propose to remove code, that sets m_cat_id from st_CachedMenu tag
and patch all our themes (if needed). For users who have customized their
themes or created new onces I propose to write note about required change in
theme templates in "ChangeLogMessage" field in task, that would be created
based on this discussion.