summaryrefslogtreecommitdiff
path: root/functions.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-06-08 05:05:11 +0100
committerAndrew Dolgov <[email protected]>2006-06-08 05:05:11 +0100
commit293fa9424c096a589cd99615c0d68f7d16a8a3d7 (patch)
tree6c1a7fee4d1e388aa7a7c822251ad8b1e9c61bfa /functions.js
parent5d35cdcd63003161ddce3e939b4880fc15afafcc (diff)
rework hideOrShowFeeds(): now hides empty categories should be compatible with browsers w/o document.styleSheets (closes #40)
Diffstat (limited to 'functions.js')
-rw-r--r--functions.js66
1 files changed, 55 insertions, 11 deletions
diff --git a/functions.js b/functions.js
index 8401a0ff3..9757eca80 100644
--- a/functions.js
+++ b/functions.js
@@ -594,7 +594,9 @@ function all_counters_callback() {
if (getInitParam("feeds_sort_by_unread") == 1) {
resort_feedlist();
}
-
+
+ hideOrShowFeeds(document, getInitParam("hide_read_feeds") == 1);
+
} catch (e) {
exception_error("all_counters_callback", e);
}
@@ -726,25 +728,67 @@ function popupHelp(tid) {
function hideOrShowFeeds(doc, hide) {
- if (!doc.styleSheets) return;
+ var fd = getFeedsContext().document;
+
+ var list = fd.getElementById("feedList");
+
+ if (fd.getElementById("feedCatHolder")) {
+
+ var feeds = fd.getElementById("feedList");
+ var child = feeds.firstChild;
+
+ while (child) {
- var css_rules = doc.styleSheets[0].cssRules;
+ if (child.id == "feedCatHolder") {
+ hideOrShowFeedsCategory(fd, child.firstChild, hide, child.previousSibling);
+ }
+
+ child = child.nextSibling;
+ }
- if (!css_rules || !css_rules.length) return;
+ } else {
+ hideOrShowFeedsCategory(fd, fd.getElementById("feedList"), hide);
+ }
+}
- for (i = 0; i < css_rules.length; i++) {
- var rule = css_rules[i];
+function hideOrShowFeedsCategory(doc, node, hide, cat_node) {
+
+// debug("hideOrShowFeedsCategory: " + node + " (" + hide + ")");
+
+ var cat_unread = 0;
+
+ if (node.hasChildNodes() && node.firstChild.nextSibling != false) {
+ for (i = 0; i < node.childNodes.length; i++) {
+ if (node.childNodes[i].nodeName != "LI") { continue; }
+
+ var has_unread = (node.childNodes[i].className != "feed");
+
+// debug(node.childNodes[i].id + " --> " + has_unread);
+
+ if (hide && !has_unread) {
+ node.childNodes[i].style.display = "none";
+ }
- if (rule.selectorText == "ul.feedList li.feed") {
if (!hide) {
- rule.style.display = "block";
- } else {
- rule.style.display = "none";
+ node.childNodes[i].style.display = "list-item";
+ }
+
+ if (has_unread) {
+ cat_unread++;
}
+
}
+ }
- }
+ if (cat_unread == 0) {
+ if (hide) {
+ cat_node.style.display = "none";
+ } else {
+ cat_node.style.display = "list-item";
+ }
+ }
+// debug("unread for category: " + cat_unread);
}
function selectTableRow(r, do_select) {