From 6068d33bb6b09e6fbddc0caf1f78c1999ab6722f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 16 May 2008 07:33:19 +0100 Subject: [PATCH] add hotkeys to prefs (2) --- functions.js | 5 ++++ help/4.php | 16 +++++----- modules/pref-prefs.php | 13 +++++++- prefs.js | 68 ++++++++++++++++++++++++++++++++++++++---- 4 files changed, 87 insertions(+), 15 deletions(-) diff --git a/functions.js b/functions.js index eb036e3c4..e309c5e70 100644 --- a/functions.js +++ b/functions.js @@ -1237,6 +1237,8 @@ function infobox_callback2(transport) { { tokens: ',', paramName: "search" }); } + disableHotkeys(); + notify(""); } catch (e) { exception_error("infobox_callback2", e); @@ -1255,6 +1257,9 @@ function createFilter() { var query = Form.serialize("filter_add_form"); + // we can be called from some other tab in Prefs + if (active_tab) active_tab = "filterConfig"; + new Ajax.Request("backend.php?" + query, { onComplete: function (transport) { infobox_submit_callback2(transport); diff --git a/help/4.php b/help/4.php index 78eed93f3..d66a9cc5b 100644 --- a/help/4.php +++ b/help/4.php @@ -2,15 +2,15 @@ - +
-

+

- - - - - - + + + + + +
1
2
3
4
5
6
g 1
g 2
g 3
g 4
g 5
g 6
@@ -21,7 +21,7 @@
c s
c f
c l
c u

diff --git a/modules/pref-prefs.php b/modules/pref-prefs.php index 20cffe5e5..64d7cf6af 100644 --- a/modules/pref-prefs.php +++ b/modules/pref-prefs.php @@ -228,6 +228,8 @@ print "".__('E-mail').""; print ""; @@ -258,18 +260,24 @@ print "".__("Old password").""; print ""; print "".__("New password").""; print ""; print "".__("Confirm password").""; print ""; @@ -394,7 +402,10 @@ print_radio($pref_name, $value, __("Yes"), array(__("Yes"), __("No"))); } else { - print ""; + print ""; } print ""; diff --git a/prefs.js b/prefs.js index 308c7b7aa..3e21ac62a 100644 --- a/prefs.js +++ b/prefs.js @@ -316,6 +316,9 @@ function addLabel() { var query = Form.serialize("label_edit_form"); + // we can be called from some other tab + active_tab = "labelConfig"; + xmlhttp.open("GET", "backend.php?op=pref-labels&subop=add&" + query, true); xmlhttp.onreadystatechange=infobox_submit_callback; xmlhttp.send(null); @@ -404,6 +407,8 @@ function editLabel(id) { return } + disableHotkeys(); + notify_progress("Loading, please wait..."); document.getElementById("label_create_btn").disabled = true; @@ -427,6 +432,8 @@ function editUser(id) { return } + disableHotkeys(); + notify_progress("Loading, please wait..."); selectTableRowsByIdPrefix('prefUserList', 'UMRR-', 'UMCHK-', false); @@ -446,6 +453,8 @@ function editFilter(id) { return } + disableHotkeys(); + notify_progress("Loading, please wait..."); document.getElementById("create_filter_btn").disabled = true; @@ -467,6 +476,8 @@ function editFeed(feed) { return } + disableHotkeys(); + notify_progress("Loading, please wait..."); document.getElementById("subscribe_to_feed_btn").disabled = true; @@ -496,6 +507,8 @@ function editFeedCat(cat) { return } + disableHotkeys(); + notify_progress("Loading, please wait..."); active_feed_cat = cat; @@ -1293,15 +1306,21 @@ function selectTab(id, noupdate, subop) { updateBigFeedBrowser(); } } + + /* clean selection from all tabs */ - var tab = document.getElementById(active_tab + "Tab"); - - if (tab) { - if (tab.className.match("Selected")) { + var tabs_holder = document.getElementById("prefTabs"); + var tab = tabs_holder.firstChild; + + while (tab) { + if (tab.className && tab.className.match("prefsTabSelected")) { tab.className = "prefsTab"; } + tab = tab.nextSibling; } - + + /* mark new tab as selected */ + tab = document.getElementById(id + "Tab"); if (tab) { @@ -1683,6 +1702,12 @@ function pref_hotkey_handler(e) { if (keycode == 16) return; // ignore lone shift + if ((keycode == 67 || keycode == 71) && !hotkey_prefix) { + hotkey_prefix = keycode; + debug("KP: PREFIX=" + keycode); + return; + } + if (Element.visible("hotkey_help_overlay")) { Element.hide("hotkey_help_overlay"); } @@ -1718,7 +1743,38 @@ function pref_hotkey_handler(e) { return; } - if (keycode == 49) { // 1 + } + + /* Prefix c */ + + if (hotkey_prefix == 67) { // c + hotkey_prefix = false; + + if (keycode == 70) { // f + return displayDlg("quickAddFilter"); + } + + if (keycode == 83) { // s + return displayDlg("quickAddFeed"); + } + + if (keycode == 76) { // l + return displayDlg("quickAddLabel"); + } + + if (keycode == 85) { // u + // no-op + } + + } + + /* Prefix g */ + + if (hotkey_prefix == 71) { // g + + hotkey_prefix = false; + + if (keycode == 49 && document.getElementById("genConfigTab")) { // 1 selectTab("genConfig"); }