<?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" >
  <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
  <page:body>
    <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
    <div id="contentblock1" class="lenya-tab-sitetree">
      <h1><i18n:text>Overview</i18n:text></h1>
      <jx:choose>
        <jx:when test="${not(empty(usecase.getParameter('title')))}">
          <jx:set var="document" value="${usecase.getParameter('document')}"/>
          <table class="lenya-table-noborder">
            <tr>
              <td colspan="2">
                <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Title</i18n:text>:</td>
              <td>
                <jx:out value="${usecase.getParameter('title')}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Description</i18n:text>:</td>
              <td>
                <jx:out value="${usecase.getParameter('description')}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Workflow State</i18n:text>:</td>
              <td>
                <jx:choose>
                  <jx:when test="${not(empty(usecase.getParameter('state')))}">
                    <i18n:text><jx:out value="${usecase.getParameter('state')}"/></i18n:text>
                  </jx:when>
                  <jx:otherwise><span style="color: #999999;"><i18n:text>[no workflow]</i18n:text></span></jx:otherwise>
                </jx:choose>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Live</i18n:text>:</td>
              <td>
                <i18n:text><jx:out value="${usecase.getParameter('isLive')}"/></i18n:text>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Available Languages</i18n:text>:</td>
              <td>
                <jx:forEach var="language" items="${usecase.getParameter('languages')}">
                  <jx:choose>
                    <jx:when test="${language.equals(document.getLanguage())}">
                      <jx:out value="${language}"/>
                    </jx:when>
                    <jx:otherwise>
                      <jx:set var="translation" value="${document.getTranslation(language)}"/>
                      <a href="${translation.getCanonicalWebappURL()}?lenya.usecase=tab.overview">
                        <jx:out value="${language}"/></a>
                    </jx:otherwise>
                  </jx:choose>
                </jx:forEach>
              </td>
            </tr>
            <jx:set var="docLanguages" value="${document.getLanguages().size()}"/>
            <jx:set var="pubLanguages" value="${document.getPublication().getLanguages().size()}"/>
            <jx:if test="${docLanguages lt pubLanguages}">
              <tr>
                <td class="lenya-entry-caption"><i18n:text>missing-languages</i18n:text>:</td>
                <td>
                  <jx:forEach var="language" items="${document.getPublication().getLanguages()}">
                    <jx:if test="${!document.existsTranslation(language)}">
                      <a href="?lenya.usecase=sitemanagement.createLanguage&amp;lenya.exitUsecase=tab.overview&amp;language=${language}">
                        <jx:out value="${language}"/></a>
                    </jx:if>
                  </jx:forEach>
                </td>
              </tr>
            </jx:if>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Last modified</i18n:text>:</td>
              <td>
                <jx:out value="${usecase.getParameter('lastmodified')}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>UUID</i18n:text>:</td>
              <td>
                <jx:out value="${document.getUUID()}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Path</i18n:text>:</td>
              <td>
                <jx:out value="${document.getPath()}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Resource Type</i18n:text>:</td>
              <td>
                <i18n:text>resourceType-<jx:out value="${document.getResourceType().getName()}"/></i18n:text>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Mime Type</i18n:text>:</td>
              <td>
                <jx:out value="${document.getMimeType()}"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Document Size</i18n:text>:</td>
              <td>
                <jx:out value="${document.getContentLength()}"/> B
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Visible in Navigation</i18n:text>:</td>
              <td>
                <i18n:text><jx:out value="${usecase.getParameter('visibleInNav')}"/></i18n:text>
              </td>
            </tr>
          </table>
        </jx:when>
        <jx:when test="${usecase.getParameter('languageexists').equals('false')}">
          <i18n:text>This document is not available in this language.</i18n:text><br/><br/>
          <i18n:text>Available Languages</i18n:text>: <jx:out value="${usecase.getParameter('languages')}"/>
        </jx:when>
        <jx:otherwise><i18n:text>No overview available.</i18n:text></jx:otherwise>
      </jx:choose>
    </div>
  </page:body>
</page:page>