<?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.
-->

<!-- $Id$ -->

<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0" 
           xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" 
           xmlns="http://www.w3.org/1999/xhtml" 
           xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
           
  <page:title><i18n:text>Archive Document</i18n:text></page:title>
  <page:body>
    <div class="lenya-box">
      <div class="lenya-box-title">
        <i18n:translate>
          <i18n:text key="archive-doc"/>
          <i18n:param><q><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></q></i18n:param>
        </i18n:translate>
      </div>
      <div class="lenya-box-body">
        <form method="get" id="form-archive_document">
          
          <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
          <input type="hidden" name="lenya.usecase" value="${request.getParameter('lenya.usecase')}"/>
          
          <table class="lenya-table-noborder">
            <tr>
              <td>
                <i18n:translate>
                  <i18n:text key="archive-doc?"/>
                  <i18n:param><strong><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></strong></i18n:param>
                </i18n:translate><br/><br/>
              </td>
            </tr>
            <tr>
              <td>
                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
              </td>
            </tr>
            <tr>
              <jx:if test="${not(empty(usecase.getParameter('inconsistentdocument')))}">
                <td class="lenya-entry-caption">
                  <span class="lenya-form-message-error"><i18n:text key="docs-have-links-to-doc"/>:</span>
                </td>
                <td valign="top">
                  <jx:forEach var="item" items="${usecase.getParameter('inconsistentdocument')}">
                    <a target="_blank" href="{@href}"><jx:out value="${item.id}"/><jx:out value="."/></a><br/>
                  </jx:forEach>
                </td>
              </jx:if>
            </tr>
            <tr>
              <td>
                <input i18n:attr="value" type="submit" name="submit" value="Archive"/>&#160;
                <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
              </td>
            </tr>
          </table>
        </form>
      </div>
    </div>
  </page:body>
</page:page>