interface/lib/classes/tform.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/web/js/uni-form/uni-form.jquery.js | ●●●●● patch | view | raw | blame | history | |
interface/web/mail/form/mail_user.tform.php | ●●●●● patch | view | raw | blame | history | |
interface/web/mail/mail_user_edit.php | ●●●●● patch | view | raw | blame | history | |
interface/web/mail/templates/mail_user_autoresponder_edit.htm | ●●●●● patch | view | raw | blame | history |
interface/lib/classes/tform.inc.php
@@ -428,6 +428,20 @@ } $new_record[$key] = $out; break; case 'DATETIME': if (strtotime($val) !== false) { $dt_value = $val; } elseif ( isset($field['default']) && (strtotime($field['default']) !== false) ) { $dt_value = $field['default']; } else { $dt_value = 0; } $display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false; $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds); break; default: $new_record[$key] = htmlspecialchars($record[$key]); @@ -520,6 +534,13 @@ } $new_record[$key] = $out; break; case 'DATETIME': $dt_value = (isset($field['default'])) ? $field['default'] : 0; $display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false; $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds); break; default: $new_record[$key] = htmlspecialchars($field['default']); @@ -584,6 +605,18 @@ break; case 'CURRENCY': $new_record[$key] = str_replace(",",".",$record[$key]); break; case 'DATETIME': if (is_array($record[$key])) { $filtered_values = array_map(create_function('$item','return (int)$item;'), $record[$key]); extract($filtered_values, EXTR_PREFIX_ALL, '_dt'); if ($_dt_day != 0 && $_dt_month != 0 && $_dt_year != 0) { $new_record[$key] = date( 'Y-m-d H:i:s', mktime($_dt_hour, $_dt_minute, $_dt_second, $_dt_month, $_dt_day, $_dt_year) ); } } break; } @@ -1256,7 +1289,109 @@ return $diffrec; } /** * Generate HTML for DATETIME fields. * * @access private * @param string $form_element Name of the form element. * @param string $default_value Selected value for fields. * @param bool $display_secons Include seconds selection. * @return string HTML */ function _getDateTimeHTML($form_element, $default_value, $display_seconds=false) { $_datetime = strtotime($default_value); $_showdate = ($_datetime === false) ? false : true; $dselect = array('day','month','year','hour','minute'); if ($display_seconds === true) { $dselect[] = 'second'; } $out = ''; foreach ($dselect as $dt_element) { $dt_options = array(); $dt_space = 1; switch ($dt_element) { case 'day': for ($i = 1; $i <= 31; $i++) { $dt_options[] = array('name' => sprintf('%02d', $i), 'value' => sprintf('%d', $i)); } $selected_value = date('d', $_datetime); break; case 'month': for ($i = 1; $i <= 12; $i++) { $dt_options[] = array('name' => strftime('%b', mktime(0, 0, 0, $i, 1, 2000)), 'value' => strftime('%m', mktime(0, 0, 0, $i, 1, 2000))); } $selected_value = date('n', $_datetime); break; case 'year': $start_year = strftime("%Y"); $years = range((int)$start_year, (int)($start_year+3)); foreach ($years as $year) { $dt_options[] = array('name' => $year, 'value' => $year); } $selected_value = date('Y', $_datetime); $dt_space = 2; break; case 'hour': foreach(range(0, 23) as $hour) { $dt_options[] = array('name' => sprintf('%02d', $hour), 'value' => sprintf('%d', $hour)); } $selected_value = date('G', $_datetime); break; case 'minute': foreach(range(0, 59) as $minute) { if (($minute % 5) == 0) { $dt_options[] = array('name' => sprintf('%02d', $minute), 'value' => sprintf('%d', $minute)); } } $selected_value = (int)floor(date('i', $_datetime)); break; case 'second': foreach(range(0, 59) as $second) { $dt_options[] = array('name' => sprintf('%02d', $second), 'value' => sprintf('%d', $second)); } $selected_value = (int)floor(date('s', $_datetime)); break; } $out .= "<select name=\"".$form_element."[$dt_element]\" id=\"".$form_element."_$dt_element\" class=\"selectInput\" style=\"width: auto; float: none;\">"; if (!$_showdate) { $out .= "<option value=\"-\" selected=\"selected\">--</option>" . PHP_EOL; } else { $out .= "<option value=\"-\">--</option>" . PHP_EOL; } foreach ($dt_options as $dt_opt) { if ( $_showdate && ($selected_value == $dt_opt['value']) ) { $out .= "<option value=\"{$dt_opt['value']}\" selected=\"selected\">{$dt_opt['name']}</option>" . PHP_EOL; } else { $out .= "<option value=\"{$dt_opt['value']}\">{$dt_opt['name']}</option>" . PHP_EOL; } } $out .= '</select>' . str_repeat(' ', $dt_space); } return $out; } } ?> interface/web/js/uni-form/uni-form.jquery.js
@@ -38,4 +38,68 @@ // Auto set on page load... $(document).ready(function() { jQuery('form.uniForm').uniform(); }); }); function AR_ResetDates() { if ($("#autoresponder:checked").val() == null) { $("form.uniForm select").each( function(){ $(this).val( $("#" + $(this).attr("id") + " option:first").val() ); } ); } } function AR_SetNow() { DateTime_SetValues('autoresponder_start_date'); now = new Date(); end_date = new Date(now.getFullYear(), now.getMonth(), now.getDate()+2, 0, 0); DateTime_SetValues('autoresponder_end_date', end_date); } function DateTime_SetValues(datetime_id, date_obj) { var selects = ['day', 'month', 'year', 'hour', 'minute', 'second']; if ( (typeof(date_obj) == 'object') && (typeof(date_obj.getDate()) == 'number') ) { var now = date_obj; } else { var now = new Date(); } jQuery.each(selects, function() { var unit_name = this.toString(); var unit_value = ''; switch(unit_name) { case 'day': unit_value = now.getDate(); break; case 'month': unit_value = now.getMonth() + 1; break; case 'year': unit_value = now.getFullYear(); break; case 'hour': unit_value = now.getHours(); break; case 'minute': unit_value = Math.round(parseInt(now.getMinutes())/5)*5; break; case 'second': unit_value = now.getSeconds(); break; } unit_obj = $("#"+ datetime_id + "_" + unit_name); if (unit_obj.val() !== null) { unit_obj.val(unit_value); } }); } interface/web/mail/form/mail_user.tform.php
@@ -188,6 +188,24 @@ 'default' => 'n', 'value' => array(1 => 'y',0 => 'n') ), 'autoresponder_start_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', 'validators'=> array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_autoresponder', 'function' => 'start_date', 'errmsg'=> 'autoresponder_start_date_isfuture'), ), ), 'autoresponder_end_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', 'validators'=> array ( 0 => array ( 'type' => 'CUSTOM', 'class' => 'validate_autoresponder', 'function' => 'end_date', 'errmsg'=> 'autoresponder_end_date_isgreater'), ), ), ################################## # ENDE Datatable fields ################################## interface/web/mail/mail_user_edit.php
@@ -107,6 +107,13 @@ // Convert quota from Bytes to MB if($this->dataRecord["quota"] != -1) $app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024 / 1024); // Is autoresponder set? if ($this->dataRecord['autoresponder'] == 'y') { $app->tpl->setVar("ar_active", 'checked="checked"'); } else { $app->tpl->setVar("ar_active", ''); } parent::onShowEnd(); } @@ -188,6 +195,12 @@ } //* if autoresponder checkbox not selected, do not save dates if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) { $this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item','return 0;'), $this->dataRecord['autoresponder_start_date']); $this->dataRecord['autoresponder_end_date'] = array_map(create_function('$item','return 0;'), $this->dataRecord['autoresponder_end_date']); } parent::onSubmit(); } interface/web/mail/templates/mail_user_autoresponder_edit.htm
@@ -12,9 +12,18 @@ <div class="ctrlHolder"> <p class="label">{tmpl_var name='autoresponder_txt'}</p> <div class="multiField"> {tmpl_var name='autoresponder'} <div class="ctrlHolder" style="margin-bottom: 5px;"> <input type="checkbox" value="y" id="autoresponder" name="autoresponder" onclick="AR_ResetDates();" {tmpl_var name='ar_active'} /> {tmpl_var format='strtoupper' name='page_and_txt'}<br /> </div> <p style="margin-bottom: 3px;"> <label for="autoresponder_start_date[day]" style="width: 55px;">{tmpl_var name='autoresponder_start_date_txt'}</label> {tmpl_var name='autoresponder_start_date'} <a href="javascript:AR_SetNow();">now</a></p> <label for="password" style="width: 55px;">{tmpl_var name='autoresponder_end_date_txt'}</label> {tmpl_var name='autoresponder_end_date'} </div> </div> </div> </fieldset> <input type="hidden" name="id" value="{tmpl_var name='id'}"> @@ -25,4 +34,4 @@ </div> </div> </div> </div>