[MAGNOLIA-4781] SimpleNavigationTag does not highlight active page. Created: 18/Jan/13  Updated: 19/Feb/13  Resolved: 14/Feb/13

Status: Closed
Project: Magnolia
Component/s: taglibs
Affects Version/s: 4.5.6
Fix Version/s: 4.5.8

Type: Bug Priority: Neutral
Reporter: Per Andersson [X] (Inactive) Assignee: Ondrej Chytil
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Linux, Tomcat


Issue Links:
causality
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled

 Description   

Hi,

We have a page that uses the jsp-taglib:

<@cmsu.simpleNavigation startLevel=3 endLevel=4 style="tsVerticalNavigation" wrapperElement="span"/>

This causes an exception to be thrown:

2013-01-18 14:57:20,193 ERROR magnolia.templating.jsp.taglib.SimpleNavigationTag: Failed to obtain parent page for /sitepage-se/privat/kontakt/telefon/content/02
javax.jcr.ItemNotFoundException: Root node doesn't have a parent
	at org.apache.jackrabbit.core.NodeImpl$6.perform(NodeImpl.java:1712)
	at org.apache.jackrabbit.core.NodeImpl$6.perform(NodeImpl.java:1705)
	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
	at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
	at org.apache.jackrabbit.core.NodeImpl.getParent(NodeImpl.java:1705)
	at info.magnolia.jcr.wrapper.DelegateNodeWrapper.getParent(DelegateNodeWrapper.java:484)
	at info.magnolia.jcr.wrapper.I18nNodeWrapper.getParent(I18nNodeWrapper.java:87)
	at info.magnolia.cms.core.DefaultContent.getParent(DefaultContent.java:343)
	at info.magnolia.templating.jsp.taglib.SimpleNavigationTag.doEndTag(SimpleNavigationTag.java:360)
	at freemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:430)
	at freemarker.ext.jsp.TagTransformModel$TagWriter.onStart(TagTransformModel.java:369)
	at freemarker.core.Environment.visit(Environment.java:307)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:237)
	at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:155)
	at info.magnolia.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:85)
	at info.magnolia.rendering.renderer.AbstractRenderer.render(AbstractRenderer.java:139)
	at info.magnolia.rendering.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:97)
	at info.magnolia.rendering.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$1424ba6.render(<generated>)
	at info.magnolia.templating.elements.ComponentElement.begin(ComponentElement.java:151)
	at info.magnolia.templating.freemarker.AbstractDirective.execute(AbstractDirective.java:93)
	at freemarker.core.Environment.visit(Environment.java:274)
	....

What I can see while debugging the SimpleNavigationTag class is that it looks for the page node that is closest to the component:

while (!ItemType.CONTENT.getSystemName().equals(activePage.getNodeTypeName()) && activePage.getParent() != null) {
   activePage = activePage.getParent();
}

Since the page cannot be found it will use the node: /sitepage-se/privat/kontakt/telefon/content/02 instead of /sitepage-se/privat/kontakt/telefon to compare if a page should be highlighted or not.

But page nodes have the jcr item type mgnl:page and not mgnl:content, or am I mistaken?. Perhaps something like this would fix the problem?

while (!ItemType.PAGE.getSystemName().equals(activePage.getNodeTypeName()) && activePage.getParent() != null) {
   activePage = activePage.getParent();
}

Might be related to MAGNOLIA-4725


Generated at Mon Feb 12 03:58:58 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.