<?xml version="1.0"?>
<!--
  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.
-->
<!--
Skin configuration file. This file contains details of your project,
which will be used to configure the chosen Forrest skin.

Explanation of some elements has been removed from this file.
See main/fresh-site/src/documentation/skinconf.xml for details.
-->
<!DOCTYPE skinconfig PUBLIC "-//APACHE//DTD Skin Configuration V0.8-2//EN" "http://forrest.apache.org/dtd/skinconfig-v08-2.dtd">
<skinconfig>
<!-- To enable lucene search add provider="lucene"
    Add box-location="alt" to move the search box to an alternate location
    (if the skin supports it) and box-location="all" to show it in all
    available locations on the page.  Remove the <search> element to show
    no search box.
  -->
  <search name="Apache Forrest" domain="forrest.apache.org" provider="google"/>
<!-- Disable the print link? If enabled, invalid HTML 4.0.1 -->
  <disable-print-link>true</disable-print-link>
<!-- Disable the PDF link? -->
  <disable-pdf-link>true</disable-pdf-link>
<!-- Disable the xml source link? -->
<!-- The xml source link makes it possible to access the xml rendition
    of the source frim the html page, and to have it generated statically.
    This can be used to enable other sites and services to reuse the
    xml format for their uses. Keep this disabled if you don't want other
    sites to easily reuse your pages.-->
  <disable-xml-link>true</disable-xml-link>
<!-- Disable navigation icons on all external links? -->
  <disable-external-link-image>true</disable-external-link-image>
<!-- Disable w3c compliance links? -->
  <disable-compliance-links>false</disable-compliance-links>
<!-- Render mailto: links unrecognisable by spam harvesters? -->
  <obfuscate-mail-links>true</obfuscate-mail-links>
  <obfuscate-mail-value>.at.</obfuscate-mail-value>
<!-- Disable the javascript facility to change the font size -->
  <disable-font-script>false</disable-font-script>
<!-- mandatory project logo
       skin: forrest-site renders it at the top -->
  <project-name>Forrest</project-name>
  <project-description>Apache Forrest</project-description>
  <project-url>http://forrest.apache.org/</project-url>
  <project-logo>images/project-logo.png</project-logo>
<!-- optional group logo
       skin: forrest-site renders it at the top-left corner -->
  <group-name>Apache</group-name>
  <group-description>The Apache Software Foundation</group-description>
  <group-url>http://www.apache.org/</group-url>
  <group-logo>images/apache-forrest.png</group-logo>
<!-- optional host logo (e.g. sourceforge logo)
       skin: forrest-site renders it at the bottom-left corner -->
  <host-url></host-url>
  <host-logo></host-logo>
<!-- relative url of a favicon file, normally favicon.ico -->
  <favicon-url>favicon.ico</favicon-url>
<!-- The following are used to construct a copyright statement -->
  <year inception="true">2002</year>
  <vendor>The Apache Software Foundation. Licensed under Apache License 2.0</vendor>
  <copyright-link>http://www.apache.org/licenses/</copyright-link>
<!-- Optional text trademark statement below the copyright statement -->
  <trademark-statement>
    Apache Forrest, Forrest, Apache, the Apache feather logo, and the Apache Forrest
    logos are trademarks of The Apache Software Foundation.
  </trademark-statement>
<!-- Some skins use this to form a 'breadcrumb trail' of links.
    If you don't want these, then set the attributes to blank.
    The DTD purposefully requires them.
    Use location="alt" to move the trail to an alternate location
    (if the skin supports it).
  -->
  <trail>
    <link1 name="Apache Software Foundation" href="http://www.apache.org/"/>
    <link2 name="Apache Forrest" href="http://forrest.apache.org/"/>
    <link3 name="" href=""/>
  </trail>
<!-- Configure the TOC, i.e. the Table of Contents.
  @max-depth
   how many "section" levels need to be included in the
   generated Table of Contents (TOC). 
  @min-sections
   Minimum required to create a TOC.
  @location ("page","menu","page,menu")
   Where to show the TOC.
  -->
  <toc max-depth="2" min-sections="1" location="page"/>
<!-- Heading types can be clean|underlined|boxed  -->
  <headings type="underlined"/>
  <motd>
    <motd-option pattern="index.html" starts-with="true">
      <motd-page location="page">
        7 February 2011 : Forrest-0.9 released
      </motd-page>
      <motd-page-url>http://forrest.apache.org/mirrors.cgi</motd-page-url>
    </motd-option>
    <motd-option pattern="docs_0_100">
      <motd-title>v0.10-dev</motd-title>
      <motd-page location="both">
        This is documentation for development version v0.10-dev
      </motd-page>
      <motd-page-url>http://forrest.apache.org/versions/</motd-page-url>
    </motd-option>
    <motd-option pattern="plugins_0_100">
      <motd-title>v0.10-dev</motd-title>
      <motd-page location="both">
        This is documentation for development version v0.10-dev
      </motd-page>
      <motd-page-url>http://forrest.apache.org/pluginDocs/</motd-page-url>
    </motd-option>
    <motd-option pattern="docs_0_90">
      <motd-title>v0.9</motd-title>
      <motd-page location="both">
        This is documentation for current version v0.9
      </motd-page>
      <motd-page-url>http://forrest.apache.org/versions/</motd-page-url>
    </motd-option>
    <motd-option pattern="plugins_0_90">
      <motd-title>v0.9</motd-title>
      <motd-page location="both">
        This is documentation for current version v0.9
      </motd-page>
      <motd-page-url>http://forrest.apache.org/pluginDocs/</motd-page-url>
    </motd-option>
    <motd-option pattern="docs_0_80">
      <motd-title>v0.8</motd-title>
      <motd-page location="both">
        This is documentation for past version v0.8
      </motd-page>
      <motd-page-url>http://forrest.apache.org/versions/</motd-page-url>
    </motd-option>
    <motd-option pattern="plugins_0_80">
      <motd-title>v0.8</motd-title>
      <motd-page location="both">
        This is documentation for past version v0.8
      </motd-page>
      <motd-page-url>http://forrest.apache.org/pluginDocs/</motd-page-url>
    </motd-option>
  </motd>
  <extra-css>
#footer a { color: #0F3660; }
#footer a:visited { color: #009999; }
.copyright { font-size: 0.8em }
#demo-js-css-2:after { content: "from extra-css via skinconf.xml configuration"; }
  </extra-css>
  <colors>
<!-- These values are used for the generated CSS files. -->
<!-- Forrest -->
    <color name="header"    value="#294563"/>
    <color name="tab-selected" value="#4a6d8c" link="#cedfef" vlink="#cedfef" hlink="#cedfef"/>
    <color name="tab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="subtab-selected" value="#4a6d8c" link="#cedfef" vlink="#cedfef" hlink="#cedfef"/>
    <color name="subtab-unselected" value="#b5c7e7" link="#0F3660" vlink="#0F3660" hlink="#0F3660"/>
    <color name="heading" value="#294563"/>
    <color name="subheading" value="#4a6d8c"/>
    <color name="published" value="#4C6C8F" font="#FFFFFF"/>
    <color name="feedback" value="#4C6C8F" font="#FFFFFF" align="center"/>
    <color name="navstrip" value="#4a6d8c" font="#ffffff" link="#0F3660" vlink="#0F3660" hlink="#000066"/>
    <color name="toolbox" value="#cedfef" font="#000000"/>
    <color name="border" value="#cedfef"/>
    <color name="menu" value="#4a6d8c" font="#cedfef" link="#ffffff" vlink="#ffffff" hlink="#ffcf00"/>
    <color name="menuheading" value="#cfdced" font="#000000" />
    <color name="searchbox" value="#4a6d8c" font="#000000"/>
    <color name="dialog" value="#4a6d8c"/>
    <color name="body" value="#ffffff"  link="#0F3660" vlink="#009999" hlink="#000066"/>
    <color name="table" value="#7099C5"/>
    <color name="table-cell" value="#f0f0ff"/>
    <color name="highlight" value="#ffff00"/>
    <color name="fixme" value="#cc6600"/>
    <color name="note" value="#006699"/>
    <color name="warning" value="#990000"/>
    <color name="code" value="#CFDCED"/>
    <color name="footer" value="#cedfef"/>
  </colors>
<!-- Settings specific to PDF output.  -->
  <pdf>
<!-- 
       Supported page sizes are a0, a1, a2, a3, a4, a5, executive,
       folio, legal, ledger, letter, quarto, tabloid (default letter).
       Supported page orientations are portrait, landscape (default
       portrait).
       Supported text alignments are left, right, justify (default left).
    -->
    <page size="a4" orientation="portrait" text-align="left"/>
<!-- 
       Pattern of the page numbering in the footer - Default is "Page x".
       first occurrence of '1' digit represents the current page number,
       second occurrence of '1' digit represents the total page number,
       anything else is considered as the static part of the numbering pattern.
       Examples : x is the current page number, y the total page number.
       <page-numbering-format>none</page-numbering-format> Do not displays the page numbering
       <page-numbering-format>1</page-numbering-format> Displays "x"
       <page-numbering-format>p1.</page-numbering-format> Displays "px."
       <page-numbering-format>Page 1/1</page-numbering-format> Displays "Page x/y"
       <page-numbering-format>(1-1)</page-numbering-format> Displays "(x-y)"
    -->
    <page-numbering-format>Page 1/1</page-numbering-format>
<!--
       Margins can be specified for top, bottom, inner, and outer
       edges. If double-sided="false", the inner edge is always left
       and the outer is always right. If double-sided="true", the
       inner edge will be left on odd pages, right on even pages,
       the outer edge vice versa.
       Specified below are the default settings.
    -->
    <margins double-sided="false">
      <top>1cm</top>
      <bottom>1cm</bottom>
      <inner>2cm</inner>
      <outer>1.5cm</outer>
    </margins>
<!--
      Print the URL text next to all links going outside the file
    -->
    <show-external-urls>false</show-external-urls>
<!--
      Normally all links inside a Forrest site are relative. This
      does not work well in PDFs which are typically viewed outside of
      the web site. Setting this option adds the given prefix to all
      relative URLs, both to the link as well as the optional, additional text.
    -->
    <url-prefix>http://forrest.apache.org/</url-prefix> 
  </pdf>
<!-- 
    Credits are typically rendered as a set of small clickable
    images in the page footer.
    
    Use box-location="alt" to move the credits to an alternate location
    (if the skin supports it).

    For example, pelt skin:
    - box-location="alt" will place the logo at the end of the
      left-hand coloured menu panel.
    - box-location="alt2" will place them underneath that panel
      in the left-hand whitespace.
    - Otherwise they are placed next to the compatibility icons
      at the bottom of the screen.

    Comment out the whole <credit>-element if you want no credits in the
    web pages 
  -->
  <credits>
    <credit>
      <name>Built with Apache Forrest</name>
      <url>http://forrest.apache.org/</url>
      <image>skin/images/built-with-forrest-button.png</image>
      <width>88</width>
      <height>31</height>
    </credit>
    <credit>
      <name>Built with Apache Cocoon</name>
      <url>http://cocoon.apache.org/</url>
      <image>images/built-with-cocoon.gif</image>
      <width>88</width>
      <height>31</height>
    </credit>
    <credit>
      <name>thanks to ASF, thanks from ASF</name>
      <url>http://www.apache.org/foundation/thanks.html</url>
      <image>images/apache-thanks.png</image>
      <width>88</width>
      <height>31</height>
    </credit>
    <credit box-location="alt2">
      <name>Contributing</name>
      <url>http://www.apache.org/foundation/contributing.html</url>
      <image>http://www.apache.org/images/SupportApache-small.png</image>
      <width>125</width>
      <height>125</height>
    </credit>
    <credit box-location="alt2">
      <name>ApacheCon</name>
      <url>http://www.apache.org/events/current-event.html</url>
      <image>http://www.apache.org/events/current-event-125x125.png</image>
      <width>125</width>
      <height>125</height>
    </credit>
<!-- A credit with @role='pdf' will have its name and url
      displayed in the PDF page's footer. -->
  </credits>
</skinconfig>
