<?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 name="Apache Commons" xmlns="http://maven.apache.org/DECORATION/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/DECORATION/1.1.0 http://maven.apache.org/xsd/decoration-1.1.0.xsd">

<!-- N.B. all non-body elements are automatically inherited -->

  <bannerLeft>
    <name>Apache Commons</name>
    <!--
     ! Even though the default site.vm template contains code to convert relative links, this is
     ! actually done before the content is passed to the template, for both site:site and site:stage.
     ! Unfortunately, this means that the conversion is done in the context of commons-parent, which
     ! contains the site.xml, rather than in the context of the project being built.
     ! This means that relative URLs are created with an additional ../ prefix.
     ! The work-round is to use a dummy absolute URL that can never be used, and then remove this
     ! as part of the template processing.
     ! See MSITE-559
     -->
    <src>http://dummy.invalid/$relativePath/images/commons-logo.png</src>
    <alt>Apache Commons logo</alt>
    <!--
     ! Similarly href entries are converted before they are passed to the template.
     ! In this case, we want the URL to remain absolute.
     ! The work-round is to use a dummy suffix that is removed by the template.
     ! This is due to be fixed in version 2.3 of the site plugin - see MSITE-159, MSHARED-189
     ! Or use site:stage which does not convert these links ... 
     -->
    <href>https://commons.apache.org.remove.invalid/</href>
  </bannerLeft>

  <publishDate format="dd MMMM yyyy" position="left" />

  <version position="left" />

  <skin>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-skin</artifactId>
    <version>4.2</version>
  </skin>

  <body>
    <head>
      <![CDATA[
      <!-- Better display of <source> code sections -->
      <!-- Note: the $relativePath reference is resolved by the template -->
      <link rel="stylesheet" href="$relativePath/css/prettify.css" type="text/css" media="all" />
      <script type="text/javascript" src="$relativePath/js/prettify.js"></script>
      <script type="text/javascript">
          window.onload=function() {
              prettyPrint();
          }
      </script>
      ]]>
    </head>

    <!-- N.B. body links are automatically inherited -->
    <links>
      <item name="ApacheCon" href="http://www.apachecon.com/"/>
      <item name="Apache"  href="http://www.apache.org"/>
      <item name="Commons" href="https://commons.apache.org/" />
    </links>

    <menu ref="reports" inherit="bottom" />

    <menu name="Commons" inherit="bottom">
      <item name="Home"                  href="https://commons.apache.org/" />
      <item name="License"               href="http://www.apache.org/licenses/"/>
      <item name="Components"            href="https://commons.apache.org/components.html" collapse="true">
        <item name="Full list..."        href="https://commons.apache.org/components.html" />
      </item> 
      <item name="Sandbox"               href="https://commons.apache.org/sandbox/index.html" collapse="true">
        <item name="Full list..."        href="https://commons.apache.org/sandbox/index.html" />
      </item>
      <item name="Dormant"               href="https://commons.apache.org/dormant/index.html" collapse="true">
        <item name="Full list..."        href="https://commons.apache.org/dormant/index.html" />
      </item>
    </menu>

    <!-- Should agree with commons-site -->
    <menu name="General Information" inherit="bottom">
      <item name="Security"              href="https://commons.apache.org/security.html"/>
      <item name="Volunteering"          href="https://commons.apache.org/volunteering.html" />
      <item name="Contributing Patches"  href="https://commons.apache.org/patches.html" />
      <item name="Building Components"   href="https://commons.apache.org/building.html" />
      <item name="Commons Parent Pom"    href="https://commons.apache.org/commons-parent-pom.html" />
      <item name="Commons Build Plugin"  href="https://commons.apache.org/build-plugin/index.html" />
      <item name="Releasing Components"  href="https://commons.apache.org/releases/index.html" />
      <item name="Wiki"                  href="http://wiki.apache.org/commons/FrontPage" />
    </menu>

    <!-- Should agree with commons-site -->
    <menu name="ASF" inherit="bottom">
      <item name="How the ASF works"     href="http://www.apache.org/foundation/how-it-works.html" />
      <item name="Get Involved"          href="http://www.apache.org/foundation/getinvolved.html" />
      <item name="Developer Resources"   href="http://www.apache.org/dev/" />
      <item name="Code of Conduct"       href="http://www.apache.org/foundation/policies/conduct.html" />
      <item name="Sponsorship"           href="http://www.apache.org/foundation/sponsorship.html" />
      <item name="Thanks"                href="http://www.apache.org/foundation/thanks.html" />
    </menu>
  </body>

  <!-- inherited -->
  <poweredBy>
    <!-- Add ApacheCon logo -->
    <logo name="ApacheCon" href="http://www.apache.org/events/current-event.html"
          img="http://www.apache.org/events/current-event-125x125.png"/>
    <!-- Keep the default logo as well -->
    <logo name="Maven" href="http://maven.apache.org/"
          img="http://maven.apache.org/images/logos/maven-feather.png"/>
  </poweredBy>

  <!-- inherited -->
  <custom>
    <!-- @project.name@ will be replaced by the template; if we used ${project.name} it would pick up Commons Parent -->    
    <footer>
      <div class="center">
      Apache Commons, Apache @project.name@, Apache, the Apache feather logo, and the Apache Commons project logos are trademarks of The Apache Software Foundation.
      All other marks mentioned may be trademarks or registered trademarks of their respective owners.
      </div>
    </footer>
  </custom>

</project>
