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 = "
"; + $content_encoded = htmlspecialchars(json_encode($line["content"])); + + $tmp_content = "
"; $tmp_content .= "
"; $tmp_content .= "
"; @@ -616,14 +618,7 @@ class Feeds extends Handler_Protected { } } - $tmp_content .= ""; - $tmp_content .= ""; - $tmp_content .= htmlspecialchars($line["content"]); - $tmp_content .= ""; - $tmp_content .= ""; - $tmp_content .= "
"; //cdmContentInner - $tmp_content .= "
"; $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'); - - PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row); - - Element.show(child); + try { + content = JSON.parse(row.getAttribute("data-content")); + } catch (e) { + content = "Error decoding content: " + row.getAttribute("data-content"); } + + row.select(".cdmContentInner")[0].innerHTML = content; + row.removeAttribute("data-content"); + + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row); + } else { + throw $break; } - ); + }); } function headlines_scroll_handler(e) {