Commit ab3ba542 authored by Gerd Schachtschneider's avatar Gerd Schachtschneider
Browse files

add license.txt

parent 4582d3d6
<?php
class tables_mpi_users {
function getPermissions($record) {
$user = Dataface_AuthenticationTool::getInstance()->getLoggedInUser();
// first let's deal with the case that the user is not logged in.
if ( !$user ) return Dataface_PermissionsTool::NO_ACCESS();
$role = $user->val('role');
// if ( isAdmin($role) ) return Dataface_PermissionsTool::ALL();
if ( $role == 'MANAGER' ) return Dataface_PermissionsTool::getRolePermissions('MANAGER');
if ( $role == 'ADMIN' ) return Dataface_PermissionsTool::getRolePermissions('ADMIN');
// Everybody else gets read only access to the table.
// return Dataface_PermissionsTool::getRolePermissions('READ ONLY');
return Dataface_PermissionsTool::NO_ACCESS();
}
function email__renderCell( &$record ) {
$mail = $record->strval('email');
return '<a href="mailto:'.$mail.'">'.$mail.'</a>';
}
function email__htmlValue( &$record ) {
$mail = $record->strval('email');
return '<a href="mailto:'.$mail.'">'.$mail.'</a>';
}
// Formatiere Zeitstempel auf Deutsch
function zeitstempel__display(&$record) {
if ($record->strval('zeitstempel') == NULL) return;
return date('d.m.Y', strtotime($record->strval('zeitstempel')));
}
function beforeSave(&$record) {
if ($record->strval('email') == NULL) {
$app = Dataface_Application::getInstance();
$dn = $app->_conf['_own']['dn'];
$usr = $record->strval('username');
$record->setValue('email', $usr.'@'.$dn);
}
}
}
?>
{use_macro file="Dataface_Main_Template.html"}
{fill_slot name="main_column"}
<p>Schneller Zugriff per Tastenk&uuml;rzel mit SHIFT + ALT + TASTE. Hier werden nur diese beschrieben, welche nicht durch Unterstrich gekennzeichnet werden konnten.<br>
Alle anderen mit Unterstrich sind leicht erkkennbar und werden hier nicht angezeigt. Achtung: Tastenkombinationen sind browserabh&auml;ngig!</p>
<h2 style="background-color: #DEE7EC;">Global f&uuml;r angezeigte Tabelle</h2>
<dl>
<dt><u>H</u>otkeys</font></dt>
<dd>[Shift + Alt + h] &nbsp;&nbsp;&nbsp; <i>Diese Hilfeseite</i></dd>
<dt><font color="indigo"><u>S</u>uche</font></dt>
<dd>[Shift + Alt + s] &nbsp;&nbsp;&nbsp; <i>Suche in aktueller Tabelle</i></dd>
<dt>Reiter "<font color="indigo"><u>l</u>iste</font>"</dt>
<dd>[Shift + Alt + l] &nbsp;&nbsp;&nbsp; <i>Zeige alle Datens&auml;tze der aktuellen Tabelle</i></dd>
<dt>Reiter "<font color="indigo"><u>f</u>inden</font>"</dt>
<dd>[Shift + Alt + f] &nbsp;&nbsp;&nbsp; <i>Suche nach mehreren Kriterien</i></dd>
<dt>Icon "Drucker"</dt>
<dd>[Shift + Alt + p] &nbsp;&nbsp;&nbsp; <i>Drucke angezeigter Datens&auml;tze aus, es erfolgt eine Voransicht der druckbaren DS</i></dd>
</dl>
<h2 style="background-color: #CDE2A7;">Global f&uuml;r angezeigten Datensatz</h2>
<dl>
<dt>Reiter "<font color="indigo">Details</font>"</dt>
<dd>[Shift + Alt + b] &nbsp;&nbsp;&nbsp; <i>Zeige obersten (bei Listennsicht) Datensatz im Anzeige-Modus</i></dd>
<dt>Reiter "<font color="#578308"><u>n</u>euer Datensatz</font>"</dt>
<dd>[Shift + Alt + n] &nbsp;&nbsp;&nbsp; <i>Neuer Datensatz in aktueller Tabelle</i></dd>
<dt>Reiter "<font color="#578308"><u>a</u>lle zeigen</font>"</dt>
<dd>[Shift + Alt + a] &nbsp;&nbsp;&nbsp; <i>Alle Datens&auml;tze in Listenansicht anzeigen</i></dd>
<dt>Reiter "<font color="#578308">gruppe kopieren</font>"</dt>
<dd>[Shift + Alt + c] &nbsp;&nbsp;&nbsp; <i>Markierte oder angezeigte Datens&auml;tze kopieren</i></dd>
<dt>Reiter "<font color="#578308">l&ouml;schen</font>"</dt>
<dd>[Shift + Alt + d] &nbsp;&nbsp;&nbsp; <i>Markierte oder angezeigte Datens&auml;tze l&ouml;schen</i></dd>
<dt>Reiter "<font color="#578308">gruppe aktualisieren</font>"</dt>
<dd>[Shift + Alt + u] &nbsp;&nbsp;&nbsp; <i>Markierte oder angezeigte Datens&auml;tze bearbeiten</i></dd>
<dt>Reiter "<font color="indigo">ansehen</font>"</dt>
<dd>[Shift + Alt + v] &nbsp;&nbsp;&nbsp; <i>Aktuellen Datensatz im Ansichtmodus (View)</i></dd>
<dt>Reiter "<font color="indigo">&auml;nd<u>e</u>rn</font>"</dt>
<dd>[Shift + Alt + e] &nbsp;&nbsp;&nbsp; <i>Aktuellen Datensatz im Beabeitungsmodus (Edit)</i></dd>
</dl>
<!--
<h2>Individuell im Bearbeitungsmodus (&auml;ndern)</h2>
<h3 class="patient-label">Patient</h3>
<dl>
<dt>Feld: "<font color="#483D8B">Anrede:</font>"</dt>
<dd>[Shift + Alt + p] &nbsp;&nbsp;&nbsp; <i>Springe zum Auswahlfeld "Anrede"</i></dd>
<dt>Feld: "<font color="#483D8B">Plz:</font>"</dt>
<dd>[Shift + Alt + a] &nbsp;&nbsp;&nbsp; <i>Spring zum Eingabefeld "Postleitzahl"</i></dd>
<dt>Feld: "<font color="#483D8B">Kasse:</font>"</dt>
<dd>[Shift + Alt + k] &nbsp;&nbsp;&nbsp; <i>Spring zum Auswahlfeld "Kasse"</i></dd>
<dt>Feld: "<font color="#483D8B">Sonstiges:</font>"</dt>
<dd>[Shift + Alt + n] &nbsp;&nbsp;&nbsp; <i>Spring zum Eingabefeld "Sonstiges"</i></dd>
</dl>
<h3 class="rezept-label">Rezept</h3>
<dl>
<dt>Feld: "<font color="#483D8B">Ausgestellt:</font>"</dt>
<dd>[Shift + Alt + p] &nbsp;&nbsp;&nbsp; <i>Springe zum Datumfeld "Ausgestellt"</i></dd>
<dt>Feld: "<font color="#483D8B">Diagnoss:</font>"</dt>
<dd>[Shift + Alt + i] &nbsp;&nbsp;&nbsp; <i>Spring zum Eingabefeld "Diagnose"</i></dd>
<dt>Feld: "<font color="#483D8B">Begin Beh.:</font>"</dt>
<dd>[Shift + Alt + r] &nbsp;&nbsp;&nbsp; <i>Spring zum Datumfeld "Begin Beh."</i></dd>
<dt>Feld: "<font color="#483D8B">Notiz:</font>"</dt>
<dd>[Shift + Alt + n] &nbsp;&nbsp;&nbsp; <i>Spring zum Eingabefeld "Notiz"</i></dd>
</dl>
-->
{/fill_slot}
{/use_macro}
-- view auf list_reiter, weil COLLATE nicht erlaubt in xataface
-- !! achtung fuer jeden view einer datenbank eigenes TABLE_SCHAEMA !!
CREATE OR REPLACE VIEW view_reiter AS
SELECT
CONVERT(table_name USING utf8) COLLATE utf8_unicode_ci AS reiter,
table_type
FROM
information_schema.tables
WHERE
-- fuer jede db setzen
table_schema = 'mpidb_xxx_yyy' AND
( table_type = 'base table' OR table_type = 'view' )
;
-- user aus user-db
CREATE OR REPLACE VIEW view_user AS
SELECT
localID, last_name, first_name FROM mpidb_user.mpi_user
ORDER BY
localID
;
-- mpg-version ohne externe DB (licman)
CREATE OR REPLACE VIEW mpidb_mpg_licman.view_user AS
SELECT
'local' AS localID, 'version' AS last_name, 'mpg' AS first_name
ORDER BY
localID
;
-- mpg-version mit externe DB (licmann)
CREATE OR REPLACE VIEW mpidb_mpg_licman.view_user AS
SELECT
localID, last_name, first_name FROM mpidb_mpg_user.mpi_user
ORDER BY
localID
;
-- mpg-version ohne externe DB (inv)
CREATE OR REPLACE VIEW mpidb_mpg_inv.view_user AS
SELECT
'local' AS localID, 'version' AS last_name, 'mpg' AS first_name
ORDER BY
localID
;
-- mpg-version mit externe DB (inv)
CREATE OR REPLACE VIEW mpidb_mpg_inv.view_user AS
SELECT
localID, last_name, first_name FROM mpidb_mpg_user.mpi_user
ORDER BY
localID
;
[rss]
;; entspricht disabled
[record_rss > rss]
;; entspricht disabled
[related_rss]
;; entspricht disabled
[export_xml]
;; entspricht disabled
[view_xml]
;; entspricht disabled
[related_xml > export_xml]
;; entspricht disabled
[xml_list]
;; entspricht disabled
[printable_report]
icon="{$site_url}/images/printer.png"
category=result_list_actions
description="See this product list in a printable format"
url="{$app->url('-action=printable_report')}"
;; # bestimmte Tabellen nur
;; condition="$query['-table'] == 'mpi_kosten'"
;; # nur admin darf drucken
;; permission=reports
{*-------------------------------------------------------------------------------
* Dataface Web Application Framework
* Copyright (C) 2005-2006 Steve Hannah (shannah@sfu.ca)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*-------------------------------------------------------------------------------
*}{if !$ENV.APPLICATION_OBJECT->main_content_only}{define_slot name="doctype_tag"}<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">{/define_slot}
{define_slot name="html_tag"}<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$ENV.language|escape}" lang="{$ENV.language|escape}">{/define_slot}
<head>
{if !$ENV.prefs.no_history}
{php}
$app =& Dataface_Application::getInstance();
$_SESSION['--redirect'] = $app->url('');
{/php}
{/if}
{define_slot name="html_head"}
<meta http-equiv="Content-Type" content="text/html; charset={$ENV.APPLICATION.oe}"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>{define_slot name="html_title"}{$ENV.APPLICATION_OBJECT->getPageTitle()|escape}{/define_slot}</title>
{define_slot name="dataface_stylesheets"}<link rel="stylesheet" type="text/css" href="{$ENV.DATAFACE_URL}/plone.css"/>{/define_slot}
{define_slot name="custom_stylesheets"}<!-- Stylesheets go here -->{/define_slot}
{block name="custom_stylesheets2"}
{define_slot name="dataface_javascripts"}
<!-- Common Plone ECMAScripts -->
<script type="text/javascript" language="javascript"><!--
DATAFACE_URL = '{$ENV.DATAFACE_URL}';
DATAFACE_SITE_URL = '{$ENV.DATAFACE_SITE_URL}';
DATAFACE_SITE_HREF = '{$ENV.DATAFACE_SITE_HREF}';
//--></script>
<script type="text/javascript"
src="{$ENV.DATAFACE_URL}/plone_javascripts.js">
</script>
{if $ENV.APPLICATION.usage_mode == 'edit'}
<script type="text/javascript"
src="{$ENV.DATAFACE_URL}/js/editable.js">
</script>
{/if}
{/define_slot}
{* Add the head content that is to be inserted in the head of the document.
This was added in version 1.0 to provide an easier way to add custom
Stylesheets and javascripts to the pages.
*}
{foreach from=$ENV.APPLICATION_OBJECT->headContent item=headContent}
{$headContent}
{/foreach}
{define_slot name="custom_javascripts"}
<!-- custom javascripts can go in slot "custom_javascripts" -->
{/define_slot}
{define_slot name="head_slot"}
<!-- Place any other items in the head of the document by filling the "head_slot" slot -->
{/define_slot}
{include file="head_slot.html"}
{block name="head"}
{/define_slot}
</head>
<body onload="bodyOnload()" {block name="body_atts"}>
<link rel="alternate" href="{$ENV.APPLICATION_OBJECT->url('-action=feed&--format=RSS2.0')}"
title="RSS 1.0" type="application/rss+xml" />
{block name="before_body"}
{define_slot name="html_body"}<!-- Replace the entire HTML Body with the "html_body" slot -->
<div id="top-section" class="top">
{block name="before_header"}
{define_slot name="global_header"}{include file="global_header.html"}{/define_slot}
{block name="after_header"}
{if $ENV.user}
{if $ENV.prefs.show_search}
{block name="before_search"}
{define_slot name="search_form"}
<div class="search_form" style="float: right; white-space: nowrap" id="top-search-form">
<form method="GET" action="{$smarty.server.HOST_URI}{$ENV.DATAFACE_SITE_HREF}">
<label for="search" accesskey="s"><u>S</u>uchen:</label>
<input type="hidden" name="-table" value="{$ENV.APPLICATION_OBJECT->_currentTable}"/>
<input type="text" id="search" name="-search" value="{$ENV.search|escape}"/>
{actions category="find_actions" var="find_actions"}
{if $find_actions|@count > 1}
<select name="-action">
{foreach from=$find_actions item="find_action"}
{assign var=option_label value=$find_action.label}
{if !$option_label}
{assign var=option_label value=$ENV.table_object->getLabel()}
{/if}
{assign var=option_value value=$find_action.action}
{if !$option_value}
{assign var=option_value value=$find_action.name}
{/if}
<option value="{$option_value}" selected>{$option_label}</option>
{/foreach}
</select>
{else}
{foreach from=$find_actions item="find_action"}
{assign var=option_value value=$find_action.action}
{if !$option_value}
{assign var=option_value value=$find_action.name}
{/if}
<input type="hidden" name="-action" value="{$option_value}"/>
{/foreach}
{/if}
<input type="submit" name="-submit" value="{translate id="scripts.GLOBAL.LABEL_SUBMIT"}Search{/translate}" id="search_submit_button" />
{block name="after_search_form_submit"}
</form>
</div>
{/define_slot}
{block name="after_search"}
{/if}
{/if}
{if $ENV.user}
{if $ENV.prefs.horizontal_tables_menu and $ENV.prefs.show_tables_menu}
{block name="before_nav_menu"}
{include file="Dataface_NavMenu.html"}
{block name="after_nav_menu"}
{/if}
{/if}
<div class="{$ENV.APPLICATION_OBJECT->_currentTable}" id="status-bar">
{if !$ENV.prefs.hide_language_selector}
{block name="before_language_selector"}
{define_slot name="language_selector"}<div id="language_selector">{language_selector autosubmit="true" type="ul" use_flags=false}</div>{/define_slot}
{block name="after_language_selector"}
{/if}
{if !$ENV.prefs.hide_user_status}
<div id="user-status">
{if $ENV.username}
{block name="before_user_status_logged_in"}
{define_slot name="user_status_logged_in"}{assign var='username' value=$ENV.username}{translate id="Logged in as user" username=$username}Logged in as {$username}{/translate} (<a href="{$APP->url('-action=logout')}" title="{translate id="scripts.GLOBAL.LABEL_LOGOUT}Logout{/translate}">{translate id="scripts.GLOBAL.LABEL_LOGOUT}Logout{/translate}</a>){/define_slot}
{block name="after_user_status_logged_in"}
{elseif $APP->getAuthenticationTool()}
{block name="before_user_status_not_logged_in"}
{define_slot name="user_status_not_logged_in"}<a href="{$APP->url('-action=login')}" title="Login">{translate id="scripts.GLOBAL.LABEL_LOGIN"}Login{/translate}</a>{/define_slot}
{block name="after_user_status_not_logged_in"}
{/if}
</div>
{/if}
</div>
{if !$ENV.prefs.hide_personal_tools}
{if $ENV.user}
{block name="before_personal_tools"}
{define_slot name="personal_tools"}
{actions_menu id="personal-tools" category="personal_tools" id_prefix="personal_tools_"}
<!--<div id="personal-tools"><a href="{$ENV.user->getURL()}">My Profile</a></div>-->
{/define_slot}
{block name="after_personal_tools"}
{/if}
{/if}
{if $ENV.prefs.show_bread_crumbs}
{block name="before_bread_crumbs"}
{define_slot name="bread_crumbs"}<div class="bread-crumbs">{bread_crumbs}</div>{/define_slot}
{block name="after_bread_crumbs"}
{/if}
</div>
{block name="before_main_table"}
{define_slot name="main_table"}
<table width="100%" border="0" cellpadding="5" id="main_table">
<tr>
<td valign="top" id="left_column">
{block name="before_left_column"}
{define_slot name="left_column"}
{if $ENV.prefs.show_record_tree}
{block name="before_record_tree"}
{load_record var="record"}
{include file="RecordNavMenu.html" record=$record}
{block name="after_record_tree"}
{/if}
{if !$ENV.prefs.horizontal_tables_menu and $ENV.prefs.show_tables_menu}
{block name="before_nav_menu"}
{include file="Dataface_NavMenu.html"}
{block name="after_nav_menu"}
{/if}
{block name="before_application_menu"}
{define_slot name="application_menu"}{include file="Dataface_Application_Menu.html"}{/define_slot}
{block name="after_application_menu"}
{/define_slot}
{block name="after_left_column"}
</td>
<td valign="top" id="main_column">
{block name="before_main_column"}
{define_slot name="main_column"}
{if $back and !$ENV.APPLICATION.hide_back}
<div class="browser_nav_bar">
<a href="{$back.link}" title="{translate id="scripts.GLOBAL.LABEL_BACK"}Back{/translate}">&lt;&lt; {translate id="scripts.GLOBAL.LABEL_GO_BACK"}Go Back{/translate}</a>
</div>
{/if}
<div class="horizontalDivider">&nbsp;</div>
{if $ENV.APPLICATION_OBJECT->numMessages() > 0 }
{block name="before_message"}
<div class="portalMessage">
<ul>
{block name="message"}
{foreach from=$ENV.APPLICATION_OBJECT->getMessages() item="msg"}
<li>{$msg|nl2br}</li>
{/foreach}
</ul>
</div>
{block name="after_message"}
{/if}
{if $ENV.APPLICATION_OBJECT->numErrors() > 0 }
{block name="before_errors"}
<div class="portalMessage">
<h5>{translate id="scripts.GLOBAL.HEADING_ERRORS"}Errors{/translate}</h5>
<ul>
{block name="error"}
{foreach from=$ENV.APPLICATION_OBJECT->getErrors() item="error"}
<li>{$error->getMessage()|nl2br}</li>
{/foreach}
</ul>
</div>
{block name="after_errors"}
{/if}
{if $ENV.prefs.show_table_tabs}
{block name="before_table_tabs"}
{define_slot name="table_tabs"}
{actions_menu id="table_tabs" id_prefix="table-tabs-" class="contentViews" category="table_tabs" selected_action=$ENV.mode}
{/define_slot}
{block name="before_menus"}
{define_slot name="menus"}{include file="Dataface_TableView_menus.html"}{/define_slot}
{block name="after_menus"}
{/if}
{if $ENV.prefs.show_table_tabs}
<div class="documentContent" id="region-content" style="border: 1px solid gray">
{/if}
{block name="before_main_section"}
{define_slot name="main_section"}
{if $history and !$ENV.APPLICATION.hide_history}
{block name="before_recently_viewed"}
<div id="recentlyViewed">
<b>{translate id="scripts.GLOBAL.LABEL_RECENT_RECORDS"}Recent Records{/translate}:</b><select name="recentRecords" onchange="javascript:window.location=this.options[this.selectedIndex].value;" >
{section loop=$history name=i}
<option value="{$history[i].link}" {if $title == $history[i].recordTitle}selected{/if}>{$history[i].recordTitle}</option>
{/section}
</select>
</div>
{block name="after_recently_viewed"}
{/if}
<div style="clear:both">
{block name="before_record_content"}
{define_slot name="record_content"}
{$body}
{/define_slot}
{block name="after_record_content"}
</div>
{/define_slot}
{block name="after_main_section"}
{if $ENV.prefs.show_table_tabs}
</div>
{/if}
{/define_slot}
</td>
</tr>
</table>
{/define_slot}
{define_slot name="fineprint"}
{block name="before_fineprint"}
{include file="Dataface_Fineprint.html"}
{block name="after_fineprint"}
{/define_slot}
{block name="before_global_footer"}
{define_slot name="global_footer"}{include file="global_footer.html"}{/define_slot}
{block name="after_global_footer"}
{/define_slot}
{block name="javascript_tool_includes"}
</body>
</html>
{else}
{* We are only showing the main section on this round *}
{* Block to be displayed before the main section of the page. *}
{block name="before_main_section"}
{* The main content of the page. *}
{define_slot name="main_section"}
{if $history and !$ENV.APPLICATION.hide_history}
{*Block to be shown just before the 'recently viewed' records. *}
{block name="before_recently_viewed"}
<div id="recentlyViewed">
<b>{translate id="scripts.GLOBAL.LABEL_RECENT_RECORDS"}Recent Records:{/translate}</b><select name="recentRecords" onchange="javascript:window.location=this.options[this.selectedIndex].value;" >
{section loop=$history name=i}
<option value="{$history[i].link}" {if $title == $history[i].recordTitle}selected{/if}>{$history[i].recordTitle}</option>
{/section}
</select>
</div>
{* Block to be shown just after the 'recently viewed' records menu. *}
{block name="after_recently_viewed"}
{/if}
<div style="clear:both">
{* Content to be shown before the record content in the Main Template. *}
{block name="before_record_content"}
{* Slot to fill in with record content. *}
{define_slot name="record_content"}
{$body}
{/define_slot}
{* Content to be shown just after record content in the Main Template. *}
{block name="after_record_content"}
</div>
{/define_slot}
{block name="after_main_section"}
{/if} {* End if main_content_only*}
{*-------------------------------------------------------------------------------
* Dataface Web Application Framework
* Copyright (C) 2005-2006 Steve Hannah (shannah@sfu.ca)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*-------------------------------------------------------------------------------
*}
{if $ENV.resultSet->found() > 0}
{load_record var="record"}
{use_macro file="Dataface_Record_Template.html"}
{fill_slot name="record_content"}
{block name="before_view_tab_content"}
{define_slot name="view_tab_content"}
{record_view var=rv record=$record}
<script type="text/javascript" src="{$ENV.DATAFACE_URL}/js/jquery-ui.packed.js"></script>
<table width="100%">
{if !$rv->showLogo}
<tr>
<td colspan="2" id="dataface-sections-top-column">
<div class="dataface-sections-top {if $ENV.prefs.hide_record_view_logo}dataface-sections-top-no-logo{/if}">
<h3>{$record->getTitle()}</h3>
<div class="dataface-view-description">{$rv->description}</div>
<div class="dataface-view-status">{$rv->status}</div>
</div>
</td>
</tr>