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) { } } - 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; 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; +