Re:Res: drop-down menu help

"ghislain\.cussonneau" <[email protected]>
Newsgroups gmane.comp.cms.jahia.template
Message-ID <[email protected]>

First : reply to template_list is better than send me an email directly ! Don't be worried of that, but how can take other people benefits of this discussion ?

Here you can find the answer (I suppose of your problem). Explain what I do is easy : I take the absolute container list "linkContainer" with the ID of the current rendered topLink and I add the "sub-links" edit button. See main_menu.inc to test the result (tested on the default corporate portal on Jahia 4.1.1). Here is a scriplet of the solution :
JahiaContainerList linksContainerList = jData.containers().getAbsoluteContainerList( "linkContainer", topLinkBean.getId() );
if (linksContainerList!=null) {
  ContainerListBean linksContainerListBean = new ContainerListBean(linksContainerList,jData.params());
  if (linksContainerListBean != null) {
    if (! linksContainerListBean.isActionURIsEmpty() ) {
      jData.gui().html().drawBeginActionMenu(linksContainerListBean , null, theURL + "/images/add.gif", false, "", "jahiatemplates.Corporate_portal_templates", null, out);
    }
  }
}
And that's all ...

Ghislain




 Hi Ghislain thanks for your support but I didn’t get it yet. When you say add an action menu with API in the include/main_menu.inc like my left_menu.inc  I sent to you an attachment file with my main_menu.inc.  Tried but no success.
 
 
Thanks a lot.
 
> 
> 
Thiago Reis
System Analyst
InterFactory
Phone: 55(11) 3868 3402 - ext: 15
 
-----Original Message-----
From: Ghislain CUSSONNEAU [mailto:[email protected]] 
Sent: sábado, 11 de março de 2006 00:00
To: [email protected]
Subject: Re: FW: drop-down menu help
 
Yes you can ! Just add an action menu with API in the include/main_menu.inc file like in include/left_menu.inc like this (extract from getPageSubTree method) :
JahiaContainerList  linksContainerList = jData.containers().getAbsoluteContainerList( "linkContainer", currentPageID );
...
Enumeration linksContainerEnum = linksContainerList.getContainers();
while (linksContainerEnum.hasMoreElements()) {
    JahiaContainer linksContainer = (JahiaContainer) linksContainerEnum.nextElement();
    ..
    ContainerBean linksContainerBean = new ContainerBean(linksContainer,jData.params());
    jData.gui().html().drawBeginActionMenu(linksContainerBean, null, null, false, "", "jahiatemplates.Corporate_portal_templates", null, out);
    ...
}
Regards,
Ghislain                    



> 
Hi,
 
I’m new on Jahia template development, and I’m facing some problems with the drop-down menus. I read that they are created automatically when you create a menu on a given page, for example, when you add left-nav menu items, the drop-down menu will be populated. But my layout design doesn’t support a left nav menus so I need my drop-down menus include without the let-nav menus. I tried to look up at the site map and I was allowed just to delete and update. Would be nice if I could create drop-down menus in the sitemap or anyway without left-nav.
 
Thanks a lot,
Att,
 
Thiago Reis
System Analyst
InterFactory
Phone: 55(11) 3868 3402 - ext: 15
 
 






Ghislain CUSSONNEAU

La Poste - DIPM

CAP 44, Rue Marcel Sembat

44000 Nantes

02 51 84 48 80

Accédez au courrier électronique de La Poste : www.laposte.net ; 
3615 LAPOSTENET (0,34 €/mn) ; tél : 08 92 68 13 50 (0,34€/mn)
main_menu.inc (text/plain, 15 KB)
<content:declareContainerList name="topMenu"
    title="Top Menu"
    titleKey="topMenu"
    bundleKey="<%=resBundleID%>"
>
    <content:declareContainer>
        <content:declareField name="topLink"
            title="Top Link"
            titleKey="topLink"
            bundleKey="<%=resBundleID%>"
            type="Page"
        />
        <content:declareField name="colorSet"
            title="Color set"
            titleKey="colorSet"
            bundleKey="<%=resBundleID%>"
            type="SharedSmallText"
            value='<%="<jahia_multivalue[blue:green:orange:red]>" + defaultColorSet%>'
        />
    </content:declareContainer>
</content:declareContainerList>
<%
boolean enablePopup = true;
if ("false".equals(pageContext.findAttribute("displayDropMenu"))) {
    enablePopup = false;
}
enablePopup = enablePopup && (! isNS4(request));
int menuCount = 0;
StringBuffer callJs = new StringBuffer("<script language=\"javascript\" type=\"text/JavaScript\"><!--\n");
StringBuffer div = new StringBuffer();
%>
<table width="<bean:write name="pageWidth" filter="false"/>" border="0" cellspacing="0" cellpadding="0" class="maintable">
<tr>
    <logic:present name="currentSite" property="homePage">
        <td id="menu0" class="topmenu<jahia:ifIsHomePage>on</jahia:ifIsHomePage><%=colorSet%>" <jahia:ifIsNotHomePage>onmouseover="javascript:topOn<%=colorSet%>('menu0');" onmouseout="javascript:topOff('menu0');"</jahia:ifIsNotHomePage>>

            <a href="<bean:write name='currentSite' property='homePage.url' ignore='true'/>"><bean:write name='currentSite' property='homePage.title' filter='false' ignore='true'/></a>
            <jahia:ifIsHomePage>
                <jahia:ifPagePropertiesRights>
                    <jahia:pagePropertiesButton title="<img src=\"images/update.gif\" width=\"11\" height=\"11\" border=\"0\" alt=\"Update Home\">"/>
                </jahia:ifPagePropertiesRights>
            </jahia:ifIsHomePage>
            <%
              // here we add a cross reference, because the home page will be displayed on all the pages that use this template.
              // and we want to make sure that the pages' HTML cache is flushed when the home page title changes.
              if (jData.gui().getContentHomePage().getID() != jData.params().getPageID()) {
                  org.jahia.content.ContentPageXRefManager.getInstance().setPageID(jData.gui().getContentHomePage().getID(), jData.params().getPageID());
              }
            %>
        </td>
    </logic:present>
    <content:absoluteContainerList name="topMenu" id="topMenu" pageLevel="1">
        <%
        String homePageTitle = TextHtml.text2html(jData.gui().getContentHomePage().getTitle(jData.params()));
        if (homePageTitle==null){
        	homePageTitle ="";
        }
        %>
        <content:container id="topMenuContainer">
            <content:pageField valueId="topLink" name="topLink"/>
            <content:sharedLangTextField valueId="myColorSet" name="colorSet" defaultValue="<%=colorSet%>" display="false"/>
            <logic:empty name="topLink">
                <logic:equal name="currentRequest" property="editMode" value="true">
                    <td id="menu<%=menuCount%>" class="topmenu<bean:write name="myColorSet"/>">
                        <span style="color:#ff0000;"><content:resourceBundle
                    	    resourceBundle="jahiatemplates.Corporate_portal_templates" resourceName="noPage"
                    	    defaultValue="No page"/></span>
                        <jahiaHtml:actionMenu name="topMenuContainer" namePostFix="" resourceBundle="jahiatemplates.Corporate_portal_templates" useFieldSet="false">
                        </jahiaHtml:actionMenu>
        			      </td>
                </logic:equal>
            </logic:empty>
            <logic:notEmpty name="topLink">
                <logic:notEqual name="topLink" property="inCurrentPagePath" value="true">
                    <bean:define id="classpath" value="topmenu"/>
                </logic:notEqual>
                <logic:equal name="topLink" property="inCurrentPagePath" value="true">
                    <bean:define id="classpath" value="topmenuon"/>
                </logic:equal>
                <%
                PageBean topLinkBean = (PageBean) pageContext.findAttribute("topLink");
                JahiaPage topLink = topLinkBean.getJahiaPage();
                String myColorSet = (String) pageContext.findAttribute("myColorSet");
                %>
                <logic:notEmpty name="topLink" property="title">
                    <%
                    menuCount++;
                    String onmouseover = "";
                    String onmouseout = "";
                    if (enablePopup) {
                        onmouseover += "ypSlideOutMenu.showMenu('menu" + menuCount + "');";
                        onmouseout += "ypSlideOutMenu.hideMenu('menu" + menuCount + "');";
                    }
                    if ( ! jData.gui().isPageInPath(topLink.getID()) ){
                        onmouseover += "topOn" + myColorSet + "('menu" + menuCount + "');";
                        onmouseout += "topOff('menu" + menuCount + "');";
                    }
                    boolean isRemoteLink =
                        (topLinkBean.getType() == PageInfoInterface.TYPE_URL) ||
                        (topLinkBean.getType() == PageInfoInterface.TYPE_LINK );
        			%>
                    <td id="menu<%=menuCount%>" class="<bean:write name="classpath"/><bean:write name="myColorSet"/>">
                    	<a href="<bean:write name='topLink' property='url'/>"<%
                        	if (! "".equals(onmouseover)) {
                                %> onmouseover="<%=onmouseover%>"<%
                        	}
                        	if (! "".equals(onmouseout)) {
                                %> onmouseout="<%=onmouseout%>"<%
                        	}
                        	%>><%
                            if (isRemoteLink) {
                                %><img src="<%=theURL%>/images/<%=topLinkBean.getType() == PageInfoInterface.TYPE_URL ? "remote" : "local"%>.gif" border="0" width="9" height="9"/><%
                            }
                            %><bean:write name="topLink" property="title" filter="false"/>
                        	<logic:empty name="topLink" property="title"><span style="color:#ff0000;"><content:resourceBundle
                        	    resourceBundle="jahiatemplates.Corporate_portal_templates" resourceName="noTitle"
                        	    defaultValue="No title"/></span></logic:empty>
                        </a>
                        <jahiaHtml:actionMenu name="topMenuContainer" namePostFix="" resourceBundle="jahiatemplates.Corporate_portal_templates" useFieldSet="false">
                        </jahiaHtml:actionMenu>
                        <%
                                JahiaContainerList linksContainerList = jData.containers().getAbsoluteContainerList( "linkContainer", topLinkBean.getId() );
                                System.out.println("linksContainerList"+linksContainerList);
                                if (linksContainerList!=null) {
                                  ContainerListBean linksContainerListBean = new ContainerListBean(linksContainerList,jData.params());
                                  System.out.println("ContainerListBean"+linksContainerListBean);
                                  if (linksContainerListBean != null) {
                                    if (! linksContainerListBean.isActionURIsEmpty() ) {
                                        jData.gui().html().drawBeginActionMenu(linksContainerListBean , null, theURL + "/images/add.gif", false, "", "jahiatemplates.Corporate_portal_templates", null, out);
                                    }
                                  }
                                }
                            %>
        			      </td>
                </logic:notEmpty>
                <logic:empty name="topLink" property="title">
                    <logic:equal name="currentRequest" property="editMode" value="true">
                        <%menuCount++;%>
                        <td id="menu<%=menuCount%>" class="topmenu<bean:write name="myColorSet"/>">
                            <a href="<bean:write name='topLink' property='url'/>" style="color:#ff0000;"><content:resourceBundle
                        	    resourceBundle="jahiatemplates.Corporate_portal_templates" resourceName="noTitle"
                        	    defaultValue="No title"/></a>
                            <jahiaHtml:actionMenu name="topMenuContainer" namePostFix="" resourceBundle="jahiatemplates.Corporate_portal_templates" useFieldSet="false">
                            </jahiaHtml:actionMenu>
                            <%
                                JahiaContainerList linksContainerList = jData.containers().getAbsoluteContainerList( "linkContainer", topLinkBean.getId() );
                                System.out.println("linksContainerList"+linksContainerList);
                                if (linksContainerList!=null) {
                                  ContainerListBean linksContainerListBean = new ContainerListBean(linksContainerList,jData.params());
                                  System.out.println("ContainerListBean"+linksContainerListBean);
                                  if (linksContainerListBean != null) {
                                    if (! linksContainerListBean.isActionURIsEmpty() ) {
                                        jData.gui().html().drawBeginActionMenu(linksContainerListBean , null, theURL + "/images/add.gif", false, "", "jahiatemplates.Corporate_portal_templates", null, out);
                                    }
                                  }
                                }
                            %>
                  			</td>
                    </logic:equal>
                </logic:empty>
                
                    <%
                    if (enablePopup && topLink != null){
                        div.append("<div id=\"menu").append(menuCount).append("Container\">\n");
                        div.append("<table onmouseover=\"topOn" + myColorSet + "('menu" + menuCount + "');\" ");
                        div.append("onmouseout=\"topOff('menu" + menuCount + "');\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n");
                        div.append("<tr valign=\"top\">\n");
                        div.append("    <td nowrap=\"nowrap\">\n");
                        div.append("        <div id=\"menu").append(menuCount).append("Content\" class=\"menu" + myColorSet + "\">\n");
                        div.append("            <div class=\"options" + myColorSet + "\">\n");

                        int subMenuCount = 0;
                        int subMenuWidth = 0;
                        JahiaContainerList linkContainerList = jData.containers().getAbsoluteContainerList( "linkContainer", topLink.getID() );
                        if (linkContainerList != null) {
                            Enumeration myContainerList = linkContainerList.getContainers();
                            while (myContainerList.hasMoreElements()) {
                                JahiaContainer myContainer = (JahiaContainer) myContainerList.nextElement();
                                JahiaPage myLink = (JahiaPage) myContainer.getFieldObject( "link" );
                                if (myLink != null){
                                    subMenuCount++;
                                    boolean isRemoteLink =
                                        (myLink.getPageType() == PageInfoInterface.TYPE_URL) ||
                                        (myLink.getPageType() == PageInfoInterface.TYPE_LINK );
                                    div.append("                <a href=\"").append(myLink.getURL(jData.params())).append("\">");
                                    if (isRemoteLink) {
                                        String p = myLink.getPageType() == PageInfoInterface.TYPE_URL ? "remote" : "local";
                                        div.append("<span class='"+p+"'>");
                                    }
                                    div.append(myLink.getTitle());
                                    if (isRemoteLink) {
                                        div.append("</span>");
                                    }
                                    div.append("</a>\n");
                                    if (myLink.getTitle() != null) {
                                        int w = myLink.getTitle().length() * 6 + 30;
                                        if (w > subMenuWidth) {
                                            subMenuWidth = w;
                                        }
                                    }
                                }
                            }
                        }
                        div.append("            </div>\n");
                        div.append("        </div>\n");
                        div.append("    </td>\n");
                        div.append("</tr>\n");
                        div.append("</table>\n");
                        div.append("</div>\n");

                        callJs.append("new ypSlideOutMenu(\"menu").append(menuCount);
                        callJs.append("\", \"down\", ");
                        callJs.append( "getX('menu" + menuCount + "')" ); // left
                        callJs.append(", ");
                        callJs.append( "getY('menu" + menuCount + "')" ); // top
                        callJs.append(", " + subMenuWidth + ", ");  // width
                        callJs.append(subMenuCount * 50);  //heigh
                        callJs.append(");\n");

                    }
                    %>

            </logic:notEmpty>
        </content:container>



        <logic:equal name="topMenu" property="actionURIsEmpty" value="false">
            <td class="topmenubuttons">
                <jahiaHtml:actionMenu name="topMenu" namePostFix="" resourceBundle="jahiatemplates.Corporate_portal_templates"
                    useFieldSet="false" actionIcon='<%=theURL + "/images/add.gif"%>'>
                </jahiaHtml:actionMenu>
            </td>
        </logic:equal>

    </content:absoluteContainerList>

    <%
    if (! jData.gui().isLogged()){
        %><td width="100%" align="right"
              class="topmenubuttons"><a
              href="javascript:<%=jData.gui().html().drawLoginLauncher()%>"><jahia:resourceBundle
              resourceBundle="jahiatemplates.Corporate_portal_templates" resourceName="login" defaultValue="login"/></a><img
              src="<%=theURL%>/images/pix.gif" alt="" width="1" height="21"/>&nbsp;|&nbsp;<a
              href="<%=jData.gui().html().drawNewUserRegistrationLauncher()%>"><jahia:resourceBundle
              resourceBundle="jahiatemplates.Corporate_portal_templates" resourceName="register" defaultValue="register"/>&nbsp;</td><%
    } else {
        %><td width="100%" class="topmenubg"><img src="<%=theURL%>/images/pix.gif" alt="" width="1" height="21"/>&nbsp;</td><%
    }
    %>
</tr>
</table>
<%
callJs.append("\n-->\n</script>");
if (enablePopup){
    %>
    <%=callJs.toString()%>
    <%=div.toString()%>
    <%
}
%>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.