summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-05-16 01:08:04 +0400
committerAndrew Dolgov <[email protected]>2013-05-16 01:08:04 +0400
commitc594eca0de78f46bd5f18194c058d94487d1a9e2 (patch)
tree1a1394b9ceea84dcdc2e6c7b027453d6fda91907
parent96ce71f35f2dd5bd08e140ffbe47e8fe40ec0c01 (diff)
implement additional counter mode for virtual feeds when there's 0 unread articles
-rw-r--r--classes/pref/feeds.php8
-rw-r--r--include/functions.php8
-rw-r--r--js/FeedTree.js14
-rw-r--r--js/feedlist.js2
-rw-r--r--tt-rss.css6
5 files changed, 33 insertions, 5 deletions
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index ffe7410fe..d43740310 100644
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -54,6 +54,7 @@ class Pref_Feeds extends Handler_Protected {
$cat['type'] = 'category';
$cat['unread'] = 0;
$cat['child_unread'] = 0;
+ $cat['auxcounter'] = 0;
$cat['items'] = $this->get_category_items($line['id']);
@@ -74,6 +75,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array();
$feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id'];
+ $feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title'];
$feed['checkbox'] = false;
$feed['unread'] = 0;
@@ -132,6 +134,7 @@ class Pref_Feeds extends Handler_Protected {
$item = array();
$item['id'] = 'FEED:' . $feed_id;
$item['bare_id'] = (int)$feed_id;
+ $item['auxcounter'] = 0;
$item['name'] = $feed['title'];
$item['checkbox'] = false;
$item['error'] = '';
@@ -193,6 +196,7 @@ class Pref_Feeds extends Handler_Protected {
$cat = array();
$cat['id'] = 'CAT:' . $line['id'];
$cat['bare_id'] = (int)$line['id'];
+ $cat['auxcounter'] = 0;
$cat['name'] = $line['title'];
$cat['items'] = array();
$cat['checkbox'] = false;
@@ -215,6 +219,7 @@ class Pref_Feeds extends Handler_Protected {
$cat = array();
$cat['id'] = 'CAT:0';
$cat['bare_id'] = 0;
+ $cat['auxcounter'] = 0;
$cat['name'] = __("Uncategorized");
$cat['items'] = array();
$cat['type'] = 'category';
@@ -232,6 +237,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array();
$feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id'];
+ $feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title'];
$feed['checkbox'] = false;
$feed['error'] = $feed_line['last_error'];
@@ -263,6 +269,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array();
$feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id'];
+ $feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title'];
$feed['checkbox'] = false;
$feed['error'] = $feed_line['last_error'];
@@ -1541,6 +1548,7 @@ class Pref_Feeds extends Handler_Protected {
$obj['updated'] = $updated;
$obj['icon'] = getFeedIcon($feed_id);
$obj['bare_id'] = $feed_id;
+ $obj['auxcounter'] = 0;
return $obj;
}
diff --git a/include/functions.php b/include/functions.php
index 149809a35..5296f9e61 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1459,8 +1459,14 @@
$count = getFeedUnread($i);
+ if ($i == 0 || $i == -1 || $i == -2)
+ $auxctr = getFeedArticles($i, false);
+ else
+ $auxctr = 0;
+
$cv = array("id" => $i,
- "counter" => (int) $count);
+ "counter" => (int) $count,
+ "auxcounter" => $auxctr);
// if (get_pref('EXTENDED_FEEDLIST'))
// $cv["xmsg"] = getFeedArticles($i)." ".__("total");
diff --git a/js/FeedTree.js b/js/FeedTree.js
index f3ac8ba19..e35417daf 100644
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -186,11 +186,13 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
ctr = dojo.doc.createElement('span');
ctr.className = 'counterNode';
- ctr.innerHTML = args.item.unread;
+ ctr.innerHTML = args.item.unread > 0 ? args.item.unread : args.item.auxcounter;
//args.item.unread > 0 ? ctr.addClassName("unread") : ctr.removeClassName("unread");
- args.item.unread > 0 ? Element.show(ctr) : Element.hide(ctr);
+ args.item.unread > 0 || args.item.auxcounter > 0 ? Element.show(ctr) : Element.hide(ctr);
+
+ args.item.unread == 0 && args.item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux");
dojo.place(ctr, tnode.rowNode, 'first');
tnode.counterNode = ctr;
@@ -218,10 +220,14 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
if (node.counterNode) {
ctr = node.counterNode;
- ctr.innerHTML = item.unread;
- item.unread > 0 ? Effect.Appear(ctr, {duration : 0.3,
+ ctr.innerHTML = item.unread > 0 ? item.unread : item.auxcounter;
+ item.unread > 0 || item.auxcounter > 0 ?
+ Effect.Appear(ctr, {duration : 0.3,
queue: { position: 'end', scope: 'CAPPEAR-' + item.id, limit: 1 }}) :
Element.hide(ctr);
+
+ item.unread == 0 && item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux");
+
}
}
diff --git a/js/feedlist.js b/js/feedlist.js
index 51082f827..84b561227 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -219,6 +219,7 @@ function parse_counters(elems, scheduled_call) {
var error = elems[l].error;
var has_img = elems[l].has_img;
var updated = elems[l].updated;
+ var auxctr = parseInt(elems[l].auxcounter);
if (id == "global-unread") {
global_unread = ctr;
@@ -236,6 +237,7 @@ function parse_counters(elems, scheduled_call) {
}
setFeedUnread(id, (kind == "cat"), ctr);
+ setFeedValue(id, (kind == "cat"), 'auxcounter', auxctr);
if (kind != "cat") {
setFeedValue(id, false, 'error', error);
diff --git a/tt-rss.css b/tt-rss.css
index a437c9d41..f1459e3c0 100644
--- a/tt-rss.css
+++ b/tt-rss.css
@@ -1067,6 +1067,12 @@ div.hl.active {
font-family : "Segoe UI", Tahoma, sans-serif;
}
+#feedTree .counterNode.aux {
+ background : #f0f0f0;
+ color : #999;
+ border-color : #f0f0f0;
+}
+
#feedTree .counterNode {
font-weight : bold;
display : inline-block;