[opencms-dev] menu help needed

William Kernos williamk at koorong.com.au
Thu Aug 24 07:29:47 CEST 2006


Hey ppl I have been developing a small site with open cms but am now
struggling,

Based on a few examples & my very limited experience in coding I have come
up with the code below that does breadcrumbs & builds a sitemap. I now need
this modified to only print out top level menu options except if you are in
a sublevel menu in which case it needs to expand the menu option under only
the top level menu item that you are under.

 

For example:

 

Say your overall sitemap looked like

 

Folder1

            Page1

            Page2

                        Page3

Folder2

            Page1

            Page2

                        Page3

 

Then you clicked on Page 2 under Folder2 the staemap would look something
like this

 

Folder1

Folder2

            Page1

            Page2

                        Page3

 

If that makes any sense to you.

The only way I can see to do this is create a tree structure using the
navigation elements but I don't want to reinvent the wheel if there is an
easier way of doing it, or if someone has some code I could use.

Any help would be greatly appreciated.

Regards,

Will

 

 

            // Create a JSP action element

            org.opencms.jsp.CmsJspActionElement cms = new
CmsJspActionElement(pageContext, request, response);

 

            String filename, foldername, filenameparam;

            // Get the current folder name

            filename = cms.getRequestContext().getUri();

            

            if ((filenameparam = request.getParameter("filename")) == null)

            {

                        foldername =
org.opencms.file.CmsResource.getFolderPath(filename);

            } 

            else

            {

                        foldername =
org.opencms.file.CmsResource.getFolderPath(filenameparam);

                        String foldernameprop = cms.property("target",
filename);

                        if (foldernameprop != null) foldername =
foldernameprop + foldername;

            }

            

            // Declare some variables

            String rootFolder = "/";

            String moduleFolder = "/system/modules/modulename/";

 

    //3: site navigation

            java.util.List list =
cms.getNavigation().getNavigationBreadCrumb();

            list = cms.getNavigation().getSiteNavigation("/", -1);

            CmsJspNavElement element = null;

            element =
cms.getNavigation().getNavigationForResource(filename);

            int currentLevel = 0;

            int level;

            String resourceName;

            if (filename.endsWith("/index.html"))

            {

                        filename = filename.substring(0,filename.length() -
10);

            }

 

            for (java.util.Iterator i = list.iterator(); i.hasNext();)

            {

                        CmsJspNavElement ne = (CmsJspNavElement)i.next();

                        level = ne.getNavTreeLevel();

                        resourceName = ne.getResourceName();

                        if (ne.isInNavigation())

                        {

                                    if (level > currentLevel)

                                    {

                                                out.println("<ul
class=\"level" + level + "\">\n");

                                                currentLevel = level;

                                    }

                                    if (level < currentLevel)

                                    {

                                                out.println("</ul>\n");

                                                currentLevel = level;

                                    }

                                    if (filename.equals(resourceName)) 

                                    {

                                                out.println("<li
class=\"active\">" + ne.getNavText() + "</li>\n");

                                                continue;

                                    } 

                                    else 

                                    {

                                                out.println("<li>");

                                    }

                                    out.println("<a href=\"" +
cms.link(resourceName) + "\">" + ne.getNavText() + "</a></li>\n");

 

                        }

            }

            for (int i = 0; i < (currentLevel-1); i++)

            {

                        out.println ("</ul>");

            }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20060824/2b9e47d8/attachment.htm>


More information about the opencms-dev mailing list