diff options
author | Andrew Dolgov <[email protected]> | 2005-12-13 09:53:56 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-12-13 09:53:56 +0100 |
commit | fe14aeb84c58141ca1fb4acde3fd6082c95a80c9 (patch) | |
tree | e649004052573c7ea46400e58e5d37d27496231e | |
parent | 28bcadff2b748ac06d05be1a59af4e320d924bf6 (diff) |
collapsable categories
-rw-r--r-- | backend.php | 29 | ||||
-rw-r--r-- | feedlist.js | 49 | ||||
-rw-r--r-- | tt-rss.css | 8 | ||||
-rw-r--r-- | tt-rss.js | 1 |
4 files changed, 83 insertions, 4 deletions
diff --git a/backend.php b/backend.php index 97b5c5197..e8e4f992c 100644 --- a/backend.php +++ b/backend.php @@ -372,7 +372,10 @@ AND ttrss_user_entries.ref_id = ttrss_entries.id AND owner_uid = '$owner_uid') as unread, (SELECT title FROM ttrss_feed_categories - WHERE id = cat_id) AS category + WHERE id = cat_id) AS category, + cat_id, + (SELECT collapsed FROM ttrss_feed_categories + WHERE id = cat_id) AS collapsed FROM ttrss_feeds WHERE owner_uid = '$owner_uid' ORDER BY $order_by_qpart"); $actid = $_GET["actid"]; @@ -395,6 +398,8 @@ $total = $line["total"]; $unread = $line["unread"]; + $cat_id = $line["cat_id"]; + $tmp_category = $line["category"]; if (!$tmp_category) { @@ -420,9 +425,19 @@ } $category = $tmp_category; + + $collapsed = $line["collapsed"]; + + if ($collapsed == "t" || $collapsed == "1") { + $holder_class = "invisible"; + $tmp_category .= "..."; + } else { + $holder_class = ""; + } - print "<li class=\"feedCat\">$category</li>"; - print "<li id=\"feedCatHolder\"><ul class=\"feedCatList\">"; + print "<li class=\"feedCat\" id=\"FCAT-$cat_id\"> + <a href=\"javascript:toggleCollapseCat($cat_id)\">$tmp_category</a></li>"; + print "<li id=\"feedCatHolder\" class=\"$holder_class\"><ul class=\"feedCatList\">"; } printFeedEntry($feed_id, $class, $feed, $unread, @@ -648,6 +663,14 @@ last_read = NOW(),unread = false WHERE owner_uid = " . $_SESSION["uid"]); } + if ($subop == "collapse") { + $cat_id = db_escape_string($_GET["cid"]); + db_query($link, "UPDATE ttrss_feed_categories SET + collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " . + $_SESSION["uid"]); + return; + } + outputFeedList($link, $tags); } diff --git a/feedlist.js b/feedlist.js index a974afdb2..ead7948a1 100644 --- a/feedlist.js +++ b/feedlist.js @@ -1,3 +1,23 @@ +var xmlhttp = false; + +/*@cc_on @*/ +/*@if (@_jscript_version >= 5) +// JScript gives us Conditional compilation, we can cope with old IE versions. +// and security blocked creation of the objects. +try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); +} catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + xmlhttp = false; + } +} +@end @*/ + +if (!xmlhttp && typeof XMLHttpRequest!='undefined') { + xmlhttp = new XMLHttpRequest(); +} function viewfeed(feed, skip, subop, doc) { try { @@ -136,6 +156,35 @@ function localHotkeyHandler(keycode) { } +function toggleCollapseCat(cat) { + try { + if (!xmlhttp_ready(xmlhttp)) { + printLockingError(); + return; + } + + var cat_elem = document.getElementById("FCAT-" + cat); + var cat_list = cat_elem.nextSibling; + var caption = cat_elem.lastChild; + + if (cat_list.className.match("invisible")) { + cat_list.className = ""; + caption.innerHTML = caption.innerHTML.replace("...", ""); + } else { + cat_list.className = "invisible"; + caption.innerHTML = caption.innerHTML + "..."; + } + + xmlhttp_rpc.open("GET", "backend.php?op=feeds&subop=collapse&cid=" + + param_escape(cat), true); + xmlhttp_rpc.onreadystatechange=rpc_pnotify_callback; + xmlhttp_rpc.send(null); + + } catch (e) { + exception_error(e); + } +} + function init() { hideOrShowFeeds(document, getCookie("ttrss_vf_hreadf") == 1); document.onkeydown = hotkey_handler; diff --git a/tt-rss.css b/tt-rss.css index 9f0b85874..28387a309 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -153,6 +153,14 @@ ul.feedList li.feedCat { font-size : small; } +ul.feedList li.feedCat a { + color : #707070; +} + +ul.feedList li.feedCat a:hover { + color : #5050aa; +} + ul.feedCatList { list-style-type : none; margin : 0px; @@ -602,4 +602,3 @@ function toggleDispRead() { } - |