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

<project name="Apache Redback">
  <bannerLeft>
    <name>Redback</name>
    <href>http://archiva.apache.org/redback</href>
  </bannerLeft>
  <googleAnalyticsAccountId>UA-140879-5</googleAnalyticsAccountId>
  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <sideBarEnabled>false</sideBarEnabled>

      <googleSearch>
        <sitesearch>http://archiva.apache.org/redback</sitesearch>
      </googleSearch>
      <twitter>
        <user>archiva</user>
        <showUser>true</showUser>
        <showFollowers>false</showFollowers>
      </twitter>
      <ohloh>
        <projectId>8659</projectId>
        <widget>stats</widget>
      </ohloh>
    </fluidoSkin>

  </custom>

  <publishDate format="yyyy-MM-dd" position="left" />
  <version position="left" />
 
  <body>

    <menu name="Overview">
      <item name="Introduction" href="index.html"/>
      <item name="Authentication" href="authentication.html"/>
      <item name="Authorization" href="authorization.html"/>
      <item name="User Management" href="user-management.html"/>
      <item name="Key Stores" href="key-store.html"/>
      <item name="Configuration" href="configuration.html"/>
      <item name="Role Based Access Control" href="rbac/introduction.html">
        <item name="Role Management" href="rbac/role-management.html"/>
      </item>
      <item name="Ldap" href="integration/ldap.html"/>
      <item name="Rest" href="integration/rest.html"/>
    </menu>

    <menu name="Development">
      <item name="Extending Redback Authentication" href="development/extending-authn.html"/>
      <item name="Redback Components" href="http://archiva.apache.org/redback/components"/>
      <item name="Redback Core" href="http://archiva.apache.org/redback/core"/>
    </menu>
    
    <menu ref="reports" />

    <menu name="ASF" inherit="bottom">
      <item name="How Apache Works" href="http://www.apache.org/foundation/how-it-works.html"/>
      <item name="Foundation" href="http://www.apache.org/foundation/"/>
      <item name="Sponsoring Apache" href="http://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
    </menu>

    <footer>
      <div class="row span12">Apache Redback, Redback, Apache, the Apache feather logo, and the Apache Archiva project logos are trademarks of The Apache Software Foundation.</div>
      <div class="row span12">
        <a href="${project.url}privacy-policy.html">Privacy Policy</a>
      </div>
    </footer>

  </body>
</project>
