summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xclasses/feeds.php13
-rwxr-xr-xjs/viewfeed.js28
2 files changed, 20 insertions, 21 deletions
diff --git a/classes/feeds.php b/classes/feeds.php
index cf9ca64c5..0c1db62b6 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -499,8 +499,10 @@ class Feeds extends Handler_Protected {
$expanded_class = $expand_cdm ? "expanded" : "expandable";
- $tmp_content = "<div class=\"cdm $hlc_suffix $expanded_class $class\"
- id=\"RROW-$id\" data-article-id='$id' data-orig-feed-id='$feed_id' $mouseover_attrs>";
+ $content_encoded = htmlspecialchars(json_encode($line["content"]));
+
+ $tmp_content = "<div class=\"cdm $hlc_suffix $expanded_class $class\"
+ id=\"RROW-$id\" data-content=\"$content_encoded\" data-article-id='$id' data-orig-feed-id='$feed_id' $mouseover_attrs>";
$tmp_content .= "<div class=\"cdmHeader\">";
$tmp_content .= "<div style=\"vertical-align : middle\">";
@@ -616,14 +618,7 @@ class Feeds extends Handler_Protected {
}
}
- $tmp_content .= "<span id=\"CWRAP-$id\">";
- $tmp_content .= "<span id=\"CENCW-$id\" class=\"cencw\" style=\"display : none\">";
- $tmp_content .= htmlspecialchars($line["content"]);
- $tmp_content .= "</span>";
- $tmp_content .= "</span>";
-
$tmp_content .= "</div>"; //cdmContentInner
-
$tmp_content .= "<div class=\"cdmIntermediate\">";
$always_display_enclosures = $line["always_display_enclosures"];
diff --git a/js/viewfeed.js b/js/viewfeed.js
index ed6e3642e..a24116e88 100755
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -1018,24 +1018,28 @@ function postMouseOut(id) {
function unpackVisibleHeadlines() {
if (!isCdmMode() || !getInitParam("cdm_expanded")) return;
- $$("#headlines-frame span.cencw[id]").each(
- function (child) {
- const row = $("RROW-" + child.id.replace("CENCW-", ""));
+ $$("#headlines-frame div[id*=RROW][data-content]").each((row) => {
+ //console.log('checking', row.id);
- if (row && row.offsetTop <= $("headlines-frame").scrollTop +
- $("headlines-frame").offsetHeight) {
+ if (row.offsetTop <= $("headlines-frame").scrollTop + $("headlines-frame").offsetHeight) {
+ console.log("unpacking: " + row.id);
- //console.log("unpacking: " + child.id);
+ let content;
- child.innerHTML = htmlspecialchars_decode(child.innerHTML);
- child.removeAttribute('id');
+ try {
+ content = JSON.parse(row.getAttribute("data-content"));
+ } catch (e) {
+ content = "Error decoding content: " + row.getAttribute("data-content");
+ }
- PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row);
+ row.select(".cdmContentInner")[0].innerHTML = content;
+ row.removeAttribute("data-content");
- Element.show(child);
- }
+ PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row);
+ } else {
+ throw $break;
}
- );
+ });
}
function headlines_scroll_handler(e) {