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

  <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 name="Resource Links" href="rbac/resource-links.html"/>
      </item>
    </menu>
    
    <menu name="Integration">
      <item name="General" href="integration/general.html"/>
      <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>
