summaryrefslogtreecommitdiff
path: root/viewfeed.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-03-18 12:55:45 +0300
committerAndrew Dolgov <[email protected]>2011-03-18 14:05:20 +0300
commitbd202c3f89af2d0b2d073841408212541d8031df (patch)
tree767f136e1a5c56a22499f06d7fd493ae31610606 /viewfeed.js
parent009646d23a166ed1bbb56d75aa27d5fcc719b5ce (diff)
backend/viewfeed: use JSON
Diffstat (limited to 'viewfeed.js')
-rw-r--r--viewfeed.js137
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;