From 0a6c4846cd819d8d0f50e184a45569e70e22ec4d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 1 Aug 2006 05:13:48 +0100 Subject: category search fixes, search dialog now searches in category view --- backend.php | 24 +++++++++++++++++++----- feedlist.js | 4 +++- functions.js | 4 ++++ functions.php | 33 ++++++++++++++++++++++++++------- tt-rss.js | 3 ++- 5 files changed, 54 insertions(+), 14 deletions(-) diff --git a/backend.php b/backend.php index bd53354f2..6f4c932fb 100644 --- a/backend.php +++ b/backend.php @@ -2537,7 +2537,12 @@ print "
"; - $active_feed_id = db_escape_string($_GET["param"]); + #$active_feed_id = db_escape_string($_GET["param"]); + + $params = split(":", db_escape_string($_GET["param"])); + + $active_feed_id = $params[0]; + $is_cat = $params[1] == "true"; print "
Search:"; @@ -2553,16 +2558,25 @@ "; $feed_title = getFeedTitle($link, $active_feed_id); - $feed_cat_title = getFeedCatTitle($link, $active_feed_id); + + if (!$is_cat) { + $feed_cat_title = getFeedCatTitle($link, $active_feed_id); + } else { + $feed_cat_title = getCategoryTitle($link, $active_feed_id); + } - if ($active_feed_id) { + if ($active_feed_id && !$is_cat) { print ""; } else { print ""; } - if (get_pref($link, 'ENABLE_FEED_CATS') && $active_feed_id && $active_feed_id > 0) { - print ""; + if ($is_cat) { + $cat_preselected = "selected"; + } + + if (get_pref($link, 'ENABLE_FEED_CATS') && $active_feed_id >= 0) { + print ""; } else { print ""; } diff --git a/feedlist.js b/feedlist.js index 97d74ba2b..dd00c4da9 100644 --- a/feedlist.js +++ b/feedlist.js @@ -12,7 +12,7 @@ function viewfeed(feed, skip, subop, doc, is_cat, subop_param) { if (!doc) doc = parent.document; enableHotkeys(); - + var toolbar_query = parent.Form.serialize("main_toolbar_form"); var toolbar_form = parent.document.forms["main_toolbar_form"]; @@ -55,6 +55,8 @@ function viewfeed(feed, skip, subop, doc, is_cat, subop_param) { setActiveFeedId(feed); + getMainContext().active_feed_is_cat = is_cat; + if (subop == "MarkAllRead") { var feedr = document.getElementById("FEEDR-" + feed); diff --git a/functions.js b/functions.js index 853f36e19..64fac6135 100644 --- a/functions.js +++ b/functions.js @@ -462,6 +462,10 @@ function getActiveFeedId() { } } +function activeFeedIsCat() { + return getMainContext().active_feed_is_cat; +} + function setActiveFeedId(id) { // return setCookie("ttrss_vf_actfeed", id); try { diff --git a/functions.php b/functions.php index a58613ccb..65b374e1b 100644 --- a/functions.php +++ b/functions.php @@ -1972,7 +1972,7 @@ OR UPPER(ttrss_entries.content) LIKE UPPER('%$k%'))"); } - $search_query_part = implode("AND", $query_keywords) . "AND"; + $search_query_part = implode("AND", $query_keywords) . " AND "; } else if ($match_on == "title") { @@ -1980,7 +1980,7 @@ array_push($query_keywords, "(UPPER(ttrss_entries.title) LIKE UPPER('%$k%'))"); } - $search_query_part = implode("AND", $query_keywords) . "AND"; + $search_query_part = implode("AND", $query_keywords) . " AND "; } else if ($match_on == "content") { @@ -1988,7 +1988,7 @@ array_push($query_keywords, "(UPPER(ttrss_entries.content) LIKE UPPER('%$k%'))"); } - $search_query_part = implode("AND", $query_keywords) . "AND"; + $search_query_part = implode("AND", $query_keywords) . " AND "; } } else { $search_query_part = ""; @@ -2032,10 +2032,17 @@ } else if ($feed >= 0 && $search && $search_mode == "this_cat") { $vfeed_query_part = "ttrss_feeds.title AS feed_title,"; - - $tmp_result = db_query($link, "SELECT id - FROM ttrss_feeds WHERE cat_id = - (SELECT cat_id FROM ttrss_feeds WHERE id = '$feed') AND id != '$feed'"); + + $tmp_result = false; + + if ($cat_view) { + $tmp_result = db_query($link, "SELECT id + FROM ttrss_feeds WHERE cat_id = '$feed'"); + } else { + $tmp_result = db_query($link, "SELECT id + FROM ttrss_feeds WHERE cat_id = (SELECT cat_id FROM ttrss_feeds + WHERE id = '$feed') AND id != '$feed'"); + } $cat_siblings = array(); @@ -2255,4 +2262,16 @@ } + function getCategoryTitle($link, $cat_id) { + + $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"; + } + } + ?> diff --git a/tt-rss.js b/tt-rss.js index 0a17c14c3..538e3203c 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -12,6 +12,7 @@ var firsttime_update = true; var last_refetch = 0; var cookie_lifetime = 0; var active_feed_id = 0; +var active_feed_is_cat = false; var xmlhttp = Ajax.getTransport(); @@ -433,7 +434,7 @@ function quickMenuGo(opid) { } if (opid == "qmcSearch") { - displayDlg("search", getActiveFeedId()); + displayDlg("search", getActiveFeedId() + ":" + activeFeedIsCat()); return; } -- cgit v1.2.3