<?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>Delete Document</i18n:text></page:title>
  <page:body>
    <div class="lenya-box">
      <div class="lenya-box-title">
        <i18n:translate>
          <i18n:text key="delete-doc"/>
          <jx:set var="document" value="${usecase.getParameter('document')}"/>
          <jx:choose>
            <jx:when test="${document.hasLink()}">
              <i18n:param><q><jx:out value="${document.getLink().getLabel()}"/></q></i18n:param>
            </jx:when>
            <jx:otherwise>
              <i18n:param>(not available)</i18n:param>
            </jx:otherwise>
          </jx:choose>
        </i18n:translate>
      </div>
      <div class="lenya-box-body">
        <form method="post" id="form-delete">
          <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>
                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
              </td>
            </tr>
            <jx:choose>
              <jx:when test="${usecase.hasErrors()}">
                <tr>
                  <td>
                    <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
                  </td>
                </tr>
              </jx:when>
              <jx:otherwise>
                <tr>
                  <td>
                    <i18n:translate>
                      <i18n:text key="delete-language-versions?"/>
                      <i18n:param><strong><jx:out value="${usecase.getParameter('document').getLink().getLabel()}"/></strong></i18n:param>
                    </i18n:translate><br/><br/>
                  </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="Delete"/>
                    &#160;
                    <input i18n:attr="value" type="submit" name="cancel" value="Cancel"/>
                  </td>
                </tr>
              </jx:otherwise>
            </jx:choose>
          </table>
        </form>
      </div>
    </div>
  </page:body>
</page:page>