]> git.wh0rd.org Git - tt-rss.git/commitdiff
add a hack to prevent loading of stuff for hidden content in unexpanded combined...
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Wed, 20 Mar 2013 09:17:48 +0000 (13:17 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Wed, 20 Mar 2013 09:17:48 +0000 (13:17 +0400)
classes/feeds.php
include/functions.php
js/functions.js
js/viewfeed.js

index c464303c122bcd6bb1badd398fc472af182583af..0568eb9850a89f602c474f3141cc4f415b8c6954 100644 (file)
@@ -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'] .= "<span id=\"CWRAP-$id\">";
-                                       $reply['content'] .= $line["content"];
-                                       $reply['content'] .= "</span>";
 
-/*                                     $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'] .= "<span id=\"CENCW-$id\">";
+                                               $reply['content'] .= htmlspecialchars($line["content"]);
+                                               $reply['content'] .= "</span.";
+
+                                       } else {
+                                               $reply['content'] .= $line["content"];
+                                       }
 
-                                       $always_display_enclosures = sql_bool_to_bool(db_fetch_result($tmp_result,
-                                               0, "always_display_enclosures")); */
+                                       $reply['content'] .= "</span>";
 
                                        $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]);
 
@@ -945,6 +946,5 @@ class Feeds extends Handler_Protected {
                return $reply;
        }
 
-
 }
 ?>
index a055d1edf2f945fc95c24f9486cd5f57920a2926..66054c23b0346d39bde062f5e7f63dbbb9cdbbd2 100644 (file)
                                }
 
                                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');
 
                                array_push($entries, $entry);
                        }
 
-                       if (!get_pref($link, "STRIP_IMAGES")) {
+                       if ($_SESSION['uid'] && !get_pref($link, "STRIP_IMAGES")) {
                                if ($always_display_enclosures ||
                                                        !preg_match("/<img/i", $article_content)) {
 
index be78294df0d22a149668d24e2c8a6144aa9050ef..d7e10c6528a1b22bd44052864a7df5596511d6a8 100644 (file)
@@ -1913,3 +1913,65 @@ function helpDialog(topic) {
        }
 }
 
+function htmlspecialchars_decode (string, quote_style) {
+  // http://kevin.vanzonneveld.net
+  // +   original by: Mirek Slugen
+  // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // +   bugfixed by: Mateusz "loonquawl" Zalega
+  // +      input by: ReverseSyntax
+  // +      input by: Slawomir Kaniecki
+  // +      input by: Scott Cariss
+  // +      input by: Francois
+  // +   bugfixed by: Onno Marsman
+  // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
+  // +      input by: Ratheous
+  // +      input by: Mailfaker (http://www.weedem.fr/)
+  // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
+  // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
+  // *     example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>", 'ENT_NOQUOTES');
+  // *     returns 1: '<p>this -> &quot;</p>'
+  // *     example 2: htmlspecialchars_decode("&amp;quot;");
+  // *     returns 2: '&quot;'
+  var optTemp = 0,
+    i = 0,
+    noquotes = false;
+  if (typeof quote_style === 'undefined') {
+    quote_style = 2;
+  }
+  string = string.toString().replace(/&lt;/g, '<').replace(/&gt;/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(/&#0*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should
+    // string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be useful here, but not a part of PHP
+  }
+  if (!noquotes) {
+    string = string.replace(/&quot;/g, '"');
+  }
+  // Put this in last place to avoid escape being double-decoded
+  string = string.replace(/&amp;/g, '&');
+
+  return string;
+}
index 2555215ce9268b57f8af554659fb98fdb0813a9b..4bb2618791cfcc316c385f73dbe27c542f14269a 100644 (file)
@@ -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);