1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-18 19:51:28 +00:00

implement category browsing

This commit is contained in:
Andrew Dolgov
2006-03-04 08:09:13 +01:00
parent 9e2cdd5135
commit ff2c6e6a31
2 changed files with 100 additions and 32 deletions

View File

@@ -584,9 +584,14 @@
$cat_id = sprintf("%d", $cat_id); $cat_id = sprintf("%d", $cat_id);
print "<li class=\"feedCat\" id=\"FCAT-$cat_id\"> print "<li class=\"feedCat\" id=\"FCAT-$cat_id\">
<a href=\"javascript:toggleCollapseCat($cat_id)\">$tmp_category <a href=\"javascript:toggleCollapseCat($cat_id)\">$tmp_category</a>
<a href=\"javascript:viewCategory($cat_id)\">
<span id=\"FCATCTR-$cat_id\" <span id=\"FCATCTR-$cat_id\"
class=\"$catctr_class\">($cat_unread unread)$ellipsis</span></a></li>"; class=\"$catctr_class\">($cat_unread unread)$ellipsis</span></a>
<!-- <div style=\"float : right\">
<a href=\"javascript:viewCategory($cat_id)\">[view]</a>
</div> -->
</li>";
// !!! NO SPACE before <ul...feedCatList - breaks firstChild DOM function // !!! NO SPACE before <ul...feedCatList - breaks firstChild DOM function
// -> keyboard navigation, etc. // -> keyboard navigation, etc.
@@ -1054,6 +1059,7 @@
$subop = $_GET["subop"]; $subop = $_GET["subop"];
$view_mode = $_GET["view"]; $view_mode = $_GET["view"];
$limit = $_GET["limit"]; $limit = $_GET["limit"];
$cat_view = $_GET["cat"];
if (!$feed) { if (!$feed) {
return; return;
@@ -1112,17 +1118,43 @@
// fixme update_rss_feed... // fixme update_rss_feed...
} */ } */
$tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds if ($cat_view) {
WHERE id = '$feed'"); $tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds
$feed_url = db_fetch_result($tmp_result, 0, "feed_url"); WHERE cat_id = '$feed' AND owner_uid = " . $_SESSION["uid"]);
update_rss_feed($link, $feed_url, $feed, ENABLE_UPDATE_DAEMON);
while ($tmp_line = db_fetch_assoc($tmp_result)) {
$feed_url = $tmp_line["feed_url"];
update_rss_feed($link, $feed_url, $feed, ENABLE_UPDATE_DAEMON);
}
} else {
$tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds
WHERE id = '$feed'");
$feed_url = db_fetch_result($tmp_result, 0, "feed_url");
update_rss_feed($link, $feed_url, $feed, ENABLE_UPDATE_DAEMON);
}
} }
if ($subop == "MarkAllRead") { if ($subop == "MarkAllRead") {
if (sprintf("%d", $feed) != 0) { if (sprintf("%d", $feed) != 0) {
if ($feed > 0) { if ($cat_view) {
$tmp_result = db_query($link, "SELECT id
FROM ttrss_feeds WHERE cat_id = '$feed' AND owner_uid = " .
$_SESSION["uid"]);
while ($tmp_line = db_fetch_assoc($tmp_result)) {
$tmp_feed = $tmp_line["id"];
db_query($link, "UPDATE ttrss_user_entries
SET unread = false,last_read = NOW()
WHERE feed_id = '$tmp_feed' AND owner_uid = " . $_SESSION["uid"]);
}
} else if ($feed > 0) {
$tmp_result = db_query($link, "SELECT id $tmp_result = db_query($link, "SELECT id
FROM ttrss_feeds WHERE parent_feed = '$feed' FROM ttrss_feeds WHERE parent_feed = '$feed'
@@ -1285,23 +1317,30 @@
} else if ($feed >= 0) { } else if ($feed >= 0) {
$tmp_result = db_query($link, "SELECT id if ($cat_view) {
FROM ttrss_feeds WHERE parent_feed = '$feed'
ORDER BY cat_id,title");
$parent_ids = array();
if (db_num_rows($tmp_result) > 0) {
while ($p = db_fetch_assoc($tmp_result)) {
array_push($parent_ids, "feed_id = " . $p["id"]);
}
$query_strategy_part = sprintf("(feed_id = %d OR %s)",
$feed, implode(" OR ", $parent_ids));
$query_strategy_part = "cat_id = $feed";
$vfeed_query_part = "ttrss_feeds.title AS feed_title,"; $vfeed_query_part = "ttrss_feeds.title AS feed_title,";
} else { } else {
$query_strategy_part = "feed_id = '$feed'"; $tmp_result = db_query($link, "SELECT id
FROM ttrss_feeds WHERE parent_feed = '$feed'
ORDER BY cat_id,title");
$parent_ids = array();
if (db_num_rows($tmp_result) > 0) {
while ($p = db_fetch_assoc($tmp_result)) {
array_push($parent_ids, "feed_id = " . $p["id"]);
}
$query_strategy_part = sprintf("(feed_id = %d OR %s)",
$feed, implode(" OR ", $parent_ids));
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
} else {
$query_strategy_part = "feed_id = '$feed'";
}
} }
} else if ($feed == -1) { // starred virtual feed } else if ($feed == -1) { // starred virtual feed
$query_strategy_part = "marked = true"; $query_strategy_part = "marked = true";
@@ -1332,12 +1371,24 @@
} else if ($search && sprintf("%d", $feed) == 0) { } else if ($search && sprintf("%d", $feed) == 0) {
$feed_title = "Feed search results ($search, $feed)"; $feed_title = "Feed search results ($search, $feed)";
} else if ($feed > 0) { } else if ($feed > 0) {
$result = db_query($link, "SELECT title,site_url,last_error FROM ttrss_feeds
WHERE id = '$feed'");
$feed_title = db_fetch_result($result, 0, "title"); if ($cat_view) {
$feed_site_url = db_fetch_result($result, 0, "site_url");
$last_error = db_fetch_result($result, 0, "last_error"); $result = db_query($link, "SELECT title FROM ttrss_feed_categories
WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]);
$feed_title = db_fetch_result($result, 0, "title");
} else {
$result = db_query($link, "SELECT title,site_url,last_error FROM ttrss_feeds
WHERE id = '$feed' AND owner_uid = " . $_SESSION["uid"]);
$feed_title = db_fetch_result($result, 0, "title");
$feed_site_url = db_fetch_result($result, 0, "site_url");
$last_error = db_fetch_result($result, 0, "last_error");
}
} else if ($feed == -1) { } else if ($feed == -1) {
$feed_title = "Starred articles"; $feed_title = "Starred articles";

View File

@@ -1,5 +1,7 @@
var xmlhttp = false; var xmlhttp = false;
var cat_view_mode = false;
/*@cc_on @*/ /*@cc_on @*/
/*@if (@_jscript_version >= 5) /*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions. // JScript gives us Conditional compilation, we can cope with old IE versions.
@@ -22,7 +24,11 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp_rpc = new XMLHttpRequest(); xmlhttp_rpc = new XMLHttpRequest();
} }
function viewfeed(feed, skip, subop, doc) { function viewCategory(cat) {
viewfeed(cat, 0, '', false, true);
}
function viewfeed(feed, skip, subop, doc, is_cat) {
try { try {
if (!doc) doc = parent.document; if (!doc) doc = parent.document;
@@ -74,6 +80,10 @@ function viewfeed(feed, skip, subop, doc) {
// document.getElementById("ACTFEEDID").innerHTML = feed; // document.getElementById("ACTFEEDID").innerHTML = feed;
if (getActiveFeedId() != feed) {
cat_view_mode = is_cat;
}
setActiveFeedId(feed); setActiveFeedId(feed);
if (subop == "MarkAllRead") { if (subop == "MarkAllRead") {
@@ -81,10 +91,13 @@ function viewfeed(feed, skip, subop, doc) {
var feedr = document.getElementById("FEEDR-" + feed); var feedr = document.getElementById("FEEDR-" + feed);
var feedctr = document.getElementById("FEEDCTR-" + feed); var feedctr = document.getElementById("FEEDCTR-" + feed);
feedctr.className = "invisible"; if (feedr && feedctr) {
if (feedr.className.match("Unread")) { feedctr.className = "invisible";
feedr.className = feedr.className.replace("Unread", "");
if (feedr.className.match("Unread")) {
feedr.className = feedr.className.replace("Unread", "");
}
} }
} }
@@ -98,6 +111,10 @@ function viewfeed(feed, skip, subop, doc) {
searchbox.value = ""; searchbox.value = "";
} }
if (cat_view_mode) {
query = query + "&cat=1";
}
var headlines_frame = parent.frames["headlines-frame"]; var headlines_frame = parent.frames["headlines-frame"];
// alert(headlines_frame) // alert(headlines_frame)