summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
Diffstat (limited to 'program/js')
-rw-r--r--program/js/app.js26
1 files changed, 16 insertions, 10 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 6a35c596a..125b6450c 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -164,7 +164,7 @@ function rcube_webmail()
}
// enable general commands
- this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', true);
+ this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', 'undo', true);
if (this.env.permaurl)
this.enable_command('permaurl', true);
@@ -411,7 +411,7 @@ function rcube_webmail()
// show message
if (this.pending_message)
- this.display_message(this.pending_message[0], this.pending_message[1]);
+ this.display_message(this.pending_message[0], this.pending_message[1], this.pending_message[2]);
// map implicit containers
if (this.gui_objects.folderlist)
@@ -1046,6 +1046,10 @@ function rcube_webmail()
this.goto_url('settings/' + command);
break;
+ case 'undo':
+ this.http_request('undo', '', this.display_message('', 'loading'));
+ break;
+
// unified command call (command name == function name)
default:
var func = command.replace(/-/g, '_');
@@ -1296,7 +1300,7 @@ function rcube_webmail()
var toffset = -moffset-boffset;
var li, div, pos, mouse, check, oldclass,
layerclass = 'draglayernormal';
-
+
if (this.contact_list && this.contact_list.draglayer)
oldclass = this.contact_list.draglayer.attr('class');
@@ -4980,7 +4984,7 @@ function rcube_webmail()
if (elem._placeholder && (!$elem.val() || $elem.val() == elem._placeholder))
$elem.addClass('placeholder').attr('spellcheck', false).val(elem._placeholder);
};
-
+
// write to the document/window title
this.set_pagetitle = function(title)
{
@@ -4989,27 +4993,29 @@ function rcube_webmail()
};
// display a system message, list of types in common.css (below #message definition)
- this.display_message = function(msg, type)
+ this.display_message = function(msg, type, timeout)
{
// pass command to parent window
if (this.is_framed())
- return parent.rcmail.display_message(msg, type);
+ return parent.rcmail.display_message(msg, type, timeout);
if (!this.gui_objects.message) {
// save message in order to display after page loaded
if (type != 'loading')
- this.pending_message = new Array(msg, type);
+ this.pending_message = new Array(msg, type, timeout);
return false;
}
type = type ? type : 'notice';
var ref = this,
- key = msg,
+ key = String(msg).replace(this.identifier_expr, '_'),
date = new Date(),
- id = type + date.getTime(),
+ id = type + date.getTime();
+
+ if (!timeout)
timeout = this.message_time * (type == 'error' || type == 'warning' ? 2 : 1);
-
+
if (type == 'loading') {
key = 'loading';
timeout = this.env.request_timeout * 1000;