<?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
  
  https://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>https://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="https://directory.apache.org/"/>
       <item name="Apache" href="https://www.apache.org/"/>
       <item name="Maven" href="https://maven.apache.org/"/>
    </links>
    <menu ref="reports"/>
    <menu ref="modules"/>
  </body>
</project>
