summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-29 14:11:54 +0300
committerAndrew Dolgov <[email protected]>2010-11-29 14:11:54 +0300
commit8eb592ec71c27c740fb3339e1e2a413fce6613f7 (patch)
tree22551a80aef8f333686f80e09d88497d4d6443c2
parent2cd992574a5ce73a3d99d52c70184e442226f38b (diff)
assign/remove to label rpc: use JSON
-rw-r--r--modules/backend-rpc.php58
-rw-r--r--viewfeed.js28
2 files changed, 21 insertions, 65 deletions
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index 59faee7b3..e027ff39d 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -533,41 +533,10 @@
return;
}
- if ($subop == "removeFromLabel") {
-
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $label_id = db_escape_string($_REQUEST["lid"]);
-
- $label = db_escape_string(label_find_caption($link, $label_id,
- $_SESSION["uid"]));
-
- print "<rpc-reply>";
- print "<info-for-headlines>";
-
- if ($label) {
-
- foreach ($ids as $id) {
- label_remove_article($link, $id, $label, $_SESSION["uid"]);
-
- print "<entry id=\"$id\"><![CDATA[";
-
- $labels = get_article_labels($link, $id, $_SESSION["uid"]);
- print format_article_labels($labels, $id);
-
- print "]]></entry>";
-
- }
- }
-
- print "</info-for-headlines>";
-
- print "<message>UPDATE_COUNTERS</message>";
- print "</rpc-reply>";
-
- return;
- }
+ if ($subop == "assignToLabel" || $subop == "removeFromLabel") {
+ header("Content-Type: text/plain");
- if ($subop == "assignToLabel") {
+ $reply = array();
$ids = split(",", db_escape_string($_REQUEST["ids"]));
$label_id = db_escape_string($_REQUEST["lid"]);
@@ -575,29 +544,28 @@
$label = db_escape_string(label_find_caption($link, $label_id,
$_SESSION["uid"]));
- print "<rpc-reply>";
-
- print "<info-for-headlines>";
+ $reply["info-for-headlines"] = array();
if ($label) {
foreach ($ids as $id) {
- label_add_article($link, $id, $label, $_SESSION["uid"]);
- print "<entry id=\"$id\"><![CDATA[";
+ if ($subop == "assignToLabel")
+ label_add_article($link, $id, $label, $_SESSION["uid"]);
+ else
+ label_remove_article($link, $id, $label, $_SESSION["uid"]);
$labels = get_article_labels($link, $id, $_SESSION["uid"]);
- print format_article_labels($labels, $id);
-
- print "]]></entry>";
+
+ array_push($reply["info-for-headlines"],
+ array("id" => $id, "labels" => format_article_labels($labels, $id)));
}
}
- print "</info-for-headlines>";
+ $reply["message"] = "UPDATE_COUNTERS";
- print "<message>UPDATE_COUNTERS</message>";
- print "</rpc-reply>";
+ print json_encode($reply);
return;
}
diff --git a/viewfeed.js b/viewfeed.js
index f36c75b46..22523fa10 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -683,8 +683,8 @@ function selectionRemoveLabel(id, ids) {
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
+ handle_rpc_json(transport);
show_labels_in_headlines(transport);
- handle_rpc_reply(transport);
} });
// }
@@ -721,8 +721,8 @@ function selectionAssignLabel(id, ids) {
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
+ handle_rpc_json(transport);
show_labels_in_headlines(transport);
- handle_rpc_reply(transport);
} });
// }
@@ -1776,29 +1776,17 @@ function scrollArticle(offset) {
function show_labels_in_headlines(transport) {
try {
- if (transport.responseXML) {
- var info = transport.responseXML.getElementsByTagName("info-for-headlines")[0];
-
- var elems = info.getElementsByTagName("entry");
-
- for (var l = 0; l < elems.length; l++) {
- var e_id = elems[l].getAttribute("id");
-
- if (e_id) {
+ var data = JSON.parse(transport.responseText);
- var ctr = $("HLLCTR-" + e_id);
-
- if (ctr) {
- ctr.innerHTML = elems[l].firstChild.nodeValue;
- }
- }
-
- }
+ if (data) {
+ data['info-for-headlines'].each(function(elem) {
+ var ctr = $("HLLCTR-" + elem.id);
+ if (ctr) ctr.innerHTML = elem.labels;
+ });
}
} catch (e) {
exception_error("show_labels_in_headlines", e);
-
}
}