<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~ 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.
  -->

<!--
  - Note regarding relative and absolute urls: each pom file has an optional
  - <url> element. If specified, then any absolute url in this file which
  - starts with the project's url is converted into a relative url. Other
  - urls are left unaltered.
  -->
<project name="Apache Myfaces Html5">
    <bannerLeft>
        <name>Apache MyFaces</name>
        <src>img/banners/MyFaces_logo.jpg</src>
        <href>http://myfaces.apache.org/index.html</href>
    </bannerLeft>
    
    <bannerRight>
        <name>Apache Banner</name>
        <src>img/banners/apache_banner.png</src>
        <href>http://www.apache.org</href>
    </bannerRight>
    
    <publishDate format="dd MMM yyyy" />
    
    <skin>
      	<groupId>org.apache.myfaces.maven</groupId>
      	<artifactId>myfaces-site-skin</artifactId>
      	<version>3</version>
    </skin>
    
    <body>
        <links>
            <item name="Apache"         href="http://www.apache.org/"/>
            <item name="MyFaces"        href="http://myfaces.apache.org/index.html"/>
        </links>

        <menu name="Html5 Support for Apache MyFaces" inherit="top">
            <item name="Overview"       href="http://myfaces.apache.org/html5/index.html"/>
            <item name="Building"       href="http://myfaces.apache.org/html5/building.html"/>
            <item name="Features"       href="http://myfaces.apache.org/html5/features.html"/>
            <item name="Showcase"       href="http://bit.ly/myfaces-html5-demo"/>
        </menu>

        <menu ref="modules" inherit="top"/>

        <menu name="Documentation" inherit="top">
            <item name="Getting Started"        href="http://myfaces.apache.org/html5/gettingstarted.html"/>
            <item name="Tag Documentation"      href="http://myfaces.apache.org/html5/myfaces-html5-core/tagdoc.html"/>
            <item name="Taglibdoc Documentation"      href="http://myfaces.apache.org/html5/myfaces-html5-core/tlddoc/index.html"/>
        </menu>

        <menu name="Project Documentation" inherit="top">
            <item name="Mailing Lists"          href="http://myfaces.apache.org/html5/mail-lists.html"/>
            <item name="Project License"        href="http://myfaces.apache.org/html5/license.html"/>
            <item name="Project Summary"        href="http://myfaces.apache.org/html5/project-summary.html"/>
            <item name="Source Repository"      href="http://myfaces.apache.org/html5/source-repository.html"/>
        </menu>

        <menu ref="reports" inherit="top"/>

        <menu name="Foundation" inherit="top">
            <item name="ASF"            href="http://www.apache.org/" />
            <item name="Sponsorship"    href="http://www.apache.org/foundation/sponsorship.html" />
            <item name="Thanks"         href="http://www.apache.org/foundation/thanks.html" />
        </menu>
    </body>
</project>
