dynamically show new label markers in headlines buffer w/o reload

This commit is contained in:
Andrew Dolgov 2009-01-18 16:07:31 +01:00
parent 1380f8eed4
commit f92471951b
4 changed files with 56 additions and 3 deletions

View File

@ -5019,7 +5019,7 @@
$feed_id = $line["feed_id"]; $feed_id = $line["feed_id"];
$labels = get_article_labels($link, $id); $labels = get_article_labels($link, $id);
$labels_str = ""; $labels_str = "<span id=\"HLLCTR-$id\">";
foreach ($labels as $l) { foreach ($labels as $l) {
$labels_str .= "<span $labels_str .= "<span
@ -5027,6 +5027,8 @@
$l[1]."</span>"; $l[1]."</span>";
} }
$labels_str .= "</span>";
if (count($topmost_article_ids) < 5) { if (count($topmost_article_ids) < 5) {
array_push($topmost_article_ids, $id); array_push($topmost_article_ids, $id);
} }

View File

@ -450,14 +450,34 @@
$label = label_find_caption($link, $label_id, $_SESSION["uid"]); $label = label_find_caption($link, $label_id, $_SESSION["uid"]);
print "<rpc-reply>";
print "<info-for-headlines>";
if ($label) { if ($label) {
foreach ($ids as $id) { foreach ($ids as $id) {
label_add_article($link, $id, $label, $_SESSION["uid"]); label_add_article($link, $id, $label, $_SESSION["uid"]);
print "<entry id=\"$id\"><![CDATA[";
$labels = get_article_labels($link, $id, $_SESSION["uid"]);
foreach ($labels as $l) {
print "<span class='hlLabelRef'>".$l[1]."</span>";
}
print "]]></entry>";
} }
} }
print "<rpc-reply>OK</rpc-reply>"; print "</info-for-headlines>";
print "<counters>";
getAllCounters($link, $omode);
print "</counters>";
print "</rpc-reply>";
return; return;
} }

View File

@ -1794,6 +1794,8 @@ ul.headlineDropdownMenu ul {
border-color : #c0c0c0; border-color : #c0c0c0;
border-style : solid; border-style : solid;
margin-left : -1px; margin-left : -1px;
max-height : 300px;
overflow : auto;
} }
ul.headlineDropdownMenu ul li { ul.headlineDropdownMenu ul li {

View File

@ -907,7 +907,8 @@ function selectionAssignLabel(id) {
new Ajax.Request(query, { new Ajax.Request(query, {
onComplete: function(transport) { onComplete: function(transport) {
viewCurrentFeed(); show_labels_in_headlines(transport);
all_counters_callback2(transport);
} }); } });
} }
@ -2008,3 +2009,31 @@ function scrollArticle(offset) {
exception_error("scrollArticle", e); exception_error("scrollArticle", e);
} }
} }
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 ctr = document.getElementById("HLLCTR-" + e_id);
if (ctr) {
ctr.innerHTML = elems[l].firstChild.nodeValue;
}
}
}
}
} catch (e) {
exception_error("show_labels_in_headlines", e);
}
}