<$ var args = context.param(0, {}); var maxDepth = args["maxDepth"] || 0; var ulClass = args["ulClass"] || ""; var ulID = args["ulID"] || ""; var submenuWrapper = args["submenuWrapper"] || ["",""]; var activeClass = args["activeClass"] || "active"; var openClass = args["openClass"] || ""; var submeuUlClass = args["submeuUlClass"] || ""; // "dropdown-menu" var submenuLiClass = args["submenuLiClass"] || ""; // "dropdown" if ( ulID !== "" ){ ulID = ' id="' + ulID + '"'; } var ulAttribs = ""; if ( ulClass ){ ulAttribs = ' class = "' + ulClass + '"'; } $> <$= ulID $>> <$ var pages = page.projectFolder.pages; for ( var i = 0; i < pages.count; ++i ) { var p = pages.item(i); var cssClass = ""; var activeLinkClass = ""; if ( p.visible && p.active && p.level == 1) { if ( hasVisibleChildPages(p.id) ) { cssClass += "haschilds "; } cssClass += submenuLiClass; if ( p.id === page.id ){ cssClass += " " + activeClass; } else if ( hasActiveChildPage(p.id) ){ cssClass += " " + activeClass + ' ' + openClass; } if ( p.id == page.id ){ activeLinkClass = 'class="' + activeClass + '" '; } cssClass = cssClass.replace(/^\s+|\s+$/gm,''); // like trim() var liAttribs = ""; if ( cssClass ){ liAttribs = ' class="' + cssClass + '"'; } $> > <$= system.partial("zppagelink-expanded.html", p.id) $>><$= p.name.replace(/& /g,'& ') $> <$= system.partial("submenu.html", { "pageId":p.id, "maxDepth":maxDepth, "ulClass":submeuUlClass, "liClass":submenuLiClass, "activeClass":activeClass, "wrapper":submenuWrapper, "showDescription":false, "openClass":openClass} ) $> <$ } } $> <$ function hasVisibleChildPages(pageId) { var p = project.getPage(pageId); if ( !isNull(p) ) { var cps = p.pages; for ( var i = 0; i < cps.count; ++i ) { var cp = cps.item(i); if ( cp.visible && cp.active ){ return true; } } } return false; } function hasActiveChildPage(pageId) { var p = project.getPage(pageId); var childPages = p.pages; for ( var i = 0; i < childPages.count; ++i ) { var childPage = childPages.item(i); if ( childPage.id === page.id || hasActiveChildPage(childPage.id) ){ return true; } } return false; } $>