X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=sidebyside;f=tt-rss.js;h=7167d058410a217c68593802bbb743466b194ccb;hb=e8614131e893af473e0a585addb19d9f4e8b8973;hp=98cb9c71244cea0589beee3d7770cda36cf26efe;hpb=f31673f74909949ccbff3a2059a43bffaf03ee04;p=tt-rss.git diff --git a/tt-rss.js b/tt-rss.js index 98cb9c71..7167d058 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -10,9 +10,12 @@ var _qfd_deleted_feed = 0; var firsttime_update = true; var last_refetch = 0; var cookie_lifetime = 0; +var active_feed_id = 0; var xmlhttp = Ajax.getTransport(); +var init_params = new Object(); + function toggleTags() { display_tags = !display_tags; @@ -41,31 +44,6 @@ function dlg_frefresh_callback() { } } -function hide_unread_callback() { - if (xmlhttp.readyState == 4) { - - try { - - var reply = xmlhttp.responseXML.firstChild.firstChild; - var value = reply.getAttribute("value"); - var hide_read_feeds = (value != "false") - var feeds_doc = window.frames["feeds-frame"].document; - - hideOrShowFeeds(feeds_doc, hide_read_feeds); - - if (hide_read_feeds) { - setCookie("ttrss_vf_hreadf", 1); - } else { - setCookie("ttrss_vf_hreadf", 0); - } - - } catch (e) { - exception_error("hide_unread_callback", e); - } - - } -} - function refetch_callback() { if (xmlhttp.readyState == 4) { try { @@ -92,10 +70,14 @@ function refetch_callback() { if (error_code && error_code != 0) { return fatalError(error_code, reply.getAttribute("error-msg")); } + + var counters = reply.firstChild; - var f_document = window.frames["feeds-frame"].document; + parse_counters(counters, true); + + var runtime_info = counters.nextSibling; - parse_counters(reply, f_document, window, true); + parse_runtime_info(runtime_info); debug("refetch_callback: done"); @@ -123,7 +105,7 @@ function backend_sanity_check_callback() { return; } - var reply = xmlhttp.responseXML.firstChild; + var reply = xmlhttp.responseXML.firstChild.firstChild; if (!reply) { fatalError(3, "[D002, Invalid RPC reply]: " + xmlhttp.responseText); @@ -138,6 +120,21 @@ function backend_sanity_check_callback() { 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) { @@ -182,7 +179,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(); } @@ -259,9 +256,9 @@ function viewfeed(feed, skip, subop) { function timeout() { scheduleFeedUpdate(false); - var refresh_time = getCookie('ttrss_vf_refresh'); + var refresh_time = getInitParam("feeds_frame_refresh"); - if (!refresh_time) refresh_time = 600; + if (!refresh_time) refresh_time = 600; setTimeout("timeout()", refresh_time*1000); } @@ -297,41 +294,6 @@ function localPiggieFunction(enable) { } } -function localHotkeyHandler(keycode) { - - if (keycode == 82) { // r - return scheduleFeedUpdate(true); - } - - if (keycode == 85) { // u - if (getActiveFeedId()) { - return viewfeed(getActiveFeedId(), 0, "ForceUpdate"); - } - } - - if (keycode == 65) { // a - return toggleDispRead(); - } - - var f_doc = window.frames["feeds-frame"].document; - var feedlist = f_doc.getElementById('feedList'); - - if (keycode == 74) { // j - var feed = getActiveFeedId(); - var new_feed = getRelativeFeedId(feedlist, feed, 'prev'); - if (new_feed) viewfeed(new_feed, 0, ''); - } - - if (keycode == 75) { // k - var feed = getActiveFeedId(); - var new_feed = getRelativeFeedId(feedlist, feed, 'next'); - if (new_feed) viewfeed(new_feed, 0, ''); - } - -// notify("KC: " + keycode); - -} - // if argument is undefined, current subtitle is not updated // use blank string to clear subtitle function updateTitle(s) { @@ -403,9 +365,20 @@ function resize_feeds_frame() { var f = document.getElementById("feeds-frame"); var tf = document.getElementById("mainFooter"); var th = document.getElementById("mainHeader"); - - f.style.height = document.body.scrollHeight - tf.scrollHeight - - th.scrollHeight - 50 + "px"; + + var footer_height = 0; + var header_height = 0; + + if (tf) { + footer_height = tf.scrollHeight; + } + + if (th) { + header_height = th.scrollHeight; + } + + f.style.height = document.body.scrollHeight - footer_height - + header_height - 50 + "px"; } function init_second_stage() { @@ -415,18 +388,16 @@ function init_second_stage() { cookie_lifetime = getCookie("ttrss_cltime"); delCookie("ttrss_vf_test"); - - setCookie("ttrss_vf_actfeed", ""); updateFeedList(false, false); document.onkeydown = hotkey_handler; var tb = parent.document.forms["main_toolbar_form"]; - dropboxSelect(tb.view_mode, getCookie("ttrss_vf_vmode")); - dropboxSelect(tb.limit, getCookie("ttrss_vf_limit")); + dropboxSelect(tb.view_mode, getInitParam("toolbar_view_mode")); + dropboxSelect(tb.limit, getInitParam("toolbar_limit")); - daemon_enabled = getCookie("ttrss_vf_daemon"); + daemon_enabled = getInitParam("daemon_enabled"); // FIXME should be callled after window resize @@ -435,15 +406,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"); @@ -485,8 +447,10 @@ function quickMenuGo(opid) { alert("Please select some feed first."); return; } + + var fn = getFeedName(actid); - if (confirm("Unsubscribe from current feed?")) { + if (confirm("Unsubscribe from " + fn + "?")) { qfdDelete(actid); } @@ -525,9 +489,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); @@ -549,46 +510,46 @@ function toggleDispRead() { return } - var hide_read_feeds = (getCookie("ttrss_vf_hreadf") == 1); + var hide_read_feeds = (getInitParam("hide_read_feeds") == "1"); hide_read_feeds = !hide_read_feeds; - + + debug("toggle_disp_read => " + hide_read_feeds); + + hideOrShowFeeds(getFeedsContext().document, hide_read_feeds); + var query = "backend.php?op=rpc&subop=setpref" + "&key=HIDE_READ_FEEDS&value=" + param_escape(hide_read_feeds); - xmlhttp.open("GET", query); - xmlhttp.onreadystatechange=hide_unread_callback; - xmlhttp.send(null); + storeInitParam("hide_read_feeds", hide_read_feeds, true); + + new Ajax.Request(query); } catch (e) { exception_error("toggleDispRead", e); } } -function debug(msg) { - var c = document.getElementById('debug_output'); - if (c && c.style.display == "block") { - while (c.lastChild != 'undefined' && c.childNodes.length > 20) { - c.removeChild(c.lastChild); - } - - var d = new Date(); - var ts = leading_zero(d.getHours()) + ":" + leading_zero(d.getMinutes()) + - ":" + leading_zero(d.getSeconds()); - c.innerHTML = "
  • [" + ts + "] " + msg + "
  • " + c.innerHTML; - } -} +function parse_runtime_info(elem) { + var param = elem.firstChild; -function fatalError(code, message) { - try { - var fe = document.getElementById("fatal_error"); - var fc = document.getElementById("fatal_error_msg"); + debug("parse_runtime_info"); - fc.innerHTML = "Code " + code + ": " + message; + while (param) { + var k = param.getAttribute("key"); + var v = param.getAttribute("value"); - fe.style.display = "block"; + debug("RI: " + k + " => " + v); - } catch (e) { - exception_error("fatalError", e); + var w = document.getElementById("noDaemonWarning"); + + if (w) { + if (k == "daemon_is_running" && v != 1) { + w.style.display = "block"; + } else { + w.style.display = "none"; + } + } + param = param.nextSibling; } }