summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2012-10-16 17:57:05 +0200
committerThomas Bruederli <thomas@roundcube.net>2012-10-16 17:57:05 +0200
commit464a0fba9d8376962fa216b4fd9e023a3182f7fa (patch)
tree987ba2ac3009dabeafc9835261144c498cbc48b0
parent699cb1fda3594705918c987714e7277572afb8b0 (diff)
Display connection errors in UI. Stack error messages in popup (Larry skin)
-rw-r--r--program/steps/mail/func.inc3
-rw-r--r--skins/larry/ui.js17
2 files changed, 15 insertions, 5 deletions
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index e3866aa57..c21202588 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -68,6 +68,9 @@ if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
// set main env variables, labels and page title
if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
+ // connect to storage server and trigger error on failure
+ $RCMAIL->storage_connect();
+
$mbox_name = $RCMAIL->storage->get_folder();
if (empty($RCMAIL->action)) {
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index 9b5d8309c..42d5237ea 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -288,14 +288,21 @@ function rcube_mail_ui()
{
// show a popup dialog on errors
if (p.type == 'error' && rcmail.env.task != 'login') {
+ if (me.message_timer) {
+ window.clearTimeout(me.message_timer);
+ }
if (!me.messagedialog) {
- me.messagedialog = $('<div>').addClass('popupdialog');
+ me.messagedialog = $('<div>').addClass('popupdialog').hide();
}
- var pos = $(p.object).offset();
+ var msg = p.message,
+ pos = $(p.object).offset();
pos.top -= (rcmail.env.task == 'login' ? 20 : 160);
- me.messagedialog.dialog('close');
- me.messagedialog.html(p.message)
+
+ if (me.messagedialog.is(':visible'))
+ msg = me.messagedialog.html() + '<p>' + p.message + '</p>';
+
+ me.messagedialog.html(msg)
.dialog({
resizable: false,
closeOnEscape: true,
@@ -310,7 +317,7 @@ function rcube_mail_ui()
minHeight: 90
}).show();
- window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(2000, p.timeout / 2));
+ me.message_timer = window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(2000, p.timeout / 2));
}
}