From 399a2d68b6529f19898b6d6ef3c05add128aadfa Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 03 Sep 2015 03:28:17 -0400
Subject: [PATCH] Make optional adding of standard signature separator - sig_separator (#1487768)

---
 CHANGELOG                             |    1 +
 program/steps/mail/compose.inc        |   10 ++++++----
 program/steps/settings/func.inc       |   14 ++++++++++++++
 program/localization/en_US/labels.inc |    1 +
 program/steps/settings/save_prefs.inc |    1 +
 config/defaults.inc.php               |    3 +++
 6 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index a8a52ca..cee177f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Make optional adding of standard signature separator - sig_separator (#1487768)
 - Optimize folder_size() on Cyrus IMAP by using special folder annotation (#1490514)
 - Make optional hidding of folders with name starting with a dot - imap_skip_hidden_folders (#1490468)
 - Add option to enable HTML editor always, except when replying to plain text messages (#1489365)
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index 3bb8cf9..a3b7b53 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -1116,6 +1116,9 @@
 // the signature below the quoted text (sig_below = true).
 $config['sig_below'] = false;
 
+// Enables adding of standard separator to the signature
+$config['sig_separator'] = true;
+
 // Use MIME encoding (quoted-printable) for 8bit characters in message body
 $config['force_7bit'] = false;
 
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index e3f6fc8..90d2c30 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -511,6 +511,7 @@
 $labels['replyandforwardonly'] = 'replies and forwards only';
 $labels['insertsignature'] = 'Insert signature';
 $labels['sigbelow'] = 'Place signature below the quoted message';
+$labels['sigseparator'] = 'Force standard separator in signatures';
 $labels['previewpanemarkread']  = 'Mark previewed messages as read';
 $labels['afternseconds']  = 'after $n seconds';
 $labels['reqmdn'] = 'Always request a return receipt';
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 807d0ef..488b82e 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -484,7 +484,9 @@
         $top_posting  = intval($RCMAIL->config->get('reply_mode')) > 0
             && !$RCMAIL->config->get('sig_below')
             && ($COMPOSE['mode'] == RCUBE_COMPOSE_REPLY || $COMPOSE['mode'] == RCUBE_COMPOSE_FORWARD);
-        $separator = $top_posting ? '---' : '-- ';
+
+        $separator     = $top_posting ? '---' : '-- ';
+        $add_separator = (bool) $RCMAIL->config->get('sig_separator');
 
         $field_attrib['onchange'] = rcmail_output::JS_OBJECT_NAME.".change_identity(this)";
         $select_from = new html_select($field_attrib);
@@ -500,15 +502,15 @@
 
                 if ($sql_arr['html_signature']) {
                     $text = $RCMAIL->html2text($html, array('links' => false));
-                    $text = trim($text);
+                    $text = trim($text, "\r\n");
                 }
                 else {
                     $t2h  = new rcube_text2html($text, false);
                     $html = $t2h->get_html();
                 }
 
-                if (!preg_match('/^--[ -]\r?\n/m', $text)) {
-                    $text = $separator . "\n" . $text;
+                if ($add_separator && !preg_match('/^--[ -]\r?\n/m', $text)) {
+                    $text = $separator . "\n" . ltrim($text, "\r\n");
                     $html = $separator . "<br>" . $html;
                 }
 
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 22c02ee..061ba12 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -874,6 +874,20 @@
                 );
             }
 
+            if (!isset($no_override['sig_separator'])) {
+                if (!$current) {
+                    continue 2;
+                }
+
+                $field_id = 'rcmfd_sig_separator';
+                $input    = new html_checkbox(array('name' => '_sig_separator', 'id' => $field_id, 'value' => 1));
+
+                $blocks['sig']['options']['sig_separator'] = array(
+                    'title'   => html::label($field_id, rcube::Q($RCMAIL->gettext('sigseparator'))),
+                    'content' => $input->show($RCMAIL->config->get('sig_separator') ? 1 : 0),
+                );
+            }
+
             if (!isset($no_override['forward_attachment'])) {
                 if (!$current) {
                     continue 2;
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 91104cb..355954c 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -87,6 +87,7 @@
         'reply_mode'         => isset($_POST['_reply_mode']) ? intval($_POST['_reply_mode']) : 0,
         'sig_below'          => isset($_POST['_sig_below']) ? true : false,
         'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
+        'sig_separator'      => isset($_POST['_sig_separator']) ? true : false,
         'default_font'       => rcube_utils::get_input_value('_default_font', rcube_utils::INPUT_POST),
         'default_font_size'  => rcube_utils::get_input_value('_default_font_size', rcube_utils::INPUT_POST),
         'reply_all_mode'     => intval($_POST['_reply_all_mode']),

--
Gitblit v1.9.1