]> git.wh0rd.org - tt-rss.git/blobdiff - viewfeed.js
display N/A instead of undefined in fatal errors when ext_info is not present
[tt-rss.git] / viewfeed.js
index 6f018d19ca2e079206047ef3f0033eab83d7e697..acce5310d8f714965e4deb26328229fc2dfb7d15 100644 (file)
@@ -343,6 +343,10 @@ function article_callback2(transport, id, feed_id) {
 
                        showArticleInHeadlines(id);     
 
+                       if (db) {
+                               db.execute("UPDATE articles SET unread = 0 WHERE id = ?", [id]);
+                       }
+
                        var reply = transport.responseXML.firstChild.firstChild;
                
                } else {
@@ -362,14 +366,16 @@ function article_callback2(transport, id, feed_id) {
                        setTimeout('updateFeedList(false, false)', 50);                 
                        _reload_feedlist_after_view = false;
                } else {
-                       var counters = transport.responseXML.getElementsByTagName("counters")[0];
+                       if (transport.responseXML) {
+                               var counters = transport.responseXML.getElementsByTagName("counters")[0];
 
-                       if (counters) {
-                               debug("parsing piggybacked counters: " + counters);
-                               parse_counters(counters, false);
-                       } else {
-                               debug("counters container not found in reply, requesting...");
-                               request_counters();
+                               if (counters) {
+                                       debug("parsing piggybacked counters: " + counters);
+                                       parse_counters(counters, false);
+                               } else {
+                                       debug("counters container not found in reply, requesting...");
+                                       request_counters();
+                               }
                        }
                }
 
@@ -383,7 +389,9 @@ function view(id, feed_id, skip_history) {
        
        try {
                debug("loading article: " + id + "/" + feed_id);
-       
+
+               if (offline_mode) return view_offline(id, feed_id);
+
                var cached_article = cache_find(id);
 
                debug("cache check result: " + (cached_article != false));
@@ -535,6 +543,10 @@ function toggleMark(id, client_only, no_effects) {
                        mark_img.alt = __("Unstar article");
                        query = query + "&mark=1";
 
+                       if (db) {
+                               db.execute("UPDATE articles SET marked = 1 WHERE id = ?", [id]);
+                       }
+
                } else {
                        //mark_img.src = "images/mark_unset.png";
                        mark_img.alt = __("Please wait...");
@@ -546,8 +558,15 @@ function toggleMark(id, client_only, no_effects) {
                                mark_img.src = mark_img.src.replace("mark_set", "mark_unset");
                                mark_img.alt = __("Star article");
                        }
+
+                       if (db) {
+                               db.execute("UPDATE articles SET marked = 0 WHERE id = ?", [id]);
+                       }
+
                }
 
+               update_local_feedlist_counters();
+
                if (!client_only) {
                        debug(query);
 
@@ -792,6 +811,12 @@ function toggleUnread(id, cmode, effect) {
                                } else {
                                        row.className = nc + "Unread";
                                }
+
+                               if (db) {
+                                       db.execute("UPDATE articles SET unread = not unread "+
+                                               "WHERE id = ?", [id]);
+                               }
+
                        } else if (cmode == 0) {
                                row.className = nc;
 
@@ -800,10 +825,24 @@ function toggleUnread(id, cmode, effect) {
                                                afterFinish: toggleUnread_afh,
                                                queue: { position:'end', scope: 'TMRQ-' + id, limit: 1 } } );
                                } 
+
+                               if (db) {
+                                       db.execute("UPDATE articles SET unread = 0 "+
+                                               "WHERE id = ?", [id]);
+                               }
+
                        } else if (cmode == 1) {
                                row.className = nc + "Unread";
+
+                               if (db) {
+                                       db.execute("UPDATE articles SET unread = 1 "+
+                                               "WHERE id = ?", [id]);
+                               }
+
                        }
 
+                       update_local_feedlist_counters();
+
                        // Disable unmarking as selected for the time being (16.05.08) -fox
                        if (is_selected) row.className = row.className + "Selected";
 
@@ -821,7 +860,6 @@ function toggleUnread(id, cmode, effect) {
 
                }
 
-
        } catch (e) {
                exception_error("toggleUnread", e);
        }
@@ -1501,11 +1539,16 @@ function cache_find(id) {
 
        if (db) {
                var rs = db.execute("SELECT article FROM cache WHERE id = ?", [id]);
+               var a = false;
 
                if (rs.isValidRow()) {
-                       return rs.field(0);
+                       var a = rs.field(0);                    
                }
 
+               rs.close();
+
+               return a;
+
        } else {
                for (var i = 0; i < article_cache.length; i++) {
                        if (article_cache[i]["id"] == id) {
@@ -1521,11 +1564,16 @@ function cache_find_param(id, param) {
        if (db) {
                var rs = db.execute("SELECT article FROM cache WHERE id = ? AND param = ?",
                        [id, param]);
+               var a = false;
 
                if (rs.isValidRow()) {
-                       return rs.field(0);
+                       a = rs.field(0);
                }
 
+               rs.close();
+
+               return a;
+
        } else {
                for (var i = 0; i < article_cache.length; i++) {
                        if (article_cache[i]["id"] == id && article_cache[i]["param"] == param) {
@@ -1541,11 +1589,16 @@ function cache_check(id) {
        if (db) {
                var rs = db.execute("SELECT COUNT(*) AS c FROM cache WHERE id = ?",
                        [id]);
+               var a = false;
 
                if (rs.isValidRow()) {
-                       return rs.field(0) != "0";
+                        a = rs.field(0) != "0";
                }
 
+               rs.close();
+
+               return a;
+
        } else {
                for (var i = 0; i < article_cache.length; i++) {
                        if (article_cache[i]["id"] == id) {
@@ -1561,11 +1614,16 @@ function cache_check_param(id, param) {
        if (db) {
                var rs = db.execute("SELECT COUNT(*) AS c FROM cache WHERE id = ? AND param = ?",
                        [id, param]);
+               var a = false;
 
                if (rs.isValidRow()) {
-                       return rs.field(0) != "0";
+                       a = rs.field(0) != "0";
                }
 
+               rs.close();
+
+               return a;
+
        } else {
                for (var i = 0; i < article_cache.length; i++) {
                        if (article_cache[i]["id"] == id && article_cache[i]["param"] == param) {
@@ -1581,7 +1639,10 @@ function cache_expire() {
                var date = new Date();
                var ts = Math.round(date.getTime() / 1000);
 
-               db.execute("DELETE FROM cache WHERE added < ? - 600", [ts]);
+               db.execute("DELETE FROM cache WHERE added < ? - 1800 AND id LIKE 'FEEDLIST'", [ts]);
+               db.execute("DELETE FROM cache WHERE added < ? - 600 AND (id LIKE 'F:%' OR id LIKE 'C:%')", [ts]);
+               db.execute("DELETE FROM cache WHERE added < ? - 86400", [ts]);
+
 
        } else {
                while (article_cache.length > 25) {
@@ -1633,9 +1694,9 @@ function cdmClicked(id) {
                        var id = elem.id.replace("RROW-", "");
                        active_post_id = id;
 
-                       cdmSelectArticles("none");
+//                     cdmSelectArticles("none");
                        toggleUnread(id, 0, true);
-                       toggleSelected(id);
+//                     toggleSelected(id);
 
                }
        } catch (e) {