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