From f0540b598a40c03882dc1af6c4b95256bb27cb1a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 20 Mar 2013 13:17:48 +0400 Subject: [PATCH] add a hack to prevent loading of stuff for hidden content in unexpanded combined mode (refs #602) --- classes/feeds.php | 22 +++++++-------- include/functions.php | 5 ++-- js/functions.js | 62 +++++++++++++++++++++++++++++++++++++++++++ js/viewfeed.js | 8 ++++++ 4 files changed, 84 insertions(+), 13 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index c464303c..0568eb98 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -263,6 +263,8 @@ class Feeds extends Handler_Protected { if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); + $expand_cdm = get_pref($this->link, 'CDM_EXPANDED'); + while ($line = db_fetch_assoc($result)) { $class = ($lnum % 2) ? "even" : "odd"; @@ -512,8 +514,6 @@ class Feeds extends Handler_Protected { } } - $expand_cdm = get_pref($this->link, 'CDM_EXPANDED'); - $mouseover_attrs = "onmouseover='postMouseIn($id)' onmouseout='postMouseOut($id)'"; @@ -627,16 +627,17 @@ class Feeds extends Handler_Protected { } $reply['content'] .= ""; - $reply['content'] .= $line["content"]; - $reply['content'] .= ""; -/* $tmp_result = db_query($this->link, "SELECT always_display_enclosures FROM - ttrss_feeds WHERE id = ". - (($line['feed_id'] == null) ? $line['orig_feed_id'] : - $line['feed_id'])." AND owner_uid = ".$_SESSION["uid"]); + if (!$expand_cdm) { + $reply['content'] .= ""; + $reply['content'] .= htmlspecialchars($line["content"]); + $reply['content'] .= " diff --git a/include/functions.php b/include/functions.php index a055d1ed..66054c23 100644 --- a/include/functions.php +++ b/include/functions.php @@ -2609,7 +2609,8 @@ } if ($entry->nodeName == 'img') { - if (get_pref($link, "STRIP_IMAGES", $owner) || $force_remove_images) { + if (($owner && get_pref($link, "STRIP_IMAGES", $owner)) || + $force_remove_images) { $p = $doc->createElement('p'); @@ -3633,7 +3634,7 @@ array_push($entries, $entry); } - if (!get_pref($link, "STRIP_IMAGES")) { + if ($_SESSION['uid'] && !get_pref($link, "STRIP_IMAGES")) { if ($always_display_enclosures || !preg_match("/this -> "

", 'ENT_NOQUOTES'); + // * returns 1: '

this -> "

' + // * example 2: htmlspecialchars_decode("&quot;"); + // * returns 2: '"' + var optTemp = 0, + i = 0, + noquotes = false; + if (typeof quote_style === 'undefined') { + quote_style = 2; + } + string = string.toString().replace(/</g, '<').replace(/>/g, '>'); + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE': 1, + 'ENT_HTML_QUOTE_DOUBLE': 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE': 4 + }; + if (quote_style === 0) { + noquotes = true; + } + if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags + quote_style = [].concat(quote_style); + for (i = 0; i < quote_style.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quote_style[i]] === 0) { + noquotes = true; + } else if (OPTS[quote_style[i]]) { + optTemp = optTemp | OPTS[quote_style[i]]; + } + } + quote_style = optTemp; + } + if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { + string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should + // string = string.replace(/'|�*27;/g, "'"); // This would also be useful here, but not a part of PHP + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + + return string; +} diff --git a/js/viewfeed.js b/js/viewfeed.js index 2555215c..4bb26187 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1365,13 +1365,21 @@ function cdmExpandArticle(id) { } setActiveArticleId(id); + cdmScrollToArticleId(id, true); elem = $("CICD-" + id); var collapse = $$("div#RROW-" + id + " span[class='collapseBtn']")[0]; + var cencw = $("CENCW-" + id); + if (!Element.visible(elem)) { + if (cencw) { + cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML); + cencw.setAttribute('id', ''); + } + Element.show(elem); Element.hide("CEXC-" + id); Element.show(collapse); -- 2.39.2