| ## Licensed to the Apache Software Foundation (ASF) under one |
| ## or more contributor license agreements. See the NOTICE file |
| ## distributed with this work for additional information |
| ## regarding copyright ownership. The ASF licenses this file |
| ## to you under the Apache License, Version 2.0 (the |
| ## "License"); you may not use this file except in compliance |
| ## with the License. You may obtain a copy of the License at |
| ## |
| ## http://www.apache.org/licenses/LICENSE-2.0 |
| ## |
| ## Unless required by applicable law or agreed to in writing, |
| ## software distributed under the License is distributed on an |
| ## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ## KIND, either express or implied. See the License for the |
| ## specific language governing permissions and limitations |
| ## under the License. |
| |
| ## DVSL style sheet for velocity-tools project |
| ## |
| ## |
| ## The style sheet looks for the following configuration parameters: |
| ## |
| ## $context.toolbox.basedir |
| ## Its value is expected to be the path to the base directory of |
| ## this documentation set. It can be used to reference other files, |
| ## for example a menu file that is to be loaded. |
| ## |
| ## $context.toolbox.PrinterFriendlyVersion |
| ## If its value is "yes", the generated page has no left-hand menu. |
| ## This facilitates the printing of documentation. |
| ## |
| ## Shown below is a configuration example of an ant task: |
| ## <!-- create printer version of documentation --> |
| ## <dvsl |
| ## basedir="${docs.src}" |
| ## destdir="${docs.dest}/" |
| ## toolboxfile="${basedir}/../xdocs/toolbox.props" |
| ## extension="-printer.html" |
| ## style="${basedir}/../xdocs/site.dvsl" |
| ## excludes="*menu.xml" |
| ## includes="**/*.xml"> |
| ## <tool name="toolbox.string.PrinterFriendlyVersion" value="yes" /> |
| ## <tool name="toolbox.string.basedir" value="${basedir}" /> |
| ## </dvsl> |
| ## |
| |
| #match( "document" ) |
| ## identify if this is to be a printer-friendly version |
| #set( $printerFriendly = $context.toolbox.PrinterFriendlyVersion.equals('yes') ) |
| ## alias the current node |
| #set( $document = $node ) |
| ## get path to the project file |
| #if ($context.toolbox.basedir) |
| #set( $projectfile = "$context.toolbox.basedir/$node.properties.projectfile" ) |
| #else |
| #set( $projectfile = $node.properties.projectfile ) |
| #end |
| ## get actual project node |
| #set( $project = $node.selectSingleNode("document('$projectfile')/project" ) ) |
| ## check for a subproject file |
| #if( $node.properties.subprojectfile ) |
| #set( $subprojectfile = $node.properties.subprojectfile ) |
| #set( $subproject = $node.selectSingleNode("document('$subprojectfile')/project") ) |
| #set( $subtitle = $subproject.attribute('name') ) |
| #end |
| #set( $pagetitle = $document.properties.title ) |
| ## build up crumbs if they'll be needed |
| #if( !$printerFriendly ) |
| #set( $crumbs = $project.selectNodes('breadcrumb') ) |
| #set( $subcrumbs = $subproject.selectNodes('breadcrumb') ) |
| #if( $subcrumbs && !$subcrumbs.empty ) |
| #set( $foo = $crumbs.addAll($subcrumbs) ) |
| #end |
| #end |
| |
| <html> |
| <head> |
| <title>$project.attribute('name')#if( $subtitle ) - $subtitle#end#if( $pagetitle ) - $pagetitle#end</title> |
| #foreach( $n in $node.properties.selectNodes("author") ) |
| <meta name="author" value="$n"/> |
| #if( $n.attribute('email') ) |
| <meta name="email" value="$n.attribute('email')" /> |
| #end |
| #end |
| <style type="text/css" media="all"> |
| #foreach( $style in $project.selectNodes('style') ) |
| @import url("$style.attribute('href')"); |
| #end |
| #foreach( $style in $subproject.selectNodes('style') ) |
| @import url("$style.attribute('href')"); |
| #end |
| #foreach( $style in $document.properties.selectNodes('style') ) |
| @import url("$style.attribute('href')"); |
| #end |
| #if( $printerFriendly ) |
| @import url("css/print.css"); |
| #end |
| </style> |
| </head> |
| |
| <body class="composite"> |
| |
| ## PAGE HEADER (LOGOS) |
| <div id="banner"> |
| <a href="http://velocity.apache.org/" id="bannerLeft"> |
| <img src="http://velocity.apache.org/images/velocity_project_wide.png" |
| #if( $printerFriendly )width="400" height="40"#end |
| align="left" alt="The Velocity Project" border="0"/> |
| </a> |
| #if( $subproject.attribute('logo') ) |
| #set( $logo = $subproject.attribute('logo') ) |
| #set( $name = $subproject.attribute('name') ) |
| #set( $home = $subproject.attribute('href') ) |
| #else |
| #set( $logo = $project.attribute('logo') ) |
| #set( $name = $project.attribute('name') ) |
| #set( $home = $project.attribute('href') ) |
| #end |
| #if( $logo ) |
| ## PROJECT LOGO |
| <span id="bannerRight"> |
| <a href="$home"> |
| <img src="$logo" align="right" alt="$name" border="0"/> |
| </a> |
| </span> |
| #end |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| |
| ## PRINTER FRIENDLY TITLE |
| #if( $printerFriendly ) |
| <div id="title"> |
| <h1>#if( $subtitle )$subtitle - #end#if( $pagetitle )$pagetitle#end</h1> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| #end |
| |
| ## BREADCRUMB LINKS |
| #if( !$printerFriendly ) |
| <div id="breadcrumbs"> |
| <div class="xleft"> |
| #foreach( $crumb in $crumbs ) |
| <a href="$crumb.attribute('href')" class="crumb">$crumb</a> > |
| #end |
| $!pagetitle |
| </div> |
| <div class="xright"> |
| #foreach( $sibling in $project.selectNodes('sibling') ) |
| #if( $velocityCount > 1 )|#end |
| <a href="$sibling.attribute('href')" class="sibling">$sibling</a> |
| #end |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| #end |
| |
| |
| <!-- LEFT SIDE NAVIGATION --> |
| #if( !$printerFriendly ) |
| <div id="leftColumn"> |
| <div id="navcolumn"> |
| $context.applyTemplates( $project, "menu/group" ) |
| #if( $subproject ) |
| $context.applyTemplates( $subproject, "menu/group" ) |
| #end |
| $context.applyTemplates( $project, "menu/printerversion" ) |
| <a class="poweredBy" href="http://velocity.apache.org/" title="Apache Velocity" > |
| <img class="poweredBy" alt="Apache Velocity" src="http://velocity.apache.org/images/pbv90x30.png"/> |
| </a> |
| </div> |
| </div> |
| #end |
| |
| <!-- RIGHT SIDE MAIN BODY --> |
| <div id="bodyColumn"> |
| <div id="contentBox"> |
| $context.applyTemplates("body/section") |
| </div> |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| |
| <!-- PAGE FOOTER --> |
| <div id="footer"> |
| <div class="xright"> |
| Copyright © 1999-2007, Apache Software Foundation |
| </div> |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </body> |
| </html> |
| #end |
| |
| |
| #* |
| * Process a menu for the navigation bar |
| *# |
| #match( "group" ) |
| #if ($attrib.href) |
| <h5><a href="$attrib.href">$attrib.name</a></h5> |
| #else |
| <h5>$attrib.name</h5> |
| #end |
| <ul> |
| $context.applyTemplates() |
| </ul> |
| #end |
| |
| |
| #* |
| * Process a submenu for the navigation bar |
| *# |
| #match( "subGroup" ) |
| #if ($attrib.href) |
| <li class="none"><a href="$attrib.href">$attrib.name</a> |
| #else |
| <li class="none">$attrib.name |
| #end |
| <ul> |
| $context.applyTemplates("item") |
| </ul> |
| </li> |
| #end |
| |
| |
| #* |
| * Process a menu item for the navigation bar |
| *# |
| #match( "item" ) |
| #if ($attrib.href) |
| <li class="none"><a href="$attrib.href">$attrib.name</a></li> |
| #else |
| <li class="none">$attrib.name</li> |
| #end |
| #end |
| |
| |
| #* |
| * Insert a link to a printerfriendly version of the document |
| *# |
| #match( "printerversion" ) |
| #set( $filename = $context.getAppValue('infilename') ) |
| #set( $filename = $filename.substring(0, $filename.lastIndexOf('.')) ) |
| <h5 id="printLink"><a href="${filename}-printer.html">Print-Friendly Version</a></h5> |
| #end |
| |
| |
| #* |
| * process a documentation section |
| *# |
| #match( "section" ) |
| <div class="section">## |
| <a name="$!attrib.name.replace(' ','_')"#* |
| *##if( $attrib.href ) href="$attrib.href"#end><h2>$attrib.name</h2></a> |
| $context.applyTemplates("*") |
| </div> |
| #end |
| |
| |
| #* |
| * process a documentation subsection |
| *# |
| #match( "subsection" ) |
| <div class="subsection">## |
| <h3><a name="$!attrib.name.replace(' ','_')"#* |
| *##if( $attrib.href ) href="$attrib.href"#* |
| *##else class="nolink"#end>$attrib.name</a></h3> |
| $context.applyTemplates("*") |
| </div> |
| #end |
| |
| #* |
| * process a TODO note |
| *# |
| #match( "todo" ) |
| <p class="note"> |
| This is unfinished. |
| <a href="index.html#Contribution">You can help fix that!</a><br> |
| #set( $todo = "$!node.copy()" ) |
| #if( $todo != '<todo/>' ) |
| TODO: $todo |
| #end |
| </p> |
| #end |
| |
| #* |
| * process a 'sourcecode' block. |
| *# |
| #match( "sourcecode" ) |
| <div class="source"> |
| <pre>$node.copy()</pre> |
| </div> |
| #end |
| |
| #match("table") |
| <table> |
| $context.applyTemplates("*") |
| </table> |
| #end |
| |
| #match("tr") |
| <tr> |
| $context.applyTemplates("*") |
| </tr> |
| #end |
| |
| #match( "td" ) |
| <td colspan="$!attrib.colspan" rowspan="$!attrib.rowspan"> |
| $node.copy( $node.children() ) |
| </td> |
| #end |
| |
| #match( "th" ) |
| <th colspan="$!attrib.colspan" rowspan="$!attrib.rowspan"> |
| $node.copy( $node.children() ) |
| </th> |
| #end |
| |
| #* |
| * process a javadoc element |
| *# |
| #match( 'javadoc' )## |
| #if( $attrib.package ) |
| #set( $package = $attrib.package ) |
| #if( !$package.startsWith('org.apache.velocity.tools') ) |
| #set( $package = "org.apache.velocity.tools.$package" ) |
| #end |
| #else |
| #set( $package = 'org.apache.velocity.tools' ) |
| #end |
| #set( $href = "javadoc/$package.replace('.','/')/${attrib.name}.html" ) |
| #set( $content = "$!node.value()" ) |
| #if( $content == '' ) |
| #if( $attrib.full ) |
| #set( $content = $package + '.' + $attrib.name ) |
| #else |
| #set( $content = $attrib.name ) |
| #end |
| #end## |
| <a href="$href">$content</a>## |
| #end |
| |
| #* |
| * macro to navigate document and replace <javadoc> tags |
| *# |
| #macro( digFor $name $tag ) |
| #set( $kids = $tag.children() ) |
| #if( "$!tag.name()" == $name ) |
| $context.applyTemplates($tag) |
| #elseif( $kids.isEmpty() ) |
| $tag.copy() |
| #elseif( $tag.selectNodes("$name|*//$name").isEmpty() ) |
| $tag.copy() |
| #else |
| <$tag.name()#foreach( $key in $attrib.keySet() ) $key="$!attrib.get($key)"#end> |
| #foreach( $kid in $kids ) |
| #digFor( $name $kid ) |
| #end |
| </$tag.name()> |
| #end |
| #end |
| |
| #match("*") |
| #digFor( 'javadoc' $node ) |
| #end |