diff --git a/functions.php b/functions.php
index b4636927c..2b81a10c5 100644
--- a/functions.php
+++ b/functions.php
@@ -4533,54 +4533,15 @@
print "
" . $line["title"] . "$entry_author
";
}
- $tags = get_article_tags($link, $id);
-
- $tags_str = "";
- $tags_nolinks_str = "";
- $f_tags_str = "";
-
- $num_tags = 0;
-
- if ($_SESSION["theme"] == "3pane") {
- $tag_limit = 3;
- } else {
- $tag_limit = 6;
- }
-
- foreach ($tags as $tag) {
- $num_tags++;
- $tag_escaped = str_replace("'", "\\'", $tag);
-
- $tag_str = "";
- #print "
".__('Tags:')." $f_tags_str
";
-
$article_content = sanitize_rss($link, $line["content"]);
if (get_pref($link, 'OPEN_LINKS_IN_NEW_WINDOW')) {
@@ -5253,38 +5210,15 @@
alt='Zoom'
title='".__('Show article summary in new window')."'>";
- $tags = get_article_tags($link, $id);
-
- $tags_str = "";
- $full_tags_str = "";
- $num_tags = 0;
-
- foreach ($tags as $tag) {
- $num_tags++;
- $full_tags_str .= "
$tag, ";
- if ($num_tags < 5) {
- $tags_str .= "
$tag, ";
- } else if ($num_tags == 5) {
- $tags_str .= "…";
- }
- }
-
- $tags_str = preg_replace("/, $/", "", $tags_str);
- $full_tags_str = preg_replace("/, $/", "", $full_tags_str);
-
- $all_tags_div = "
…All Tags: $full_tags_str
";
-
- $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str);
-
-
- if ($tags_str == "") $tags_str = "no tags";
+ $tags_str = format_tags_string(get_article_tags($link, $id), $id);
// print "
";
print "
- $tags_str (+)";
+
+ $tags_str
+ (+)";
print "";
@@ -6011,4 +5945,46 @@
}
}
}
+
+ function format_tags_string($tags, $id) {
+
+ $tags_str = "";
+ $tags_nolinks_str = "";
+
+ $num_tags = 0;
+
+ if ($_SESSION["theme"] == "3pane") {
+ $tag_limit = 3;
+ } else {
+ $tag_limit = 6;
+ }
+
+ $formatted_tags = array();
+
+ foreach ($tags as $tag) {
+ $num_tags++;
+ $tag_escaped = str_replace("'", "\\'", $tag);
+
+ $tag_str = "
$tag";
+
+ array_push($formatted_tags, $tag_str);
+
+ if ($num_tags == $tag_limit) {
+ break;
+ }
+ }
+
+ $tags_str = implode(", ", $formatted_tags);
+
+ if ($num_tags < count($tags)) {
+ $tags_str .= ", …";
+ }
+
+ if ($num_tags == 0) {
+ $tags_str = __("no tags");
+ }
+
+ return $tags_str;
+
+ }
?>
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index a6ab9340a..b26304c2b 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -296,7 +296,7 @@
continue;
}
- print "";
+// print "";
if ($tag != '') {
db_query($link, "INSERT INTO ttrss_tags
@@ -307,8 +307,10 @@
db_query($link, "COMMIT");
+ $tags_str = format_tags_string(get_article_tags($link, $id), $id);
+
print "
- $id
+
";
return;
diff --git a/tt-rss.css b/tt-rss.css
index 4bff63dae..26c2729c6 100644
--- a/tt-rss.css
+++ b/tt-rss.css
@@ -909,10 +909,6 @@ div.postHeader div.postDateRTL {
float : right;
}
-div.postReply span.tagList {
- color : gray;
-}
-
div.postHeader div {
padding-bottom : 3px;
font-size : 12px;
diff --git a/viewfeed.js b/viewfeed.js
index a638cbe71..513350497 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -2,13 +2,6 @@ var active_post_id = false;
var last_article_view = false;
var active_real_feed_id = false;
-var _tag_active_post_id = false;
-var _tag_active_feed_id = false;
-var _tag_active_cdm = false;
-
-// FIXME: kludge, to restore scrollTop after tag editor terminates
-var _tag_cdm_scroll = false;
-
// FIXME: kludges, needs proper implementation
var _reload_feedlist_after_view = false;
@@ -233,15 +226,6 @@ function headlines_callback2(transport, feed_cur_page) {
debug("not in CDM mode or watchdog disabled");
}
- if (_tag_cdm_scroll) {
- try {
- document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll;
- _tag_cdm_scroll = false;
- debug("resetting headlinesInner scrollTop");
-
- } catch (e) { }
- }
-
_feed_cur_page = feed_cur_page;
_infscroll_request_sent = 0;
@@ -1228,15 +1212,6 @@ function catchupSelection() {
}
function editArticleTags(id, feed_id, cdm_enabled) {
- _tag_active_post_id = id;
- _tag_active_feed_id = feed_id;
- _tag_active_cdm = cdm_enabled;
-
- cache_invalidate(id);
-
- try {
- _tag_cdm_scroll = document.getElementById("headlinesInnerContainer").scrollTop;
- } catch (e) { }
displayDlg('editArticleTags', id);
}
@@ -1252,18 +1227,24 @@ function tag_saved_callback(transport) {
_reload_feedlist_after_view = true;
}
- if (!_tag_active_cdm) {
- if (active_post_id == _tag_active_post_id) {
- debug("reloading current article");
- view(_tag_active_post_id, _tag_active_feed_id);
+
+ if (transport.responseXML) {
+ var tags_str = transport.responseXML.getElementsByTagName("tags-str")[0];
+
+ if (tags_str) {
+ var id = tags_str.getAttribute("id");
+
+ if (id) {
+ var tags = document.getElementById("ATSTR-" + id);
+ if (tags) {
+ tags.innerHTML = tags_str.firstChild.nodeValue;
+ }
+ }
}
- } else {
- debug("reloading current feed");
- viewCurrentFeed();
}
} catch (e) {
- exception_error("catchup_callback", e);
+ exception_error("tag_saved_callback", e);
}
}