-#macro ( buildPages $items )
- #foreach ( $item in $items )
- #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
- #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
- #set ( $sinkhole = $pages.put( $item.name, $currentItemHref ) )
- #if ( !$item.items.empty )
- #buildPages ( $item.items )
+#set ( $stack = $project.getClass().forName('java.util.LinkedList').newInstance() )
+#macro ( buildPages $menu )
+
+ #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
+ #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
+
+ #if ($currentItemHref)
+ #set( $sinkhole = $stack.peek().childs.put($currentItemHref, $menu.name) )
+ #end
+
+ #set ( $page = $project.getClass().forName('java.util.LinkedHashMap').newInstance() )
+ #set ( $sinkhole = $page.put("name", $menu.name) )
+ #set ( $sinkhole = $page.put("uri", $currentItemHref) )
+ #set ( $sinkhole = $page.put("childs", $project.getClass().forName('java.util.LinkedHashMap').newInstance()) )
+ #set ( $sinkhole = $stack.push( $page ) )
+
+ #foreach ( $item in $menu.items )
+ #buildPages ( $item )
+ #end
+
+ #set ( $page = $stack.pop() )
+ #if ( $page.uri != "" )
+
+ #if ( $pages.containsKey($page.uri) )
+ #set ( $childs = $pages.get($page.uri).childs )
+ #set ( $sinkhole = $page.put("childs", $childs) )
+
+ <!-- OVERWRITING PAGE - uri: $page.uri, name: "$page.name", childs: $page.childs -->
+ #else
+
+ <!-- NEW PAGE --------- uri: $page.uri, name: "$page.name", childs: $page.childs -->