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

<project name="Tobago">
  <bannerLeft>
    <name>Tobago</name>
    <src>images/tobagoLogo.png</src>
    <href>http://myfaces.apache.org/tobago</href>
  </bannerLeft>
  <bannerRight>
    <name>Apache MyFaces</name>
    <src>img/banners/MyFaces_logo.jpg</src>
    <href>http://myfaces.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/"/>
      <item name="Tobago"   href="http://myfaces.apache.org/tobago"/>
      <item name="Download" href="http://myfaces.apache.org/download.html" />
      <item name="Mailing Lists"    href="http://myfaces.apache.org/tobago/mail-lists.html" />
    </links>

    <menu name="Tobago">
      <item name="Introduction"  href="http://myfaces.apache.org/tobago/index.html"/>
      <item name="Download"      href="http://myfaces.apache.org/tobago/download.html"/>
      <item name="Demo"          href="http://myfaces.apache.org/tobago/demo.html"/>
      <item name="News"          href="http://myfaces.apache.org/tobago/news.html"/>
      <item name="Mailing Lists" href="mail-lists.html" />
    </menu>

    <menu name="Documentation">
      <item name="Overview" href="http://myfaces.apache.org/tobago/documentation.html" />
      <item name="Getting Started" href="http://myfaces.apache.org/tobago/getting-started.html"/>
      <item name="Migration to 1.5" href="http://myfaces.apache.org/tobago/migration-1.5.html"/>
      <item name="Guide to Tobago" href="http://myfaces.apache.org/tobago/guide.html"/>
      <item name="Roadmap" href="http://myfaces.apache.org/tobago/roadmap.html" />
      <item name="Compatibility" href="http://myfaces.apache.org/tobago/compatibility.html"/>
      <item name="Theme Handling" href="http://myfaces.apache.org/tobago/themes.html" />
      <item name="FAQ" href="http://myfaces.apache.org/tobago/faq.html" />
      <item name="API Documentation" href="http://myfaces.apache.org/tobago/api-documentation.html" />
      <item name="Release Checklist" href="http://myfaces.apache.org/tobago/release-checklist.html" />
    </menu>

    ${parentProject}
    ${modules}
    ${reports}


    <menu name="Foundation">
      <item name="ASF" href="http://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>
