summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--config/main.inc.php.dist3
-rw-r--r--program/localization/en_US/labels.inc1
-rw-r--r--program/localization/pl_PL/labels.inc2
-rw-r--r--program/steps/mail/compose.inc50
-rw-r--r--program/steps/settings/func.inc10
-rw-r--r--program/steps/settings/save_prefs.inc1
7 files changed, 58 insertions, 10 deletions
diff --git a/CHANGELOG b/CHANGELOG
index f5bbc4dd6..0d844e7b7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -59,6 +59,7 @@ CHANGELOG Roundcube Webmail
- Improve performance of setting IMAP flags using .SILENT suffix
- Improve performance of message cache status checking with skip_disabled=true
- Support contact's email addresses up to 255 characters long (#1487095)
+- Add option to place replies in the folder of the message being replied to (#1485945)
RELEASE 0.4.2
-------------
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 974e8b3b1..d85b507ef 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -589,4 +589,7 @@ $rcmail_config['mdn_default'] = 0;
// Delivery Status Notification checkbox default state
$rcmail_config['dsn_default'] = 0;
+// Place replies in the folder of the message being replied to
+$rcmail_config['reply_same_folder'] = false;
+
// end of config file
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index d209501d4..26f9dca31 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -378,6 +378,7 @@ $labels['previewpanemarkread'] = 'Mark previewed messages as read';
$labels['afternseconds'] = 'after $n seconds';
$labels['reqmdn'] = 'Always request a return receipt';
$labels['reqdsn'] = 'Always request a delivery status notification';
+$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 534681c65..361ab6d4f 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -363,5 +363,7 @@ $labels['addmailreplyto'] = 'Dodaj Mail-Reply-To';
$labels['addmailfollowupto'] = 'Dodaj Mail-Followup-To';
$labels['dsn'] = 'Status dostarczenia (DSN)';
$labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)';
+$labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam';
+$labels['contactproperties'] = 'Właściwości';
?>
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 3661f437e..421ff32c6 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -100,12 +100,8 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != $MESSAGE_ID
}
// check if folder for saving sent messages exists and is subscribed (#1486802)
- if (($sent_folder = $_SESSION['compose']['param']['sent_mbox']) && !$IMAP->mailbox_exists($sent_folder, true)) {
- // folder may exist but isn't subscribed (#1485241)
- if (!$IMAP->mailbox_exists($sent_folder))
- $IMAP->create_mailbox($sent_folder, true);
- else
- $IMAP->subscribe($sent_folder);
+ if ($sent_folder = $_SESSION['compose']['param']['sent_mbox']) {
+ rcmail_check_sent_folder($sent_folder, true);
}
// redirect to a unique URL with all parameters stored in session
@@ -177,6 +173,13 @@ if (!empty($msg_uid))
$MESSAGE->reply_all = $_SESSION['compose']['param']['all'];
$OUTPUT->set_env('compose_mode', 'reply');
+
+ // Save the sent message in the same folder of the message being replied to
+ if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $_SESSION['compose']['mailbox'])
+ && rcmail_check_sent_folder($sent_folder, false)
+ ) {
+ $_SESSION['compose']['param']['sent_mbox'] = $sent_folder;
+ }
}
else if ($compose_mode == RCUBE_COMPOSE_DRAFT)
{
@@ -191,8 +194,15 @@ if (!empty($msg_uid))
$_SESSION['compose']['forward_uid'] = $info['uid'];
$_SESSION['compose']['mailbox'] = $info['folder'];
+
+ // Save the sent message in the same folder of the message being replied to
+ if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $info['folder'])
+ && rcmail_check_sent_folder($sent_folder, false)
+ ) {
+ $_SESSION['compose']['param']['sent_mbox'] = $sent_folder;
+ }
}
-
+
if ($MESSAGE->headers->in_reply_to)
$_SESSION['compose']['reply_msgid'] = '<'.$MESSAGE->headers->in_reply_to.'>';
@@ -1261,6 +1271,26 @@ function rcmail_store_target_selection($attrib)
}
+function rcmail_check_sent_folder($folder, $create=false)
+{
+ global $IMAP;
+
+ if ($IMAP->mailbox_exists($folder, true)) {
+ return true;
+ }
+
+ // folder may exist but isn't subscribed (#1485241)
+ if ($create) {
+ if (!$IMAP->mailbox_exists($folder))
+ return $IMAP->create_mailbox($folder, true);
+ else
+ return $IMAP->subscribe($folder);
+ }
+
+ return false;
+}
+
+
function get_form_tags($attrib)
{
global $RCMAIL, $MESSAGE_FORM;
@@ -1274,13 +1304,13 @@ function get_form_tags($attrib)
$form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : '';
$form_start .= $hiddenfields->show();
}
-
+
$form_end = ($MESSAGE_FORM && !strlen($attrib['form'])) ? '</form>' : '';
$form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';
-
+
if (!$MESSAGE_FORM)
$RCMAIL->output->add_gui_object('messageform', $form_name);
-
+
$MESSAGE_FORM = $form_name;
return array($form_start, $form_end);
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index e0aa5629b..daa9fafa6 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -534,6 +534,16 @@ function rcmail_user_prefs($current=null)
);
}
+ if (!isset($no_override['reply_same_folder'])) {
+ $field_id = 'rcmfd_reply_same_folder';
+ $input_reply_same_folder = new html_checkbox(array('name' => '_reply_same_folder', 'id' => $field_id, 'value' => 1));
+
+ $blocks['main']['options']['reply_same_folder'] = array(
+ 'title' => html::label($field_id, Q(rcube_label('replysamefolder'))),
+ 'content' => $input_reply_same_folder->show($config['reply_same_folder']?1:0),
+ );
+ }
+
if (!isset($no_override['top_posting'])) {
$field_id = 'rcmfd_top_posting';
$select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id, 'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 63654eefc..265c37e90 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -67,6 +67,7 @@ switch ($CURR_SECTION)
'force_7bit' => isset($_POST['_force_7bit']) ? TRUE : FALSE,
'mdn_default' => isset($_POST['_mdn_default']) ? TRUE : FALSE,
'dsn_default' => isset($_POST['_dsn_default']) ? TRUE : FALSE,
+ 'reply_same_folder' => isset($_POST['_reply_same_folder']) ? TRUE : FALSE,
'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1,
'top_posting' => !empty($_POST['_top_posting']),
'strip_existing_sig' => isset($_POST['_strip_existing_sig']),