-
var total_unread = 0;
-var first_run = true;
var display_tags = false;
var global_unread = -1;
-var active_title_text = "";
-var current_subtitle = "";
-var daemon_enabled = false;
-var daemon_refresh_only = false;
-//var _qfd_deleted_feed = 0;
var firsttime_update = true;
var _active_feed_id = 0;
var _active_feed_is_cat = false;
var number_of_feeds = 0;
-var _hfd_scrolltop = 0;
var hotkey_prefix = false;
var hotkey_prefix_pressed = false;
-var init_params = new Object();
+var init_params = {};
var ver_offset = 0;
var hor_offset = 0;
var feeds_sort_by_unread = false;
var feedlist_sortable_enabled = false;
+var _force_scheduled_update = false;
+var last_scheduled_update = false;
function activeFeedIsCat() {
return _active_feed_is_cat;
function getActiveFeedId() {
try {
- console.log("gAFID: " + _active_feed_id);
+ //console.log("gAFID: " + _active_feed_id);
return _active_feed_id;
} catch (e) {
exception_error("getActiveFeedId", e);
function setActiveFeedId(id, is_cat) {
try {
- console.log("sAFID(" + id + ", " + is_cat + ")");
+ //console.log("sAFID(" + id + ", " + is_cat + ")");
_active_feed_id = id;
if (is_cat != undefined) {
function dlg_frefresh_callback(transport, deleted_feed) {
if (getActiveFeedId() == deleted_feed) {
- var h = $("headlines-frame");
- if (h) {
- h.innerHTML = "<div class='whiteBox'>" + __('No feed selected.') + "</div>";
- }
+ setTimeout("viewfeed(-5)", 100);
}
setTimeout('updateFeedList(false, false)', 50);
closeInfoBox();
}
-function scheduleFeedUpdate(force) {
-
- console.log("in scheduleFeedUpdate");
-
-/* if (!daemon_enabled && !daemon_refresh_only) {
- notify_progress("Updating feeds...", true);
- } */
-
- var query_str = "backend.php?op=rpc&subop=";
-
- if (force) {
- query_str = query_str + "forceUpdateAllFeeds";
- } else {
- query_str = query_str + "updateAllFeeds";
- }
-
- var omode;
-
- if (firsttime_update && !navigator.userAgent.match("Opera")) {
- firsttime_update = false;
- omode = "T";
- } else {
+function updateFeedList() {
+ try {
+ //console.log("updateFeedList");
+
+ if (offline_mode) return render_offline_feedlist();
+
+ var query_str = "backend.php?op=feeds";
+
if (display_tags) {
- omode = "tl";
- } else {
- omode = "flc";
+ query_str = query_str + "&tags=1";
}
- }
- query_str = query_str + "&omode=" + omode;
- query_str = query_str + "&uctr=" + global_unread;
-
- console.log("REFETCH query: " + query_str);
-
- new Ajax.Request("backend.php", {
- parameters: query_str,
- onComplete: function(transport) {
- parse_counters_reply(transport, true);
+ if (getActiveFeedId() && !activeFeedIsCat()) {
+ query_str = query_str + "&actid=" + getActiveFeedId();
+ }
+
+ new Ajax.Request("backend.php", {
+ parameters: query_str,
+ onComplete: function(transport) {
+ render_feedlist(transport.responseText);
} });
-}
-
-function updateFeedList(silent, fetch) {
-// if (silent != true) {
-// notify("Loading feed list...");
-// }
-
- console.log("<b>updateFeedList</b>");
-
- if (offline_mode) return render_offline_feedlist();
-
- var query_str = "backend.php?op=feeds";
-
- if (display_tags) {
- query_str = query_str + "&tags=1";
- }
-
- if (getActiveFeedId() && !activeFeedIsCat()) {
- query_str = query_str + "&actid=" + getActiveFeedId();
+ } catch (e) {
+ exception_error("updateFeedList", e);
}
-
- if (fetch) query_str = query_str + "&fetch=yes";
-
-// var feeds_frame = $("feeds-frame");
-// feeds_frame.src = query_str;
-
- console.log("updateFeedList Q=" + query_str);
-
- new Ajax.Request("backend.php", {
- parameters: query_str,
- onComplete: function(transport) {
- feedlist_callback2(transport);
- } });
-
}
function catchupAllFeeds() {
notify_progress("Marking all feeds as read...");
- console.log("catchupAllFeeds Q=" + query_str);
+ //console.log("catchupAllFeeds Q=" + query_str);
new Ajax.Request("backend.php", {
parameters: query_str,
return false; // block unneeded form submits
}
-function viewfeed(feed, subop) {
+/*function viewfeed(feed, subop) {
var f = window.frames["feeds-frame"];
f.viewfeed(feed, subop);
-}
+} */
function timeout() {
if (getInitParam("bw_limit") == "1") return;
- scheduleFeedUpdate(false);
+ try {
+ var date = new Date();
+ var ts = Math.round(date.getTime() / 1000);
+
+ if (ts - last_scheduled_update > 10 || _force_scheduled_update) {
+
+ //console.log("timeout()");
+
+ window.clearTimeout(counter_timeout_id);
+
+ var query_str = "?op=rpc&subop=getAllCounters";
+
+ var omode;
+
+ if (firsttime_update && !navigator.userAgent.match("Opera")) {
+ firsttime_update = false;
+ omode = "T";
+ } else {
+ if (display_tags) {
+ omode = "tl";
+ } else {
+ omode = "flc";
+ }
+ }
+
+ query_str = query_str + "&omode=" + omode;
+
+ if (!_force_scheduled_update)
+ query_str = query_str + "&last_article_id=" + getInitParam("last_article_id");
+
+ //console.log("[timeout]" + query_str);
+
+ new Ajax.Request("backend.php", {
+ parameters: query_str,
+ onComplete: function(transport) {
+ handle_rpc_reply(transport, true);
+ } });
- var refresh_time = getInitParam("feeds_frame_refresh");
+ last_scheduled_update = ts;
+ _force_scheduled_update = false;
+ }
- if (!refresh_time) refresh_time = 600;
+ } catch (e) {
+ exception_error("timeout", e);
+ }
- setTimeout("timeout()", refresh_time*1000);
+ setTimeout("timeout()", 3000);
}
function resetSearch() {
viewCurrentFeed(0, "");
}
-// if argument is undefined, current subtitle is not updated
-// use blank string to clear subtitle
-function updateTitle(s) {
+function updateTitle() {
var tmp = "Tiny Tiny RSS";
- if (s != undefined) {
- current_subtitle = s;
- }
-
if (global_unread > 0) {
tmp = tmp + " (" + global_unread + ")";
}
- if (current_subtitle) {
- tmp = tmp + " - " + current_subtitle;
- }
-
- if (active_title_text.length > 0) {
- tmp = tmp + " > " + active_title_text;
- }
-
if (window.fluid) {
if (global_unread > 0) {
window.fluid.dockBadge = global_unread;
}
function genericSanityCheck() {
-
-// if (!Ajax.getTransport()) fatalError(1);
-
setCookie("ttrss_test", "TEST");
if (getCookie("ttrss_test") != "TEST") {
if (!genericSanityCheck())
return;
- if (getURLParam('debug')) {
- Element.show("debug_output");
- console.log('debug mode activated');
- }
-
var params = "&ua=" + param_escape(navigator.userAgent);
loading_set_progress(30);
delCookie("ttrss_test");
-// document.onresize = resize_headlines;
window.onresize=resize_headlines;
var toolbar = document.forms["main_toolbar_form"];
dropboxSelect(toolbar.view_mode, getInitParam("default_view_mode"));
dropboxSelect(toolbar.order_by, getInitParam("default_view_order_by"));
- daemon_enabled = getInitParam("daemon_enabled") == 1;
- daemon_refresh_only = getInitParam("daemon_refresh_only") == 1;
feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1;
-/* var fl = cache_find_param("FEEDLIST", getInitParam("num_feeds"));
-
- if (fl) {
- render_feedlist(fl);
- if ($("feedList")) {
- request_counters();
- } else {
- setTimeout('updateFeedList(false, false)', 50);
- }
- } else {
- setTimeout('updateFeedList(false, false)', 50);
- } */
-
setTimeout('updateFeedList(false, false)', 50);
console.log("second stage ok");
enable_offline_reading();
+ if (has_local_storage())
+ localStorage.clear();
+
} catch (e) {
exception_error("init_second_stage", e);
}
return;
}
- if (opid == "qmcUpdateFeeds") {
- scheduleFeedUpdate(true);
- return;
- }
-
if (opid == "qmcCatchupAll") {
catchupAllFeeds();
return;
}
}
-function updateFeedTitle(t) {
- active_title_text = t;
- updateTitle();
-}
-
function toggleDispRead() {
try {
}
function parse_runtime_info(elem) {
- if (!elem) {
- console.log("parse_runtime_info: elem is null, aborting");
+
+ if (!elem || !elem.firstChild) {
+ console.warn("parse_runtime_info: invalid node passed");
return;
}
- var param = elem.firstChild;
+ var data = JSON.parse(elem.firstChild.nodeValue);
- console.log("parse_runtime_info: " + param);
+ //console.log("parsing runtime info...");
- while (param) {
- var k = param.getAttribute("key");
- var v = param.getAttribute("value");
+ for (k in data) {
+ var v = data[k];
- console.log("RI: " + k + " => " + v);
+ // console.log("RI: " + k + " => " + v);
- if (k == "num_feeds") {
+ if (k == "num_feeds" || k == "last_article_id") {
init_params[k] = v;
}
if (!error_flag) {
notify('');
- }
+ }
-/* var w = $("noDaemonWarning");
-
- if (w) {
- if (k == "daemon_is_running" && v != 1) {
- w.style.display = "block";
- } else {
- w.style.display = "none";
- }
- } */
- param = param.nextSibling;
}
}
function collapse_feedlist() {
try {
- console.log("collapse_feedlist");
+ //console.log("collapse_feedlist");
var theme = getInitParam("theme");
if (theme != "" &&
if (!hotkey_prefix) {
- if (keycode == 68 && shift_key) { // d
- if (!Element.visible("debug_output")) {
- Element.show("debug_output");
- console.log('debug mode activated');
- } else {
- Element.hide("debug_output");
- }
-
- return;
- }
-
if ((keycode == 191 || keychar == '?') && shift_key) { // ?
if (!Element.visible("hotkey_help_overlay")) {
//Element.show("hotkey_help_overlay");
return false;
}
- if (keycode == 82 && shift_key) { // R
+/* if (keycode == 82 && shift_key) { // R
scheduleFeedUpdate(true);
return;
- }
+ } */
if (keycode == 74) { // j
var feed = getActiveFeedId();
return;
}
+ if (keycode == 68 && shift_key) { // shift-D
+ if (isCdmMode()) {
+ //cdmDismissArticle(active_post_id);
+ cdmDismissSelectedArticles();
+ }
+ }
if (keycode == 78 || keycode == 40) { // n, down
if (typeof moveToPost != 'undefined') {
moveToPost('next');
- return;
+ return false;
}
}
if (keycode == 80 || keycode == 38) { // p, up
if (typeof moveToPost != 'undefined') {
moveToPost('prev');
- return;
+ return false;
}
}
return false;
}
- if (keycode == 85 && shift_key) { // U
+/* if (keycode == 85 && shift_key) { // U
scheduleFeedUpdate(true);
return false;
- }
+ } */
if (keycode == 85) { // u
if (getActiveFeedId()) {
exception_error("reverseHeadlineOrder", e);
}
}
+
+function showFeedsWithErrors() {
+ displayDlg('feedUpdateErrors');
+}
+