[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [16115] more on rental
From: |
sigurdne |
Subject: |
[Fmsystem-commits] [16115] more on rental |
Date: |
Tue, 27 Dec 2016 16:48:58 +0000 (UTC) |
Revision: 16115
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=16115
Author: sigurdne
Date: 2016-12-27 16:48:58 +0000 (Tue, 27 Dec 2016)
Log Message:
-----------
more on rental
Modified Paths:
--------------
trunk/rental/inc/class.socontract.inc.php
trunk/rental/inc/class.uicontract.inc.php
trunk/rental/inc/model/class.contract.inc.php
trunk/rental/setup/setup.inc.php
trunk/rental/setup/tables_current.inc.php
trunk/rental/setup/tables_update.inc.php
trunk/rental/templates/base/config.tpl
Modified: trunk/rental/inc/class.socontract.inc.php
===================================================================
--- trunk/rental/inc/class.socontract.inc.php 2016-12-27 11:06:10 UTC (rev
16114)
+++ trunk/rental/inc/class.socontract.inc.php 2016-12-27 16:48:58 UTC (rev
16115)
@@ -355,7 +355,7 @@
else
{
// columns to retrieve
- $columns[] = 'contract.id AS contract_id';
+ $columns[] = 'contract.id AS contract_id,
contract.notify_on_expire, contract.notified_time';
$columns[] = 'contract.date_start,
contract.date_end, contract.old_contract_id, contract.executive_officer,
contract.last_updated, contract.location_id, contract.billing_start,
contract.billing_end, contract.service_id, contract.responsibility_id,
contract.reference, contract.invoice_header, contract.project_id,
billing.deleted, contract.account_in, contract.account_out, contract.term_id,
contract.security_type, contract.security_amount, contract.comment,
contract.due_date,
contract.contract_type_id,contract.rented_area,contract.adjustable,contract.adjustment_interval,contract.adjustment_share,contract.adjustment_year,override_adjustment_start,contract.publish_comment';
$columns[] = 'party.id AS party_id';
$columns[] = 'party.first_name,
party.last_name, party.company_name, party.department, party.org_enhet_id';
@@ -446,6 +446,9 @@
$contract->set_notify_before($this->unmarshal($this->db->f('notify_before'),
'int'));
$contract->set_notify_before_due_date($this->unmarshal($this->db->f('notify_before_due_date'),
'int'));
$contract->set_notify_after_termination_date($this->unmarshal($this->db->f('notify_after_termination_date'),
'int'));
+
$contract->set_notify_on_expire($this->unmarshal($this->db->f('notify_on_expire'),
'int'));
+
$contract->set_notified_time($this->unmarshal($this->db->f('notified_time'),
'int'));
+
}
$timestamp_end =
$this->unmarshal($this->db->f('timestamp_end'), 'int');
@@ -1251,4 +1254,13 @@
}
return $price_items;
}
+
+ public function set_notified_on_expire( $contract_id,
$current_notify_on_expire )
+ {
+ $contract_id = (int) $contract_id;
+ $new_notify_on_expire = (int)$current_notify_on_expire
+ 1;
+ $now = time();
+ $sql = "UPDATE rental_contract SET notify_on_expire =
{$new_notify_on_expire}, notified_time = $now WHERE id={$contract_id} ";
+ return $this->db->query($sql);
+ }
}
\ No newline at end of file
Modified: trunk/rental/inc/class.uicontract.inc.php
===================================================================
--- trunk/rental/inc/class.uicontract.inc.php 2016-12-27 11:06:10 UTC (rev
16114)
+++ trunk/rental/inc/class.uicontract.inc.php 2016-12-27 16:48:58 UTC (rev
16115)
@@ -44,7 +44,8 @@
'reset_price_item' => true,
'add_notification' => true,
'download' => true,
- 'get_total_price' => true
+ 'get_total_price' => true,
+ 'notify_on_expire' => true
);
public function __construct()
@@ -2856,4 +2857,91 @@
}
}
}
+
+
+
+ /**
+ * Sending email - consider the workbench instead
+ * run as cron-job
+ */
+ public function notify_on_expire( )
+ {
+ // Queries that depend on areas of responsibility
+ $types =
rental_socontract::get_instance()->get_fields_of_responsibility();
+ $ids = array();
+ $read_access = array();
+ foreach ($types as $id => $label)
+ {
+ $names = $this->locations->get_name($id);
+ if ($names['appname'] ==
$GLOBALS['phpgw_info']['flags']['currentapp'])
+ {
+ $ids[] = $id;
+ }
+ }
+ $comma_seperated_ids = implode(',', $ids);
+ $filters = array('contract_status' =>
'under_dismissal', 'contract_type' => $comma_seperated_ids);
+
+ $candidates = array();
+ $candidates = rental_socontract::get_instance()->get(0,
0, '', false, '', '', $filters);
+
+ $notify_on_expire_email =
$this->config->config_data['notify_on_expire_email'];
+ $from_email =
$this->config->config_data['from_email_setting'];
+ $notify_reminder_days =
$this->config->config_data['notify_reminder_days'];
+
+ if(!$notify_on_expire_email)
+ {
+ throw new Exception(__CLASS__.'::' .
__FUNCTION__.'() - missing email target');
+ }
+
+ if (!is_object($GLOBALS['phpgw']->send))
+ {
+ $GLOBALS['phpgw']->send =
CreateObject('phpgwapi.send');
+ }
+
+ $do_notify = false;
+ foreach ($candidates as $contract_id => $contract)
+ {
+ $notify_on_expire =
$contract->get_notify_on_expire();
+
+ if($notify_on_expire > 1)
+ {
+ continue;
+ }
+
+ $now = time();
+ $end_date =
$contract->get_contract_date()->get_end_date();
+ $datediff = $end_date - $now;
+ $days_to_expire = floor($datediff / (60 * 60 *
24));
+
+ _debug_array($days_to_expire);
+
+ if ($notify_on_expire == 0 &&
($notify_reminder_days > $days_to_expire)) // first time
+ {
+ $do_notify = true;
+ }
+ else if($notify_reminder_days >=
$days_to_expire)// second time
+ {
+ $do_notify = true;
+ $notify_on_expire = 1;
+ }
+
+ if($do_notify)
+ {
+ $subject = lang('contract %1 expires in
%2 days', $contract_id, $days_to_expire);
+ $message = '<a href ="' .
$GLOBALS['phpgw']->link('/index.php', array('menuaction' =>
'rental.uicontract.edit',
+ 'id' => $contract_id),
false, true) . '">' . $subject . '</a>';
+ try
+ {
+ $rcpt =
$GLOBALS['phpgw']->send->msg('email', $notify_on_expire_email, $subject,
stripslashes($message), '', $cc, $bcc, $from_email, $from_email, 'html');
+ }
+ catch (Exception $exc)
+ {
+
phpgwapi_cache::message_set($exc->getMessage(),'error');
+ }
+
+
rental_socontract::get_instance()->set_notified_on_expire($contract_id,
$notify_on_expire);
+ }
+
+ }
+ }
}
\ No newline at end of file
Modified: trunk/rental/inc/model/class.contract.inc.php
===================================================================
--- trunk/rental/inc/model/class.contract.inc.php 2016-12-27 11:06:10 UTC
(rev 16114)
+++ trunk/rental/inc/model/class.contract.inc.php 2016-12-27 16:48:58 UTC
(rev 16115)
@@ -79,6 +79,8 @@
protected $bill_only_one_time;
protected $publish_comment;
protected $total_price_current_year;
+ protected $notify_on_expire;
+ protected $notified_time;
/**
* Constructor. Takes an optional ID. If a contract is
created from outside
@@ -1215,6 +1217,27 @@
$this->publish_comment = (bool)$publish_comment;
}
+ public function get_notify_on_expire()
+ {
+ return (int)$this->notify_on_expire;
+ }
+
+ public function set_notify_on_expire( $notify_on_expire )
+ {
+ $this->notify_on_expire = (int)$notify_on_expire;
+ }
+
+ public function get_notified_time()
+ {
+ return (int)$this->notified_time;
+ }
+
+ public function set_notified_time( $notified_time )
+ {
+ $this->notified_time = (int)$notified_time;
+ }
+
+
/**
* (non-PHPdoc)
* @see rental/inc/model/rental_model#validates()
Modified: trunk/rental/setup/setup.inc.php
===================================================================
--- trunk/rental/setup/setup.inc.php 2016-12-27 11:06:10 UTC (rev 16114)
+++ trunk/rental/setup/setup.inc.php 2016-12-27 16:48:58 UTC (rev 16115)
@@ -1,6 +1,6 @@
<?php
$setup_info['rental']['name'] = 'rental'; // Module identifier
- $setup_info['rental']['version'] = '0.1.0.33'; // Current module version
+ $setup_info['rental']['version'] = '0.1.0.34'; // Current module version
$setup_info['rental']['app_order'] = 51; // (?)
$setup_info['rental']['tables'] = array(
'rental_party', // All contract participants, tenants etc.
Modified: trunk/rental/setup/tables_current.inc.php
===================================================================
--- trunk/rental/setup/tables_current.inc.php 2016-12-27 11:06:10 UTC (rev
16114)
+++ trunk/rental/setup/tables_current.inc.php 2016-12-27 16:48:58 UTC (rev
16115)
@@ -168,7 +168,9 @@
'adjustment_year' => array('type' => 'int',
'precision' => '4', 'nullable' => true), //Sist regulert
'adjustable' => array('type' => 'bool',
'nullable' => true, 'default' => 'false'), //Regulerbar
'override_adjustment_start' => array('type' =>
'int','precision' => 4,'nullable' => true),
- 'publish_comment' => array('type' => 'bool',
'nullable' => true, 'default' => 'false') //skal kommentar vises i frontend
+ 'publish_comment' => array('type' => 'bool',
'nullable' => true, 'default' => 'false'), //skal kommentar vises i frontend
+ 'notify_on_expire' => array('type' =>
'int','precision' => 2,'nullable' => true),
+ 'notified_time' => array('type' =>
'int','precision' => 8,'nullable' => true),
),
'pk' => array('id'),
'fk' => array(
Modified: trunk/rental/setup/tables_update.inc.php
===================================================================
--- trunk/rental/setup/tables_update.inc.php 2016-12-27 11:06:10 UTC (rev
16114)
+++ trunk/rental/setup/tables_update.inc.php 2016-12-27 16:48:58 UTC (rev
16115)
@@ -842,3 +842,21 @@
return $GLOBALS['setup_info']['rental']['currentver'];
}
}
+
+ $test[] = '0.1.0.33';
+ function rental_upgrade0_1_0_33()
+ {
+ $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+ $GLOBALS['phpgw_setup']->oProc->AddColumn('rental_contract',
'notify_on_expire', array(
+ 'type' => 'int', 'precision' => 2, 'nullable' => true,
'default' => 0));
+
+ $GLOBALS['phpgw_setup']->oProc->AddColumn('rental_contract',
'notified_time', array(
+ 'type' => 'int', 'precision' => 8, 'nullable' => true));
+
+ if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+ {
+ $GLOBALS['setup_info']['rental']['currentver'] =
'0.1.0.34';
+ return $GLOBALS['setup_info']['rental']['currentver'];
+ }
+ }
Modified: trunk/rental/templates/base/config.tpl
===================================================================
--- trunk/rental/templates/base/config.tpl 2016-12-27 11:06:10 UTC (rev
16114)
+++ trunk/rental/templates/base/config.tpl 2016-12-27 16:48:58 UTC (rev
16115)
@@ -1,198 +1,212 @@
<!-- BEGIN header -->
<form method="POST" action="{action_url}">
- <table class="pure-table pure-table-bordered">
- <tr class="th">
- <td colspan="2"><font
color="{th_text}"> <b>{title}</b></font></td>
- </tr>
+ <table class="pure-table pure-table-bordered pure-table-striped">
+ <thead>
+ <tr>
+ <th colspan="2">{title}</th>
+ </tr>
+ </thead>
<!-- END header -->
<!-- BEGIN body -->
- <tr class="row_on">
- <td colspan="2"> </td>
- </tr>
- <tr class="row_off">
- <td colspan="2"> <b>{lang_rental}</b></td>
- </tr>
- <tr class="row_on">
- <td>{lang_area_suffix}:</td>
- <td><input name="newsettings[area_suffix]"
value="{value_area_suffix}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_currency_prefix}:</td>
- <td><input name="newsettings[currency_prefix]"
value="{value_currency_prefix}"></td>
- </tr>
- <tr class="row_on">
- <td>{lang_currency_suffix}:</td>
- <td><input name="newsettings[currency_suffix]"
value="{value_currency_suffix}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_serial_start}:</td>
- <td><input name="newsettings[serial_start]"
value="{value_serial_start}"></td>
- </tr>
- <tr class="row_on">
- <td>{lang_serial_stop}:</td>
- <td><input name="newsettings[serial_stop]"
value="{value_serial_stop}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_billing_time_limit}:</td>
- <td><input name="newsettings[billing_time_limit]"
value="{value_billing_time_limit}"></td>
- </tr>
- <tr class="row_on">
- <td>{lang_from_email_setting}:</td>
- <td><input name="newsettings[from_email_setting]"
value="{value_from_email_setting}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_http_address_for_external_users}:</td>
- <td><input
name="newsettings[http_address_for_external_users]"
value="{value_http_address_for_external_users}"></td>
- </tr>
- <tr class="row_on">
- <td>{lang_create_user_based_on_email_group}:</td>
- <td>
- <select
name="newsettings[create_user_based_on_email_group]">
- {hook_create_user_based_on_email_group}
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_entity_config_move_in}:</td>
- <td>
- {hook_entity_config_move_in}
- </td>
- </tr>
+ <tbody>
+ <tr>
+ <td colspan="2"> </td>
+ </tr>
+ <tr>
+ <td colspan="2"> <b>{lang_rental}</b></td>
+ </tr>
+ <tr>
+ <td>{lang_area_suffix}:</td>
+ <td><input name="newsettings[area_suffix]"
value="{value_area_suffix}"></td>
+ </tr>
+ <tr>
+ <td>{lang_currency_prefix}:</td>
+ <td><input name="newsettings[currency_prefix]"
value="{value_currency_prefix}"></td>
+ </tr>
+ <tr>
+ <td>{lang_currency_suffix}:</td>
+ <td><input name="newsettings[currency_suffix]"
value="{value_currency_suffix}"></td>
+ </tr>
+ <tr>
+ <td>{lang_serial_start}:</td>
+ <td><input name="newsettings[serial_start]"
value="{value_serial_start}"></td>
+ </tr>
+ <tr>
+ <td>{lang_serial_stop}:</td>
+ <td><input name="newsettings[serial_stop]"
value="{value_serial_stop}"></td>
+ </tr>
+ <tr>
+ <td>{lang_billing_time_limit}:</td>
+ <td><input
name="newsettings[billing_time_limit]" value="{value_billing_time_limit}"></td>
+ </tr>
+ <tr>
+ <td>{lang_from_email_setting}:</td>
+ <td><input
name="newsettings[from_email_setting]" value="{value_from_email_setting}"></td>
+ </tr>
+ <tr>
+ <td>{lang_http_address_for_external_users}:</td>
+ <td><input
name="newsettings[http_address_for_external_users]"
value="{value_http_address_for_external_users}"></td>
+ </tr>
+ <tr>
+
<td>{lang_create_user_based_on_email_group}:</td>
+ <td>
+ <select
name="newsettings[create_user_based_on_email_group]">
+
{hook_create_user_based_on_email_group}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_entity_config_move_in}:</td>
+ <td>
+ {hook_entity_config_move_in}
+ </td>
+ </tr>
- <tr class="row_on">
- <td>{lang_category_config_move_in}:</td>
- <td>
- <select
name="newsettings[category_config_move_in]">
- {hook_category_config_move_in}
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_entity_config_move_out}:</td>
- <td>
- {hook_entity_config_move_out}
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_category_config_move_out}:</td>
- <td>
- <select
name="newsettings[category_config_move_out]">
- {hook_category_config_move_out}
- </select>
- </td>
- </tr>
- <tr class="row_on">
- <td>{lang_contract_future_info}:</td>
- <td>
- <select
name="newsettings[contract_future_info]">
- <option value=""
{selected_contract_future_info_}>NO</option>
- <option value="1"
{selected_contract_future_info_1}>YES</option>
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_contract_furnished_status}:</td>
- <td>
- <select
name="newsettings[contract_furnished_status]">
- <option value=""
{selected_contract_furnished_status_}>NO</option>
- <option value="1"
{selected_contract_furnished_status_1}>YES</option>
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_use_fellesdata}:</td>
- <td>
- <select name="newsettings[use_fellesdata]">
- <option value=""
{selected_use_fellesdata_}>NO</option>
- <option value="1"
{selected_use_fellesdata_1}>YES</option>
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td colspan="2"> <b>{lang_external_db}</b></td>
- </tr>
- <tr class="row_off">
- <td>{lang_Debug}:</td>
- <td>
- <select name="newsettings[external_db_debug]">
- <option value=""
{selected_external_db_debug_}>NO</option>
- <option value="1"
{selected_external_db_debug_1}>YES</option>
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_login_external_db_host}:</td>
- <td><input name="newsettings[external_db_host]"
value="{value_external_db_host}"></td>
- </tr>
- <tr class="row_on">
- <td>{lang_login_external_db_port}:</td>
- <td><input name="newsettings[external_db_port]"
value="{value_external_db_port}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_type}:</td>
- <td>
- <select name="newsettings[external_db_type]">
- <option value=""
{selected_external_db_type_}>None</option>
- <option value="mssql"
{selected_external_db_type_mssql}>mssql</option>
- <option value="mysql"
{selected_external_db_type_mysql}>mysql</option>
- <option value="oracle"
{selected_external_db_type_oracle}>oracle</option>
- <option value="postgres"
{selected_external_db_type_postgres}>postgres</option>
- </select>
- </td>
- </tr>
- <tr class="row_off">
- <td>{lang_login_external_db_name}:</td>
- <td><input name="newsettings[external_db_name]"
value="{value_external_db_name}"></td>
- </tr>
- <tr class="row_off">
- <td>{lang_login_external_db_user}:</td>
- <td><input name="newsettings[external_db_user]"
value="{value_external_db_user}"></td>
- </tr>
+ <tr>
+ <td>{lang_category_config_move_in}:</td>
+ <td>
+ <select
name="newsettings[category_config_move_in]">
+ {hook_category_config_move_in}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_entity_config_move_out}:</td>
+ <td>
+ {hook_entity_config_move_out}
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_category_config_move_out}:</td>
+ <td>
+ <select
name="newsettings[category_config_move_out]">
+ {hook_category_config_move_out}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_contract_future_info}:</td>
+ <td>
+ <select
name="newsettings[contract_future_info]">
+ <option value=""
{selected_contract_future_info_}>NO</option>
+ <option value="1"
{selected_contract_future_info_1}>YES</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_contract_furnished_status}:</td>
+ <td>
+ <select
name="newsettings[contract_furnished_status]">
+ <option value=""
{selected_contract_furnished_status_}>NO</option>
+ <option value="1"
{selected_contract_furnished_status_1}>YES</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_use_fellesdata}:</td>
+ <td>
+ <select
name="newsettings[use_fellesdata]">
+ <option value=""
{selected_use_fellesdata_}>NO</option>
+ <option value="1"
{selected_use_fellesdata_1}>YES</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td
colspan="2"> <b>{lang_external_db}</b></td>
+ </tr>
+ <tr>
+ <td>{lang_Debug}:</td>
+ <td>
+ <select
name="newsettings[external_db_debug]">
+ <option value=""
{selected_external_db_debug_}>NO</option>
+ <option value="1"
{selected_external_db_debug_1}>YES</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_login_external_db_host}:</td>
+ <td><input name="newsettings[external_db_host]"
value="{value_external_db_host}"></td>
+ </tr>
+ <tr>
+ <td>{lang_login_external_db_port}:</td>
+ <td><input name="newsettings[external_db_port]"
value="{value_external_db_port}"></td>
+ </tr>
+ <tr>
+ <td>{lang_type}:</td>
+ <td>
+ <select
name="newsettings[external_db_type]">
+ <option value=""
{selected_external_db_type_}>None</option>
+ <option value="mssql"
{selected_external_db_type_mssql}>mssql</option>
+ <option value="mysql"
{selected_external_db_type_mysql}>mysql</option>
+ <option value="oracle"
{selected_external_db_type_oracle}>oracle</option>
+ <option value="postgres"
{selected_external_db_type_postgres}>postgres</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_login_external_db_name}:</td>
+ <td><input name="newsettings[external_db_name]"
value="{value_external_db_name}"></td>
+ </tr>
+ <tr>
+ <td>{lang_login_external_db_user}:</td>
+ <td><input name="newsettings[external_db_user]"
value="{value_external_db_user}"></td>
+ </tr>
- <tr class="row_off">
- <td>{lang_login_external_db_password}:</td>
- <td><input type ="password"
name="newsettings[external_db_password]"
value="{value_external_db_password}"></td>
- </tr>
+ <tr>
+ <td>{lang_login_external_db_password}:</td>
+ <td><input type ="password"
name="newsettings[external_db_password]"
value="{value_external_db_password}"></td>
+ </tr>
- <tr class="row_on">
- <td>{lang_path_to_wkhtmltopdf}:</td>
- <td><input name="newsettings[path_to_wkhtmltopdf]"
value="{value_path_to_wkhtmltopdf}"></td>
- </tr>
- <tr class="row_off">
- <td valign = 'top'>{lang_contract_types}:</td>
- <td>
- <!--to be able to blank the setting - need an
empty value-->
- <input type = 'hidden'
name="newsettings[contract_types][]" value="">
- <table>
- {hook_contract_types}
- </table>
- </td>
- </tr>
- <tr class="row_on">
- <td valign = 'top'>{lang_default_billing_term}:</td>
- <td>
- <!--to be able to blank the setting - need an
empty value-->
- <!--input type = 'hidden'
name="newsettings[default_billing_term]" value=""-->
- <table>
- {hook_default_billing_term}
- </table>
- </td>
- </tr>
+ <tr>
+ <td>{lang_path_to_wkhtmltopdf}:</td>
+ <td><input
name="newsettings[path_to_wkhtmltopdf]"
value="{value_path_to_wkhtmltopdf}"></td>
+ </tr>
+ <tr>
+ <td valign = 'top'>{lang_contract_types}:</td>
+ <td>
+ <!--to be able to blank the setting -
need an empty value-->
+ <input type = 'hidden'
name="newsettings[contract_types][]" value="">
+ <table>
+ {hook_contract_types}
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td valign =
'top'>{lang_default_billing_term}:</td>
+ <td>
+ <!--to be able to blank the setting -
need an empty value-->
+ <!--input type = 'hidden'
name="newsettings[default_billing_term]" value=""-->
+ <table>
+ {hook_default_billing_term}
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{lang_notify_on_expire_email}:</td>
+ <td><input
name="newsettings[notify_on_expire_email]"
value="{value_notify_on_expire_email}"></td>
+ </tr>
+ <tr>
+ <td>{lang_notify_reminder_days}:</td>
+ <td><input
name="newsettings[notify_reminder_days]"
value="{value_notify_reminder_days}"></td>
+ </tr>
+ </tbody>
<!-- END body -->
<!-- BEGIN footer -->
- <tr class="th">
- <td colspan="2">
-
- </td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="submit" name="submit"
value="{lang_submit}">
- <input type="submit" name="cancel"
value="{lang_cancel}">
- </td>
- </tr>
+ <tfoot>
+ <tr>
+ <td colspan="2">
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" align="center">
+ <input type="submit" name="submit"
value="{lang_submit}">
+ <input type="submit" name="cancel"
value="{lang_cancel}">
+ </td>
+ </tr>
+ </tfoot>
</table>
</form>
<!-- END footer -->
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [16115] more on rental,
sigurdne <=