]> git.wh0rd.org - tt-rss.git/blobdiff - tt-rss.js
various category/feed id clash fixes
[tt-rss.git] / tt-rss.js
index 0c3584c8eb704afe1c510b3759058b64833bce32..9ac5220fea88ecca931b6d4d2e4b298101b21083 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -6,15 +6,17 @@ var global_unread = -1;
 var active_title_text = "";
 var current_subtitle = "";
 var daemon_enabled = false;
+var daemon_refresh_only = false;
 var _qfd_deleted_feed = 0;
 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();
 
-var init_params = new Array();
+var init_params = new Object();
 
 function toggleTags() {
        display_tags = !display_tags;
@@ -70,12 +72,18 @@ function refetch_callback() {
                        if (error_code && error_code != 0) {
                                return fatalError(error_code, reply.getAttribute("error-msg"));
                        }
+
+                       var counters = reply.firstChild;
        
-                       parse_counters(reply, true);
+                       parse_counters(counters, true);
+
+                       var runtime_info = counters.nextSibling;
+
+                       parse_runtime_info(runtime_info);
 
                        debug("refetch_callback: done");
 
-                       if (!daemon_enabled) {
+                       if (!daemon_enabled && !daemon_refresh_only) {
                                notify("All feeds updated.");
                                updateTitle("");
                        } else {
@@ -139,7 +147,7 @@ function backend_sanity_check_callback() {
 
 function scheduleFeedUpdate(force) {
 
-       if (!daemon_enabled) {
+       if (!daemon_enabled && !daemon_refresh_only) {
                notify("Updating feeds, please wait.", true);
                updateTitle("Updating");
        }
@@ -173,7 +181,7 @@ function scheduleFeedUpdate(force) {
        var date = new Date();
 
        if (!xmlhttp_ready(xmlhttp) && last_refetch < date.getTime() / 1000 - 60) {
-               debug("xmlhttp seems to be stuck, aborting");
+               debug("<b>xmlhttp seems to be stuck, aborting</b>");
                xmlhttp.abort();
        }
 
@@ -183,7 +191,7 @@ function scheduleFeedUpdate(force) {
                xmlhttp.send(null);
        } else {
                debug("xmlhttp busy");
-               printLockingError();
+               //printLockingError();
        }   
 }
 
@@ -231,20 +239,20 @@ function catchupAllFeeds() {
 
 }
 
-function viewCurrentFeed(skip, subop) {
+function viewCurrentFeed(subop) {
 
        if (getActiveFeedId()) {
-               viewfeed(getActiveFeedId(), skip, subop);
+               viewfeed(getActiveFeedId(), subop);
        } else {
                disableContainerChildren("headlinesToolbar", false, document);
-               viewfeed(-1, skip, subop); // FIXME
+               viewfeed(-1, subop); // FIXME
        }
        return false; // block unneeded form submits
 }
 
-function viewfeed(feed, skip, subop) {
+function viewfeed(feed, subop) {
        var f = window.frames["feeds-frame"];
-       f.viewfeed(feed, skip, subop);
+       f.viewfeed(feed, subop);
 }
 
 function timeout() {
@@ -262,7 +270,7 @@ function resetSearch() {
 
        if (searchbox.value != "" && getActiveFeedId()) {       
                searchbox.value = "";
-               viewfeed(getActiveFeedId(), 0, "");
+               viewfeed(getActiveFeedId(), "");
        }
 }
 
@@ -359,9 +367,20 @@ function resize_feeds_frame() {
        var f = document.getElementById("feeds-frame");
        var tf = document.getElementById("mainFooter");
        var th = document.getElementById("mainHeader");
-                
-       f.style.height = document.body.scrollHeight - tf.scrollHeight - 
-               th.scrollHeight - 50 + "px";
+
+       var footer_height = 0;
+       var header_height = 0;
+
+       if (tf) {
+               footer_height = tf.scrollHeight;
+       }
+
+       if (th) {
+               header_height = th.scrollHeight;
+       }       
+        
+       f.style.height = document.body.scrollHeight - footer_height - 
+               header_height - 50 + "px";
 }
 
 function init_second_stage() {
@@ -380,7 +399,8 @@ function init_second_stage() {
                dropboxSelect(tb.view_mode, getInitParam("toolbar_view_mode"));
                dropboxSelect(tb.limit, getInitParam("toolbar_limit"));
 
-               daemon_enabled = getInitParam("daemon_enabled");
+               daemon_enabled = getInitParam("daemon_enabled") == 1;
+               daemon_refresh_only = getInitParam("daemon_refresh_only") == 1;
 
                // FIXME should be callled after window resize
 
@@ -389,15 +409,6 @@ function init_second_stage() {
 
                if (navigator.userAgent.match("Opera")) {
                        resize_feeds_frame();
-
-/*                     // fix headlines frame height for Opera
-                       var h = document.getElementById("headlines");
-                       var c = document.getElementById("content");
-                       var nh = document.body.scrollHeight * 0.25;
-       
-                       h.style.height = nh + "px";
-                       c.style.height = c.scrollHeight - nh + "px"; */
-                       
                }
 
                debug("second stage ok");
@@ -423,7 +434,7 @@ function quickMenuGo(opid) {
                }
        
                if (opid == "qmcSearch") {
-                       displayDlg("search", getActiveFeedId());
+                       displayDlg("search", getActiveFeedId() + ":" + activeFeedIsCat());
                        return;
                }
        
@@ -439,8 +450,10 @@ function quickMenuGo(opid) {
                                alert("Please select some feed first.");
                                return;
                        }
+
+                       var fn = getFeedName(actid);
        
-                       if (confirm("Unsubscribe from current feed?")) {
+                       if (confirm("Unsubscribe from " + fn + "?")) {
                                qfdDelete(actid);
                        }
                
@@ -479,9 +492,6 @@ function qfdDelete(feed_id) {
                return
        }
 
-//     var feeds_doc = window.frames["feeds-frame"].document;
-//     feeds_doc.location.href = "backend.php?op=error&msg=Loading,%20please wait...";
-
        _qfd_deleted_feed = feed_id;
 
        xmlhttp.open("GET", "backend.php?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id);
@@ -523,18 +533,42 @@ function toggleDispRead() {
        }
 }
 
-function fatalError(code, message) {
-       try {   
-               var fe = document.getElementById("fatal_error");
-               var fc = document.getElementById("fatal_error_msg");
+function parse_runtime_info(elem) {
+       var param = elem.firstChild;
 
-               fc.innerHTML = "Code " + code + ": " + message;
+       debug("parse_runtime_info");
 
-               fe.style.display = "block";
+       while (param) {
+               var k = param.getAttribute("key");
+               var v = param.getAttribute("value");
 
-       } catch (e) {
-               exception_error("fatalError", e);
+               debug("RI: " + k + " => " + v);
+
+               var w = document.getElementById("noDaemonWarning");
+               
+               if (w) {
+                       if (k == "daemon_is_running" && v != 1) {
+                               w.style.display = "block";
+                       } else {
+                               w.style.display = "none";
+                       }
+               }
+               param = param.nextSibling;
        }
 }
 
+function catchupCurrentFeed() {
+
+       var fn = getFeedName(getActiveFeedId(), active_feed_is_cat);
+       
+       var str = "Mark all articles in " + fn + " as read?";
+
+/*     if (active_feed_is_cat) {
+               str = "Mark all articles in this category as read?";
+       } */
+
+       if (confirm(str)) {
+               return viewCurrentFeed(0, 'MarkAllRead')
+       }
+}