]> git.wh0rd.org - tt-rss.git/blobdiff - js/functions.js
update.php: add support for output logging
[tt-rss.git] / js / functions.js
index be12d257aab85bc149e9e80826b76d18a1df8a2f..4840bcbe11be33818ba5bcdc5dbadb52f5dfa98e 100644 (file)
@@ -212,6 +212,11 @@ function notify_real(msg, no_hide, n_type) {
 
 //     msg = "<img src='images/live_com_loading.gif'> " + msg;
 
+       if (no_hide) {
+               msg += " (<a href='#' onclick=\"notify('')\">X</a>)";
+       }
+
+
        nb.innerHTML = msg;
 
        if (!no_hide) {
@@ -964,6 +969,8 @@ function createNewRuleElement(parentNode, replaceNode) {
        try {
                var form = document.forms["filter_new_rule_form"];
 
+               form.reg_exp.value = form.reg_exp.value.replace(/(<([^>]+)>)/ig,"");
+
                var query = "backend.php?op=pref-filters&method=printrulename&rule="+
                        param_escape(dojo.formToJson(form));
 
@@ -1274,6 +1281,8 @@ function unsubscribeFeed(feed_id, title) {
                                        } else {
                                                if (feed_id == getActiveFeedId())
                                                        setTimeout("viewfeed(-5)", 100);
+
+                                               if (feed_id < 0) updateFeedList();
                                        }
 
                                } });
@@ -1737,7 +1746,7 @@ function feedBrowser() {
                                        } });
                        },
                        removeFromArchive: function() {
-                               var selected = this.getSelectedFeeds();
+                               var selected = this.getSelectedFeedIds();
 
                                if (selected.length > 0) {
 
@@ -1746,7 +1755,7 @@ function feedBrowser() {
                                        if (confirm(pr)) {
                                                Element.show('feed_browser_spinner');
 
-                                               var query = "?op=rpc&method=remarchived&ids=" +
+                                               var query = "?op=rpc&method=remarchive&ids=" +
                                                        param_escape(selected.toString());;
 
                                                new Ajax.Request("backend.php", {
@@ -1904,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;
+}