+
var total_unread = 0;
var first_run = true;
var display_tags = false;
var sanity_check_done = false;
var _hfd_scrolltop = 0;
var hotkey_prefix = false;
+var hotkey_prefix_pressed = false;
var init_params = new Object();
var ver_offset = 0;
var hor_offset = 0;
var feeds_sort_by_unread = false;
var feedlist_sortable_enabled = false;
-var offline_mode = false;
-var store = false;
-var localServer = false;
-var db = false;
-var download_progress_last = 0;
function activeFeedIsCat() {
return _active_feed_is_cat;
}
function getActiveFeedId() {
-// return getCookie("ttrss_vf_actfeed");
try {
debug("gAFID: " + _active_feed_id);
return _active_feed_id;
}
function setActiveFeedId(id, is_cat) {
-// return setCookie("ttrss_vf_actfeed", id);
try {
debug("sAFID(" + id + ", " + is_cat + ")");
_active_feed_id = id;
debug("toggleTags: " + show_all + "; " + display_tags);
- var p = document.getElementById("dispSwitchPrompt");
+ var p = $("dispSwitchPrompt");
if (!show_all && !display_tags) {
displayDlg("printTagCloud");
function dlg_frefresh_callback(transport, deleted_feed) {
if (getActiveFeedId() == deleted_feed) {
- var h = document.getElementById("headlines-frame");
+ var h = $("headlines-frame");
if (h) {
h.innerHTML = "<div class='whiteBox'>" + __('No feed selected.') + "</div>";
}
}
if (!transport.responseXML) {
- if (!window.google && !google.gears) {
- fatalError(3, "Sanity check: Received reply is not XML", transport.responseText);
+ if (!store) {
+ fatalError(3, "Sanity check: Received reply is not XML",
+ transport.responseText);
+ return;
} else {
init_offline();
+ return;
}
- return;
+ }
+
+ if (getURLParam("offline")) {
+ return init_offline();
}
var reply = transport.responseXML.firstChild.firstChild;
var v = param.getAttribute("value");
debug(k + " => " + v);
init_params[k] = v;
+
+ if (db) {
+ db.execute("DELETE FROM init_params WHERE key = ?", [k]);
+ db.execute("INSERT INTO init_params (key,value) VALUES (?, ?)",
+ [k, v]);
+ }
+
param = param.nextSibling;
}
}
debug("REFETCH query: " + query_str);
- new Ajax.Request(query_str, {
+ new Ajax.Request("backend.php", {
+ parameters: query_str,
onComplete: function(transport) {
refetch_callback2(transport);
} });
debug("<b>updateFeedList</b>");
+ if (offline_mode) return render_offline_feedlist();
+
var query_str = "backend.php?op=feeds";
if (display_tags) {
if (fetch) query_str = query_str + "&fetch=yes";
-// var feeds_frame = document.getElementById("feeds-frame");
+// var feeds_frame = $("feeds-frame");
// feeds_frame.src = query_str;
debug("updateFeedList Q=" + query_str);
- new Ajax.Request(query_str, {
+ new Ajax.Request("backend.php", {
+ parameters: query_str,
onComplete: function(transport) {
feedlist_callback2(transport);
} });
debug("catchupAllFeeds Q=" + query_str);
- new Ajax.Request(query_str, {
+ new Ajax.Request("backend.php", {
+ parameters: query_str,
onComplete: function(transport) {
feedlist_callback2(transport);
} });
}
function resetSearch() {
- var searchbox = document.getElementById("searchbox")
+ var searchbox = $("searchbox")
if (searchbox.value != "" && getActiveFeedId()) {
searchbox.value = "";
// if (!Ajax.getTransport()) fatalError(1);
- setCookie("ttrss_vf_test", "TEST");
+ setCookie("ttrss_test", "TEST");
- if (getCookie("ttrss_vf_test") != "TEST") {
+ if (getCookie("ttrss_test") != "TEST") {
fatalError(2);
}
try {
- // this whole shebang is based on http://www.birnamdesigns.com/misc/busted2.html
-
- if (arguments.callee.done) return;
- arguments.callee.done = true;
-
init_gears();
disableContainerChildren("headlinesToolbar", true);
loading_set_progress(30);
- new Ajax.Request("backend.php?op=rpc&subop=sanityCheck" + params, {
+ new Ajax.Request("backend.php", {
+ parameters: "backend.php?op=rpc&subop=sanityCheck" + params,
onComplete: function(transport) {
backend_sanity_check_callback(transport);
} });
debug("resize_headlines: " + delta_x + ":" + delta_y);
- var h_frame = document.getElementById("headlines-frame");
- var c_frame = document.getElementById("content-frame");
- var f_frame = document.getElementById("footer");
- var feeds_frame = document.getElementById("feeds-holder");
- var resize_grab = document.getElementById("resize-grabber");
- var resize_handle = document.getElementById("resize-handle");
+ var h_frame = $("headlines-frame");
+ var c_frame = $("content-frame");
+ var f_frame = $("footer");
+ var feeds_frame = $("feeds-holder");
+ var resize_grab = $("resize-grabber");
+ var resize_handle = $("resize-handle");
if (!c_frame || !h_frame) return;
try {
- delCookie("ttrss_vf_test");
+ 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.limit, getInitParam("default_view_limit"));
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"));
+/* var fl = cache_find_param("FEEDLIST", getInitParam("num_feeds"));
if (fl) {
render_feedlist(fl);
- if (document.getElementById("feedList")) {
+ if ($("feedList")) {
request_counters();
} else {
setTimeout('updateFeedList(false, false)', 50);
}
} else {
setTimeout('updateFeedList(false, false)', 50);
- }
+ } */
+
+ setTimeout('updateFeedList(false, false)', 50);
debug("second stage ok");
resize_headlines();
+ enable_offline_reading();
+
} catch (e) {
exception_error("init_second_stage", e);
}
}
function quickMenuChange() {
- var chooser = document.getElementById("quickMenuChooser");
+ var chooser = $("quickMenuChooser");
var opid = chooser[chooser.selectedIndex].value;
chooser.selectedIndex = 0;
resize_headlines();
}
- if (opid == "qmcDownload") {
- displayDlg("offlineDownload");
- return;
- }
-
if (opid == "qmcResetCats") {
if (confirm(__("Reset category order?"))) {
- var query = "backend.php?op=feeds&subop=catsortreset";
+ var query = "?op=feeds&subop=catsortreset";
notify_progress("Loading, please wait...", true);
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
window.setTimeout('updateFeedList(false, false)', 50);
} });
if (title == undefined || confirm(msg)) {
notify_progress("Removing feed...");
- var query = "backend.php?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id;
+ var query = "?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id;
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
dlg_frefresh_callback(transport, feed_id);
} });
function toggleDispRead() {
try {
- var hide_read_feeds = (getInitParam("hide_read_feeds") == "1");
-
- hide_read_feeds = !hide_read_feeds;
+ var hide = !(getInitParam("hide_read_feeds") == "1");
- debug("toggle_disp_read => " + hide_read_feeds);
+ hideOrShowFeeds(hide);
- hideOrShowFeeds(hide_read_feeds);
+ var query = "?op=rpc&subop=setpref&key=HIDE_READ_FEEDS&value=" +
+ param_escape(hide);
- storeInitParam("hide_read_feeds", hide_read_feeds, true);
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ setInitParam("hide_read_feeds", hide);
+ } });
} catch (e) {
exception_error("toggleDispRead", e);
}
if (k == "new_version_available") {
- var icon = document.getElementById("newVersionIcon");
+ var icon = $("newVersionIcon");
if (icon) {
if (v == "1") {
icon.style.display = "inline";
notify('');
}
-/* var w = document.getElementById("noDaemonWarning");
+/* var w = $("noDaemonWarning");
if (w) {
if (k == "daemon_is_running" && v != 1) {
var query = "";
if (feed > 0) {
- query = "backend.php?op=pref-feeds&subop=editfeed&id=" + param_escape(feed);
+ query = "?op=pref-feeds&subop=editfeed&id=" + param_escape(feed);
} else {
- query = "backend.php?op=pref-labels&subop=edit&id=" + param_escape(-feed-11);
+ query = "?op=pref-labels&subop=edit&id=" + param_escape(-feed-11);
}
disableHotkeys();
- new Ajax.Request(query, {
+ notify_progress("Loading, please wait...", true);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
infobox_callback2(transport);
} });
notify_progress("Clearing feed...");
- var query = "backend.php?op=pref-feeds&quiet=1&subop=clear&id=" + feed_id;
+ var query = "?op=pref-feeds&quiet=1&subop=clear&id=" + feed_id;
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
dlg_frefresh_callback(transport, feed_id);
} });
if (theme != "" && theme != "compact" && theme != "graycube" &&
theme != "compat") return;
- var fl = document.getElementById("feeds-holder");
- var fh = document.getElementById("headlines-frame");
- var fc = document.getElementById("content-frame");
- var ft = document.getElementById("toolbar");
- var ff = document.getElementById("footer");
- var fhdr = document.getElementById("header");
- var fbtn = document.getElementById("collapse_feeds_btn");
+ var fl = $("feeds-holder");
+ var fh = $("headlines-frame");
+ var fc = $("content-frame");
+ var ft = $("toolbar");
+ var ff = $("footer");
+ var fhdr = $("header");
+ var fbtn = $("collapse_feeds_btn");
if (!Element.visible(fl)) {
Element.show(fl);
if (fc) fc.style.left = fl.offsetWidth + 40 + "px";
}
- setCookie("ttrss_vf_fclps", "0");
+ query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false";
+
+ new Ajax.Request("backend.php", { parameters: query });
} else {
Element.hide(fl);
}
- setCookie("ttrss_vf_fclps", "1");
+ query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
+
+ new Ajax.Request("backend.php", { parameters: query });
+
}
} catch (e) {
exception_error("toggle_feedlist", e);
var pr = prompt(__("Assign score to article:"), score);
if (pr != undefined) {
- var query = "backend.php?op=rpc&subop=setScore&id=" + id + "&score=" + pr;
+ var query = "?op=rpc&subop=setScore&id=" + id + "&score=" + pr;
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
viewCurrentFeed();
} });
if (confirm(pr)) {
notify_progress("Rescoring articles...");
- var query = "backend.php?op=pref-feeds&subop=rescore&quiet=1&ids=" + actid;
+ var query = "?op=pref-feeds&subop=rescore&quiet=1&ids=" + actid;
- new Ajax.Request(query, {
- onComplete: function(transport) {
- viewCurrentFeed();
- } });
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ viewCurrentFeed();
+ } });
}
}
var keycode;
var shift_key = false;
- var feedlist = document.getElementById('feedList');
+ var cmdline = $('cmdline');
+ var feedlist = $('feedList');
try {
shift_key = e.shiftKey;
if ((keycode == 70 || keycode == 67 || keycode == 71)
&& !hotkey_prefix) {
+ var date = new Date();
+ var ts = Math.round(date.getTime() / 1000);
+
hotkey_prefix = keycode;
- debug("KP: PREFIX=" + keycode + " CHAR=" + keychar);
+ hotkey_prefix_pressed = ts;
+
+ cmdline.innerHTML = keychar;
+ Element.show(cmdline);
+
+ debug("KP: PREFIX=" + keycode + " CHAR=" + keychar + " TS=" + ts);
return true;
}
/* Global hotkeys */
+ Element.hide(cmdline);
+
if (!hotkey_prefix) {
if (keycode == 68 && shift_key) { // d
if (keycode == 9) { // tab
var id = getArticleUnderPointer();
if (id) {
- var cb = document.getElementById("RCHK-" + id);
+ var cb = $("RCHK-" + id);
if (cb) {
cb.checked = !cb.checked;
}
}
- if (keycode == 68 && shift_key) { // D
- initiate_offline_download();
- return false;
- }
-
- if (keycode == 68) { // d
- displayDlg("offlineDownload");
- return false;
- }
-
if (keycode == 87) { // w
feeds_sort_by_unread = !feeds_sort_by_unread;
return resort_feedlist();
return false;
}
- var query = "backend.php?op=pref-labels&subop=add&caption=" +
+ var query = "?op=pref-labels&subop=add&caption=" +
param_escape(caption);
notify_progress("Loading, please wait...", true);
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
updateFeedList();
} });
var selected = getSelectedFeedsFromBrowser();
+ var mode = document.forms['feed_browser'].mode;
+
+ mode = mode[mode.selectedIndex].value;
+
if (selected.length > 0) {
closeInfoBox();
notify_progress("Loading, please wait...", true);
- var query = "backend.php?op=pref-feeds&subop=massSubscribe&ids="+
- param_escape(selected.toString());
+ var query = "?op=pref-feeds&subop=massSubscribe&ids="+
+ param_escape(selected.toString()) + "&mode=" + param_escape(mode);
- new Ajax.Request(query, {
+ new Ajax.Request("backend.php", {
+ parameters: query,
onComplete: function(transport) {
updateFeedList();
} });
}
}
-function init_gears() {
- try {
-
- if (window.google && google.gears) {
- localServer = google.gears.factory.create("beta.localserver");
- store = localServer.createManagedStore("tt-rss");
- db = google.gears.factory.create('beta.database');
- db.open('tt-rss');
-
- db.execute("CREATE TABLE IF NOT EXISTS cache (id text, article text, param text, added text)");
-
- db.execute("CREATE TABLE if not exists offline_feeds (id integer, title text)");
-
- db.execute("CREATE TABLE if not exists offline_data (id integer, feed_id integer, title text, updated text, content text, tags text)");
-
- var qmcDownload = document.getElementById("qmcDownload");
- if (qmcDownload) Element.show(qmcDownload);
-
- }
-
- cache_expire();
-
- } catch (e) {
- exception_error("init_gears", e);
- }
-}
-
-function init_offline() {
- try {
- offline_mode = true;
-
- render_offline_feedlist();
-
- remove_splash();
- } catch (e) {
- exception_error("init_offline", e);
- }
-}
-
-function offline_download_parse(stage, transport) {
- try {
- if (transport.responseXML) {
-
- if (stage == 0) {
-
- var feeds = transport.responseXML.getElementsByTagName("feed");
-
- if (feeds.length > 0) {
- db.execute("DELETE FROM offline_feeds");
- }
-
- for (var i = 0; i < feeds.length; i++) {
- var id = feeds[i].getAttribute("id");
- var title = feeds[i].firstChild.nodeValue;
-
- db.execute("INSERT INTO offline_feeds (id,title) VALUES (?,?)",
- [id, title]);
- }
-
- window.setTimeout("initiate_offline_download("+(stage+1)+")", 50);
- }
-
- notify_info("All done.");
- }
- } catch (e) {
- exception_error("offline_download_parse", e);
- }
-}
-
-function download_set_progress(p) {
- try {
- var o = document.getElementById("d_progress_i");
-
- if (!o) return;
-
- Element.show(o);
-
- new Effect.Scale(o, p, {
- scaleY : false,
- scaleFrom : download_progress_last,
- scaleMode: { originalWidth : 100 },
- queue: { position: 'end', scope: 'LSP-Q', limit: 3 } });
-
- download_progress_last = p;
- } catch (e) {
- exception_error("download_progress", e);
- }
-}
-
-function initiate_offline_download(stage) {
- try {
-
- if (!stage) stage = 0;
-
- notify_progress("Loading, please wait... S" + stage, true);
- download_set_progress(20);
-
- var query = "backend.php?op=rpc&subop=download&stage=" + stage;
-
- if (document.getElementById("download_ops_form")) {
- query = query + "&" + Form.serialize("download_ops_form");
- }
-
- new Ajax.Request(query, {
- onComplete: function(transport) {
- offline_download_parse(stage, transport);
- } });
-
- } catch (e) {
- exception_error("initiate_offline_download", e);
- }
-}