<?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:translate>
          <i18n:text>inbox-of</i18n:text>
          <i18n:param><jx:out value="${usecase.getParameter('user')}"/></i18n:param>
        </i18n:translate>
      </h1>
      
      <table class="lenya-table-noborder">
        <tr>
          <td colspan="2">
            <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
          </td>
        </tr>
      </table>
      
      <div style="margin-bottom: 10px;">
        <a href="?lenya.usecase=notification.sendMessage"><i18n:text>new-message</i18n:text></a>
      </div>
      
      <jx:set var="inbox" value="${usecase.getParameter('inbox')}"/>
      <jx:set var="messageId" value="${request.getParameter('messageId')}"/>
      
      <table>
        <tr>
          <td valign="top" style="padding: 0px; padding-right: 20px;">
            <jx:import uri="fallback://lenya/modules/notification/usecases/messageList.jx"/>
          </td>
          <td valign="top" style="padding: 0px; padding-left: 20px;">
            <jx:import uri="fallback://lenya/modules/notification/usecases/currentMessage.jx"/>
          </td>
        </tr>
      </table>
            
    </div>
  </page:body>
</page:page>