From 9429087f67d5babe32ff496eadca52788e9f2547 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 18 Apr 2014 10:53:12 -0400
Subject: [PATCH] Add multi-folder search capabilities to classic skin (#1485234)

---
 skins/larry/templates/mail.html   |    4 +-
 skins/classic/mail.css            |   10 +++++
 skins/classic/templates/mail.html |    6 ++
 skins/classic/functions.js        |   41 ++++++++++++--------
 skins/larry/mail.css              |    4 --
 5 files changed, 41 insertions(+), 24 deletions(-)

diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index 144923d..7445dba 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -202,11 +202,13 @@
       var n, all,
         list = $('input:checkbox[name="s_mods[]"]', obj),
         mbox = rcmail.env.mailbox,
-        mods = rcmail.env.search_mods;
+        mods = rcmail.env.search_mods,
+        scope = rcmail.env.search_scope || 'base';
 
       if (rcmail.env.task == 'mail') {
         mods = mods[mbox] ? mods[mbox] : mods['*'];
         all = 'text';
+        $('input:radio[name="s_scope"]').prop('checked', false).filter('#s_scope_'+scope).prop('checked', true);
       }
       else {
         all = '*';
@@ -231,7 +233,11 @@
 {
   var all, m, task = rcmail.env.task,
     mods = rcmail.env.search_mods,
-    mbox = rcmail.env.mailbox;
+    mbox = rcmail.env.mailbox,
+    scope = $('input[name="s_scope"]:checked').val();
+
+  if (scope == 'all')
+    mbox = '*';
 
   if (!mods)
     mods = {};
@@ -253,23 +259,24 @@
     m[elem.value] = 1;
 
   // mark all fields
-  if (elem.value != all)
-    return;
+  if (elem.value == all) {
+    $('input:checkbox[name="s_mods[]"]').map(function() {
+      if (this == elem)
+        return;
 
-  $('input:checkbox[name="s_mods[]"]').map(function() {
-    if (this == elem)
-      return;
+      this.checked = true;
+      if (elem.checked) {
+        this.disabled = true;
+        delete m[this.value];
+      }
+      else {
+        this.disabled = false;
+        m[this.value] = 1;
+      }
+    });
+  }
 
-    this.checked = true;
-    if (elem.checked) {
-      this.disabled = true;
-      delete m[this.value];
-    }
-    else {
-      this.disabled = false;
-      m[this.value] = 1;
-    }
-  });
+  rcmail.set_searchmods(m);
 },
 
 listmenu: function(show)
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index b1c8a0e..fc066e0 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -1010,6 +1010,16 @@
   padding: 0 2px;
 }
 
+.messagelist tr td.folder
+{
+  width: 135px;
+}
+
+.messagelist tr td.hidden
+{
+  display: none;
+}
+
 .messagelist tr.message
 {
   background-color: #FFF;
diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
index e760eb4..7a169c8 100644
--- a/skins/classic/templates/mail.html
+++ b/skins/classic/templates/mail.html
@@ -114,6 +114,10 @@
     <li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li>
     <li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li>
     <li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li>
+    <li><label class="comment"><roundcube:label name="searchscope" /></label></li>
+    <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
+    <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="subfolders" /></span></label></li>
+    <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allfolders" /></span></label></li>
   </ul>
 </div>
 
@@ -138,7 +142,7 @@
   <ul>
     <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
     <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
-    <li class="separator_below"><roundcube:button name="messageimport" type="link" class="active" label="importmessages" id="uploadformlink" onclick="rcmail_ui.show_popup('uploadform', true); return false" /></li>
+    <li class="separator_below"><roundcube:button command="import-messages" name="messageimport" type="link" classAct="active" label="importmessages" id="uploadformlink" onclick="if(rcmail.command_enabled('import-messages'))rcmail_ui.show_popup('uploadform', true); return false" /></li>
     <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
     <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
   </ul>
diff --git a/skins/larry/mail.css b/skins/larry/mail.css
index 34ce789..b9f24b8 100644
--- a/skins/larry/mail.css
+++ b/skins/larry/mail.css
@@ -518,10 +518,6 @@
 	width: 135px;
 }
 
-.messagelist tr td.folder {
-	width: 135px;
-}
-
 .messagelist tr td.hidden {
 	display: none;
 }
diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
index 2f6fbe2..1e4a3ce 100644
--- a/skins/larry/templates/mail.html
+++ b/skins/larry/templates/mail.html
@@ -127,7 +127,7 @@
 		<li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li>
 		<li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li>
 		<li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li>
-		<li class="separator" id=""><label><roundcube:label name="searchscope" /></label></li>
+		<li class="separator"><label><roundcube:label name="searchscope" /></label></li>
 		<li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
 		<li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li>
 		<li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li>
@@ -145,7 +145,7 @@
 	<ul class="toolbarmenu" id="mailboxoptionsmenu">
 		<li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
 		<li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
-		<li><roundcube:button name="messageimport" type="link" class="active" label="importmessages" onclick="UI.show_uploadform()" /></li>
+		<li><roundcube:button command="import-messages" name="messageimport" type="link" classAct="active" label="importmessages" onclick="if(rcmail.command_enabled('import-messages'))UI.show_uploadform();return false" /></li>
 		<li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
 		<roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
 	</ul>

--
Gitblit v1.9.1