]> git.wh0rd.org - tt-rss.git/commitdiff
add sanity check & debug mode to prefs; misc code cleanups
authorAndrew Dolgov <fox@madoka.spb.ru>
Tue, 23 May 2006 07:15:48 +0000 (08:15 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Tue, 23 May 2006 07:15:48 +0000 (08:15 +0100)
feedlist.js
functions.js
prefs.js
prefs.php
tt-rss.js
viewfeed.js

index d32ff1550c2b325290944d23ea6e91515b30bfe5..355b4d88544b2f8e29e56bd61b5e71bec34841e7 100644 (file)
@@ -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);
 }
index c03176255df0d46130def4428edac934e0fe06b5..35579364047fa149fc88c2f1c2d530bf49a32fa1 100644 (file)
@@ -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);
+       }
+}
+
+
index 19fcc8b6a035d4572b0972be6a407e0b5b96ec54..eed755d5afd830d48a2fe8645bb8c22569738311 100644 (file)
--- 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);
        }
index 7e71c7548edc3987ed90567d655e369496aa3bac..aad7691d280bae3ad404873c2d8d737303239f69 100644 (file)
--- 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>
index 0c3584c8eb704afe1c510b3759058b64833bce32..55c813b7f70750ecc9428d439e8912c7cbdd0fd5 100644 (file)
--- 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);
-       }
-}
-
 
index 17ffa7fc8cc0f3d3c0b1957f01923daaf49bfe4c..8e665acdcc354fb7564798e2048645285e657f8d 100644 (file)
@@ -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) {