<?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 - Framework">
     <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>
        <href>http://www.apache.org</href>
        <src>https://tiles.apache.org/images/logos/asf_logo_url.svg</src>
    </bannerRight>
    <body>

        <menu name="Apache Tiles&#8482;">
            <item
                   name="Welcome"
                   href="../index.html"/>
            <item
                    name="Tiles 3.0.x"
                    href="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"/>
        </menu>
        <menu name="User Documentation">
            <item
                    name="What's new"
                    href="whats-new.html"/>
            <item
                    name="Getting Started"
                    href="getting_started.html"/>
            <item
                    name="Tutorial"
                    href="tutorial/index.html"
                    collapse="true">
                <item
                        name="The composite view pattern"
                        href="tutorial/pattern.html"/>
                <item
                        name="Configuration"
                        href="tutorial/configuration.html"/>
                <item
                        name="Basic Usage"
                        href="tutorial/basic/index.html"
                        collapse="true">
                    <item
                            name="Tiles Concepts"
                            href="tutorial/basic/concepts.html"/>
                    <item
                            name="Creating Pages"
                            href="tutorial/basic/pages.html"/>
                </item>
                <item
                        name="Advanced Topics"
                        href="tutorial/advanced/index.html"
                        collapse="true">
                    <item
                            name="Nesting and Extending"
                            href="tutorial/advanced/nesting-extending.html"/>
                    <item
                            name="List Attributes"
                            href="tutorial/advanced/list-attributes.html"/>
                    <item
                            name="Runtime Composition"
                            href="tutorial/advanced/runtime.html"/>
                    <item
                            name="View Preparers"
                            href="tutorial/advanced/preparer.html"/>
                    <item
                            name="Rendering Utilities"
                            href="tutorial/advanced/utils.html"/>
                    <item
                            name="Localization"
                            href="tutorial/advanced/l10n.html"/>
                    <item
                            name="Wildcard support"
                            href="tutorial/advanced/wildcard.html"/>
                    <item
                            name="EL support"
                            href="tutorial/advanced/el-support.html"/>
                    <item
                            name="Attribute rendering"
                            href="tutorial/advanced/attribute-rendering.html"/>
                    <item
                            name="Multiple containers"
                            href="tutorial/advanced/multiple-containers.html"/>
                    <item
                            name="Security"
                            href="tutorial/advanced/security.html"/>
                </item>
                <item
                        name="Integrations"
                        href="tutorial/integration/index.html"
                        collapse="true">
                    <item
                            name="Frameworks"
                            href="tutorial/integration/frameworks.html"/>
                    <item
                            name="View technologies"
                            href="tutorial/integration/view.html">
                        <item
                                name="FreeMarker"
                                href="tutorial/integration/freemarker.html"/>
                        <item
                                name="Velocity"
                                href="tutorial/integration/velocity.html"/>
                    </item>
                </item>
            </item>
            <item
                    name="Wiki"
                    href="http://cwiki.apache.org/TILES/"/>
            <item
                    name="Struts Migration"
                    href="migration/index.html"/>
        </menu>
        <menu name="Reference">
            <item
                    name="Configuration reference"
                    href="config-reference.html"/>
            <item
                    name="Javadoc"
                    href="apidocs/index.html"/>
            <item
                    name="Taglibdoc"
                    href="tiles-jsp/tlddoc/index.html"/>
            <item
                    name="Taglib Reference"
                    href="tiles-jsp/tagreference.html"/>
            <item
                    name="DTD Doc"
                    href="tiles-core/dtddoc/index.html"/>
        </menu>

        <menu name="Developers">
            <item
                    name="Building"
                    href="dev/building.html"/>
            <item
                    name="Snapshots"
                    href="dev/snapshots.html"/>
            <item
                    name="Release Process"
                    href="dev/release.html"/>
            <item
                    name="Selenium Testing"
                    href="selenium.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>
