From faf8766fd2a34ad1eaf1545bab659ab459c074ad Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 31 Jul 2008 17:08:17 -0400
Subject: [PATCH] Save outgoing mail to selectable folder (#1324581)

---
 program/localization/de_DE/labels.inc |    3 +++
 CHANGELOG                             |    5 +++++
 program/steps/mail/compose.inc        |    9 +++++++++
 program/localization/en_US/labels.inc |    3 +++
 program/localization/de_CH/labels.inc |    3 +++
 skins/default/templates/compose.html  |    7 +++++--
 program/steps/mail/sendmail.inc       |   14 +++++++-------
 7 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index f7585c2..c898ac9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,11 @@
 CHANGELOG RoundCube Webmail
 ---------------------------
 
+2008/07/31 (thomasb)
+----------
+- Make default imap folders configurable for each user (#1485075)
+- Save outgoing mail to selectable folder (#1324581)
+
 2008/07/21 (alec)
 ----------
 - use long date format in print mode (#1485191)
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index 3851a9f..fdeb136 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -188,6 +188,8 @@
 
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Klartext';
+$labels['savesentmessagein'] = 'Nachricht speichern in';
+$labels['dontsave'] = 'nicht speichern';
 
 $labels['addcc'] = 'Cc hinzufügen';
 $labels['addbcc'] = 'Bcc hinzufügen';
@@ -280,6 +282,7 @@
 $labels['renamefolder'] = 'Ordner umbenennen';
 $labels['deletefolder']  = 'Ordner löschen';
 $labels['managefolders']  = 'Ordner verwalten';
+$labels['specialfolders']  = 'Spezialordner';
 
 $labels['sortby'] = 'Sortieren nach';
 $labels['sortasc']  = 'aufsteigend sortieren';
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index ab56a9f..fbc2a44 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -149,6 +149,8 @@
 $labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Nur-Text';
+$labels['savesentmessagein'] = 'Nachricht speichern in';
+$labels['dontsave'] = 'nicht speichern';
 $labels['addcc'] = 'Cc hinzufügen';
 $labels['addbcc'] = 'Bcc hinzufügen';
 $labels['addreplyto'] = 'Antwortadresse hinzufügen';
@@ -221,6 +223,7 @@
 $labels['renamefolder'] = 'Ordner umbenennen';
 $labels['deletefolder'] = 'Ordner löschen';
 $labels['managefolders'] = 'Ordner verwalten';
+$labels['specialfolders']  = 'Spezialordner';
 $labels['sortby'] = 'Sortieren nach';
 $labels['sortasc'] = 'Aufsteigend sortieren';
 $labels['sortdesc'] = 'Absteigend sortieren';
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 4fb3df9..43d91f9 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -190,6 +190,8 @@
 
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Plain text';
+$labels['savesentmessagein'] = 'Save sent message in';
+$labels['dontsave'] = 'don\'t save';
 
 $labels['addcc'] = 'Add Cc';
 $labels['addbcc'] = 'Add Bcc';
@@ -284,6 +286,7 @@
 $labels['renamefolder'] = 'Rename folder';
 $labels['deletefolder']  = 'Delete folder';
 $labels['managefolders']  = 'Manage folders';
+$labels['specialfolders']  = 'Special folders';
 
 $labels['sortby'] = 'Sort by';
 $labels['sortasc']  = 'Sort ascending';
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 9da449d..8e5a7c2 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -776,6 +776,14 @@
 }
 
 
+function rcmail_store_target_selection($attrib)
+{
+  $attrib['name'] = '_store_target';
+  $select = rcmail_mailbox_select(array('noselection' => '- '.rcube_label('dontsave').' -'));
+  return $select->show(rcmail::get_instance()->config->get('sent_mbox'), $attrib);
+}
+
+
 function get_form_tags($attrib)
 {
   global $RCMAIL, $MESSAGE_FORM;
@@ -813,6 +821,7 @@
   'priorityselector' => 'rcmail_priority_selector',
   'editorselector' => 'rcmail_editor_selector',
   'receiptcheckbox' => 'rcmail_receipt_checkbox',
+  'storetarget' => 'rcmail_store_target_selection',
 ));
 
 /****** get contacts for this user and add them to client scripts ********/
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 75000d4..090919e 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -355,27 +355,27 @@
 
 // Determine which folder to save message
 if ($savedraft)
-  $store_target = 'drafts_mbox';
+  $store_target = $CONFIG['drafts_mbox'];
 else
-  $store_target = 'sent_mbox';
+  $store_target = isset($_POST['_store_target']) ? get_input_value('_store_target', RCUBE_INPUT_POST) : $CONFIG['sent_mbox'];
 
-if ($CONFIG[$store_target])
+if ($store_target)
   {
   // check if mailbox exists
-  if (!in_array_nocase($CONFIG[$store_target], $IMAP->list_mailboxes()))
-    $store_folder = $IMAP->create_mailbox($CONFIG[$store_target], TRUE);
+  if (!in_array_nocase($store_target, $IMAP->list_mailboxes()))
+    $store_folder = $IMAP->create_mailbox($store_target, TRUE);
   else
     $store_folder = TRUE;
   
   // append message to sent box
   if ($store_folder)
-    $saved = $IMAP->save_message($CONFIG[$store_target], $MAIL_MIME->getMessage());
+    $saved = $IMAP->save_message($store_target, $MAIL_MIME->getMessage());
 
   // raise error if saving failed
   if (!$saved)
     {
     raise_error(array('code' => 800, 'type' => 'imap', 'file' => __FILE__,
-                      'message' => "Could not save message in $CONFIG[$store_target]"), TRUE, FALSE);
+                      'message' => "Could not save message in $store_target"), TRUE, FALSE);
     
     $OUTPUT->show_message('errorsaving', 'error');
     $OUTPUT->send('iframe');
diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html
index a666bed..ac71d9b 100644
--- a/skins/default/templates/compose.html
+++ b/skins/default/templates/compose.html
@@ -132,11 +132,14 @@
 
 <table border="0" cellspacing="0" width="100%" summary=""><tbody>
 <tr>
-<td>
+<td style="white-space:nowrap">
 <roundcube:button type="input" command="send" class="button" label="sendmessage" tabindex="8" />
 <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="9" />
 </td>
-<td align="right">
+<td style="text-align:center">
+  <label><span style="white-space:nowrap"><roundcube:label name="savesentmessagein" />:</span> <roundcube:object name="storetarget" /></label>
+</td>
+<td style="text-align:right; white-space:nowrap">
  <roundcube:label name="editortype" />:&nbsp;
  <span class="radios-left"><roundcube:object name="editorSelector" tabindex="10" /></span>
 </td>

--
Gitblit v1.9.1