diff options
Diffstat (limited to 'viewfeed.js')
-rw-r--r-- | viewfeed.js | 206 |
1 files changed, 116 insertions, 90 deletions
diff --git a/viewfeed.js b/viewfeed.js index a69c012a2..e898f84a1 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -45,115 +45,141 @@ function catchup_callback2(transport, callback) { } } -function headlines_callback2(transport, active_feed_id, active_feed_is_cat, feed_cur_page) { - debug("headlines_callback2 [page=" + feed_cur_page + "]"); - - var f = document.getElementById("headlines-frame"); +function headlines_callback2(transport, active_feed_id, is_cat, feed_cur_page) { try { - if (feed_cur_page == 0) { - debug("resetting headlines scrollTop"); - f.scrollTop = 0; - } - } catch (e) { }; - - if (transport.responseXML) { - var headlines = transport.responseXML.getElementsByTagName("headlines")[0]; - var headlines_count_obj = transport.responseXML.getElementsByTagName("headlines-count")[0]; - var headlines_count = headlines_count_obj.getAttribute("value"); + debug("headlines_callback2 [page=" + feed_cur_page + "]"); - if (headlines_count == 0) _infscroll_disable = 1; + var feeds = document.getElementById("feedList").getElementsByTagName("LI"); - var counters = transport.responseXML.getElementsByTagName("counters")[0]; - var articles = transport.responseXML.getElementsByTagName("article"); - var runtime_info = transport.responseXML.getElementsByTagName("runtime-info"); - - if (feed_cur_page == 0) { - if (headlines) { - f.innerHTML = headlines.firstChild.nodeValue; - } else { - debug("headlines_callback: returned no data"); - f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>"; + for (var i = 0; i < feeds.length; i++) { + if (feeds[i].id && feeds[i].id.match("FEEDR-")) { + feeds[i].className = feeds[i].className.replace("Selected", ""); + } + } + setActiveFeedId(active_feed_id); + + if (is_cat != undefined) { + active_feed_is_cat = is_cat; + } + + if (!is_cat) { + var feedr = document.getElementById("FEEDR-" + active_feed_id); + if (feedr && !feedr.className.match("Selected")) { + feedr.className = feedr.className + "Selected"; + } + } + + var f = document.getElementById("headlines-frame"); + try { + if (feed_cur_page == 0) { + debug("resetting headlines scrollTop"); + f.scrollTop = 0; } - } else { - if (headlines) { - if (headlines_count > 0) { - debug("adding some more headlines..."); - - var c = document.getElementById("headlinesList"); + } catch (e) { }; + + if (transport.responseXML) { + var headlines = transport.responseXML.getElementsByTagName("headlines")[0]; + var headlines_count_obj = transport.responseXML.getElementsByTagName("headlines-count")[0]; + + var headlines_count = headlines_count_obj.getAttribute("value"); + + if (headlines_count == 0) _infscroll_disable = 1; + + var counters = transport.responseXML.getElementsByTagName("counters")[0]; + var articles = transport.responseXML.getElementsByTagName("article"); + var runtime_info = transport.responseXML.getElementsByTagName("runtime-info"); + + if (feed_cur_page == 0) { + if (headlines) { + f.innerHTML = headlines.firstChild.nodeValue; + } else { + debug("headlines_callback: returned no data"); + f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>"; + + } + } else { + if (headlines) { + if (headlines_count > 0) { + debug("adding some more headlines..."); + + var c = document.getElementById("headlinesList"); + + if (!c) { + c = document.getElementById("headlinesInnerContainer"); + } - if (!c) { - c = document.getElementById("headlinesInnerContainer"); + c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue; + } else { + debug("no new headlines received"); } - - c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue; } else { - debug("no new headlines received"); + debug("headlines_callback: returned no data"); + notify_error("Error while trying to load more headlines"); + } + + } + + if (articles) { + for (var i = 0; i < articles.length; i++) { + var a_id = articles[i].getAttribute("id"); + debug("found id: " + a_id); + cache_inject(a_id, articles[i].firstChild.nodeValue); } } else { - debug("headlines_callback: returned no data"); - notify_error("Error while trying to load more headlines"); + debug("no cached articles received"); } - - } - - if (articles) { - for (var i = 0; i < articles.length; i++) { - var a_id = articles[i].getAttribute("id"); - debug("found id: " + a_id); - cache_inject(a_id, articles[i].firstChild.nodeValue); + + if (counters) { + debug("parsing piggybacked counters: " + counters); + parse_counters(counters, false); + } else { + debug("counters container not found in reply"); } + + if (runtime_info) { + debug("parsing runtime info: " + runtime_info[0]); + parse_runtime_info(runtime_info[0]); + } else { + debug("counters container not found in reply"); + } + } else { - debug("no cached articles received"); + debug("headlines_callback: returned no XML object"); + f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>"; } - - if (counters) { - debug("parsing piggybacked counters: " + counters); - parse_counters(counters, false); - } else { - debug("counters container not found in reply"); + + if (typeof correctPNG != 'undefined') { + correctPNG(); } - - if (runtime_info) { - debug("parsing runtime info: " + runtime_info[0]); - parse_runtime_info(runtime_info[0]); + + if (_cdm_wd_timeout) window.clearTimeout(_cdm_wd_timeout); + + if (!document.getElementById("headlinesList") && + getInitParam("cdm_auto_catchup") == 1) { + debug("starting CDM watchdog"); + _cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 5000); + _cdm_wd_vishist = new Array(); } else { - debug("counters container not found in reply"); + debug("not in CDM mode or watchdog disabled"); } - - } else { - debug("headlines_callback: returned no XML object"); - f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>"; - } - - if (typeof correctPNG != 'undefined') { - correctPNG(); - } - - if (_cdm_wd_timeout) window.clearTimeout(_cdm_wd_timeout); - - if (!document.getElementById("headlinesList") && - getInitParam("cdm_auto_catchup") == 1) { - debug("starting CDM watchdog"); - _cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 5000); - _cdm_wd_vishist = new Array(); - } else { - debug("not in CDM mode or watchdog disabled"); - } - - if (_tag_cdm_scroll) { - try { - document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll; - _tag_cdm_scroll = false; - debug("resetting headlinesInner scrollTop"); - - } catch (e) { } + + if (_tag_cdm_scroll) { + try { + document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll; + _tag_cdm_scroll = false; + debug("resetting headlinesInner scrollTop"); + + } catch (e) { } + } + + _feed_cur_page = feed_cur_page; + + notify(""); + } catch (e) { + exception_error("headlines_callback2", e); } - - _feed_cur_page = feed_cur_page; - - notify(""); } function render_article(article) { |