implement additional counter mode for virtual feeds when there's 0 unread articles

master
Andrew Dolgov 12 years ago
parent 96ce71f35f
commit c594eca0de

@ -54,6 +54,7 @@ class Pref_Feeds extends Handler_Protected {
$cat['type'] = 'category'; $cat['type'] = 'category';
$cat['unread'] = 0; $cat['unread'] = 0;
$cat['child_unread'] = 0; $cat['child_unread'] = 0;
$cat['auxcounter'] = 0;
$cat['items'] = $this->get_category_items($line['id']); $cat['items'] = $this->get_category_items($line['id']);
@ -74,6 +75,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array(); $feed = array();
$feed['id'] = 'FEED:' . $feed_line['id']; $feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id']; $feed['bare_id'] = (int)$feed_line['id'];
$feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title']; $feed['name'] = $feed_line['title'];
$feed['checkbox'] = false; $feed['checkbox'] = false;
$feed['unread'] = 0; $feed['unread'] = 0;
@ -132,6 +134,7 @@ class Pref_Feeds extends Handler_Protected {
$item = array(); $item = array();
$item['id'] = 'FEED:' . $feed_id; $item['id'] = 'FEED:' . $feed_id;
$item['bare_id'] = (int)$feed_id; $item['bare_id'] = (int)$feed_id;
$item['auxcounter'] = 0;
$item['name'] = $feed['title']; $item['name'] = $feed['title'];
$item['checkbox'] = false; $item['checkbox'] = false;
$item['error'] = ''; $item['error'] = '';
@ -193,6 +196,7 @@ class Pref_Feeds extends Handler_Protected {
$cat = array(); $cat = array();
$cat['id'] = 'CAT:' . $line['id']; $cat['id'] = 'CAT:' . $line['id'];
$cat['bare_id'] = (int)$line['id']; $cat['bare_id'] = (int)$line['id'];
$cat['auxcounter'] = 0;
$cat['name'] = $line['title']; $cat['name'] = $line['title'];
$cat['items'] = array(); $cat['items'] = array();
$cat['checkbox'] = false; $cat['checkbox'] = false;
@ -215,6 +219,7 @@ class Pref_Feeds extends Handler_Protected {
$cat = array(); $cat = array();
$cat['id'] = 'CAT:0'; $cat['id'] = 'CAT:0';
$cat['bare_id'] = 0; $cat['bare_id'] = 0;
$cat['auxcounter'] = 0;
$cat['name'] = __("Uncategorized"); $cat['name'] = __("Uncategorized");
$cat['items'] = array(); $cat['items'] = array();
$cat['type'] = 'category'; $cat['type'] = 'category';
@ -232,6 +237,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array(); $feed = array();
$feed['id'] = 'FEED:' . $feed_line['id']; $feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id']; $feed['bare_id'] = (int)$feed_line['id'];
$feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title']; $feed['name'] = $feed_line['title'];
$feed['checkbox'] = false; $feed['checkbox'] = false;
$feed['error'] = $feed_line['last_error']; $feed['error'] = $feed_line['last_error'];
@ -263,6 +269,7 @@ class Pref_Feeds extends Handler_Protected {
$feed = array(); $feed = array();
$feed['id'] = 'FEED:' . $feed_line['id']; $feed['id'] = 'FEED:' . $feed_line['id'];
$feed['bare_id'] = (int)$feed_line['id']; $feed['bare_id'] = (int)$feed_line['id'];
$feed['auxcounter'] = 0;
$feed['name'] = $feed_line['title']; $feed['name'] = $feed_line['title'];
$feed['checkbox'] = false; $feed['checkbox'] = false;
$feed['error'] = $feed_line['last_error']; $feed['error'] = $feed_line['last_error'];
@ -1541,6 +1548,7 @@ class Pref_Feeds extends Handler_Protected {
$obj['updated'] = $updated; $obj['updated'] = $updated;
$obj['icon'] = getFeedIcon($feed_id); $obj['icon'] = getFeedIcon($feed_id);
$obj['bare_id'] = $feed_id; $obj['bare_id'] = $feed_id;
$obj['auxcounter'] = 0;
return $obj; return $obj;
} }

@ -1459,8 +1459,14 @@
$count = getFeedUnread($i); $count = getFeedUnread($i);
if ($i == 0 || $i == -1 || $i == -2)
$auxctr = getFeedArticles($i, false);
else
$auxctr = 0;
$cv = array("id" => $i, $cv = array("id" => $i,
"counter" => (int) $count); "counter" => (int) $count,
"auxcounter" => $auxctr);
// if (get_pref('EXTENDED_FEEDLIST')) // if (get_pref('EXTENDED_FEEDLIST'))
// $cv["xmsg"] = getFeedArticles($i)." ".__("total"); // $cv["xmsg"] = getFeedArticles($i)." ".__("total");

@ -186,11 +186,13 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
ctr = dojo.doc.createElement('span'); ctr = dojo.doc.createElement('span');
ctr.className = 'counterNode'; 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 ? 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'); dojo.place(ctr, tnode.rowNode, 'first');
tnode.counterNode = ctr; tnode.counterNode = ctr;
@ -218,10 +220,14 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
if (node.counterNode) { if (node.counterNode) {
ctr = node.counterNode; ctr = node.counterNode;
ctr.innerHTML = item.unread; ctr.innerHTML = item.unread > 0 ? item.unread : item.auxcounter;
item.unread > 0 ? Effect.Appear(ctr, {duration : 0.3, item.unread > 0 || item.auxcounter > 0 ?
Effect.Appear(ctr, {duration : 0.3,
queue: { position: 'end', scope: 'CAPPEAR-' + item.id, limit: 1 }}) : queue: { position: 'end', scope: 'CAPPEAR-' + item.id, limit: 1 }}) :
Element.hide(ctr); Element.hide(ctr);
item.unread == 0 && item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux");
} }
} }

@ -219,6 +219,7 @@ function parse_counters(elems, scheduled_call) {
var error = elems[l].error; var error = elems[l].error;
var has_img = elems[l].has_img; var has_img = elems[l].has_img;
var updated = elems[l].updated; var updated = elems[l].updated;
var auxctr = parseInt(elems[l].auxcounter);
if (id == "global-unread") { if (id == "global-unread") {
global_unread = ctr; global_unread = ctr;
@ -236,6 +237,7 @@ function parse_counters(elems, scheduled_call) {
} }
setFeedUnread(id, (kind == "cat"), ctr); setFeedUnread(id, (kind == "cat"), ctr);
setFeedValue(id, (kind == "cat"), 'auxcounter', auxctr);
if (kind != "cat") { if (kind != "cat") {
setFeedValue(id, false, 'error', error); setFeedValue(id, false, 'error', error);

@ -1067,6 +1067,12 @@ div.hl.active {
font-family : "Segoe UI", Tahoma, sans-serif; font-family : "Segoe UI", Tahoma, sans-serif;
} }
#feedTree .counterNode.aux {
background : #f0f0f0;
color : #999;
border-color : #f0f0f0;
}
#feedTree .counterNode { #feedTree .counterNode {
font-weight : bold; font-weight : bold;
display : inline-block; display : inline-block;

Loading…
Cancel
Save