From 14d494fd993a8530e41f65d548dd91e4a86c91b9 Mon Sep 17 00:00:00 2001 From: alecpl Date: Wed, 28 Sep 2011 09:00:25 +0000 Subject: - Fix misleading display when chaning editor type (#1488104), fix handling of custom commands result --- program/js/app.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'program/js/app.js') diff --git a/program/js/app.js b/program/js/app.js index a2092563f..22599ebf0 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -439,6 +439,8 @@ function rcube_webmail() // execute a specific command on the web client this.command = function(command, props, obj) { + var ret; + if (obj && obj.blur) obj.blur(); @@ -462,25 +464,27 @@ function rcube_webmail() // process external commands if (typeof this.command_handlers[command] === 'function') { - var ret = this.command_handlers[command](props, obj); + ret = this.command_handlers[command](props, obj); return ret !== undefined ? ret : (obj ? false : true); } else if (typeof this.command_handlers[command] === 'string') { - var ret = window[this.command_handlers[command]](props, obj); + ret = window[this.command_handlers[command]](props, obj); return ret !== undefined ? ret : (obj ? false : true); } // trigger plugin hooks this.triggerEvent('actionbefore', {props:props, action:command}); - var ret = this.triggerEvent('before'+command, props); + ret = this.triggerEvent('before'+command, props); if (ret !== undefined) { - // abort if one the handlers returned false + // abort if one of the handlers returned false if (ret === false) return false; else props = ret; } + ret = undefined; + // process internal command switch (command) { @@ -1045,15 +1049,17 @@ function rcube_webmail() // unified command call (command name == function name) default: var func = command.replace(/-/g, '_'); - if (this[func] && typeof this[func] === 'function') - this[func](props); + if (this[func] && typeof this[func] === 'function') { + ret = this[func](props); + } break; } - this.triggerEvent('after'+command, props); + if (this.triggerEvent('after'+command, props) === false) + ret = false; this.triggerEvent('actionafter', {props:props, action:command}); - return obj ? false : true; + return ret === false ? false : obj ? false : true; }; // set command(s) enabled or disabled -- cgit v1.2.3