<?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>
      <topBarContainerStyle>width: 90%;</topBarContainerStyle> 
      <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"/>
    </menu>
    
    <menu name="Integration">
      <item name="General" href="integration/general.html"/>
      <item name="Struts2" href="integration/struts2.html"/>
      <item name="Ldap" href="integration/ldap.html"/>
      <item name="Rest" href="integration/rest.html"/>
    </menu>

    <menu name="Role Based Access Control">
      <item name="Introduction" href="rbac/introduction.html"/>
      <item name="Role Management" href="rbac/role-management.html"/>
      <item name="Resource Links" href="rbac/resource-links.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"/>
    </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>

  </body>
</project>
