diff --git a/backend.php b/backend.php index 77812b98..2ed2f926 100644 --- a/backend.php +++ b/backend.php @@ -1,5 +1,5 @@ "; + } } if ($op == "feeds") { diff --git a/functions.js b/functions.js index 78e3bbaa..aa3169ac 100644 --- a/functions.js +++ b/functions.js @@ -416,4 +416,7 @@ function hideOrShowFeeds(doc, hide) { } +function fatalError(code) { + window.location = "error.php?c=" + param_escape(code); +} diff --git a/tt-rss.css b/tt-rss.css index 0d6d223a..271037a9 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -497,3 +497,9 @@ ul.nomarks { padding : 10px; } +div.bigErrorMsg { + border : 1px solid #c0c0c0; + background : #fff0f0; + padding : 30px; + margin : 20px; +} diff --git a/tt-rss.js b/tt-rss.js index 77f90303..13b7e50a 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -121,6 +121,32 @@ function refetch_callback() { } } +function backend_sanity_check_callback() { + + if (xmlhttp.readyState == 4) { + + if (!xmlhttp.responseXML) { + fatalError(3); + return; + } + + var reply = xmlhttp.responseXML.firstChild; + + if (!reply) { + fatalError(3); + return; + } + + var error_code = reply.getAttribute("code"); + + if (error_code && error_code != 0) { + return fatalError(error_code); + } + + init_second_stage(); + } +} + function updateFeed(feed_id) { var query_str = "backend.php?op=rpc&subop=updateFeed&feed=" + feed_id; @@ -297,7 +323,15 @@ function updateTitle(s) { function genericSanityCheck() { - if (!xmlhttp) { + if (!xmlhttp) fatalError(1); + + setCookie("ttrss_vf_test", "TEST"); + + if (getCookie("ttrss_vf_test") != "TEST") { + fatalError(2); + } + +/* if (!xmlhttp) { document.getElementById("headlines").innerHTML = "Fatal error: This program requires XmlHttpRequest " + "to function properly. Your browser doesn't seem to support it."; @@ -312,7 +346,7 @@ function genericSanityCheck() { "to function properly. Your browser doesn't seem to support them."; return false; - } + } */ return true; } @@ -324,14 +358,19 @@ function init() { if (!genericSanityCheck()) return; + xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true); + xmlhttp.onreadystatechange=backend_sanity_check_callback; + xmlhttp.send(null); + +} + +function init_second_stage() { + setCookie("ttrss_vf_actfeed", ""); updateFeedList(false, false); document.onkeydown = hotkey_handler; - setTimeout("timeout()", 1800*1000); - scheduleFeedUpdate(true); - var content = document.getElementById("content"); if (getCookie("ttrss_vf_vmode")) { @@ -348,6 +387,10 @@ function init() { // viewfeed(getCookie("ttrss_vf_actfeed"), 0, ''); // } + setTimeout("timeout()", 2*1000); +// scheduleFeedUpdate(true); + + } function quickMenuGo() { @@ -493,3 +536,5 @@ function toggleDispRead() { } } + +