From 464a0fba9d8376962fa216b4fd9e023a3182f7fa Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Tue, 16 Oct 2012 17:57:05 +0200 Subject: [PATCH] Display connection errors in UI. Stack error messages in popup (Larry skin) --- program/steps/mail/func.inc | 3 +++ skins/larry/ui.js | 17 ++++++++++++----- 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 = $('
').addClass('popupdialog'); + me.messagedialog = $('
').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.message + '

'; + + 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)); } }