<?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.
-->
<status>
  <developers>
<!-- in fifo order -->
    <person name="Sjur Nørstebø Moshagen" email="sjur@apache.org" id="SNM"/>
    <person name="Ross Gardler" email="rgardler@apache.org" id="RDG"/>
    <person name="Thorsten Scherler" email="thorsten@apache.org" id="TS"/>
    <person name="Ferdinand Soethe" email="ferdinand@apache.org" id="FSO"/>
    <person name="David Crossley" email="crossley@apache.org" id="DC" />
    <person name="Jeremias Märki" email="jeremias@apache.org" id="JM"/>
    <person name="Volunteer needed" email="dev@forrest.apache.org" id="open"/>
  </developers>
<!-- Define here the Title of the Context you want to display in the Changes pages.
       id = the context value of actions
       title = Title of the Context
  -->
  <contexts>
    <context
            id="code"
            title="Changes to the Code Base" />
    <context
            id="docs"
            title="Changes to Documentation" />
    <context
            id="admin"
            title="Changes to Project Administration" />
    <context
            id="design"
            title="Changes to Design" />
    <context
            id="build"
            title="Changes to Build" />
  </contexts>
  <changes>
    <release version="0.4" date="not-yet-released">
      <action type="update" context="code" dev="DC" fixes-bug="FOR-1240,FOR-1193" importance="high">
        Upgraded to the new Cocoon FOP Block, so we not need the local
        stuff anymore. Thanks.
        This version 0.4 of this plugin now requires Forrest-0.10
      </action>
      <action type="update" context="code" dev="DC" importance="high">
        Upgraded Apache FOP to version 1.0 and XML Graphics Commons to 1.5
      </action>
    </release>
    <release version="0.3" date="2011-02-07">
      <action type="update" context="code" dev="JM" importance="high">
        Upgraded Apache FOP to version 0.95 and XML Graphics Commons to 1.3.1
      </action>
      <action
                type="update"
                context="docs"
                dev="SNM"
                importance="high">Updated plugin documentation to cover the new
                properties settable by the user, and how to actually set
                them.</action>
      <action
                type="update"
                context="code"
                dev="SNM"
                importance="high">Made font family specifications available for
                user changes without changing the plugin code.</action>
      <action
                type="update"
                context="code"
                dev="JM"
                fixes-bug="FOR-1087"
                importance="high">Added support for "sub" and "sup"
                tags.</action>
      <action
                type="update"
                context="code"
                dev="DC"
                fixes-bug="FOR-1072"
                due-to="Jeremias Maerki"
                importance="high">Various bugfixes and improvements for the fo
                stylesheets. See notes in FOR-1072.</action>
      <action
                type="update"
                context="code"
                dev="TS"
                importance="high">Encapsulated the xsl methods in different
                helper stylesheet which we can import from the different
                plugins. </action>
      <action
                type="update"
                context="code"
                dev="FSO"
                importance="high">Moved all libraries and components used by
                pdf-generation from core into this plugin. </action>
      <action
                type="update"
                context="code"
                dev="FSO"
                importance="high"> Updating the fop-library to fop 0.94 and
                upgrading the stylesheets to work properly with the new and more
                precise fo-interpeter. </action>
      <action type="update" context="code" dev="FSO" importance="high">
        Replaced Cocoon FOP Block with special Forrest edition
        "cocoon-fop-ng-impl-special" compiled by jeremias. The sources are in
        the jar. See r603892 and the thread
        <link href="http://mail-archives.apache.org/mod_mbox/forrest-dev/200712.mbox/%3C476AA40C.8050108@apache.org%3E">Re: Plans for integrating FOP .94</link>
      </action>
    </release>
    <release
            version="0.2"
            date="2007-04-11">
      <action
                type="add"
                context="code"
                dev="RDG"
                importance="high"> Use locationmap for resolution of resources
                and files. Resources are exposed via {lm:pdf.*} </action>
    </release>
    <release
            version="0.1"
            date="2004-11-17">
      <action
                dev="RDG"
                type="add"
                context="admin"> Extracted code from core of Forrest and placed
                in a plugin </action>
    </release>
  </changes>
  <todo>
    <actions
            priority="high">
      <action
                context="docs"
                dev="RDG"> Customize this template plugin with your plugin's
                details. This TODO list is generated from 'status.xml'. </action>
      <action
                context="docs"
                dev="open"> Create the documentation with lots of examples and
                samples. XML content goes in
                <code>src/documentation/content/xdocs</code>
      </action>
    </actions>
  </todo>
</status>
