diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 93d8f074b..510a9fd36 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -135,18 +135,13 @@ } if ($subop == "togglepref") { - print ""; + header("Content-Type: text/plain"); $key = db_escape_string($_REQUEST["key"]); - set_pref($link, $key, !get_pref($link, $key)); - $value = get_pref($link, $key); - print ""; - - print ""; - + print json_encode(array("param" =>$key, "value" => $value)); return; } @@ -166,6 +161,8 @@ } if ($subop == "mark") { + header("Content-Type: text/plain"); + $mark = $_REQUEST["mark"]; $id = db_escape_string($_REQUEST["id"]); @@ -180,51 +177,45 @@ $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } if ($subop == "delete") { + header("Content-Type: text/plain"); + $ids = db_escape_string($_REQUEST["ids"]); $result = db_query($link, "DELETE FROM ttrss_user_entries WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } if ($subop == "unarchive") { + header("Content-Type: text/plain"); + $ids = db_escape_string($_REQUEST["ids"]); $result = db_query($link, "UPDATE ttrss_user_entries SET feed_id = orig_feed_id, orig_feed_id = NULL WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } if ($subop == "archive") { + header("Content-Type: text/plain"); + $ids = split(",", db_escape_string($_REQUEST["ids"])); foreach ($ids as $id) { archive_article($link, $id, $_SESSION["uid"]); } - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } @@ -268,7 +259,7 @@ return; } - if ($subop == "updateFeed") { +/* if ($subop == "updateFeed") { $feed_id = db_escape_string($_REQUEST["feed"]); update_rss_feed($link, $feed_id); @@ -278,7 +269,7 @@ print ""; return; - } + } */ if ($subop == "updateAllFeeds" || $subop == "getAllCounters") { @@ -308,44 +299,38 @@ /* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */ if ($subop == "catchupSelected") { + header("Content-Type: text/plain"); $ids = split(",", db_escape_string($_REQUEST["ids"])); $cmode = sprintf("%d", $_REQUEST["cmode"]); catchupArticlesById($link, $ids, $cmode); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } if ($subop == "markSelected") { + header("Content-Type: text/plain"); $ids = split(",", db_escape_string($_REQUEST["ids"])); $cmode = sprintf("%d", $_REQUEST["cmode"]); markArticlesById($link, $ids, $cmode); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } if ($subop == "publishSelected") { + header("Content-Type: text/plain"); $ids = split(",", db_escape_string($_REQUEST["ids"])); $cmode = sprintf("%d", $_REQUEST["cmode"]); publishArticlesById($link, $ids, $cmode); - print ""; - print "UPDATE_COUNTERS"; - print ""; - + print json_encode(array("message" => "UPDATE_COUNTERS")); return; } @@ -467,6 +452,7 @@ } if ($subop == "completeTags") { + header("Content-Type: text/plain"); $search = db_escape_string($_REQUEST["search"]); @@ -488,24 +474,16 @@ $ids = split(",", db_escape_string($_REQUEST["ids"])); $days = sprintf("%d", $_REQUEST["days"]); - print ""; - - print ""; - - print ""; - return; } @@ -915,6 +893,8 @@ } if ($subop == "cdmGetArticle") { + header("Content-Type: text/plain"); + $id = db_escape_string($_REQUEST["id"]); $result = db_query($link, "SELECT content, @@ -934,14 +914,15 @@ $article_content = ''; } - print "
"; + print json_encode(array("article" => + array("id" => $id, "content" => $article_content))); return; } if ($subop == "scheduleFeedUpdate") { + header("Content-Type: text/plain"); + $feed_id = db_escape_string($_REQUEST["id"]); $is_cat = db_escape_string($_REQUEST['is_cat']) == 'true'; @@ -973,10 +954,7 @@ $message = __("Can't update this kind of feed."); } - print ""; - print "$message"; - print ""; - + print json_encode(array("message" => $message)); return; } diff --git a/tt-rss.js b/tt-rss.js index 6d7994377..9790bb983 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -1078,18 +1078,16 @@ function scheduleFeedUpdate(id, is_cat) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { + handle_rpc_json(transport); - if (transport.responseXML) { - var message = transport.responseXML.getElementsByTagName("message")[0]; + var reply = JSON.parse(transport.responseText); + var message = reply['message']; - if (message) { - notify_info(message.firstChild.nodeValue); - return; - } + if (message) { + notify_info(message); + return; } - notify_error("Error communicating with server."); - } }); diff --git a/viewfeed.js b/viewfeed.js index 8d0ab28a9..37afd340a 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -17,19 +17,6 @@ var preload_timeout_id = false; var cache_added = []; -function catchup_callback2(transport, callback) { - try { - console.log("catchup_callback2 " + transport + ", " + callback); - notify(""); - handle_rpc_reply(transport); - if (callback) { - setTimeout(callback, 10); - } - } catch (e) { - exception_error("catchup_callback2", e, transport); - } -} - function headlines_callback2(transport, feed_cur_page) { try { @@ -454,7 +441,7 @@ function toggleMark(id, client_only) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); + handle_rpc_json(transport); } }); } @@ -654,7 +641,7 @@ function toggleUnread(id, cmode, effect) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); + handle_rpc_json(transport); } }); } @@ -740,7 +727,7 @@ function selectionAssignLabel(id, ids) { } } -function selectionToggleUnread(set_state, callback_func, no_error) { +function selectionToggleUnread(set_state, callback, no_error) { try { var rows = getSelectedArticleIds2(); @@ -790,7 +777,8 @@ function selectionToggleUnread(set_state, callback_func, no_error) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - catchup_callback2(transport, callback_func); + handle_rpc_json(transport); + if (callback) callback(transport); } }); } @@ -822,7 +810,7 @@ function selectionToggleMarked() { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); + handle_rpc_json(transport); } }); } @@ -854,7 +842,7 @@ function selectionTogglePublished() { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); + handle_rpc_json(transport); } }); } @@ -982,6 +970,7 @@ function deleteSelection() { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { + handle_rpc_json(transport); viewCurrentFeed(); } }); @@ -1031,6 +1020,7 @@ function archiveSelection() { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { + handle_rpc_json(transport); viewCurrentFeed(); } }); @@ -1215,7 +1205,7 @@ function cdmWatchdog() { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - handle_rpc_reply(transport); + handle_rpc_json(transport); } }); } @@ -1571,7 +1561,7 @@ function catchupRelativeToArticle(below) { new Ajax.Request("backend.php", { parameters: query, onComplete: function(transport) { - catchup_callback2(transport); + handle_rpc_json(transport); } }); } @@ -1633,12 +1623,16 @@ function cdmExpandArticle(id) { onComplete: function(transport) { $("FUPDPIC-" + id).src = 'images/blank_icon.gif'; - if (transport.responseXML) { - var article = transport.responseXML.getElementsByTagName("article")[0]; - var recv_id = article.getAttribute("id"); + handle_rpc_json(transport); + + var reply = JSON.parse(transport.responseText); + + if (reply) { + var article = reply['article']['content']; + var recv_id = reply['article']['id']; if (recv_id == id) - $("CWRAP-" + id).innerHTML = article.firstChild.nodeValue; + $("CWRAP-" + id).innerHTML = article; } else { $("CWRAP-" + id).innerHTML = __("Unable to load article.");