summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-02-19 17:15:22 +0300
committerAndrew Dolgov <[email protected]>2021-02-19 17:15:22 +0300
commitd445530fa08cdbe2088150a3e7d23596eab9b142 (patch)
tree0c9e9a44cfd5f38835857fd961ee17c11e9e54f9
parent4fa8450d38ccafdfa1117aa8a6fa570ce9fecb09 (diff)
format note on the client
-rwxr-xr-xclasses/article.php15
-rwxr-xr-xclasses/feeds.php5
-rw-r--r--js/Article.js7
-rwxr-xr-xjs/Headlines.js2
-rwxr-xr-xjs/common.js4
-rw-r--r--plugins/note/init.php9
-rw-r--r--plugins/note/note.js14
7 files changed, 18 insertions, 38 deletions
diff --git a/classes/article.php b/classes/article.php
index 1e90c843e..e64c17a32 100755
--- a/classes/article.php
+++ b/classes/article.php
@@ -419,21 +419,6 @@ class Article extends Handler_Protected {
return $tags;
}
- static function _format_note_html($id, $note, $allow_edit = true) {
- if ($allow_edit) {
- $onclick = "onclick='Plugins.Note.edit($id)'";
- $note_class = 'editable';
- } else {
- $onclick = '';
- $note_class = '';
- }
-
- return "<div class='article-note $note_class'>
- <i class='material-icons'>note</i>
- <div $onclick class='body'>$note</div>
- </div>";
- }
-
function getmetadatabyid() {
$id = clean($_REQUEST['id']);
diff --git a/classes/feeds.php b/classes/feeds.php
index 5ad21ded9..b95ade2f5 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -260,11 +260,6 @@ class Feeds extends Handler_Protected {
$this->_mark_timestamp(" disk_cache_rewrite");
- if ($line['note'])
- $line['note'] = Article::_format_note_html($id, $line['note']);
- else
- $line['note'] = "";
-
$this->_mark_timestamp(" note");
if (!get_pref("CDM_EXPANDED")) {
diff --git a/js/Article.js b/js/Article.js
index 21973518c..d039882ec 100644
--- a/js/Article.js
+++ b/js/Article.js
@@ -130,6 +130,11 @@ const Article = {
Headlines.toggleUnread(id, 0);
},
+ renderNote: function (id, note) {
+ return `<div class="article-note" data-note-for="${id}" style="display : ${note ? "" : "none"}">
+ ${App.FormFields.icon('note')} <div onclick class='body'>${note ? App.escapeHtml(note) : ""}</div>
+ </div>`;
+ },
renderTags: function (id, tags) {
const tags_short = tags.length > 5 ? tags.slice(0, 5) : tags;
@@ -300,7 +305,7 @@ const Article = {
<div class="buttons right">${hl.buttons}</div>
</div>
</div>
- <div id="POSTNOTE-${hl.id}">${hl.note}</div>
+ ${Article.renderNote(hl.id, hl.note)}
<div class="content" lang="${hl.lang ? hl.lang : 'en'}">
${hl.content}
${Article.renderEnclosures(hl.enclosures)}
diff --git a/js/Headlines.js b/js/Headlines.js
index 9bc5747c2..60066164f 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -483,7 +483,7 @@ const Headlines = {
</div>
<div class="content" onclick="return Headlines.click(event, ${hl.id}, true);">
- <div id="POSTNOTE-${hl.id}">${hl.note}</div>
+ ${Article.renderNote(hl.id, hl.note)}
<div class="content-inner" lang="${hl.lang ? hl.lang : 'en'}">
<img src="${App.getInitParam('icon_indicator_white')}">
</div>
diff --git a/js/common.js b/js/common.js
index e88b62602..e616c70ba 100755
--- a/js/common.js
+++ b/js/common.js
@@ -71,9 +71,9 @@ Element.prototype.fadeOut = function() {
}());
};
-Element.prototype.fadeIn = function(display){
+Element.prototype.fadeIn = function(display = undefined){
this.style.opacity = 0;
- this.style.display = display || "block";
+ this.style.display = display == undefined ? "block" : display;
const self = this;
(function fade() {
diff --git a/plugins/note/init.php b/plugins/note/init.php
index 278cfe6c3..f4bdf45bc 100644
--- a/plugins/note/init.php
+++ b/plugins/note/init.php
@@ -55,17 +55,14 @@ class Note extends Plugin {
}
function setNote() {
- $id = $_REQUEST["id"];
- $note = trim(strip_tags($_REQUEST["note"]));
+ $id = (int)clean($_REQUEST["id"]);
+ $note = clean($_REQUEST["note"]);
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET note = ?
WHERE ref_id = ? AND owner_uid = ?");
$sth->execute([$note, $id, $_SESSION['uid']]);
- $formatted_note = Article::_format_note_html($id, $note);
-
- print json_encode(array("note" => $formatted_note,
- "raw_length" => mb_strlen($note)));
+ print json_encode(["id" => $id, "note" => $note]);
}
function api_version() {
diff --git a/plugins/note/note.js b/plugins/note/note.js
index d42fca2c1..a46acb355 100644
--- a/plugins/note/note.js
+++ b/plugins/note/note.js
@@ -13,16 +13,14 @@ Plugins.Note = {
dialog.hide();
if (reply) {
- const elem = App.byId("POSTNOTE-" + id);
+ App.findAll(`div[data-note-for="${reply.id}"]`).forEach((elem) => {
+ elem.querySelector(".body").innerHTML = reply.note;
- if (elem) {
- elem.innerHTML = reply.note;
-
- if (reply.raw_length != 0)
- Element.show(elem);
+ if (reply.note)
+ elem.show();
else
- Element.hide(elem);
- }
+ elem.hide();
+ });
}
});
}