]> git.wh0rd.org - tt-rss.git/commitdiff
collapsable categories
authorAndrew Dolgov <fox@madoka.spb.ru>
Tue, 13 Dec 2005 08:53:56 +0000 (09:53 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Tue, 13 Dec 2005 08:53:56 +0000 (09:53 +0100)
backend.php
feedlist.js
tt-rss.css
tt-rss.js

index 97b5c5197ffd321d5d95c117e88ccd8167c55e64..e8e4f992c24e9cd9055570e74e73da2c7e92b1e5 100644 (file)
                                                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"];
                                $total = $line["total"];
                                $unread = $line["unread"];
 
+                               $cat_id = $line["cat_id"];
+
                                $tmp_category = $line["category"];
 
                                if (!$tmp_category) {
                                        }
                                
                                        $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, 
                                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);
 
        }
index a974afdb279e7e7d78abfbec8a6d4efe768da758..ead7948a1c6327c6467b30404f861dbde84417d0 100644 (file)
@@ -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;
index 9f0b85874f6045d6fa5aacaca8adbb9135f8743d..28387a309e71bb39c376a84be059e4ae573fc8e0 100644 (file)
@@ -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;
index b47e3bd549b59e24bf49b4efa8ff94e140e57d63..c4cd2db74714b44e0a604bebb1162ae86a62f00c 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -602,4 +602,3 @@ function toggleDispRead() {
 
 }
 
-