c91a1b20e8f156ee8c1e228b1425958d47176d61
[maven-thymeleaf-skin] / src / site / template.vm
1 <!DOCTYPE html>
2 <!-- Generated by Apache Maven Doxia Site Renderer#if( $doxiaSiteRendererVersion ) $doxiaSiteRendererVersion#end at $dateFormat.format( $currentDate ) -->
3
4
5 #set ( $pages = $project.getClass().forName('java.util.LinkedHashMap').newInstance() )
6 #set ( $stack = $project.getClass().forName('java.util.LinkedList').newInstance() )
7 #macro ( buildPages $menu )
8
9   #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
10   #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
11
12   #if ($currentItemHref)
13     #set( $sinkhole = $stack.peek().childs.put($currentItemHref, $menu.name) )
14   #end
15
16   #set ( $page = $project.getClass().forName('java.util.LinkedHashMap').newInstance() )
17   #set ( $sinkhole = $page.put("name", $menu.name) )
18   #set ( $sinkhole = $page.put("uri", $currentItemHref) )
19   #set ( $sinkhole = $page.put("childs", $project.getClass().forName('java.util.LinkedHashMap').newInstance()) )
20   #set ( $sinkhole = $stack.push( $page ) )
21
22   #foreach ( $item in $menu.items )
23     #buildPages ( $item )
24   #end
25
26   #set ( $page = $stack.pop() )
27   #if ( $page.uri != "" )
28
29     #if ( $pages.containsKey($page.uri) )
30       #set ( $childs = $pages.get($page.uri).childs )
31       #set ( $sinkhole = $page.put("childs", $childs) )
32
33       <!-- OVERWRITING PAGE - uri: $page.uri, name: "$page.name", childs: $page.childs -->
34     #else
35
36       <!-- NEW PAGE --------- uri: $page.uri, name: "$page.name", childs: $page.childs -->
37     #end
38
39     #set ( $sinkhole = $pages.put($page.uri, $page) )
40     #set ( $sinkhole = $page.remove("uri") )
41
42   #else
43
44     <!-- DONE WITH MENUE ---- #if($page.name)$page.name#else(no name)#end -->
45   #end
46 #end
47
48
49 ## Seiten einlesen
50 #foreach ( $menu in $decoration.body.menus )
51   ## Nur benannte Menüs werden berücksichtigt
52   #if ($menu.name)
53     #buildPages ( $menu )
54   #end
55 #end
56 #foreach ( $menu in $decoration.body.menus )
57   ## Nur unbenannte Menüs werden berücksichtigt
58   #if (!($menu.name))
59     #buildPages ( $menu )
60   #end
61 #end
62
63 <!-- $pages -->
64
65
66
67 #set ( $crumbs = $project.getClass().forName('java.util.LinkedHashMap').newInstance() )
68 #macro ( searchBreadcrumbTrail $items )
69   #set ( $sep = '' )
70   #foreach ( $item in $items )
71     #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
72     #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
73     #if ( $currentItemHref == 'index.html' )
74       #set ( $name = $project.name )
75     #else
76       #set ( $name = $item.name )
77     #end
78     $sep"$currentItemHref": {
79       "name": "$name"
80       #if ( !$item.items.empty )
81         ,"childs": {
82         #set ( $sinkhole = $crumbs.put( $currentItemHref , $name) )
83         #searchBreadcrumbTrail ( $item.items )
84         #set ( $sinkhole = $crumbs.pop() )
85         }
86       #end
87     #if ( !$breadcrumbs && $alignedFileName == $currentItemHref )
88       #set ( $breadcrumbs = $project.getClass().forName('java.util.LinkedHashMap').newInstance() )
89       ## Den Titel der Seite korrigieren!
90       #set ( $title = "$project.name - $item.name" )
91       #set ( $shortTitle = $name )
92       #set ( $sinkhole = $breadcrumbs.put( 'index.html', $project.name) )
93       #set ( $sepc = '' )
94       #foreach ( $crumb in $crumbs.entrySet() )
95         #set ( $sinkhole = $breadcrumbs.put( $crumb.key , $crumb.value ) )
96         $sepc{ "uri": "$crumb.key", "name": "$crumb.value" }
97         #set( $sepc = ',' )
98       #end
99       #set ( $sinkhole = $breadcrumbs.put( $alignedFileName , $shortTitle) )
100       ]
101     #end
102     }
103     #set ( $sep =',' )
104   #end
105 #end
106
107 <!-- title: $title -->
108 <!-- short title: $shortTitle -->
109 <!-- current page: $alignedFileName -->
110
111 <html
112     xmlns="http://www.w3.org/1999/xhtml"
113     xmlns:layout="http://www.thymeleaf.org"
114     layout:decorator="templates/layout"
115     th:with="uri='$alignedFileName'"
116     >
117   <head>
118     <title>juplo - $title</title>
119     <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
120     <link rel="canonical" href="$project.url/$alignedFileName"/>
121   </head>
122   <body>
123     <article class="main" layout:fragment="maincontent" juplo:variables='merge:{
124 ## Datenstrukturen für die Navigation vorbereiten
125 #foreach ( $menu in $decoration.body.menus )
126   ## Nur unbenannte Menüs werden berücksichtigt
127   #if (!($menu.name))
128     ## Breadcrumb-Pfad suchen
129     "pages": {
130       #searchBreadcrumbTrail ( $menu.items )
131     }
132   #end
133 #end
134 }'>
135       <header><h1>$shortTitle</h1></header>
136       $bodyContent
137     </article>
138   </body>
139 </html>