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 ++++++++++++++-------- program/js/editor.js | 10 +++++++--- 2 files changed, 21 insertions(+), 11 deletions(-) (limited to 'program/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 diff --git a/program/js/editor.js b/program/js/editor.js index 906faece7..63186fb02 100644 --- a/program/js/editor.js +++ b/program/js/editor.js @@ -115,13 +115,17 @@ function rcmail_toggle_editor(select, textAreaId, flagElement) if (flagElement && (flag = rcube_find_object(flagElement))) flag.value = '1'; } - else { - if (!res && select.tagName == 'SELECT') - select.value = 'html'; + else if (res) { if (flagElement && (flag = rcube_find_object(flagElement))) flag.value = '0'; if (rcmail.env.composebody) rcube_find_object(rcmail.env.composebody).focus(); } + else { // !res + if (select.tagName == 'SELECT') + select.value = 'html'; + else if (select.tagName == 'INPUT') + select.checked = true; + } } -- cgit v1.2.3