<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

  <map:pipelines>

    <map:pipeline>

      <!-- webdav GET matcher -->
      <map:match pattern="davget.xml">
        <map:act type="set-header">
          <map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
          <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}" mime-type="application/vnd.oasis.opendocument.text"/>
        </map:act>
      </map:match>

      <!-- parametrized doctype matcher -->
      <!-- pattern="{format}.xml" -->
      <map:match pattern="*.xml">
        <map:generate src="cocoon:/{1}.xml/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}"/>
        <map:serialize type="xml"/>
      </map:match>
      
      <!-- {format}.xml/{pubId}/{area}/{uuid}/{language} -->
      <map:match pattern="*.xml/*/*/*/*">
        <map:generate src="zip:lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}!/content.xml"/>

<!--
        <map:parameter name="metaFileURL" value="{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}/meta.xml"/>
        <map:parameter name="stylesFileURL" value="{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:document-language}/styles.xml"/>
-->

        <map:transform src="fallback://lenya/modules/opendocument/xslt/opendocument2xhtml.xsl">
          <map:parameter name="rendertype" value="{1}"/>
          <map:parameter name="nodeid" value="{page-envelope:document-name}"/>
          <map:parameter name="language" value="{page-envelope:document-language}"/>
        </map:transform>
        <map:serialize type="xml"/>
      </map:match>
      
      <map:match type="request-parameter" pattern="download">
        <map:match pattern="**/*.html">
          <map:redirect-to uri="{2}.odt?lenya.module=opendocument"/>
        </map:match>
      </map:match>

      <map:match pattern="**.odt">
        <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}" mime-type="application/vnd.oasis.opendocument.text"/>
      </map:match>

    </map:pipeline>
    
  </map:pipelines>
</map:sitemap>
