]> git.wh0rd.org - tt-rss.git/blobdiff - feedlist.js
misc layout fixes
[tt-rss.git] / feedlist.js
index 1c2adc887906689ae5714e9bbb81174019f1d55d..e0ffae7f18d835ba57d29c4f068c752b5ecc156e 100644 (file)
@@ -48,7 +48,7 @@ function loadMoreHeadlines() {
 }
 
 
-function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) {
+function viewfeed(feed, subop, is_cat, offset, background, infscroll_req) {
        try {
                if (is_cat == undefined)
                        is_cat = false;
@@ -58,23 +58,52 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) {
                if (subop == undefined) subop = '';
                if (offset == undefined) offset = 0;
                if (background == undefined) background = false;
-               if (infscrol_req == undefined) infscrol_req = false;
+               if (infscroll_req == undefined) infscroll_req = false;
 
                last_requested_article = 0;
 
                var cached_headlines = false;
 
-               if (feed == getActiveFeedId())
+               if (feed == getActiveFeedId()) {
                        cache_delete("feed:" + feed + ":" + is_cat);
-               else
+               } else {
                        cached_headlines = cache_get("feed:" + feed + ":" + is_cat);
 
-               if (offset == 0)
+                       // switching to a different feed, we might as well catchup stuff visible
+                       // in headlines buffer (if any)
+                       if (!background && getInitParam("cdm_auto_catchup") == 1 && parseInt(getActiveFeedId()) > 0) {
+
+                               $$("#headlines-frame > div[id*=RROW][class*=Unread]").each(
+                                       function(child) {
+                                               var hf = $("headlines-frame");
+
+                                               if (hf.scrollTop + hf.offsetHeight >=
+                                                               child.offsetTop + child.offsetHeight) {
+
+                                                       var id = child.id.replace("RROW-", "");
+
+                                                       if (catchup_id_batch.indexOf(id) == -1)
+                                                               catchup_id_batch.push(id);
+
+                                               }
+
+                                               if (catchup_id_batch.length > 0) {
+                                                       window.clearTimeout(catchup_timeout_id);
+
+                                                       if (!_infscroll_request_sent) {
+                                                               catchup_timeout_id = window.setTimeout('catchupBatchedArticles()',
+                                                                       2000);
+                                                       }
+                                               }
+
+                                       });
+                       }
+               }
+
+               if (offset == 0 && !background)
                        dijit.byId("content-tabs").selectChild(
                                dijit.byId("content-tabs").getChildren()[0]);
 
-               var force_nocache = false;
-
                if (!background) {
                        if (getActiveFeedId() != feed || offset == 0) {
                                active_post_id = 0;
@@ -180,7 +209,7 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) {
                        parameters: query,
                        onComplete: function(transport) {
                                setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif');
-                               headlines_callback2(transport, offset, background, infscrol_req);
+                               headlines_callback2(transport, offset, background, infscroll_req);
                        } });
 
        } catch (e) {
@@ -281,18 +310,14 @@ function displayNewContentPrompt(id) {
 
 function parse_counters(elems, scheduled_call) {
        try {
-
-               var feeds_found = 0;
-
                for (var l = 0; l < elems.length; l++) {
 
-                       var id = elems[l].id
+                       var id = elems[l].id;
                        var kind = elems[l].kind;
-                       var ctr = parseInt(elems[l].counter)
+                       var ctr = parseInt(elems[l].counter);
                        var error = elems[l].error;
                        var has_img = elems[l].has_img;
                        var updated = elems[l].updated;
-                       var title = elems[l].title;
 
                        if (id == "global-unread") {
                                global_unread = ctr;
@@ -305,8 +330,6 @@ function parse_counters(elems, scheduled_call) {
                                continue;
                        }
 
-                       var treeItem;
-
                        // TODO: enable new content notification for categories
 
                        if (!activeFeedIsCat() && id == getActiveFeedId()
@@ -457,3 +480,30 @@ function getNextUnreadFeed(feed, is_cat) {
        }
 }
 
+function catchupFeed(feed, is_cat) {
+       try {
+               var str = __("Mark all articles in %s as read?");
+               var fn = getFeedName(getActiveFeedId(), activeFeedIsCat());
+
+               str = str.replace("%s", fn);
+
+               if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) {
+                       return;
+               }
+
+               var catchup_query = "?op=rpc&subop=catchupFeed&feed_id=" +
+                       feed + "&is_cat=" + is_cat;
+
+               notify_progress("Loading, please wait...", true);
+
+               new Ajax.Request("backend.php", {
+                       parameters: catchup_query,
+                       onComplete: function(transport) {
+                                       handle_rpc_json(transport);
+                                       notify("");
+                               } });
+
+       } catch (e) {
+               exception_error("catchupFeed", e);
+       }
+}