add sanity check & debug mode to prefs; misc code cleanups

This commit is contained in:
Andrew Dolgov 2006-05-23 08:15:48 +01:00
parent ee1f45f4c7
commit a756529344
6 changed files with 101 additions and 80 deletions

View File

@ -1,29 +1,7 @@
var xmlhttp = false; var xmlhttp = Ajax.getTransport();
var cat_view_mode = false; 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) { function viewCategory(cat) {
viewfeed(cat, 0, '', false, true); viewfeed(cat, 0, '', false, true);
} }

View File

@ -1,5 +1,7 @@
var hotkeys_enabled = true; var hotkeys_enabled = true;
var xmlhttp_rpc = Ajax.getTransport();
function browser_has_opacity() { function browser_has_opacity() {
return navigator.userAgent.match("Gecko") != null || return navigator.userAgent.match("Gecko") != null ||
navigator.userAgent.match("Opera") != null; navigator.userAgent.match("Opera") != null;
@ -463,8 +465,6 @@ function setActiveFeedId(id) {
} }
} }
var xmlhttp_rpc = Ajax.getTransport();
function parse_counters(reply, scheduled_call) { function parse_counters(reply, scheduled_call) {
try { try {
var f_document = getFeedsContext().document; var f_document = getFeedsContext().document;
@ -1159,3 +1159,19 @@ function storeInitParam(key, value, is_client) {
exception_error("storeInitParam", e); 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);
}
}

View File

@ -10,6 +10,8 @@ var piggie_fwd = true;
var xmlhttp = Ajax.getTransport(); var xmlhttp = Ajax.getTransport();
var init_params = new Array();
function expand_feed_callback() { function expand_feed_callback() {
if (xmlhttp.readyState == 4) { if (xmlhttp.readyState == 4) {
try { try {
@ -1157,9 +1159,69 @@ function selectTab(id, noupdate) {
} }
} }
active_tab = id; if (active_tab != id) {
storeInitParam("prefs_active_tab", id);
}
setCookie('ttrss_pref_acttab', active_tab); active_tab = id;
}
function backend_sanity_check_callback() {
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; if (arguments.callee.done) return;
arguments.callee.done = true; arguments.callee.done = true;
if (getURLParam('debug')) {
document.getElementById('debug_output').style.display = 'block';
debug('debug mode activated');
}
// IE kludge // IE kludge
if (!xmlhttp) { if (!xmlhttp) {
document.getElementById("prefContent").innerHTML = document.getElementById("prefContent").innerHTML =
@ -1178,12 +1245,10 @@ function init() {
return; return;
} }
active_tab = getCookie("ttrss_pref_acttab"); xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true);
if (!active_tab) active_tab = "genConfig"; xmlhttp.onreadystatechange=backend_sanity_check_callback;
selectTab(active_tab); xmlhttp.send(null);
document.onkeydown = hotkey_handler;
notify("");
} catch (e) { } catch (e) {
exception_error("init", e); exception_error("init", e);
} }

View File

@ -77,6 +77,13 @@ if (document.addEventListener) {
window.onload = init; window.onload = init;
</script> </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"> <table width="100%" height="100%" cellspacing="0" cellpadding="0" class="main">
<? if (get_pref($link, 'DISPLAY_HEADER')) { ?> <? if (get_pref($link, 'DISPLAY_HEADER')) { ?>
<tr> <tr>

View File

@ -173,7 +173,7 @@ function scheduleFeedUpdate(force) {
var date = new Date(); var date = new Date();
if (!xmlhttp_ready(xmlhttp) && last_refetch < date.getTime() / 1000 - 60) { 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(); xmlhttp.abort();
} }
@ -389,15 +389,6 @@ function init_second_stage() {
if (navigator.userAgent.match("Opera")) { if (navigator.userAgent.match("Opera")) {
resize_feeds_frame(); 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"); debug("second stage ok");
@ -479,9 +470,6 @@ function qfdDelete(feed_id) {
return 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; _qfd_deleted_feed = feed_id;
xmlhttp.open("GET", "backend.php?op=pref-feeds&quiet=1&subop=remove&ids=" + 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);
}
}

View File

@ -1,25 +1,6 @@
var active_post_id = false; var active_post_id = false;
var xmlhttp_rpc = false; var xmlhttp_rpc = Ajax.getTransport();
/*@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();
}
function view(id, feed_id) { function view(id, feed_id) {