From 723f4e63aa2e60e0ef72cdfb506299512a9c3405 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 26 Mar 2013 14:16:03 -0400
Subject: [PATCH] Refresh current folder in opener window after draft save or message sent (#1488997)

---
 CHANGELOG                       |    1 +
 program/steps/mail/sendmail.inc |    2 +-
 program/js/app.js               |   20 ++++++++++++++++----
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 9d7c0d7..c103263 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Refresh current folder in opener window after draft save or message sent (#1488997)
 - Fix saving draft just after entering compose window (#1489012)
 - Call resize handler in intervals to prevent lags and double onresize calls in Chrome (#1489005)
 - Fix javascript error in IE9 when loading form with placeholders into an iframe (#1489008)
diff --git a/program/js/app.js b/program/js/app.js
index b2a6a04..758e4b8 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3302,6 +3302,14 @@
 
   this.set_draft_id = function(id)
   {
+    var rc;
+
+    if (!this.env.draft_id && id && (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');
+    }
+
     this.env.draft_id = id;
     $("input[name='_draft_saveid']").val(id);
   };
@@ -3678,15 +3686,19 @@
     this.env.search_id = null;
   };
 
-  this.sent_successfully = function(type, msg)
+  this.sent_successfully = function(type, msg, target)
   {
     this.display_message(msg, type);
 
     if (this.env.extwin) {
-      var opener_rc = this.opener();
+      var rc = this.opener();
       this.lock_form(this.gui_objects.messageform);
-      if (opener_rc)
-        opener_rc.display_message(msg, type);
+      if (rc) {
+        rc.display_message(msg, type);
+        // refresh the folder where sent message was saved
+        if (target && rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == target)
+          rc.command('checkmail');
+      }
       setTimeout(function(){ window.close() }, 1000);
     }
     else {
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index eb0ba89..eca0b50 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -820,6 +820,6 @@
   if ($store_folder && !$saved)
     $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent'));
   else
-    $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'));
+    $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $store_target);
   $OUTPUT->send('iframe');
 }

--
Gitblit v1.9.1