<?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>4</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="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://tobago-vm.apache.org/download.html"/>
      <item name="Demo &amp; Docs"          href="http://tobago-vm.apache.org/"/>
      <item name="Guide to Tobago" href="http://myfaces.apache.org/tobago/guide.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>
