From 347ba311e68f3a641805a268313fcd5ed851feb7 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 01 Jan 2013 04:54:57 -0500
Subject: [PATCH] Add possibility to search in message body only (#1488770)

---
 skins/larry/templates/mail.html       |    1 +
 CHANGELOG                             |    1 +
 program/steps/mail/search.inc         |    7 ++++---
 skins/classic/templates/mail.html     |    1 +
 program/localization/en_US/labels.inc |    1 +
 5 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 5a594c0..d3ebabc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Add possibility to search in message body only (#1488770)
 - Support "multipart/relative" as an alias for "multipart/related" type (#1488886)
 - Display PGP/MIME signature attachments as "Digital Signature" (#1488570)
 - Workaround UW-IMAP bug where hierarchy separator is added to the shared folder name (#1488879)
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index d2a46ec..9deaa66 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -200,6 +200,7 @@
 $labels['resetsearch']  = 'Reset search';
 $labels['searchmod']  = 'Search modifiers';
 $labels['msgtext']  = 'Entire message';
+$labels['body']  = 'Body';
 
 $labels['openinextwin'] = 'Open in new window';
 $labels['emlsave'] = 'Download (.eml)';
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index f9b8f9e..fb1b487 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -69,7 +69,7 @@
 else if (preg_match("/^body:.*/i", $str))
 {
   list(,$srch) = explode(":", $str);
-  $subject['text'] = "TEXT";
+  $subject['body'] = "BODY";
 }
 else if (strlen(trim($str)))
 {
@@ -81,7 +81,7 @@
         break;
       }
       else {
-        $subject[$header] = 'HEADER '.strtoupper($header);
+        $subject[$header] = ($header != 'body' ? 'HEADER ' : '') . strtoupper($header);
       }
     }
 
@@ -89,7 +89,8 @@
     $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT);
     $search_mods[$mbox] = array_fill_keys(array_keys($subject), 1);
     $RCMAIL->user->save_prefs(array('search_mods' => $search_mods));
-  } else {
+  }
+  else {
     // search in subject by default
     $subject['subject'] = 'HEADER SUBJECT';
   }
diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
index 96fe72e..ad67d8e 100644
--- a/skins/classic/templates/mail.html
+++ b/skins/classic/templates/mail.html
@@ -115,6 +115,7 @@
     <li><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_to"><roundcube:label name="to" /></label></li>
     <li><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_cc"><roundcube:label name="cc" /></label></li>
     <li><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_bcc"><roundcube:label name="bcc" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_body"><roundcube:label name="body" /></label></li>
     <li><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_text"><roundcube:label name="msgtext" /></label></li>
   </ul>
 </div>
diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
index 751ab82..cd817c1 100644
--- a/skins/larry/templates/mail.html
+++ b/skins/larry/templates/mail.html
@@ -133,6 +133,7 @@
 		<li><label><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="UI.set_searchmod(this)" /> <roundcube:label name="to" /></label></li>
 		<li><label><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="UI.set_searchmod(this)" /> <roundcube:label name="cc" /></label></li>
 		<li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <roundcube:label name="bcc" /></label></li>
+		<li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="UI.set_searchmod(this)" /> <roundcube:label name="body" /></label></li>
 		<li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <roundcube:label name="msgtext" /></label></li>
 	</ul>
 </div>

--
Gitblit v1.9.1