} });
}
+function checkInactiveFeeds() {
+ try {
+ new Ajax.Request("backend.php", {
+ parameters: "?op=pref-feeds&method=getinactivefeeds",
+ onComplete: function(transport) {
+ if (parseInt(transport.responseText) > 0) {
+ Element.show(dijit.byId("pref_feeds_inactive_btn").domNode);
+ }
+ } });
+
+ } catch (e) {
+ exception_error("checkInactiveFeeds", e);
+ }
+}
function updateUsersList(sort_key) {
try {
function editUser(id, event) {
try {
- notify_progress("Loading, please wait...");
-
- var query = "?op=pref-users&method=edit&id=" +
+ var query = "backend.php?op=pref-users&method=edit&id=" +
param_escape(id);
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- infobox_callback2(transport);
- document.forms['user_edit_form'].login.focus();
- } });
+ if (dijit.byId("userEditDlg"))
+ dijit.byId("userEditDlg").destroyRecursive();
+
+ dialog = new dijit.Dialog({
+ id: "userEditDlg",
+ title: __("User Editor"),
+ style: "width: 600px",
+ execute: function() {
+ if (this.validate()) {
+ notify_progress("Saving data...", true);
+
+ var query = dojo.formToQuery("user_edit_form");
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ dialog.hide();
+ updateUsersList();
+ }});
+ }
+ },
+ href: query});
+
+ dialog.show();
} catch (e) {
exception_error("editUser", e);
id: "filterEditDlg",
title: __("Edit Filter"),
style: "width: 600px",
+
test: function() {
var query = "backend.php?" + dojo.formToQuery("filter_edit_form") + "&savemode=test";
- if (dijit.byId("filterTestDlg"))
- dijit.byId("filterTestDlg").destroyRecursive();
-
- var test_dlg = new dijit.Dialog({
- id: "filterTestDlg",
- title: "Test Filter",
- style: "width: 600px",
- href: query});
-
- test_dlg.show();
+ editFilterTest(query);
},
selectRules: function(select) {
$$("#filterDlg_Matches input[type=checkbox]").each(function(e) {
return false;
}
-function userEditCancel() {
- closeInfoBox();
- return false;
-}
-
-function userEditSave() {
-
- try {
-
- var login = document.forms["user_edit_form"].login.value;
-
- if (login.length == 0) {
- alert(__("Login field cannot be blank."));
- return;
- }
-
- notify_progress("Saving user...");
-
- closeInfoBox();
-
- var query = Form.serialize("user_edit_form");
-
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- updateUsersList();
- } });
-
- } catch (e) {
- exception_error("userEditSave", e);
- }
-
- return false;
-
-}
-
-
function editSelectedUser() {
var rows = getSelectedUsers();
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
- notify_info(transport.responseText);
+ notify_info(transport.responseText, true);
} });
}
return;
}
- notify_progress("Loading, please wait...");
-
var id = rows[0];
- var query = "?op=pref-users&method=userdetails&id=" + id;
+ var query = "backend.php?op=pref-users&method=userdetails&id=" + id;
+
+ if (dijit.byId("userDetailsDlg"))
+ dijit.byId("userDetailsDlg").destroyRecursive();
+
+ dialog = new dijit.Dialog({
+ id: "userDetailsDlg",
+ title: __("User details"),
+ style: "width: 600px",
+ execute: function() {
+ dialog.hide();
+ },
+ href: query});
+
+ dialog.show();
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- infobox_callback2(transport);
- } });
} catch (e) {
exception_error("selectedUserDetails", e);
}
/* Form.serialize ignores unchecked checkboxes */
- if (!query.match("&rtl_content=") &&
- this.getChildByName('rtl_content').attr('disabled') == false) {
- query = query + "&rtl_content=false";
- }
-
if (!query.match("&private=") &&
this.getChildByName('private').attr('disabled') == false) {
query = query + "&private=false";
}
} catch (e) { }
+ try {
+ if (!query.match("&hide_images=") &&
+ this.getChildByName('hide_images').attr('disabled') == false) {
+ query = query + "&hide_images=false";
+ }
+ } catch (e) { }
+
if (!query.match("&include_in_digest=") &&
this.getChildByName('include_in_digest').attr('disabled') == false) {
query = query + "&include_in_digest=false";
query = query + "&mark_unread_on_update=false";
}
- if (!query.match("&update_on_checksum_change=") &&
- this.getChildByName('update_on_checksum_change').attr('disabled') == false) {
- query = query + "&update_on_checksum_change=false";
- }
-
console.log(query);
notify_progress("Saving data...", true);
}
}
-function piggie(enable) {
- if (enable) {
- console.log("I LOVEDED IT!");
- var piggie = $("piggie");
-
- Element.show(piggie);
- Position.Center(piggie);
- Effect.Puff(piggie);
-
- }
-}
-
function opmlImportComplete(iframe) {
try {
if (!iframe.contentDocument.body.innerHTML) return false;
} });
}
+function updateSystemList() {
+ new Ajax.Request("backend.php", {
+ parameters: "?op=pref-system",
+ onComplete: function(transport) {
+ dijit.byId('systemConfigTab').attr('content', transport.responseText);
+ notify("");
+ } });
+}
+
function selectTab(id, noupdate, method) {
try {
if (!noupdate) {
updatePrefsList();
} else if (id == "userConfig") {
updateUsersList();
+ } else if (id == "systemConfig") {
+ updateSystemList();
}
var tab = dijit.byId(id + "Tab");
loading_set_progress(50);
notify("");
- dojo.addOnLoad(function() {
- var tab = getURLParam('tab');
+ var tab = getURLParam('tab');
- if (tab) {
- tab = dijit.byId(tab + "Tab");
- if (tab) dijit.byId("pref-tabs").selectChild(tab);
- }
+ if (tab) {
+ tab = dijit.byId(tab + "Tab");
+ if (tab) dijit.byId("pref-tabs").selectChild(tab);
+ }
- var method = getURLParam('method');
+ var method = getURLParam('method');
- if (method == 'editFeed') {
- var param = getURLParam('methodparam');
+ if (method == 'editFeed') {
+ var param = getURLParam('methodparam');
- window.setTimeout('editFeed(' + param + ')', 100);
- }
- });
+ window.setTimeout(function() { editFeed(param) }, 100);
+ }
- setTimeout("hotkey_prefix_timeout()", 5*1000);
+ setTimeout(hotkey_prefix_timeout, 5*1000);
} catch (e) {
exception_error("init_second_stage", e);
function init() {
try {
- dojo.registerModulePath("lib", "..");
- dojo.registerModulePath("fox", "../../js/");
-
- dojo.require("dijit.ColorPalette");
- dojo.require("dijit.Dialog");
- dojo.require("dijit.form.Button");
- dojo.require("dijit.form.CheckBox");
- dojo.require("dijit.form.DropDownButton");
- dojo.require("dijit.form.FilteringSelect");
- dojo.require("dijit.form.Form");
- dojo.require("dijit.form.RadioButton");
- dojo.require("dijit.form.Select");
- dojo.require("dijit.form.SimpleTextarea");
- dojo.require("dijit.form.TextBox");
- dojo.require("dijit.form.ValidationTextBox");
- dojo.require("dijit.InlineEditBox");
- dojo.require("dijit.layout.AccordionContainer");
- dojo.require("dijit.layout.BorderContainer");
- dojo.require("dijit.layout.ContentPane");
- dojo.require("dijit.layout.TabContainer");
- dojo.require("dijit.Menu");
- dojo.require("dijit.ProgressBar");
- dojo.require("dijit.ProgressBar");
- dojo.require("dijit.Toolbar");
- dojo.require("dijit.Tree");
- dojo.require("dijit.tree.dndSource");
- dojo.require("dojo.data.ItemFileWriteStore");
-
- dojo.require("lib.CheckBoxTree");
- dojo.require("fox.PrefFeedTree");
- dojo.require("fox.PrefFilterTree");
- dojo.require("fox.PrefLabelTree");
-
- dojo.parser.parse();
-
- dojo.addOnLoad(function() {
- loading_set_progress(50);
- new Ajax.Request("backend.php", {
- parameters: {op: "rpc", method: "sanityCheck"},
- onComplete: function(transport) {
- backend_sanity_check_callback(transport);
- } });
- });
+ require(["dojo/_base/kernel",
+ "dojo/ready",
+ "dojo/parser",
+ "dojo/_base/loader",
+ "dojo/_base/html",
+ "dijit/ColorPalette",
+ "dijit/Dialog",
+ "dijit/form/Button",
+ "dijit/form/CheckBox",
+ "dijit/form/DropDownButton",
+ "dijit/form/FilteringSelect",
+ "dijit/form/Form",
+ "dijit/form/RadioButton",
+ "dijit/form/ComboButton",
+ "dijit/form/Select",
+ "dijit/form/SimpleTextarea",
+ "dijit/form/TextBox",
+ "dijit/form/ValidationTextBox",
+ "dijit/InlineEditBox",
+ "dijit/layout/AccordionContainer",
+ "dijit/layout/AccordionPane",
+ "dijit/layout/BorderContainer",
+ "dijit/layout/ContentPane",
+ "dijit/layout/TabContainer",
+ "dijit/Menu",
+ "dijit/ProgressBar",
+ "dijit/Toolbar",
+ "dijit/Tree",
+ "dijit/tree/dndSource",
+ "dojo/data/ItemFileWriteStore",
+ "fox/PrefFeedTree",
+ "fox/PrefFilterTree",
+ "fox/PrefLabelTree" ], function (dojo, ready, parser) {
+
+ ready(function() {
+ parser.parse();
+
+ loading_set_progress(50);
+
+ var clientTzOffset = new Date().getTimezoneOffset() * 60;
+
+ new Ajax.Request("backend.php", {
+ parameters: {op: "rpc", method: "sanityCheck",
+ clientTzOffset: clientTzOffset },
+ onComplete: function(transport) {
+ backend_sanity_check_callback(transport);
+ } });
+ });
+ });
} catch (e) {
exception_error("init", e);
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
- var msg = transport.responseText;
- if (msg.match("PREFS_THEME_CHANGED")) {
- window.location.reload();
- } else {
- notify_info(msg);
- selectTab();
- }
+ updatePrefsList();
+ notify_info(transport.responseText);
} });
}
}
-
function pref_hotkey_handler(e) {
try {
+
if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return;
var keycode = false;
var keychar = String.fromCharCode(keycode);
if (keycode == 27) { // escape
- if (Element.visible("hotkey_help_overlay")) {
- Element.hide("hotkey_help_overlay");
- }
hotkey_prefix = false;
- closeInfoBox();
}
if (keycode == 16) return; // ignore lone shift
if (keycode == 17) return; // ignore lone ctrl
- if ((keycode == 67 || keycode == 71) && !hotkey_prefix) {
- hotkey_prefix = keycode;
+ if (!shift_key) keychar = keychar.toLowerCase();
+
+ var hotkeys = getInitParam("hotkeys");
+
+ if (!hotkey_prefix && hotkeys[0].indexOf(keychar) != -1) {
var date = new Date();
var ts = Math.round(date.getTime() / 1000);
+ hotkey_prefix = keychar;
hotkey_prefix_pressed = ts;
cmdline.innerHTML = keychar;
Element.show(cmdline);
- console.log("KP: PREFIX=" + keycode + " CHAR=" + keychar);
- return;
- }
-
- if (Element.visible("hotkey_help_overlay")) {
- Element.hide("hotkey_help_overlay");
- }
-
- if (keycode == 13 || keycode == 27) {
- seq = "";
- } else {
- seq = seq + "" + keycode;
+ return true;
}
- /* Global hotkeys */
-
Element.hide(cmdline);
- if (!hotkey_prefix) {
-
- if ((keycode == 191 || keychar == '?') && shift_key) { // ?
- showHelp();
- return false;
- }
-
- if (keycode == 191 || keychar == '/') { // /
- var search_boxes = new Array("label_search",
- "feed_search", "filter_search", "user_search", "feed_browser_search");
-
- for (var i = 0; i < search_boxes.length; i++) {
- var elem = $(search_boxes[i]);
- if (elem) {
- $(search_boxes[i]).focus();
- return false;
- }
- }
- }
- }
-
- /* Prefix c */
-
- if (hotkey_prefix == 67) { // c
- hotkey_prefix = false;
-
- if (keycode == 70) { // f
- quickAddFilter();
- return false;
- }
-
- if (keycode == 83) { // s
- quickAddFeed();
- return false;
- }
-
- if (keycode == 85) { // u
- // no-op
- }
-
- if (keycode == 67) { // c
- editFeedCats();
- return false;
- }
-
- if (keycode == 84 && shift_key) { // T
- feedBrowser();
- return false;
- }
-
- }
-
- /* Prefix g */
-
- if (hotkey_prefix == 71) { // g
-
- hotkey_prefix = false;
-
- if (keycode == 49 && $("genConfigTab")) { // 1
- selectTab("genConfig");
- return false;
- }
-
- if (keycode == 50 && $("feedConfigTab")) { // 2
- selectTab("feedConfig");
- return false;
- }
-
- if (keycode == 51 && $("filterConfigTab")) { // 4
- selectTab("filterConfig");
- return false;
- }
-
- if (keycode == 52 && $("labelConfigTab")) { // 5
- selectTab("labelConfig");
- return false;
- }
-
- if (keycode == 53 && $("userConfigTab")) { // 6
- selectTab("userConfig");
- return false;
- }
-
- if (keycode == 88) { // x
- return gotoMain();
- }
+ var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")";
+ hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey;
+ hotkey_prefix = false;
- }
+ var hotkey_action = false;
+ var hotkeys = getInitParam("hotkeys");
- if ($("piggie")) {
- if (seq.match("8073717369")) {
- seq = "";
- piggie(true);
- } else {
- piggie(false);
+ for (sequence in hotkeys[1]) {
+ if (sequence == hotkey) {
+ hotkey_action = hotkeys[1][sequence];
+ break;
}
}
- if (hotkey_prefix) {
- console.log("KP: PREFIX=" + hotkey_prefix + " CODE=" + keycode + " CHAR=" + keychar);
- } else {
- console.log("KP: CODE=" + keycode + " CHAR=" + keychar);
+ switch (hotkey_action) {
+ case "feed_subscribe":
+ quickAddFeed();
+ return false;
+ case "create_label":
+ addLabel();
+ return false;
+ case "create_filter":
+ quickAddFilter();
+ return false;
+ case "help_dialog":
+ //helpDialog("prefs");
+ return false;
+ default:
+ console.log("unhandled action: " + hotkey_action + "; hotkey: " + hotkey);
}
} catch (e) {
- exception_error("pref_hotkey_handler", e);
+ exception_error("hotkey_handler", e);
}
}
notify_progress("Trying to change address...", true);
- var query = "?op=rpc&method=regenOPMLKey";
+ var query = "?op=pref-feeds&method=regenOPMLKey";
new Ajax.Request("backend.php", {
parameters: query,
if (dijit.byId("profileEditDlg"))
dijit.byId("profileEditDlg").destroyRecursive();
- var query = "backend.php?op=dlg&method=editPrefProfiles";
+ var query = "backend.php?op=pref-prefs&method=editPrefProfiles";
dialog = new dijit.Dialog({
id: "profileEditDlg",
if (ok) {
notify_progress("Clearing URLs...");
- var query = "?op=rpc&method=clearKeys";
+ var query = "?op=pref-feeds&method=clearKeys";
new Ajax.Request("backend.php", {
parameters: query,
return false;
}
-function clearArticleAccessKeys() {
-
- var ok = confirm(__("This will invalidate all previously shared article URLs. Continue?"));
-
- if (ok) {
- notify_progress("Clearing URLs...");
-
- var query = "?op=rpc&method=clearArticleKeys";
+function resetFilterOrder() {
+ try {
+ notify_progress("Loading, please wait...");
new Ajax.Request("backend.php", {
- parameters: query,
+ parameters: "?op=pref-filters&method=filtersortreset",
onComplete: function(transport) {
- notify_info("Shared URLs cleared.");
+ updateFilterList();
} });
- }
- return false;
+
+ } catch (e) {
+ exception_error("resetFilterOrder");
+ }
}
+
+
function resetFeedOrder() {
try {
notify_progress("Loading, please wait...");
}
}
-function toggleHiddenFeedCats() {
- try {
- notify_progress("Loading, please wait...");
-
- new Ajax.Request("backend.php", {
- parameters: "?op=pref-feeds&method=togglehiddenfeedcats",
- onComplete: function(transport) {
- updateFeedList();
- } });
-
- } catch (e) {
- exception_error("toggleHiddenFeedCats");
- }
-}
-
function editCat(id, item, event) {
try {
var new_name = prompt(__('Rename category to:'), item.name);
}
}
-function clearTwitterCredentials() {
- try {
- var ok = confirm(__("This will clear your stored authentication information for Twitter. Continue?"));
-
- if (ok) {
- notify_progress("Clearing credentials...");
-
- var query = "?op=pref-feeds&method=remtwitterinfo";
-
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- notify_info("Twitter credentials have been cleared.");
- updateFeedList();
- } });
- }
-
- } catch (e) {
- exception_error("clearTwitterCredentials", e);
- }
-}
function customizeCSS() {
try {
- var query = "backend.php?op=dlg&method=customizeCSS";
+ var query = "backend.php?op=pref-prefs&method=customizeCSS";
if (dijit.byId("cssEditDlg"))
dijit.byId("cssEditDlg").destroyRecursive();
}
}
-function showHelp() {
- try {
- new Ajax.Request("backend.php", {
- parameters: "?op=backend&method=help&topic=prefs",
- onComplete: function(transport) {
- $("hotkey_help_overlay").innerHTML = transport.responseText;
- Effect.Appear("hotkey_help_overlay", {duration : 0.3});
- } });
-
- } catch (e) {
- exception_error("showHelp", e);
- }
-}
-
function gotoExportOpml(filename, settings) {
tmp = settings ? 1 : 0;
document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp;
function batchSubscribe() {
try {
- var query = "backend.php?op=dlg&method=batchSubscribe";
+ var query = "backend.php?op=pref-feeds&method=batchSubscribe";
// overlapping widgets
if (dijit.byId("batchSubDlg")) dijit.byId("batchSubDlg").destroyRecursive();
exception_error("clearPluginData", e);
}
}
+
+function clearSqlLog() {
+
+ if (confirm(__("Clear all messages in the error log?"))) {
+
+ notify_progress("Loading, please wait...");
+ var query = "?op=pref-system&method=clearLog";
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ updateSystemList();
+ } });
+
+ }
+}
+
+function updateSelectedPrompt() {
+ // no-op shim for toggleSelectedRow()
+}
+