<?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 - Assembly">
     <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>

        ${modules}
        ${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>
