<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!--
  @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-->
<project name="${project.name}">
  <bannerLeft>
    <src>images/server-icon_128x128.png</src>
    <href>http://directory.apache.org/</href>
    <name>${project.name}</name>
  </bannerLeft>
  <skin>
    <groupId>org.apache.directory.skins</groupId>
    <artifactId>directory-api-skin</artifactId>
    <version>${skin.version}</version>
  </skin>
  <publishDate position="navigation-bottom" format="dd-MM-yyyy HH:mm"/>
  <version position="right"/>
  <body>
    <breadcrumbs>
      <item name="Apache Directory Shared" href="http://vm094.oxylos.org/projects/shared/" />
    </breadcrumbs>
    <links>
       <!--
         Need to encode a part of the url due to Issue
         http://jira.codehaus.org/browse/MSITE-159
         and as of https://bugzilla.mozilla.org/show_bug.cgi?id=43659
         this workaround doesn't works in FF 3.x ...
        -->
       <item name="Apache Directory" href="http://directory.apache%2eorg/"/>
       <item name="Apache" href="http://www.apache%2eorg/"/>
       <item name="Maven" href="http://maven.apache%2eorg/"/>
    </links>
    <menu ref="reports"/>
    <menu ref="modules"/>
  </body>
</project>
