From a756529344fa6bfab8deded10c9750ce1bfd56ac Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 23 May 2006 08:15:48 +0100 Subject: [PATCH] add sanity check & debug mode to prefs; misc code cleanups --- feedlist.js | 24 +--------------- functions.js | 20 +++++++++++-- prefs.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++----- prefs.php | 7 +++++ tt-rss.js | 28 +------------------ viewfeed.js | 21 +------------- 6 files changed, 100 insertions(+), 79 deletions(-) diff --git a/feedlist.js b/feedlist.js index d32ff155..355b4d88 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 c0317625..35579364 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 19fcc8b6..eed755d5 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 7e71c754..aad7691d 100644 --- a/prefs.php +++ b/prefs.php @@ -77,6 +77,13 @@ if (document.addEventListener) { window.onload = init; + + +
+

Fatal Error

+
Unknown Error
+
+ diff --git a/tt-rss.js b/tt-rss.js index 0c3584c8..55c813b7 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("xmlhttp seems to be stuck, aborting"); 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 17ffa7fc..8e665acd 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) { -- 2.39.5