From a275df25c52fdb7b5b4275fcf9a359194f7b9116 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Mon, 7 Mar 2016 17:56:16 +0100 Subject: [PATCH] Fixed missing menu on generated site: moved template from skin to project --- pom.xml | 1 + src/site/site.xml | 5 - src/site/template.vm | 334 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 335 insertions(+), 5 deletions(-) create mode 100644 src/site/template.vm diff --git a/pom.xml b/pom.xml index 84bcdfd0..815a2339 100644 --- a/pom.xml +++ b/pom.xml @@ -308,6 +308,7 @@ 3.4 ${project.build.directory}/filtered-site + src/site/template.vm diff --git a/src/site/site.xml b/src/site/site.xml index 62ea2341..7c28ac28 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -11,10 +11,5 @@ - - de.juplo - juplo-maven-skin - 1.0.8 - diff --git a/src/site/template.vm b/src/site/template.vm new file mode 100644 index 00000000..5f586296 --- /dev/null +++ b/src/site/template.vm @@ -0,0 +1,334 @@ + + +## Datenstrukturen für die Navigation (Breadcrumbs und Menü) vorbereiten +#set ( $crumbs = $project.getClass().forName('java.util.LinkedList').newInstance() ) +#set ( $parents = $project.getClass().forName('java.util.LinkedList').newInstance() ) +#set ( $active = 'index.html' ) +#set ( $skiplist = [ 'index.html' ] ) +#macro ( searchBreadcrumbTrail $items ) + #if ( $breadcrumbs ) + ## Der zuerst gefundene Pfad gilt (denn dieser liegt im selbst erzeugten Menü) + #else + #foreach ( $item in $items ) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) ) + #if ( $alignedFileName == $currentItemHref ) + ## Sonderfall abfangen :/ + #if ( $alignedFileName == 'index.html' ) + #set ( $breadcrumbs = [] ) + #set ( $path = [ 'index.html' ] ) + #else + #set ( $breadcrumbs = $crumbs.clone() ) + ## Den Titel der Seite korrigieren! + #set ( $title = "$project.name - $item.name" ) + #set ( $shortTitle = $item.name ) + ## Pfad für die Identifizierung sichtbarer Menüeinträge aufbauen + #set ( $path = [ 'index.html' ] ) + #foreach ( $crumb in $crumbs ) + #set ( $currentItemHref = $PathTool.calculateLink( $crumb.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) ) + #set ( $sinkhole = $path.add( $currentItemHref ) ) + #end + #set ( $sinkhole = $path.add( $alignedFileName ) ) + #end + #else + #if ( !$item.items.empty ) + #set ( $sinkhole = $crumbs.push( $item ) ) + #searchBreadcrumbTrail ( $item.items ) + #set ( $sinkhole = $crumbs.pop() ) + #end + #end + #end + #end +#end +#macro ( buildSkiplist $item ) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $sinkhole = $skiplist.add( $currentItemHref.replaceAll( '\\', '/' ) ) ) + #foreach ( $item in $item.items ) + #buildSkiplist ( $item ) + #end +#end +#macro ( findActive $item $skip) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) ) + #set ( $doskip = false ) + #if ( $skip ) + #foreach ( $toskip in $skiplist ) + #if ( $currentItemHref == $toskip ) + #set ( $doskip = true ) + #end + #end + #end + #if ( !$doskip ) + #if ( $alignedFileName == $currentItemHref ) + #if ( $item.items.size() > 0 ) + #set ( $active = $alignedFileName ) + #else + #set ( $active = $parents.peek() ) + #end + #end + #set ( $sinkhole = $parents.push( $currentItemHref ) ) + #foreach ( $item in $item.items ) + #findActive ( $item $skip ) + #end + #set ( $sinkhole = $parents.pop() ) + #end +#end +#foreach ( $menu in $decoration.body.menus ) + ## Breadcrumb-Pfad suchen + #searchBreadcrumbTrail ( $menu.items ) + ## Bestimmen, welche Pfade in dem selbst definierten Menü liegen + #set ( $sinkhole = $parents.push( 'index.html' ) ) + #if ( !$menu.name ) + #foreach ( $item in $menu.items ) + #buildSkiplist( $item ) + #end + ## Aktives (Unter-)Menü bestimmen (und dabei nichts überspringen) + #foreach ( $item in $menu.items ) + #findActive( $item false) + #end + #else + ## Aktives (Unter-)Menü bestimmen (und dabei Einträge aus dem selbst + ## definierten Menü überspringen) + #foreach ( $item in $menu.items ) + #findActive( $item true) + #end + #end + #set ( $sinkhole = $parents.pop() ) + ## Sonderbehandlung der Einträge im selbst angelegten Menü + ## Das Menü wird daran erkannt, das der Name leer ist! +#end + + + + +## +#macro ( link $href $name $class ) + #set ( $linkTitle = ' title="' + $name + '"' ) + #if ( $href.toLowerCase().startsWith("http:/") || $href.toLowerCase().startsWith("https:/") || + $href.toLowerCase().startsWith("ftp:/") || $href.toLowerCase().startsWith("mailto:") || + $href.toLowerCase().startsWith("file:/") || ($href.toLowerCase().indexOf("://") != -1) ) + #set ( $linkClass = ' class="external ' + $class + '"' ) + #else + #set ( $linkClass = ' class="' + $class + '"' ) + #end + $name +#end +## +#macro ( menuItem $item $parent $skip) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) ) + #set ( $doskip = false ) + #if ( $skip ) + #foreach ( $toskip in $skiplist ) + #if ( $currentItemHref == $toskip ) + #set ( $doskip = true ) + #end + #end + #end +## + #if ( !$doskip ) + #set ( $onPath = false ) + #set ( $parentActive = false ) + #set ( $off = '' ) + #set ( $sub = '' ) + #set ( $cssClass = 's' ) + #foreach ( $entry in $path ) + #if ( $entry == $currentItemHref ) + #set ( $onPath = true ) + #set ( $cssClass = 's selected' ) + #end + #if ( $entry == $parent && $parent == $active ) + #set ( $parentActive = true ) + #end + #end + #if ( $item.items.size() > 0 ) + #set ( $sub = ' sub' ) + #end + #if ( !$onPath && !$parentActive ) + #set ( $off = ' off' ) + #end +
  • + #if ( $alignedFileName == $currentItemHref ) + $item.name + #else + #link( $currentItemHref $item.name $cssClass ) + #end + #if ( $item.items.size() > 0 && ( $currentItemHref == $active || $onPath ) ) + #set ( $newparent = $currentItemHref ) +
      + #foreach( $item in $item.items ) + #menuItem( $item $newparent $skip ) + #end +
    + #end +
  • + #end +#end +## +#macro ( copyright ) + #if ( $project ) + #set ( $currentYear = ${currentDate.year} + 1900 ) +## + #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) ) + ${project.inceptionYear}-${currentYear} + #else + ${currentYear} + #end + #end +#end +## + + + juplo - $title + + + + + + + + +#foreach( $author in $authors ) + +#end +#if ( $dateCreation ) + +#end + #if ( $decoration.body.head ) + #foreach( $item in $decoration.body.head.getChildren() ) + ## Workaround for DOXIA-150 due to a non-desired behaviour in p-u + ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toString() + ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toUnescapedString() + #set ( $documentHeader = '' ) + #if ( $item.name == "script" ) + $StringUtils.replace( $item.toUnescapedString(), $documentHeader, "" ) + #else + $StringUtils.replace( $item.toString(), $documentHeader, "" ) + #end + #end + #end + $headContent + + +
    + + +
    +
    +

    $shortTitle

    + $bodyContent +
    +
    + + +
    +
    + +
    + #if( $decoration.googleAnalyticsAccountId && $decoration.googleAnalyticsAccountId != "" ) + + #end + + -- 2.20.1