From 636bd77074638a1132b8933c4fb114373aaec296 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 24 Nov 2011 05:26:35 -0500
Subject: [PATCH] - Mark (with different color) folders with recent messages (#1486234)

---
 CHANGELOG                           |    1 +
 program/steps/mail/check_recent.inc |    3 ++-
 skins/default/mail.css              |    5 +++++
 program/steps/mail/func.inc         |    4 ++--
 program/js/app.js                   |   18 +++++++++++++++++-
 5 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 8691b57..bc7f092 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Mark (with different color) folders with recent messages (#1486234)
 - Fix possible infinite redirect on attachment preview (#1488199)
 - Improved clickjacking protection for browsers which don't support X-Frame-Options headers
 - Fixed bug where similiar folder names were highlighted wrong (#1487860)
diff --git a/program/js/app.js b/program/js/app.js
index cc1eeef..d714156 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2021,6 +2021,7 @@
       url += '&_refresh=1';
 
     this.select_folder(mbox, '', true);
+    this.unmark_folder(mbox, 'recent', '', true);
     this.env.mailbox = mbox;
 
     // load message list remotely
@@ -5448,6 +5449,18 @@
     }
   };
 
+  // adds a class to selected folder
+  this.mark_folder = function(name, class_name, prefix, encode)
+  {
+    $(this.get_folder_li(name, prefix, encode)).addClass(class_name);
+  };
+
+  // adds a class to selected folder
+  this.unmark_folder = function(name, class_name, prefix, encode)
+  {
+    $(this.get_folder_li(name, prefix, encode)).removeClass(class_name);
+  };
+
   // helper method to find a folder list item
   this.get_folder_li = function(name, prefix, encode)
   {
@@ -5555,13 +5568,16 @@
   };
 
   // update the mailboxlist
-  this.set_unread_count = function(mbox, count, set_title)
+  this.set_unread_count = function(mbox, count, set_title, mark)
   {
     if (!this.gui_objects.mailboxlist)
       return false;
 
     this.env.unread_counts[mbox] = count;
     this.set_unread_count_display(mbox, set_title);
+
+    if (mark)
+      this.mark_folder(mbox, mark, '', true);
   };
 
   // update the mailbox count display
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index e22cccc..ab0d3c8 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -49,7 +49,8 @@
             array('mailbox' => $mbox_name, 'is_current' => $is_current));
     }
 
-    rcmail_send_unread_count($mbox_name, true);
+    rcmail_send_unread_count($mbox_name, true, null,
+      (!$is_current && ($status & 1)) ? 'recent' : '');
 
     if ($status && $is_current) {
         // refresh saved search set
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 8407b06..2d25fe3 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -472,7 +472,7 @@
 }
 
 
-function rcmail_send_unread_count($mbox_name, $force=false, $count=null)
+function rcmail_send_unread_count($mbox_name, $force=false, $count=null, $mark='')
 {
   global $RCMAIL;
 
@@ -484,7 +484,7 @@
     $unseen = $count;
 
   if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
-    $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX'));
+    $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX'), $mark);
 
   rcmail_set_unseen_count($mbox_name, $unseen);
 
diff --git a/skins/default/mail.css b/skins/default/mail.css
index 4dfc206..42a62de 100644
--- a/skins/default/mail.css
+++ b/skins/default/mail.css
@@ -448,6 +448,11 @@
   color: #666;
 }
 
+#mailboxlist li.recent > a
+{
+  color: #0066FF;
+}
+
 #mailboxlist li.selected,
 #mailboxlist li.droptarget li.selected
 {

--
Gitblit v1.9.1