<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~ 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 xmlns="http://maven.apache.org/DECORATION/1.3.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd"
  name="Archiva Documentation">

  <googleAnalyticsAccountId>UA-140879-5</googleAnalyticsAccountId>

  <bannerLeft>
    <name>Apache Archiva</name>
    <src>http://archiva.apache.org/images/archiva.png</src>
    <href>http://archiva.apache.org/</href>
  </bannerLeft>

  <custom>
    <fluidoSkin>
      <topBarEnabled>false</topBarEnabled>
      <sideBarEnabled>true</sideBarEnabled>
      <leftColumnClass>span2</leftColumnClass>
      <bodyColumnClass>span10</bodyColumnClass>
      <skipGenerationDate>true</skipGenerationDate>
      <googleSearch>
        <sitesearch>${project.url}</sitesearch>
      </googleSearch>
      <twitter>
        <user>archiva</user>
        <showUser>true</showUser>
        <showFollowers>false</showFollowers>
      </twitter>
      <ohloh>
        <projectId>6670</projectId>
        <widget>stats</widget>
      </ohloh>
    </fluidoSkin>

  </custom>

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

  <body>
    <breadcrumbs>
      <item name="Apache Archiva" href="http://archiva.apache.org/index.html"/>
    </breadcrumbs>

    <menu name="Introduction">
      <item name="Quick Start"   href="/quick-start.html" />
      <item name="Feature Tour"  href="/tour/index.html" />
      <item name="Release Notes" href="/release-notes.html" />
      <item name="Downloads"     href="http://archiva.apache.org/download.html" />
    </menu>

    <menu name="Users Guide">
      <item name="Browsing"                  href="/userguide/browsing.html" />
      <item name="Searching"                 href="/userguide/searching.html" />
      <!-- not yet in new UI -->
      <!--item name="Identifying an Artifact"   href="/userguide/find-artifact.html" /-->
      <item name="Deleting an Artifact"      href="/userguide/delete-artifact.html" />
      <item name="Using as a repository"     href="/userguide/using-repository.html" />
      <item name="Deploying to repository"   href="/userguide/deploy.html" />
      <item name="Configuring Virtual Repositories"   href="/userguide/virtual-repositories.html" />
      <item name="Rss Feeds in Archiva"      href="/userguide/rss.html"/>
      <item name="Querying Artifacts"        href="/userguide/querying-artifacts.html"/>
      <!-- not yet in new UI -->
      <!--item name="Audit Log Report"      href="/userguide/auditlog-report.html"/-->
    </menu>

    <menu name="Administrators Guide">
<!-- TODO: add an overview in future versions
      <item name="Structure of Archiva"      href="/adminguide/structure.html" />
-->
      <item name="Installing Archiva"        href="/adminguide/installing.html" collapse="true">
        <item name="Installing Standalone"   href="/adminguide/standalone.html" />
        <item name="Installing as a WAR"     href="/adminguide/webapp.html" />
        <item name="Upgrading to a New Version"     href="/adminguide/upgrade.html" />
      </item>
      <item name="Databases"                    href="/adminguide/databases.html" />
      <item name="Repositories Content Storage" href="/adminguide/repositories-content-storage.html"/>
      <item name="Security"                     href="/adminguide/security.html" collapse="true">
        <item name="Users"                      href="/adminguide/users.html" />
        <item name="Roles"                      href="/adminguide/roles.html" />
        <item name="Customising"                href="/adminguide/customising-security.html" />
<!-- TODO: for a future version
        <item name="Using LDAP"              href="/adminguide/ldap.html" />
-->
      </item>
      <item name="Archiva Configuration"      href="/adminguide/configuration.html" collapse="true">
        <item name="Repositories"             href="/adminguide/repositories.html" />
        <item name="Proxy Connectors"         href="/adminguide/proxy-connectors.html" />
        <item name="Proxy Connectors Rules"   href="/adminguide/proxy-connector-rules.html"/>
        <item name="Network Proxies"          href="/adminguide/network-proxies.html" />
        <item name="Network Configuration"    href="/adminguide/network-configuration.html" />
        <item name="Legacy (Maven 1) Support" href="/adminguide/legacy.html" />
        <item name="Consumers"                href="/adminguide/consumers.html" />
        <item name="Staging Repositories"     href="/adminguide/staging-repositories.html"/>
        <item name="Appearance Configuration" href="/adminguide/appearance-configuration.html"/>
        <item name="UI Configuration"         href="/adminguide/ui-configuration.html"/>
        <item name="File Locking Configuration" href="/adminguide/file-locking-configuration.html"/>
        <item name="Url Failure Cache Configuration"         href="/adminguide/url-cache-failure-configuration.html"/>
        <item name="Redback Runtime Configuration"    href="/adminguide/redback-runtime-configuration.html"/>
      </item>
      <item name="REST Apis"                    href="/adminguide/webservices/rest.html"/>

      <item name="Configuration Files"       href="/adminguide/configuration-files.html" />
      <item name="System Status"             href="/adminguide/system-status.html" />
      <item name="Log Files"                 href="/adminguide/logging.html" collapse="true">
        <item name="Archiva Logs"            href="/adminguide/archiva-logs.html" />
        <item name="Audit Logs"              href="/adminguide/audit-logs.html" />
        <item name="Security Logs"           href="/adminguide/security-logs.html" />
      </item>
      <item name="Reports"                   href="/adminguide/reports.html" />
    </menu>

    <menu name="Customising Archiva">
      <item name="Writing a Consumer Plugin" href="/customising/writing-consumer.html" />
    </menu>

    <menu name="More Information">
      <item name="Archiva Wiki"              href="http://cwiki.apache.org/confluence/display/ARCHIVA/Index" />
    </menu>

    <menu name="ASF">
      <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 ${project.name}, ${project.name}, Apache, the Apache feather logo, and the Apache ${project.name} 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>
