display counters on special/label categories

This commit is contained in:
Andrew Dolgov 2007-08-13 05:57:19 +01:00
parent feb3185124
commit bba7c4bf21
1 changed files with 130 additions and 58 deletions

View File

@ -1755,6 +1755,16 @@
} }
function getCategoryCounters($link) { function getCategoryCounters($link) {
# two special categories are -1 and -2 (all virtuals; all labels)
$ctr = getCategoryUnread($link, -1);
print "<counter type=\"category\" id=\"-1\" counter=\"$ctr\"/>";
$ctr = getCategoryUnread($link, -2);
print "<counter type=\"category\" id=\"-2\" counter=\"$ctr\"/>";
$result = db_query($link, "SELECT cat_id,SUM((SELECT COUNT(int_id) $result = db_query($link, "SELECT cat_id,SUM((SELECT COUNT(int_id)
FROM ttrss_user_entries WHERE feed_id = ttrss_feeds.id FROM ttrss_user_entries WHERE feed_id = ttrss_feeds.id
AND unread = true)) AS unread FROM ttrss_feeds AND unread = true)) AS unread FROM ttrss_feeds
@ -1770,38 +1780,54 @@
function getCategoryUnread($link, $cat) { function getCategoryUnread($link, $cat) {
if ($cat != 0) { if ($cat >= 0) {
$cat_query = "cat_id = '$cat'";
} else { if ($cat != 0) {
$cat_query = "cat_id IS NULL"; $cat_query = "cat_id = '$cat'";
} else {
$cat_query = "cat_id IS NULL";
}
$result = db_query($link, "SELECT id FROM ttrss_feeds WHERE $cat_query
AND hidden = false
AND owner_uid = " . $_SESSION["uid"]);
$cat_feeds = array();
while ($line = db_fetch_assoc($result)) {
array_push($cat_feeds, "feed_id = " . $line["id"]);
}
if (count($cat_feeds) == 0) return 0;
$match_part = implode(" OR ", $cat_feeds);
$result = db_query($link, "SELECT COUNT(int_id) AS unread
FROM ttrss_user_entries
WHERE unread = true AND ($match_part) AND owner_uid = " . $_SESSION["uid"]);
$unread = 0;
# this needs to be rewritten
while ($line = db_fetch_assoc($result)) {
$unread += $line["unread"];
}
return $unread;
} else if ($cat == -1) {
return getFeedUnread($link, -1) + getFeedUnread($link, -2);
} else if ($cat == -2) {
$rv = getLabelCounters($link, false, true);
$ctr = 0;
foreach (array_keys($rv) as $k) {
if ($k < -10) {
$ctr += $rv[$k]["counter"];
}
}
return $ctr;
} }
$result = db_query($link, "SELECT id FROM ttrss_feeds WHERE $cat_query
AND hidden = false
AND owner_uid = " . $_SESSION["uid"]);
$cat_feeds = array();
while ($line = db_fetch_assoc($result)) {
array_push($cat_feeds, "feed_id = " . $line["id"]);
}
if (count($cat_feeds) == 0) return 0;
$match_part = implode(" OR ", $cat_feeds);
$result = db_query($link, "SELECT COUNT(int_id) AS unread
FROM ttrss_user_entries
WHERE unread = true AND ($match_part) AND owner_uid = " . $_SESSION["uid"]);
$unread = 0;
# this needs to be rewritten
while ($line = db_fetch_assoc($result)) {
$unread += $line["unread"];
}
return $unread;
} }
function getFeedUnread($link, $feed, $is_cat = false) { function getFeedUnread($link, $feed, $is_cat = false) {
@ -1991,7 +2017,7 @@
print "<counter type=\"label\" id=\"-1\" counter=\"$count\"/>"; print "<counter type=\"label\" id=\"-1\" counter=\"$count\"/>";
} else { } else {
$ret_arr["-1"]["counter"] = $count; $ret_arr["-1"]["counter"] = $count;
$ret_arr["-1"]["description"] = "Starred"; $ret_arr["-1"]["description"] = __("Starred articles");
} }
$result = db_query($link, "SELECT count(ttrss_entries.id) as count FROM ttrss_entries,ttrss_user_entries,ttrss_feeds $result = db_query($link, "SELECT count(ttrss_entries.id) as count FROM ttrss_entries,ttrss_user_entries,ttrss_feeds
@ -2005,7 +2031,7 @@
print "<counter type=\"label\" id=\"-2\" counter=\"$count\"/>"; print "<counter type=\"label\" id=\"-2\" counter=\"$count\"/>";
} else { } else {
$ret_arr["-2"]["counter"] = $count; $ret_arr["-2"]["counter"] = $count;
$ret_arr["-2"]["description"] = "Published"; $ret_arr["-2"]["description"] = __("Published articles");
} }
@ -2788,13 +2814,20 @@
function getCategoryTitle($link, $cat_id) { function getCategoryTitle($link, $cat_id) {
$result = db_query($link, "SELECT title FROM ttrss_feed_categories WHERE if ($cat_id == -1) {
id = '$cat_id'"); return __("Special");
} else if ($cat_id == -2) {
if (db_num_rows($result) == 1) { return __("Labels");
return db_fetch_result($result, 0, "title");
} else { } else {
return "Uncategorized";
$result = db_query($link, "SELECT title FROM ttrss_feed_categories WHERE
id = '$cat_id'");
if (db_num_rows($result) == 1) {
return db_fetch_result($result, 0, "title");
} else {
return "Uncategorized";
}
} }
} }
@ -3240,6 +3273,44 @@
} }
function printCategoryHeader($link, $cat_id, $hidden = false, $can_browse = true) {
$tmp_category = getCategoryTitle($link, $cat_id);
$cat_unread = getCategoryUnread($link, $cat_id);
if ($hidden) {
$holder_style = "display:none;";
$ellipsis = "...";
} else {
$holder_style = "";
$ellipsis = "";
}
$catctr_class = ($cat_unread > 0) ? "catCtrHasUnread" : "catCtrNoUnread";
print "<li class=\"feedCat\" id=\"FCAT-$cat_id\">
<a id=\"FCATN-$cat_id\" href=\"javascript:toggleCollapseCat($cat_id)\">$tmp_category</a>";
if ($can_browse) {
print "<a href=\"#\" onclick=\"javascript:viewCategory($cat_id)\" id=\"FCAP-$cat_id\">";
} else {
print "<span id=\"FCAP-$cat_id\">";
}
print " <span id=\"FCATCTR-$cat_id\" title=\"Click to browse category\"
class=\"$catctr_class\">($cat_unread)</span> $ellipsis";
if ($can_browse) {
print "</a>";
} else {
print "</span>";
}
print "</li>";
print "<li id=\"feedCatHolder\" class=\"$holder_class\"><ul class=\"feedCatList\" id=\"FCATLIST-$cat_id\" style='$holder_style'>";
}
function outputFeedList($link, $tags = false) { function outputFeedList($link, $tags = false) {
print "<ul class=\"feedList\" id=\"feedList\">"; print "<ul class=\"feedList\" id=\"feedList\">";
@ -3251,22 +3322,25 @@
if (get_pref($link, 'ENABLE_FEED_CATS')) { if (get_pref($link, 'ENABLE_FEED_CATS')) {
if ($_COOKIE["ttrss_vf_vclps"] == 1) { if ($_COOKIE["ttrss_vf_vclps"] == 1) {
$holder_style = "display:none;"; $cat_hidden = true;
$ellipsis = "...";
} else { } else {
$holder_style = ""; $cat_hidden = false;
$ellipsis = "";
} }
# print "<li class=\"feedCat\">".__('Special')."</li>"; # print "<li class=\"feedCat\">".__('Special')."</li>";
# print "<li id=\"feedCatHolder\" class=\"feedCatHolder\"><ul class=\"feedCatList\">"; # print "<li id=\"feedCatHolder\" class=\"feedCatHolder\"><ul class=\"feedCatList\">";
print "<li class=\"feedCat\">". # print "<li class=\"feedCat\">".
"<a id=\"FCATN--1\" href=\"javascript:toggleCollapseCat(-1)\">". # "<a id=\"FCATN--1\" href=\"javascript:toggleCollapseCat(-1)\">".
__('Special')."</a> <span id='FCAP--1'>$ellipsis</span></li>"; # __('Special')."</a> <span id='FCAP--1'>$ellipsis</span></li>";
#
# print "<li id=\"feedCatHolder\" class=\"feedCatHolder\">
# <ul class=\"feedCatList\" id='FCATLIST--1' style='$holder_style'>";
print "<li id=\"feedCatHolder\" class=\"feedCatHolder\"> # $cat_unread = getCategoryUnread($link, -1);
<ul class=\"feedCatList\" id='FCATLIST--1' style='$holder_style'>"; # $tmp_category = __("Special");
# $catctr_class = ($cat_unread > 0) ? "catCtrHasUnread" : "catCtrNoUnread";
printCategoryHeader($link, -1, $cat_hidden, false);
} }
$num_starred = getFeedUnread($link, -1); $num_starred = getFeedUnread($link, -1);
@ -3301,18 +3375,18 @@
if (get_pref($link, 'ENABLE_FEED_CATS')) { if (get_pref($link, 'ENABLE_FEED_CATS')) {
if ($_COOKIE["ttrss_vf_lclps"] == 1) { if ($_COOKIE["ttrss_vf_lclps"] == 1) {
$holder_style = "display:none;"; $cat_hidden = true;
$ellipsis = "...";
} else { } else {
$holder_style = ""; $cat_hidden = false;
$ellipsis = "";
} }
print "<li class=\"feedCat\">". printCategoryHeader($link, -2, $cat_hidden, false);
"<a id=\"FCATN--2\" href=\"javascript:toggleCollapseCat(-2)\">".
__('Labels')."</a> <span id='FCAP--2'>$ellipsis</span></li>";
print "<li id=\"feedCatHolder\" class=\"feedCatHolder\"><ul class=\"feedCatList\" id='FCATLIST--2' style='$holder_style'>"; # print "<li class=\"feedCat\">".
# "<a id=\"FCATN--2\" href=\"javascript:toggleCollapseCat(-2)\">".
# __('Labels')."</a> <span id='FCAP--2'>$ellipsis</span></li>";
#
# print "<li id=\"feedCatHolder\" class=\"feedCatHolder\"><ul class=\"feedCatList\" id='FCATLIST--2' style='$holder_style'>";
} else { } else {
print "<li><hr></li>"; print "<li><hr></li>";
} }
@ -3496,8 +3570,6 @@
class=\"$catctr_class\">($cat_unread)</span> $ellipsis class=\"$catctr_class\">($cat_unread)</span> $ellipsis
</a></li>"; </a></li>";
// !!! NO SPACE before <ul...feedCatList - breaks firstChild DOM function
// -> keyboard navigation, etc.
print "<li id=\"feedCatHolder\" class=\"$holder_class\"><ul class=\"feedCatList\" id=\"FCATLIST-$cat_id\" style='$holder_style'>"; print "<li id=\"feedCatHolder\" class=\"$holder_class\"><ul class=\"feedCatList\" id=\"FCATLIST-$cat_id\" style='$holder_style'>";
} }