Aleksander Machniak
2013-12-05 c50eee4827da18cd4517decfe521e8a32638069b
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.
1 files modified
19 ■■■■■ changed files
skins/larry/ui.js 19 ●●●●● patch | view | raw | blame | history
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);
    }
  }