diff options
Diffstat (limited to 'viewfeed.js')
-rw-r--r-- | viewfeed.js | 137 |
1 files changed, 45 insertions, 92 deletions
diff --git a/viewfeed.js b/viewfeed.js index 6e220bb4e..0e11a6080 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -25,47 +25,35 @@ function headlines_callback2(transport, feed_cur_page) { var is_cat = false; var feed_id = false; - if (transport.responseXML) { - var headlines = transport.responseXML.getElementsByTagName("headlines")[0]; - if (headlines) { - is_cat = headlines.getAttribute("is_cat"); - feed_id = headlines.getAttribute("id"); - setActiveFeedId(feed_id, is_cat); - } - } - - var update_btn = document.forms["main_toolbar_form"].update; - - update_btn.disabled = !(feed_id >= 0 && !is_cat); + var reply; try { - if (feed_cur_page == 0) { - $("headlines-frame").scrollTop = 0; - } - } catch (e) { }; + reply = JSON.parse(transport.responseText); + } catch (e) { + console.error(e); + } - if (transport.responseXML) { - var response = transport.responseXML; + if (reply) { - var headlines = response.getElementsByTagName("headlines")[0]; + is_cat = reply['headlines']['is_cat']; + feed_id = reply['headlines']['id']; - var headlines_content = headlines.getElementsByTagName("content")[0]; - var headlines_toolbar = headlines.getElementsByTagName("toolbar")[0]; + setActiveFeedId(feed_id, is_cat); - var headlines_info = response.getElementsByTagName("headlines-info")[0]; + var update_btn = document.forms["main_toolbar_form"].update; - if (headlines_info) - headlines_info = JSON.parse(headlines_info.firstChild.nodeValue); - else { - console.error("didn't find headlines-info object in response"); - return; - } + update_btn.disabled = !(feed_id >= 0 && !is_cat); + + try { + if (feed_cur_page == 0) { + $("headlines-frame").scrollTop = 0; + } + } catch (e) { }; - var headlines_count = headlines_info.count; - var headlines_unread = headlines_info.unread; - var disable_cache = headlines_info.disable_cache; + var headlines_count = reply['headlines-info']['count']; + var headlines_unread = reply['headlines-info']['unread']; - vgroup_last_feed = headlines_info.vgroup_last_feed; + vgroup_last_feed = reply['headlines-info']['vgroup_last_feed']; if (parseInt(headlines_count) < getInitParam("default_article_limit")) { _infscroll_disable = 1; @@ -73,82 +61,49 @@ function headlines_callback2(transport, feed_cur_page) { _infscroll_disable = 0; } - var counters = response.getElementsByTagName("counters")[0]; - var articles = response.getElementsByTagName("article"); - var runtime_info = response.getElementsByTagName("runtime-info"); + var counters = reply['counters']; + var articles = reply['articles']; + var runtime_info = reply['runtime-info']; if (feed_cur_page == 0) { - if (headlines) { - dijit.byId("headlines-frame").attr('content', - headlines_content.firstChild.nodeValue); - - dijit.byId("headlines-toolbar").attr('content', - headlines_toolbar.firstChild.nodeValue); - - initHeadlinesMenu(); + dijit.byId("headlines-frame").attr('content', + reply['headlines']['content']); -/* var cache_prefix = ""; + dijit.byId("headlines-toolbar").attr('content', + reply['headlines']['toolbar']); - if (is_cat) { - cache_prefix = "C:"; - } else { - cache_prefix = "F:"; - } - - cache_invalidate(cache_prefix + feed_id); + initHeadlinesMenu(); - if (!disable_cache) { - cache_inject(cache_prefix + feed_id, - $("headlines-frame").innerHTML, headlines_unread); - } */ - - } else { - console.warn("headlines_callback: returned no data"); - dijit.byId("headlines-frame").attr('content', - "<div class='whiteBox'>" + - __('Could not update headlines (missing XML data)') + "</div>"); - - } } else { - if (headlines) { - if (headlines_count > 0) { - console.log("adding some more headlines..."); + if (headlines_count > 0) { + console.log("adding some more headlines..."); - var c = dijit.byId("headlines-frame"); - var ids = getSelectedArticleIds2(); + var c = dijit.byId("headlines-frame"); + var ids = getSelectedArticleIds2(); - //c.attr('content', c.attr('content') + - // headlines_content.firstChild.nodeValue); + $("headlines-tmp").innerHTML = reply['headlines']['content']; - $("headlines-tmp").innerHTML = headlines_content.firstChild.nodeValue; - - $$("#headlines-tmp > div").each(function(row) { - c.domNode.appendChild(row); - }); + $$("#headlines-tmp > div").each(function(row) { + c.domNode.appendChild(row); + }); - console.log("restore selected ids: " + ids); + console.log("restore selected ids: " + ids); - for (var i = 0; i < ids.length; i++) { - markHeadline(ids[i]); - } + for (var i = 0; i < ids.length; i++) { + markHeadline(ids[i]); + } - initHeadlinesMenu(); + initHeadlinesMenu(); - } else { - console.log("no new headlines received"); - } } else { - console.warn("headlines_callback: returned no data"); - notify_error("Error while trying to load more headlines"); + console.log("no new headlines received"); } - } if (articles) { for (var i = 0; i < articles.length; i++) { - var a_id = articles[i].getAttribute("id"); - //console.log("found id: " + a_id); - cache_inject(a_id, articles[i].firstChild.nodeValue); + var a_id = articles[i]['id']; + cache_inject(a_id, articles[i]['content']); } } else { console.log("no cached articles received"); @@ -162,11 +117,9 @@ function headlines_callback2(transport, feed_cur_page) { } else { console.warn("headlines_callback: returned no XML object"); dijit.byId("headlines-frame").attr('content', "<div class='whiteBox'>" + - __('Could not update headlines (missing XML object)') + "</div>"); + __('Could not update headlines (invalid object received)') + "</div>"); } - - _feed_cur_page = feed_cur_page; _infscroll_request_sent = 0; |