<?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.
-->
<!-- $Id: groups.jx 473861 2006-11-12 03:51:14Z gregor $ -->

<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:body>
    <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
    <div id="contentblock1" class="lenya-tab">
      <h1><i18n:text>new-message</i18n:text></h1>
      
      <table class="lenya-table-noborder">
        <tr>
          <td colspan="2">
            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
          </td>
        </tr>
      </table>
      
      <jx:set var="sender" value="${usecase.getParameter('user')}"/>
      
      <form action="" method="POST">
        <input type="hidden" name="lenya.usecase" value="${usecase.getName()}"/>
        <input type="hidden" name="lenya.continuation" value="${continuation.id}"/>
        <div style="margin: 10px 0px">
          <table class="lenya-table-noborder">
            <tr>
              <td class="lenya-entry-caption"><i18n:text>From</i18n:text></td>
              <td>
                <jx:out value="${sender.getId()}"></jx:out>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>To</i18n:text></td>
              <td>
                <select class="lenya-form-element" name="recipient">
                  <jx:forEach var="recipient" items="${usecase.getParameter('users')}">
                    <option value="${recipient.getId()}"><jx:out value="${recipient.getId()}"/></option>
                  </jx:forEach>
                </select>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption"><i18n:text>Subject</i18n:text></td>
              <td>
                <input class="lenya-form-element" name="subject" type="text"/>
              </td>
            </tr>
            <tr>
              <td class="lenya-entry-caption" valign="top"><i18n:text>Message</i18n:text></td>
              <td>
                <textarea style="height: 300px" class="lenya-form-element" name="body"/>
              </td>
            </tr>
            <tr>
              <td/>
              <td>
                <input name="submit" type="submit" value="Send" i18n:attr="value"/>
              </td>
            </tr>
          </table>
        </div>
      </form>
      
    </div>
  </page:body>
</page:page>