diff --git a/program/js/app.js b/program/js/app.js index 7647c413c..19db8b6f4 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -559,14 +559,7 @@ function rcube_webmail() else if (this.gui_objects.responseslist) { this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:true}); this.responses_list - .addEventListener('select', function(list) { - var win, id = list.get_single_selection(); - ref.enable_command('delete', !!id && $.inArray(id, ref.env.readonly_responses) < 0); - if (id && (win = ref.get_frame_window(ref.env.contentframe))) { - ref.set_busy(true); - ref.location_href({ _action:'edit-response', _key:id, _framed:1 }, win); - } - }) + .addEventListener('select', function(o) { ref.response_select(o); }) .init() .focus(); } @@ -920,24 +913,15 @@ function rcube_webmail() case 'add': if (this.task == 'addressbook') this.load_contact(0, 'add'); - else if (this.task == 'settings' && this.env.action == 'responses') { - var frame; - if ((frame = this.get_frame_window(this.env.contentframe))) { - this.set_busy(true); - this.location_href({ _action:'add-response', _framed:1 }, frame); - } - } - else if (this.task == 'settings') { - this.identity_list.clear_selection(); + else if (this.task == 'settings' && this.env.action == 'responses') + this.load_response(0, 'add-response'); + else if (this.task == 'settings') this.load_identity(0, 'add-identity'); - } break; case 'edit': if (this.task == 'addressbook' && (cid = this.get_single_cid())) this.load_contact(cid, 'edit'); - else if (this.task == 'settings' && props) - this.load_identity(props, 'edit-identity'); else if (this.task == 'mail' && (uid = this.get_single_uid())) { url = { _mbox: this.get_message_mailbox(uid) }; url[this.env.mailbox == this.env.drafts_mailbox && props != 'new' ? '_draft_uid' : '_uid'] = uid; @@ -6682,25 +6666,46 @@ function rcube_webmail() // preferences section select and load options frame this.section_select = function(list) { - var win, id = list.get_single_selection(), target = window, - url = {_action: 'edit-prefs', _section: id}; + var win, id = list.get_single_selection(); + + if (id && (win = this.get_frame_window(this.env.contentframe))) { + this.location_href({_action: 'edit-prefs', _section: id, _framed: 1}, win, true); + } + }; + + this.response_select = function(list) + { + var id = list.get_single_selection(); + + this.enable_command('delete', !!id && $.inArray(id, this.env.readonly_responses) < 0); if (id) { - if (win = this.get_frame_window(this.env.contentframe)) { - url._framed = 1; - target = win; - } - this.location_href(url, target, true); + this.load_response(id, 'edit-response'); } + }; - return true; + // load response record + this.load_response = function(id, action) + { + var win; + + if (win = this.get_frame_window(this.env.contentframe)) { + if (id || action == 'add-response') { + if (!id) + this.responses_list.clear_selection(); + + this.location_href({_action: action, _key: id, _framed: 1}, win, true); + } + } }; this.identity_select = function(list) { - var id; - if (id = list.get_single_selection()) { - this.enable_command('delete', list.rowcount > 1 && this.env.identities_level < 2); + var id = list.get_single_selection(); + + this.enable_command('delete', !!id && list.rowcount > 1 && this.env.identities_level < 2); + + if (id) { this.load_identity(id, 'edit-identity'); } }; @@ -6708,22 +6713,16 @@ function rcube_webmail() // load identity record this.load_identity = function(id, action) { - if (action == 'edit-identity' && (!id || id == this.env.iid)) - return false; - - var win, target = window, - url = {_action: action, _iid: id}; + var win; if (win = this.get_frame_window(this.env.contentframe)) { - url._framed = 1; - target = win; - } + if (id || action == 'add-identity') { + if (!id) + this.identity_list.clear_selection(); - if (id || action == 'add-identity') { - this.location_href(url, target, true); + this.location_href({_action: action, _iid: id, _framed: 1}, win, true); + } } - - return true; }; this.delete_identity = function(id)