var init_params = new Object();
+var op_history = new Array();
+
+function tagsAreDisplayed() {
+ return display_tags;
+}
+
function toggleTags() {
display_tags = !display_tags;
last_refetch = date.getTime() / 1000;
- if (!xmlhttp_ctr.responseXML) {
- notify("refetch_callback: backend did not return valid XML", true, true);
- return;
- }
-
- var reply = xmlhttp_ctr.responseXML.firstChild;
-
- if (!reply) {
- notify("refetch_callback: backend did not return expected XML object", true, true);
- updateTitle("");
- return;
- }
-
- var error_code = false;
- var error_msg = false;
-
- if (reply.firstChild) {
- error_code = reply.firstChild.getAttribute("error-code");
- error_msg = reply.firstChild.getAttribute("error-msg");
- }
-
- if (!error_code) {
- error_code = reply.getAttribute("error-code");
- error_msg = reply.getAttribute("error-msg");
- }
-
- if (error_code && error_code != 0) {
- debug("refetch_callback: got error code " + error_code);
- return fatalError(error_code, error_msg);
- }
-
- var counters = reply.firstChild;
-
- parse_counters(counters, true);
-
- var runtime_info = counters.nextSibling;
-
- parse_runtime_info(runtime_info);
+ parse_counters_reply(xmlhttp_ctr, true);
debug("refetch_callback: done");
omode = "T";
} else {
if (display_tags) {
- omode = "t";
+ omode = "tl";
} else {
omode = "flc";
}
// notify("Loading feed list...");
// }
+ debug("<b>updateFeedList</b>");
+
var query_str = "backend.php?op=feeds";
if (display_tags) {
debug('debug mode activated');
}
- xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true);
+ var params = "&ua=" + param_escape(navigator.userAgent);
+
+ xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck" + params, true);
xmlhttp.onreadystatechange=backend_sanity_check_callback;
xmlhttp.send(null);
displayDlg("quickAddFeed");
return;
}
+
+ if (opid == "qmcEditFeed") {
+ editFeedDlg(getActiveFeedId());
+ }
if (opid == "qmcRemoveFeed") {
var actid = getActiveFeedId();
window.location = "tt-rss.php?swu=" + user;
}
+function editFeedDlg(feed) {
+
+ disableHotkeys();
+ if (!feed) {
+ alert("Please select some feed first.");
+ return;
+ }
+
+ if (feed <= 0 || active_feed_is_cat || tagsAreDisplayed()) {
+ alert("You can't edit this kind of feed.");
+ return;
+ }
+
+ if (xmlhttp_ready(xmlhttp)) {
+ xmlhttp.open("GET", "backend.php?op=pref-feeds&subop=editfeed&id=" +
+ param_escape(feed), true);
+ xmlhttp.onreadystatechange=infobox_callback;
+ xmlhttp.send(null);
+ } else {
+ printLockingError();
+ }
+}
+
+/* this functions duplicate those of prefs.js feed editor, with
+ some differences because there is no feedlist */
+
+function feedEditCancel() {
+ closeInfoBox();
+ return false;
+}
+
+function feedEditSave() {
+
+ try {
+
+ if (!xmlhttp_ready(xmlhttp)) {
+ printLockingError();
+ return
+ }
+
+ // FIXME: add parameter validation
+
+ var query = Form.serialize("edit_feed_form");
+
+ notify("Saving feed...");
+
+ xmlhttp.open("POST", "backend.php", true);
+ xmlhttp.onreadystatechange=dlg_frefresh_callback;
+ xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+ xmlhttp.send(query);
+
+ closeInfoBox();
+
+ return false;
+
+ } catch (e) {
+ exception_error("feedEditSave (main)", e);
+ }
+}
+
+function localHotkeyHandler(e) {
+
+ var keycode;
+
+ if (window.event) {
+ keycode = window.event.keyCode;
+ } else if (e) {
+ keycode = e.which;
+ }
+
+ var shift_key = false;
+
+ try {
+ shift_key = e.shiftKey;
+ } catch (e) { }
+
+ if (keycode == 66 && shift_key) { // shift-B
+
+ var op = history_pop();
+
+ if (op) {
+ var op_s = op.split(":");
+
+ var i;
+ for (i = 0; i < op_s.length; i++) {
+ if (op_s[i] == 'undefined') {
+ op_s[i] = undefined;
+ }
+
+ if (op_s[i] == 'false') {
+ op_s[i] = false;
+ }
+
+ if (op_s[i] == 'true') {
+ op_s[i] = true;
+ }
+
+ }
+
+ debug("history split: " + op_s);
+
+ if (op_s[0] == "ARTICLE") {
+ debug("history: reverting to article " + op_s[1] + "/" + op_s[2]);
+ view(op_s[1], op_s[2], true);
+ }
+
+ if (op_s[0] == "FEED") {
+ viewfeed(op_s[1], op_s[2], op_s[3], op_s[4], true);
+ }
+
+ } else {
+ notify("No operation to undo");
+ }
+
+ return false;
+
+ }
+
+ debug("LKP=" + keycode);
+}
+
+function history_push(op) {
+ debug("history_push: " + op);
+ op_history.push(op);
+
+ while (op_history.length > 30) {
+ op_history.shift();
+ }
+}
+
+function history_pop() {
+ var op = op_history.pop();
+ debug("history_pop: " + op);
+ return op;
+}
+
+function history_clear() {
+ debug("history_clear");
+ op_history.clear();
+}