<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
/*
 * $Id$
 *
 * 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.
 */
-->
<project name="Apache Tiles - Velocity Support">
     <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.3.0</version>
     </skin>
     <custom>
        <fluidoSkin>
        <topBarEnabled>true</topBarEnabled>
        <sideBarEnabled>false</sideBarEnabled>
        <searchEnabled>true</searchEnabled>
        <gitHub>
            <projectId>apache/tiles</projectId>
            <ribbonOrientation>right</ribbonOrientation>
            <ribbonColor>darkblue</ribbonColor>
        </gitHub>
        </fluidoSkin>
     </custom>
    <bannerLeft>
        <name>Apache Tiles&#8482;</name>
        <src>http://tiles.apache.org/images/logo.png</src>
        <href>http://tiles.apache.org</href>
    </bannerLeft>
    <bannerRight>
        <name>Apache Software Foundation</name>
        <src>http://struts.apache.org/images/asf-logo.gif</src>
        <href>http://www.apache.org</href>
    </bannerRight>
    <body>

        <menu name="Apache Tiles&#8482;">
            <item
                   name="Welcome"
                   href="../../index.html"/>
            <item
                    name="Tiles 3.0.x"
                    href="../../framework/index.html"/>
            <item
                    name="Autotag 1.0.x"
                    href="../../tiles-autotag/index.html"/>
            <item
                    name="Request 1.0.x"
                    href="../../tiles-request/index.html"/>
            <item
                   name="Security bulletins"
                   href="../security/index.html"/>
            <item
                   name="Download"
                   href="http://tiles.apache.org/download.html"/>
        </menu>

        <menu ref="modules" />
        <menu ref="reports" />

        <footer>
            <div class="row span12">
                Apache Tiles, Tiles, Apache, the Apache feather logo, and the Apache Tiles
                project logos are trademarks of The Apache Software Foundation.
            </div>
        </footer>
    </body>
</project>
