summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-05-23 08:15:48 +0100
committerAndrew Dolgov <[email protected]>2006-05-23 08:15:48 +0100
commita756529344fa6bfab8deded10c9750ce1bfd56ac (patch)
tree4dc3f924c31b456675416c3376a3b0ec97e4ebe6
parentee1f45f4c77703b85c63bca1888b1c9cab3168da (diff)
add sanity check & debug mode to prefs; misc code cleanups
-rw-r--r--feedlist.js24
-rw-r--r--functions.js20
-rw-r--r--prefs.js79
-rw-r--r--prefs.php7
-rw-r--r--tt-rss.js28
-rw-r--r--viewfeed.js21
6 files changed, 100 insertions, 79 deletions
diff --git a/feedlist.js b/feedlist.js
index d32ff1550..355b4d885 100644
--- a/feedlist.js
+++ b/feedlist.js
@@ -1,29 +1,7 @@
-var xmlhttp = false;
+var xmlhttp = Ajax.getTransport();
var cat_view_mode = false;
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5)
-// JScript gives us Conditional compilation, we can cope with old IE versions.
-// and security blocked creation of the objects.
-try {
- xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
-} catch (e) {
- try {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (E) {
- xmlhttp = false;
- xmlhttp_rpc = false;
- }
-}
-@end @*/
-
-if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
- xmlhttp = new XMLHttpRequest();
- xmlhttp_rpc = new XMLHttpRequest();
-}
-
function viewCategory(cat) {
viewfeed(cat, 0, '', false, true);
}
diff --git a/functions.js b/functions.js
index c03176255..355793640 100644
--- a/functions.js
+++ b/functions.js
@@ -1,5 +1,7 @@
var hotkeys_enabled = true;
+var xmlhttp_rpc = Ajax.getTransport();
+
function browser_has_opacity() {
return navigator.userAgent.match("Gecko") != null ||
navigator.userAgent.match("Opera") != null;
@@ -463,8 +465,6 @@ function setActiveFeedId(id) {
}
}
-var xmlhttp_rpc = Ajax.getTransport();
-
function parse_counters(reply, scheduled_call) {
try {
var f_document = getFeedsContext().document;
@@ -1159,3 +1159,19 @@ function storeInitParam(key, value, is_client) {
exception_error("storeInitParam", e);
}
}
+
+function fatalError(code, message) {
+ try {
+ var fe = document.getElementById("fatal_error");
+ var fc = document.getElementById("fatal_error_msg");
+
+ fc.innerHTML = "Code " + code + ": " + message;
+
+ fe.style.display = "block";
+
+ } catch (e) {
+ exception_error("fatalError", e);
+ }
+}
+
+
diff --git a/prefs.js b/prefs.js
index 19fcc8b6a..eed755d5a 100644
--- a/prefs.js
+++ b/prefs.js
@@ -10,6 +10,8 @@ var piggie_fwd = true;
var xmlhttp = Ajax.getTransport();
+var init_params = new Array();
+
function expand_feed_callback() {
if (xmlhttp.readyState == 4) {
try {
@@ -1157,9 +1159,69 @@ function selectTab(id, noupdate) {
}
}
+ if (active_tab != id) {
+ storeInitParam("prefs_active_tab", id);
+ }
+
active_tab = id;
+}
+
+function backend_sanity_check_callback() {
- setCookie('ttrss_pref_acttab', active_tab);
+ if (xmlhttp.readyState == 4) {
+
+ try {
+
+ if (!xmlhttp.responseXML) {
+ fatalError(3, "[D001, Received reply is not XML]: " + xmlhttp.responseText);
+ return;
+ }
+
+ var reply = xmlhttp.responseXML.firstChild.firstChild;
+
+ if (!reply) {
+ fatalError(3, "[D002, Invalid RPC reply]: " + xmlhttp.responseText);
+ return;
+ }
+
+ var error_code = reply.getAttribute("error-code");
+
+ if (error_code && error_code != 0) {
+ return fatalError(error_code, reply.getAttribute("error-msg"));
+ }
+
+ debug("sanity check ok");
+
+ var params = reply.nextSibling;
+
+ if (params) {
+ debug('reading init-params...');
+ var param = params.firstChild;
+
+ while (param) {
+ var k = param.getAttribute("key");
+ var v = param.getAttribute("value");
+ debug(k + " => " + v);
+ init_params[k] = v;
+ param = param.nextSibling;
+ }
+ }
+
+ init_second_stage();
+
+ } catch (e) {
+ exception_error("backend_sanity_check_callback", e);
+ }
+ }
+}
+
+function init_second_stage() {
+
+ active_tab = getInitParam("prefs_active_tab");
+ if (!active_tab) active_tab = "genConfig";
+ selectTab(active_tab);
+
+ notify("");
}
@@ -1170,6 +1232,11 @@ function init() {
if (arguments.callee.done) return;
arguments.callee.done = true;
+ if (getURLParam('debug')) {
+ document.getElementById('debug_output').style.display = 'block';
+ debug('debug mode activated');
+ }
+
// IE kludge
if (!xmlhttp) {
document.getElementById("prefContent").innerHTML =
@@ -1178,12 +1245,10 @@ function init() {
return;
}
- active_tab = getCookie("ttrss_pref_acttab");
- if (!active_tab) active_tab = "genConfig";
- selectTab(active_tab);
-
- document.onkeydown = hotkey_handler;
- notify("");
+ xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true);
+ xmlhttp.onreadystatechange=backend_sanity_check_callback;
+ xmlhttp.send(null);
+
} catch (e) {
exception_error("init", e);
}
diff --git a/prefs.php b/prefs.php
index 7e71c7548..aad7691d2 100644
--- a/prefs.php
+++ b/prefs.php
@@ -77,6 +77,13 @@ if (document.addEventListener) {
window.onload = init;
</script>
+<ul id="debug_output"></ul>
+
+<div id="fatal_error"><div id="fatal_error_inner">
+ <h1>Fatal Error</h1>
+ <div id="fatal_error_msg">Unknown Error</div>
+</div></div>
+
<table width="100%" height="100%" cellspacing="0" cellpadding="0" class="main">
<? if (get_pref($link, 'DISPLAY_HEADER')) { ?>
<tr>
diff --git a/tt-rss.js b/tt-rss.js
index 0c3584c8e..55c813b7f 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -173,7 +173,7 @@ function scheduleFeedUpdate(force) {
var date = new Date();
if (!xmlhttp_ready(xmlhttp) && last_refetch < date.getTime() / 1000 - 60) {
- debug("xmlhttp seems to be stuck, aborting");
+ debug("<b>xmlhttp seems to be stuck, aborting</b>");
xmlhttp.abort();
}
@@ -389,15 +389,6 @@ function init_second_stage() {
if (navigator.userAgent.match("Opera")) {
resize_feeds_frame();
-
-/* // fix headlines frame height for Opera
- var h = document.getElementById("headlines");
- var c = document.getElementById("content");
- var nh = document.body.scrollHeight * 0.25;
-
- h.style.height = nh + "px";
- c.style.height = c.scrollHeight - nh + "px"; */
-
}
debug("second stage ok");
@@ -479,9 +470,6 @@ function qfdDelete(feed_id) {
return
}
-// var feeds_doc = window.frames["feeds-frame"].document;
-// feeds_doc.location.href = "backend.php?op=error&msg=Loading,%20please wait...";
-
_qfd_deleted_feed = feed_id;
xmlhttp.open("GET", "backend.php?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id);
@@ -523,18 +511,4 @@ function toggleDispRead() {
}
}
-function fatalError(code, message) {
- try {
- var fe = document.getElementById("fatal_error");
- var fc = document.getElementById("fatal_error_msg");
-
- fc.innerHTML = "Code " + code + ": " + message;
-
- fe.style.display = "block";
-
- } catch (e) {
- exception_error("fatalError", e);
- }
-}
-
diff --git a/viewfeed.js b/viewfeed.js
index 17ffa7fc8..8e665acdc 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -1,25 +1,6 @@
var active_post_id = false;
-var xmlhttp_rpc = false;
-
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5)
-// JScript gives us Conditional compilation, we can cope with old IE versions.
-// and security blocked creation of the objects.
-try {
- xmlhttp_rpc = new ActiveXObject("Msxml2.XMLHTTP");
-} catch (e) {
- try {
- xmlhttp_rpc = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (E) {
- xmlhttp_rpc = false;
- }
-}
-@end @*/
-
-if (!xmlhttp_rpc && typeof XMLHttpRequest!='undefined') {
- xmlhttp_rpc = new XMLHttpRequest();
-}
+var xmlhttp_rpc = Ajax.getTransport();
function view(id, feed_id) {