summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/rcmail.php8
-rw-r--r--program/js/app.js2
-rw-r--r--program/localization/en_US/labels.inc2
-rw-r--r--program/localization/pl_PL/labels.inc2
-rw-r--r--program/steps/settings/func.inc14
-rw-r--r--program/steps/settings/save_prefs.inc8
6 files changed, 35 insertions, 1 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 53b4765b9..7eade3223 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -289,6 +289,14 @@ class rcmail
foreach (array('flag_for_deletion','read_when_deleted') as $js_config_var) {
$this->output->set_env($js_config_var, $this->config->get($js_config_var));
}
+
+ // set keep-alive/check-recent interval
+ if ($keep_alive = $this->config->get('keep_alive')) {
+ // be sure that it's less than session lifetime
+ if ($session_lifetime = $this->config->get('session_lifetime'))
+ $keep_alive = min($keep_alive, $session_lifetime * 60 - 30);
+ $this->output->set_env('keep_alive', max(60, $keep_alive));
+ }
if ($framed) {
$this->comm_path .= '&_framed=1';
diff --git a/program/js/app.js b/program/js/app.js
index 861c3d7cf..84e5aecde 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -366,7 +366,7 @@ function rcube_webmail()
if (this.env.keep_alive && !this.env.framed && this.task=='mail' && this.gui_objects.mailboxlist)
this._int = setInterval(function(){ ref.check_for_recent(); }, this.env.keep_alive * 1000);
else if (this.env.keep_alive && !this.env.framed && this.task!='login')
- this._int = setInterval(function(){ ref.send_keep_alive(); }, this.env.keep_alive * 1000);
+ this._int = setInterval(function(){ ref.send_keep_alive(); }, this.env.keep_alive * 1000);
}
this.init_message_row = function(row)
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 904450b44..3b17c0a00 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -282,6 +282,8 @@ $labels['skipdeleted'] = 'Do not show deleted messages';
$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Automatically save draft';
$labels['everynminutes'] = 'every $n minutes';
+$labels['keepaliveevery'] = 'every $n minute(s)';
+$labels['keepalive'] = 'Check for new messages on';
$labels['never'] = 'never';
$labels['messagesdisplaying'] = 'Displaying Messages';
$labels['messagescomposition'] = 'Composing Messages';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 106c63d0a..a32284d98 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -230,6 +230,8 @@ $labels['flagfordeletion'] = 'Oznacz wiadomość do usunięcia zamiast ją usuwa
$labels['skipdeleted'] = 'Ukryj wiadomości oznaczone do usunięcia';
$labels['autosavedraft'] = 'Automatyczny zapis tworzonej wiadomości';
$labels['everynminutes'] = 'co $n minut(y)';
+$labels['keepalive'] = 'Sprawdzaj czy nadeszły nowe wiadomości';
+$labels['keepaliveevery'] = 'co $n minut(y)';
$labels['never'] = 'nigdy';
$labels['focusonnewmessage'] = 'Informuj przeglądarkę o nowej wiadomości';
$labels['folder'] = 'Folder';
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 6f378fd0e..980108ad9 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -175,6 +175,20 @@ function rcmail_user_prefs_form($attrib)
$table->add(null, $select_mdn_requests->show($config['mdn_requests']));
}
+ if (!isset($no_override['keep_alive'])) {
+ $field_id = 'rcmfd_keep_alive';
+ $select_keep_alive = new html_select(array('name' => '_keep_alive', 'id' => $field_id));
+
+ foreach(array(1, 3, 5, 10, 15, 30, 60) as $min)
+ if((!$config['min_keep_alive'] || $config['min_keep_alive'] <= $min * 60)
+ && (!$config['session_lifetime'] || $config['session_lifetime'] > $min)) {
+ $select_keep_alive->add(rcube_label(array('name' => 'keepaliveevery', 'vars' => array('n' => $min))), $min);
+ }
+
+ $table->add('title', html::label($field_id, Q(rcube_label('keepalive'))));
+ $table->add(null, $select_keep_alive->show($config['keep_alive']/60));
+ }
+
$out .= html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('mailboxview'))) . $table->show($attrib));
$table = new html_table(array('cols' => 2));
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 3f6328d0d..debd345e3 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -37,6 +37,7 @@ $a_user_prefs = array(
'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE,
'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE,
'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0,
+ 'keep_alive' => isset($_POST['_keep_alive']) ? intval($_POST['_keep_alive'])*60 : $CONFIG['keep_alive'],
'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0,
'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0,
'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'],
@@ -78,6 +79,13 @@ if ($a_user_prefs['pagesize'] < 1)
if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize']))
$a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize'];
+// force keep_alive
+if (isset($a_user_prefs['keep_alive'])) {
+ $a_user_prefs['keep_alive'] = max(60, $CONFIG['min_keep_alive'], $a_user_prefs['keep_alive']);
+ if (!empty($CONFIG['session_lifetime']))
+ $a_user_prefs['keep_alive'] = min($CONFIG['session_lifetime']*60, $a_user_prefs['keep_alive']);
+}
+
if ($USER->save_prefs($a_user_prefs))
$OUTPUT->show_message('successfullysaved', 'confirmation');