<?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="MyFaces Core JSF-2.3">
    <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"/>
            <item name="Quick Start"    href="http://myfaces.apache.org/wiki/core/user-guide/quick-start.html"/>
            <item name="User Guide"     href="http://myfaces.apache.org/wiki/core/user-guide.html"/>
            <item name="FAQ"            href="http://myfaces.apache.org/wiki/core/faq.html"/>
            <item name="Generated Doc"  href="./javadoc.html"/>
            <item name="Download"       href="http://myfaces.apache.org/download.html" />
        </links>

        <menu name="JSF Implementations" inherit="top">
            <item name="Core JSF-2.3"   href="./index.html" collapse="false">
              <item name="API"          href="http://myfaces.apache.org/core30/myfaces-api/index.html"/>
              <item name="Impl"         href="http://myfaces.apache.org/core30/myfaces-impl/index.html"/>
              <item name="Bundle"       href="http://myfaces.apache.org/core30/myfaces-bundle/index.html"/>
            </item>
            <item name="Core JSF-2.2"   href="../core22/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="Core JSF-2.1"   href="../core21/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="Core JSF-2.0"   href="../core20/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="Core JSF-1.2"   href="../core12/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="Core JSF-1.1"   href="../core11/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
        </menu>

        <menu name="UI-Component Sets" inherit="top">
            <item name="Trinidad"       href="../trinidad/index.html"/>
            <item name="Tobago"         href="../tobago/index.html"/>
            <item name="Tomahawk"       href="../tomahawk/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
        </menu>

        <menu name="Add-ons and Extensions" inherit="top">
            <item name="CODI"           href="../extensions/cdi/index.html"/>
            <item name="Orchestra"      href="../orchestra/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="ExtVal"         href="../extensions/validator/index.html"/>
            <item name="Portlet Bridge" href="../portlet-bridge/index.html"/>
            <item name="Test"           href="../test/index.html"/>
            <item name="Commons"        href="../commons/index.html"/>
            <item name="Ext-Scripting"  href="../extensions/scripting/index.html"/>
            <item name="Sandbox"        href="../sandbox/index.html" collapse="true">
              <item name="dummy"        href="dummy"/>
            </item>
            <item name="Others"         href="../otherProjects.html"/>
        </menu>

        <menu name="Documentation" inherit="top">
            <item name="Quick Start"     href="http://myfaces.apache.org/wiki/core/user-guide/quick-start.html"/>
            <item name="Getting Started" href="http://myfaces.apache.org/wiki/core/user-guide/getting-started.html"/>
            <item name="Generated Javadoc, Tlddoc and Others"        href="./javadoc.html"/>
            <item name="MyFaces Release Checklist"        href="./release-checklist.html"/>
            <item name="FAQ"             href="http://myfaces.apache.org/wiki/core/faq.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" />
            <item name="Security"       href="http://www.apache.org/security/" />
            <item name="License"        href="http://www.apache.org/licenses/" />
        </menu>
    </body>
</project>
