summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.php122
-rw-r--r--modules/backend-rpc.php6
-rw-r--r--tt-rss.css4
-rw-r--r--viewfeed.js47
4 files changed, 67 insertions, 112 deletions
diff --git a/functions.php b/functions.php
index b4636927c..2b81a10c5 100644
--- a/functions.php
+++ b/functions.php
@@ -4533,54 +4533,15 @@
print "<div clear='both'>" . $line["title"] . "$entry_author</div>";
}
- $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 = "<a href=\"javascript:viewfeed('$tag_escaped')\">$tag</a>, ";
-
- if ($num_tags == $tag_limit) {
- $tags_str .= "&hellip;";
- $tags_nolinks_str .= "&hellip;";
-
- } else if ($num_tags < $tag_limit) {
- $tags_str .= $tag_str;
- $tags_nolinks_str .= "$tag, ";
- }
- $f_tags_str .= $tag_str;
- }
-
- $tags_str = preg_replace("/, $/", "", $tags_str);
- $tags_nolinks_str = preg_replace("/, $/", "", $tags_nolinks_str);
- $f_tags_str = preg_replace("/, $/", "", $f_tags_str);
-
- $all_tags_div = "<span class='cdmAllTagsCtr'>&hellip;<div class='cdmAllTags'>All Tags: $f_tags_str</div></span>";
- $tags_str = preg_replace("/\.\.\.$/", "$all_tags_div", $tags_str);
+ $tags_str = format_tags_string(get_article_tags($link, $id), $id);
if (!$entry_comments) $entry_comments = "&nbsp;"; # placeholder
- if (!$tags_str) $tags_str = '<span class="tagList">'.__('no tags').'</span>';
- if (!$tags_nolinks_str) $tags_nolinks_str = '<span class="tagList">'.__('no tags').'</span>';
-
print "<div style='float : right'>
<img src='images/tag.png' class='tagsPic' alt='Tags' title='Tags'>";
if (!$zoom_mode) {
- print "$tags_str
+ print "<span id=\"ATSTR-$id\">$tags_str</span>
<a title=\"".__('Edit tags for this article')."\"
href=\"javascript:editArticleTags($id, $feed_id)\">(+)</a>";
@@ -4597,8 +4558,6 @@
style=\"cursor : pointer\" style=\"cursor : pointer\"
onclick=\"zoomToArticle($id)\"
alt='Zoom' title='".__('Show article summary in new window')."'>";
- } else {
- print "$tags_nolinks_str";
}
print "</div>";
print "<div clear='both'>$entry_comments</div>";
@@ -4609,8 +4568,6 @@
print "<div class=\"postContent\">";
- #print "<div id=\"allEntryTags\">".__('Tags:')." $f_tags_str</div>";
-
$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')."'></span>";
- $tags = get_article_tags($link, $id);
-
- $tags_str = "";
- $full_tags_str = "";
- $num_tags = 0;
-
- foreach ($tags as $tag) {
- $num_tags++;
- $full_tags_str .= "<a href=\"javascript:viewfeed('$tag')\">$tag</a>, ";
- if ($num_tags < 5) {
- $tags_str .= "<a href=\"javascript:viewfeed('$tag')\">$tag</a>, ";
- } else if ($num_tags == 5) {
- $tags_str .= "&hellip;";
- }
- }
-
- $tags_str = preg_replace("/, $/", "", $tags_str);
- $full_tags_str = preg_replace("/, $/", "", $full_tags_str);
-
- $all_tags_div = "<span class='cdmAllTagsCtr'>&hellip;<div class='cdmAllTags'>All Tags: $full_tags_str</div></span>";
-
- $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 "<img src='images/tag.png' class='markedPic'>";
print "<span class='s1'>
- <img class='tagsPic' src='images/tag.png' alt='Tags'
- title='Tags'> $tags_str <a title=\"Edit tags for this article\"
- href=\"javascript:editArticleTags($id, $feed_id, true)\">(+)</a>";
+ <img class='tagsPic' src='images/tag.png' alt='Tags' title='Tags'>
+ <span id=\"ATSTR-$id\">$tags_str</span>
+ <a title=\"".__('Edit tags for this article')."\"
+ href=\"javascript:editArticleTags($id, $feed_id, true)\">(+)</a>";
print "</span>";
@@ -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 = "<a href=\"javascript:viewfeed('$tag_escaped')\">$tag</a>";
+
+ array_push($formatted_tags, $tag_str);
+
+ if ($num_tags == $tag_limit) {
+ break;
+ }
+ }
+
+ $tags_str = implode(", ", $formatted_tags);
+
+ if ($num_tags < count($tags)) {
+ $tags_str .= ", &hellip;";
+ }
+
+ 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 "<!-- $id : $int_id : $tag -->";
+// print "<!-- $id : $int_id : $tag -->";
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 "<rpc-reply>
- <message>$id</message>
+ <tags-str id=\"$id\"><![CDATA[$tags_str]]></tags-str>
</rpc-reply>";
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);
}
}