diff --git a/classes/article.php b/classes/article.php
index 8efa9088c..4020ea35a 100755
--- a/classes/article.php
+++ b/classes/article.php
@@ -199,8 +199,10 @@ class Article extends Handler_Protected {
$id = clean($_REQUEST["id"]);
- $tags_str = clean($_REQUEST["tags_str"]);
- $tags = array_unique(array_map('trim', explode(",", $tags_str)));
+ //$tags_str = clean($_REQUEST["tags_str"]);
+ //$tags = array_unique(array_map('trim', explode(",", $tags_str)));
+
+ $tags = FeedItem_Common::normalize_categories(explode(",", clean($_REQUEST["tags_str"])));
$this->pdo->beginTransaction();
@@ -225,8 +227,6 @@ class Article extends Handler_Protected {
(post_int_id, owner_uid, tag_name)
VALUES (?, ?, ?)");
- $tags = FeedItem_Common::normalize_categories($tags);
-
foreach ($tags as $tag) {
$csth->execute([$int_id, $_SESSION['uid'], $tag]);
@@ -248,14 +248,7 @@ class Article extends Handler_Protected {
$this->pdo->commit();
- $tags = self::_get_tags($id);
- $tags_str = $this->_format_tags_html($tags);
- $tags_str_full = join(", ", $tags);
-
- if (!$tags_str_full) $tags_str_full = __("no tags");
-
- print json_encode(array("id" => (int)$id,
- "content" => $tags_str, "content_full" => $tags_str_full));
+ print json_encode(["id" => (int)$id, "tags" => $tags]);
}
@@ -425,42 +418,6 @@ class Article extends Handler_Protected {
return $tags;
}
- static function _format_tags_html($tags) {
- if (!is_array($tags) || count($tags) == 0) {
- return __("no tags");
- } else {
- $maxtags = min(5, count($tags));
- $tags_str = "";
-
- for ($i = 0; $i < $maxtags; $i++) {
- $tags_str .= "" . $tags[$i] . ", ";
- }
-
- $tags_str = mb_substr($tags_str, 0, mb_strlen($tags_str)-2);
-
- if (count($tags) > $maxtags)
- $tags_str .= ", …";
-
- return $tags_str;
- }
- }
-
- static function _format_labels_html($labels) {
-
- if (!is_array($labels)) return '';
-
- $labels_str = "";
-
- foreach ($labels as $l) {
- $labels_str .= sprintf("
%s
",
- $l[2], $l[3], $l[1]);
- }
-
- return $labels_str;
-
- }
-
static function _format_note_html($id, $note, $allow_edit = true) {
if ($allow_edit) {
$onclick = "onclick='Plugins.Note.edit($id)'";
diff --git a/classes/feeds.php b/classes/feeds.php
index 1e1b20d93..5ad21ded9 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -299,7 +299,7 @@ class Feeds extends Handler_Protected {
else
$tags = false;
- $line["tags_str"] = Article::_format_tags_html($tags);
+ $line["tags"] = Article::_get_tags($line["id"], false, $line["tag_cache"]);
$this->_mark_timestamp(" tags");
diff --git a/js/Article.js b/js/Article.js
index 4f3a162de..a11004a0a 100644
--- a/js/Article.js
+++ b/js/Article.js
@@ -130,6 +130,14 @@ const Article = {
Headlines.toggleUnread(id, 0);
},
+ renderTags: function (id, tags) {
+ const tags_short = tags.length > 5 ? tags.slice(0, 5) : tags;
+
+ return `
+ ${tags_short.length > 0 ? tags_short.map((tag) => `
+ ${tag}`
+ ).join(", ") : `${__("no tags")}`}`;
+ },
renderLabels: function(id, labels) {
return `${labels.map((label) => `
${comments}
${hl.author}
label_outline
- ${hl.tags_str}
+ ${Article.renderTags(hl.id, hl.tags)}
(+)
${hl.buttons}
@@ -343,13 +351,13 @@ const Article = {
dialog.hide();
if (data) {
- const id = data.id;
-
- const tags = App.byId("ATSTR-" + id);
- const tooltip = dijit.byId("ATSTRTIP-" + id);
+ if (Headlines.headlines[data.id]) {
+ Headlines.headlines[data.id].tags = data.tags;
+ }
- if (tags) tags.innerHTML = data.content;
- if (tooltip) tooltip.attr('label', data.content_full);
+ App.findAll(`span[data-tags-for="${data.id}"`).forEach((ctr) => {
+ ctr.innerHTML = Article.renderTags(data.id, data.tags);
+ });
}
} catch (e) {
App.Error.report(e);
diff --git a/js/Headlines.js b/js/Headlines.js
index 2effc9192..f98b3dcce 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -495,7 +495,7 @@ const Headlines = {
${hl.buttons_left}
label_outline
-
${hl.tags_str}
+ ${Article.renderTags(hl.id, hl.tags)}
(+)
${comments}