From c50eee4827da18cd4517decfe521e8a32638069b Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 05 Dec 2013 07:36:02 -0500
Subject: [PATCH] Improved error messages - display errors only in dialogs (hide original message element), - fix error when closing dialog on timeout after dialog was closed manually, - center dialog vertically on the screen, - use fadeOut effect on close.

---
 skins/larry/ui.js |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index a3c64b4..d203acf 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -432,6 +432,9 @@
 
     // show a popup dialog on errors
     if (p.type == 'error' && rcmail.env.task != 'login') {
+      // hide original message object, we don't want both
+      rcmail.hide_message(p.object);
+
       if (me.message_timer) {
         window.clearTimeout(me.message_timer);
       }
@@ -440,8 +443,10 @@
       }
 
       var msg = p.message,
-        pos = $(p.object).offset();
-      pos.top -= (rcmail.env.task == 'login' ? 20 : 160);
+        dialog_close = function() {
+          // check if dialog is still displayed, to prevent from js error
+          me.messagedialog.is(':visible') && me.messagedialog.dialog('destroy').hide();
+        };
 
       if (me.messagedialog.is(':visible'))
         msg = me.messagedialog.html() + '<p>' + p.message + '</p>';
@@ -452,16 +457,14 @@
           closeOnEscape: true,
           dialogClass: 'popupmessage ' + p.type,
           title: env.errortitle,
-          close: function() {
-            me.messagedialog.dialog('destroy').hide();
-          },
-          position: ['center', pos.top],
-          hide: { effect:'drop', direction:'right' },
+          close: dialog_close,
+          position: ['center', 'center'],
+          hide: {effect: 'fadeOut'},
           width: 420,
           minHeight: 90
         }).show();
 
-      me.message_timer = window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(3000, p.timeout / 2));
+      me.message_timer = window.setTimeout(dialog_close, p.timeout);
     }
   }
 

--
Gitblit v1.9.1