From ae5fa8986029a9d27556b833a63384990fddd433 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Fri, 8 Jul 2016 09:04:46 +0200 Subject: [PATCH] =?utf8?q?Projekt-Seite=20erstellt:=20Velocity-Template=20?= =?utf8?q?-=20Einlesen=20der=20Daten=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Die Verarbeitung der Menüdaten wurde so überarbeitet, dass automatisch erzeugte Seiten in dem explizit in der site.xml definierten Menü überschrieben werden können. Dabei/dadurch wird dann der Name der Seite überschrieben. Ggf. der Seite untergeordnete Unterseiten bleiben erhalten. Außerdem bleibt die Seite auch weiterhin in anderen Untermenüs unter dem alten Namen erhalten, falls sie in einem Untermenü eingetragen war. Umsetzung: Die Daten werden zunächst in eine Map eingelesen. Dabei werden die unbenannten Menüs (dies sind in der Regel die von der Hand definierten Menüs) zuletzt eingelesen. Wenn die selbe URI in mehreren Menüs definiert ist, werden zuvor eingelesenen Einträge überschrieben. Dabei werden aber die zuvor erkannten Kind-Knoten erhalten. --- src/site/template.vm | 60 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/src/site/template.vm b/src/site/template.vm index 4fda7f5..c91a1b2 100644 --- a/src/site/template.vm +++ b/src/site/template.vm @@ -2,26 +2,68 @@ -## Automatisch generierte Seiten einlesen #set ( $pages = $project.getClass().forName('java.util.LinkedHashMap').newInstance() ) -#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) ) + + + #else + + #end + + #set ( $sinkhole = $pages.put($page.uri, $page) ) + #set ( $sinkhole = $page.remove("uri") ) + + #else + + #end #end + + +## Seiten einlesen #foreach ( $menu in $decoration.body.menus ) ## Nur benannte Menüs werden berücksichtigt #if ($menu.name) - #buildPages ( $menu.items ) + #buildPages ( $menu ) #end #end +#foreach ( $menu in $decoration.body.menus ) + ## Nur unbenannte Menüs werden berücksichtigt + #if (!($menu.name)) + #buildPages ( $menu ) + #end +#end + + + #set ( $crumbs = $project.getClass().forName('java.util.LinkedHashMap').newInstance() ) #macro ( searchBreadcrumbTrail $items ) #set ( $sep = '' ) -- 2.20.1