<?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>
<!-- 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.2-dev" date="not-released">
      <action dev="RDG" type="update" context="code" importance="high">
        Use locationmap for resource resolution. Internal stylesheets exposed via
        {lm:feeder.transform.*.*}
      </action>
      <action dev="RDG" type="update" context="code" importance="high">
        Changed the request URI from **/feeder/*.xml to **.rss.xml. Please
        update your source files accordingly.
      </action>
    </release>
    <release version="0.1" date="not-released">
      <action dev="RDG" type="update" context="admin">
        Renamed to bring into line with naming conventions.
      </action>
      <action dev="RDG" type="add" context="code">
        Changed the way we identify feeds, now embedded in a feedDescritpor 
        file. This file can later be used to control the rendering of the feed,
        for example, limit the number of items displayed, add a disclaimer etc.
      </action>
      <action dev="RDG" type="add" context="admin">
        Initial Import
      </action>
    </release>
  </changes>
  <todo>
    <actions priority="high">
      <action context="code" dev="open">
        Use a DTD and sourcetype action to decide when to use the RSS plugin
        rather than the fixed URL of "**/feeder/*"
      </action>
      <action context="code" dev="open">
        Add a configuration to limit the number of headlines shown from each
        feed.
      </action>
    </actions>
    <actions priority="med">
      <action context="code" dev="open">
        Creating a PDF can be problematic with some feeds. The content of the 
        feed is placed into a fo:block in an unprocessed form. As a result
        there is HTML in the block. This seems to confuse FOP as it produces
        org.apache.fop.apps.FOPException: internal-destination or external-destination must be specified in basic-link
      </action>
    </actions>
  </todo>
</status>
