| | |
| | | url = {}; |
| | | |
| | | if (this.task == 'mail') { |
| | | url._mbox = this.env.mailbox; |
| | | url = {_mbox: this.env.mailbox, _search: this.env.search_request}; |
| | | if (props) |
| | | url._to = props; |
| | | // also send search request so we can go back to search result after message is sent |
| | | if (this.env.search_request) |
| | | url._search = this.env.search_request; |
| | | } |
| | | // modify url if we're in addressbook |
| | | else if (this.task == 'addressbook') { |
| | |
| | | case 'reply-list': |
| | | case 'reply': |
| | | if (uid = this.get_single_uid()) { |
| | | url = {_reply_uid: uid, _mbox: this.get_message_mailbox(uid)}; |
| | | url = {_reply_uid: uid, _mbox: this.get_message_mailbox(uid), _search: this.env.search_request}; |
| | | if (command == 'reply-all') |
| | | // do reply-list, when list is detected and popup menu wasn't used |
| | | url._all = (!props && this.env.reply_all_mode == 1 && this.commands['reply-list'] ? 'list' : 'all'); |
| | |
| | | // attach events |
| | | $.each(fn, function(i, f) { |
| | | row[i].onclick = function(e) { f(e); return rcube_event.cancel(e); }; |
| | | if (bw.touch) { |
| | | if (bw.touch && row[i].addEventListener) { |
| | | row[i].addEventListener('touchend', function(e) { |
| | | if (e.changedTouches.length == 1) { |
| | | f(e); |
| | |
| | | |
| | | this.set_draft_id = function(id) |
| | | { |
| | | var rc; |
| | | |
| | | if (id && id != this.env.draft_id) { |
| | | if (rc = this.opener()) { |
| | | // refresh the drafts folder in opener window |
| | | if (rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == this.env.drafts_mailbox) |
| | | rc.command('checkmail'); |
| | | } |
| | | var filter = {task: 'mail', action: ''}, |
| | | rc = this.opener(false, filter) || this.opener(true, filter); |
| | | |
| | | // refresh the drafts folder in the opener window |
| | | if (rc && rc.env.mailbox == this.env.drafts_mailbox) |
| | | rc.command('checkmail'); |
| | | |
| | | this.env.draft_id = id; |
| | | $("input[name='_draft_saveid']").val(id); |
| | |
| | | // on the list when dragging starts (and stops), this is slow, but |
| | | // I didn't find a method to check droptarget on over event |
| | | accept: function(node) { |
| | | if (!$(node).is('.mailbox')) |
| | | return false; |
| | | |
| | | var source_folder = ref.folder_id2name($(node).attr('id')), |
| | | dest_folder = ref.folder_id2name(this.id), |
| | | source = ref.env.subscriptionrows[source_folder], |
| | |
| | | |
| | | this.folder_id2name = function(id) |
| | | { |
| | | return ref.html_identifier_decode(id.replace(/^rcmli/, '')); |
| | | return id ? ref.html_identifier_decode(id.replace(/^rcmli/, '')) : null; |
| | | }; |
| | | |
| | | this.subscription_select = function(id) |
| | |
| | | }; |
| | | |
| | | // get window.opener.rcmail if available |
| | | this.opener = function() |
| | | this.opener = function(deep, filter) |
| | | { |
| | | var i, win = window.opener; |
| | | |
| | | // catch Error: Permission denied to access property rcmail |
| | | try { |
| | | if (window.opener && !opener.closed && opener.rcmail) |
| | | return opener.rcmail; |
| | | if (win && !win.closed) { |
| | | // try parent of the opener window, e.g. preview frame |
| | | if (deep && (!win.rcmail || win.rcmail.env.framed) && win.parent && win.parent.rcmail) |
| | | win = win.parent; |
| | | |
| | | if (win.rcmail && filter) |
| | | for (i in filter) |
| | | if (win.rcmail.env[i] != filter[i]) |
| | | return; |
| | | |
| | | return win.rcmail; |
| | | } |
| | | } |
| | | catch (e) {} |
| | | }; |