Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Register
Sign in
Toggle navigation
Menu
Open sidebar
Guilherme Filippo
ISPConfig 3
Commits
75ae20a2
Commit
75ae20a2
authored
Dec 17, 2009
by
wyrie
Browse files
Implemented: FS#1003 - Autoresponder: Start and end date (Interface)
parent
26c52828
Changes
5
Hide whitespace changes
Inline
Side-by-side
interface/lib/classes/tform.inc.php
View file @
75ae20a2
...
...
@@ -428,6 +428,20 @@ class tform {
}
$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 @@ class tform {
}
$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'
]);
...
...
@@ -585,6 +606,18 @@ class tform {
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
;
}
// The use of the field value is deprecated, use validators instead
...
...
@@ -1256,7 +1289,109 @@ class tform {
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
;
}
}
?>
\ No newline at end of file
interface/web/js/uni-form/uni-form.jquery.js
View file @
75ae20a2
...
...
@@ -38,4 +38,68 @@ jQuery.fn.uniform = function(settings) {
// Auto set on page load...
$
(
document
).
ready
(
function
()
{
jQuery
(
'
form.uniForm
'
).
uniform
();
});
\ No newline at end of file
});
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
);
}
});
}
\ No newline at end of file
interface/web/mail/form/mail_user.tform.php
View file @
75ae20a2
...
...
@@ -188,6 +188,24 @@ $form["tabs"]['autoresponder'] = array (
'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
View file @
75ae20a2
...
...
@@ -107,6 +107,13 @@ class page_action extends tform_actions {
// 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 @@ class page_action extends tform_actions {
}
//* 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
View file @
75ae20a2
...
...
@@ -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>
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment