From d27a4f8f9e2f7c89534b7532c964b4fb7c364363 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Sun, 02 Mar 2014 13:26:09 -0500
Subject: [PATCH] Fix opening compose screen in new window after saving as draft (#1489643)

---
 program/js/app.js |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index dad4223..28a1b38 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -650,11 +650,16 @@
           var form = this.gui_objects.messageform,
             win = this.open_window('');
 
-          this.save_compose_form_local();
-          $("input[name='_action']", form).val('compose');
-          form.action = this.url('mail/compose', { _id: this.env.compose_id, _extwin: 1 });
-          form.target = win.name;
-          form.submit();
+          if (win) {
+            this.save_compose_form_local();
+            $("input[name='_action']", form).val('compose');
+            form.action = this.url('mail/compose', { _id: this.env.compose_id, _extwin: 1 });
+            form.target = win.name;
+            form.submit();
+          }
+          else {
+            // this.display_message(this.get_label('windowopenerror'), 'error');
+          }
         }
         else {
           this.open_window(this.env.permaurl, true);
@@ -3094,7 +3099,12 @@
 
     // close compose step in opener
     if (opener_rc && opener_rc.env.action == 'compose') {
-      setTimeout(function(){ opener.history.back(); }, 100);
+      setTimeout(function(){
+        if (opener.history.length > 1)
+          opener.history.back();
+        else
+          opener_rc.redirect(opener_rc.get_task_url('mail'));
+      }, 100);
       this.env.opened_extwin = true;
     }
 
@@ -3618,6 +3628,10 @@
       this.env.draft_id = id;
       $("input[name='_draft_saveid']").val(id);
 
+      // reset history of hidden iframe used for saving draft (#1489643)
+      if (window.frames['savetarget'] && window.frames['savetarget'].history) {
+        window.frames['savetarget'].history.back();
+      }
     }
 
     // always remove local copy upon saving as draft

--
Gitblit v1.9.1