Uploaded image for project: 'Magnolia'
  1. Magnolia
  2. MAGNOLIA-4781

SimpleNavigationTag does not highlight active page.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Neutral Neutral
    • 4.5.8
    • 4.5.6
    • taglibs
    • None
    • Linux, Tomcat

      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

        Acceptance criteria

              ochytil Ondrej Chytil
              pean56 Per Andersson [X] (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Bug DoR
                  Task DoD