diff options
-rw-r--r-- | program/js/app.js | 15 | ||||
-rw-r--r-- | program/steps/mail/compose.inc | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/program/js/app.js b/program/js/app.js index 4090cbe4c..257c10980 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -3131,13 +3131,20 @@ function rcube_webmail() for (var key, i = 0; i < index.length; i++) { key = index[i], formdata = this.local_storage_get_item('compose.' + key, null, true); + if (!formdata) { + continue; + } // restore saved copy of current compose_id - if (formdata && formdata.changed && key == this.env.compose_id) { + if (formdata.changed && key == this.env.compose_id) { this.restore_compose_form(key, html_mode); break; } + // skip records from 'other' drafts + if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) { + continue; + } // show dialog asking to restore the message - if (formdata && formdata.changed && formdata.session != this.env.session_id) { + if (formdata.changed && formdata.session != this.env.session_id) { this.show_popup_dialog( this.get_label('restoresavedcomposedata') .replace('$date', new Date(formdata.changed).toLocaleString()) @@ -3671,6 +3678,10 @@ function rcube_webmail() tinyMCE.triggerSave(); } + if (this.env.draft_id) { + formdata.draft_id = this.env.draft_id; + } + $('input, select, textarea', this.gui_objects.messageform).each(function(i, elem){ switch (elem.tagName.toLowerCase()) { case 'input': diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index a791cf8b7..8d275f930 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -240,6 +240,9 @@ if (!empty($msg_uid) && empty($COMPOSE['as_attachment'])) $COMPOSE['reply_msgid'] = '<' . $in_reply_to . '>'; $COMPOSE['references'] = $MESSAGE->headers->references; + + // use message-ID as draft_id, same as in sendmail.inc + $OUTPUT->set_env('draft_id', trim($MESSAGE->headers->get('message-id'), '<>')); } } else { |