summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorRichard Beales <[email protected]>2013-03-20 16:59:19 +0000
committerRichard Beales <[email protected]>2013-03-20 16:59:19 +0000
commit77accf45df3072bf0e3fe1e919bb75fc14313119 (patch)
tree84be283769a6849f4916880739044a163e6f4761 /js
parent04ed8b423abd9046ac4ee6813cf5e98b37aad2a3 (diff)
parent2d2d08fc41dec694ac0895368eff3eb80a173a5b (diff)
fix merge conflict with stylesheet tags
Diffstat (limited to 'js')
-rw-r--r--js/functions.js62
-rw-r--r--js/viewfeed.js34
2 files changed, 88 insertions, 8 deletions
diff --git a/js/functions.js b/js/functions.js
index be78294df..d7e10c652 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -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;
+}
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 2555215ce..4c6d90366 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -559,16 +559,23 @@ function moveToPost(mode, noscroll) {
var prev_article = $("RROW-" + prev_id);
var ctr = $("headlines-frame");
- if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
- scrollArticle(-ctr.offsetHeight/3);
- } else if (!noscroll && prev_article &&
- prev_article.offsetTop < ctr.scrollTop) {
+ if (!getInitParam("cdm_expanded")) {
cdmExpandArticle(prev_id);
- scrollArticle(-ctr.offsetHeight/3);
- } else if (prev_id) {
- cdmExpandArticle(prev_id);
- cdmScrollToArticleId(prev_id, noscroll);
+ cdmScrollToArticleId(prev_id, true);
+ } else {
+
+ if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
+ scrollArticle(-ctr.offsetHeight/3);
+ } else if (!noscroll && prev_article &&
+ prev_article.offsetTop < ctr.scrollTop) {
+ cdmExpandArticle(prev_id);
+ scrollArticle(-ctr.offsetHeight/3);
+ } else if (prev_id) {
+ cdmExpandArticle(prev_id);
+ cdmScrollToArticleId(prev_id, noscroll);
+ }
}
+
} else if (prev_id) {
correctHeadlinesOffset(prev_id);
view(prev_id, getActiveFeedId());
@@ -1366,12 +1373,23 @@ function cdmExpandArticle(id) {
setActiveArticleId(id);
+ if (!getInitParam("cdm_expanded")) {
+ 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);