<?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: assets.jx 374391 2006-02-02 14:02:17Z andreas $ -->

<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:translate>
      <i18n:text>New ... Document</i18n:text>
      <i18n:param><i18n:text>resourceType-<jx:out value="${usecase.getParameter('doctype')}"/></i18n:text></i18n:param>
    </i18n:translate>
  </page:title>

  <page:body>
    <div class="lenya-box">
    <div class="lenya-box-title">
      <i18n:translate>
        <i18n:text>New ... Document</i18n:text>
        <i18n:param><i18n:text>resourceType-<jx:out value="${usecase.getParameter('doctype')}"/></i18n:text></i18n:param>
      </i18n:translate>
    </div>
    <div class="lenya-box-body">
      <form method="POST" enctype="multipart/form-data" id="form-add_asset">
        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
        <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"><label for="file">
              <i18n:text>File</i18n:text> *</label></td>
            <td><input type="file" name="file" class="lenya-form-element"/></td>
          </tr>
          <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/site/createFields.jx"/>
          <tr>
            <td colspan="2">
              <input i18n:attr="value" name="submit" type="submit" value="New Asset"/>
              &#160;
              <input i18n:attr="value" name="cancel" type="submit" value="Cancel"/>
            </td>
          </tr>
        </table>
      </form>
    </div>
    </div>
  </page:body>
</page:page>
