misc fixes, rework hotkeys code placement

This commit is contained in:
Andrew Dolgov 2008-05-16 02:38:32 +01:00
parent 238eff0165
commit 93f66472ef
5 changed files with 434 additions and 426 deletions

View File

@ -1,7 +1,6 @@
var hotkeys_enabled = true;
var debug_mode_enabled = false;
var xmlhttp_rpc = Ajax.getTransport();
var hotkey_prefix = false;
var hotkey_zone = 0;
/* add method to remove element from array */
@ -209,428 +208,6 @@ function printLockingError() {
notify_info("Please wait until operation finishes.");
}
function hotkey_handler(e) {
try {
var keycode;
var shift_key = false;
var feedlist = document.getElementById('feedList');
try {
shift_key = e.shiftKey;
} catch (e) {
}
if (window.event) {
keycode = window.event.keyCode;
} else if (e) {
keycode = e.which;
}
if (keycode == 27) { // escape
if (Element.visible("hotkey_help_overlay")) {
Element.hide("hotkey_help_overlay");
}
hotkey_prefix = false;
closeInfoBox();
}
if (!hotkeys_enabled) {
debug("hotkeys disabled");
return;
}
if (keycode == 16) return; // ignore lone shift
if ((keycode == 70 || 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");
}
/* Global hotkeys */
if (!hotkey_prefix) {
if (keycode == 68 && shift_key) { // d
if (!debug_mode_enabled) {
document.getElementById('debug_output').style.display = 'block';
debug('debug mode activated');
} else {
document.getElementById('debug_output').style.display = 'none';
}
debug_mode_enabled = !debug_mode_enabled;
return;
}
if (keycode == 191 && shift_key) { // ?
if (!Element.visible("hotkey_help_overlay")) {
Element.show("hotkey_help_overlay");
} else {
Element.hide("hotkey_help_overlay");
}
return;
}
if (keycode == 191) { // /
return displayDlg("search", getActiveFeedId());
}
if (keycode == 74) { // j
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
if (new_feed) viewfeed(new_feed, '');
return;
}
if (keycode == 75) { // k
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'next');
if (new_feed) viewfeed(new_feed, '');
return;
}
if (keycode == 78 || keycode == 40) { // n, down
if (typeof moveToPost != 'undefined') {
return moveToPost('next');
}
}
if (keycode == 80 || keycode == 38) { // p, up
if (typeof moveToPost != 'undefined') {
return moveToPost('prev');
}
}
if (keycode == 83 && shift_key) { // S
var id = getActiveArticleId();
if (id) {
togglePub(id);
}
return;
}
if (keycode == 83) { // s
var id = getActiveArticleId();
if (id) {
toggleMark(id);
}
return;
}
if (keycode == 85) { // u
var id = getActiveArticleId();
if (id) {
toggleUnread(id);
}
return;
}
if (keycode == 84 && shift_key) { // t
var id = getActiveArticleId();
if (id) {
editArticleTags(id, getActiveFeedId(), isCdmMode());
}
}
if (keycode == 84) { // t
var id = getActiveArticleId();
if (id) {
var cb = document.getElementById("RCHK-" + id);
if (cb) {
cb.checked = !cb.checked;
toggleSelectRowById(cb, "RROW-" + id);
}
}
}
if (keycode == 79) { // o
if (getActiveArticleId()) {
openArticleInNewWindow(getActiveArticleId());
}
}
}
/* Prefix f */
if (hotkey_prefix == 70) { // f
hotkey_prefix = false;
if (keycode == 65) { // a
return toggleDispRead();
}
if (keycode == 85 && shift_key) { // r
return scheduleFeedUpdate(true);
}
if (keycode == 85) { // u
if (getActiveFeedId()) {
return viewfeed(getActiveFeedId(), "ForceUpdate");
}
}
if (keycode == 69) { // e
return editFeedDlg(getActiveFeedId());
}
if (keycode == 83) { // s
return displayDlg("quickAddFeed");
}
if (keycode == 67 && shift_key) { // C
if (typeof catchupAllFeeds != 'undefined') {
return catchupAllFeeds();
}
}
if (keycode == 67) { // c
if (getActiveFeedId()) {
return catchupCurrentFeed();
}
}
}
/* Prefix c */
if (hotkey_prefix == 67) { // c
hotkey_prefix = false;
if (keycode == 70) { // f
return displayDlg("quickAddFilter", getActiveFeedId());
}
if (keycode == 83) { // s
if (typeof collapse_feedlist != 'undefined') {
return collapse_feedlist();
}
}
}
/* Prefix g */
if (hotkey_prefix == 71) { // g
hotkey_prefix = false;
if (keycode == 83) { // s
return viewfeed(-1);
}
if (keycode == 80 && shift_key) { // P
return gotoPreferences();
}
if (keycode == 80) { // p
return viewfeed(-2);
}
if (keycode == 70) { // f
return viewfeed(-3);
}
}
/*
if (keycode == 48) { // 0
return setHotkeyZone(0);
}
if (keycode == 49) { // 1
return setHotkeyZone(1);
}
if (keycode == 50) { // 2
return setHotkeyZone(2);
}
if (keycode == 51) { // 3
return setHotkeyZone(3);
}
if (keycode == 82) { // r
return scheduleFeedUpdate(true);
}
if (keycode == 83) { // s
return displayDlg("search", getActiveFeedId());
}
if (keycode == 85) { // u
if (getActiveFeedId()) {
return viewfeed(getActiveFeedId(), "ForceUpdate");
}
}
if (keycode == 65) { // a
return toggleDispRead();
}
var feedlist = document.getElementById('feedList');
if (keycode == 74) { // j
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
if (new_feed) viewfeed(new_feed, '');
}
if (keycode == 75) { // k
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'next');
if (new_feed) viewfeed(new_feed, '');
}
if (shift_key && (keycode == 78 || keycode == 40)) { // shift - n, down
return catchupRelativeToArticle(1);
}
if (shift_key && (keycode == 80 || keycode == 38)) { // shift - p, up
return catchupRelativeToArticle(0);
}
if (keycode == 78 || keycode == 40) { // n, down
if (typeof moveToPost != 'undefined') {
return moveToPost('next');
}
}
if (keycode == 80 || keycode == 38) { // p, up
if (typeof moveToPost != 'undefined') {
return moveToPost('prev');
}
}
if (keycode == 68 && shift_key) { // d
if (!debug_mode_enabled) {
document.getElementById('debug_output').style.display = 'block';
debug('debug mode activated');
} else {
document.getElementById('debug_output').style.display = 'none';
}
debug_mode_enabled = !debug_mode_enabled;
}
if (keycode == 191 && shift_key) { // ?
if (!Element.visible("hotkey_help_overlay")) {
Element.show("hotkey_help_overlay");
} else {
Element.hide("hotkey_help_overlay");
}
}
if (keycode == 69 && shift_key) { // e
return editFeedDlg(getActiveFeedId());
}
if (keycode == 70 && shift_key) { // f
if (getActiveFeedId()) {
return catchupCurrentFeed();
}
}
if (keycode == 80 && shift_key) { // p
if (getActiveFeedId()) {
return catchupPage();
}
}
if (keycode == 86) { // v
if (getActiveArticleId()) {
openArticleInNewWindow(getActiveArticleId());
}
}
if (keycode == 84) { // t
var id = getActiveArticleId();
if (id) {
var cb = document.getElementById("RCHK-" + id);
if (cb) {
cb.checked = !cb.checked;
toggleSelectRowById(cb, "RROW-" + id);
}
}
}
if (keycode == 67) { // c
var id = getActiveArticleId();
if (id) {
toggleUnread(id, 0);
}
}
if (keycode == 67 && shift_key) { // c
if (typeof collapse_feedlist != 'undefined') {
return collapse_feedlist();
}
}
if (keycode == 81 && shift_key) { // shift + q
if (typeof catchupAllFeeds != 'undefined') {
return catchupAllFeeds();
}
}
if (keycode == 73 && shift_key) { // shift + i
if (document.getElementById("subtoolbar_search")) {
if (Element.visible("subtoolbar_search")) {
Element.hide("subtoolbar_search");
Element.show("subtoolbar_ftitle");
setTimeout("Element.focus('subtoolbar_search_box')", 100);
} else {
Element.show("subtoolbar_search");
Element.hide("subtoolbar_ftitle");
}
}
}
if (keycode == 27) { // escape
if (Element.visible("hotkey_help_overlay")) {
Element.hide("hotkey_help_overlay");
}
} */
if (typeof localHotkeyHandler != 'undefined') {
try {
return localHotkeyHandler(e);
} catch (e) {
exception_error("hotkey_handler, local:", e);
}
}
if (hotkey_prefix) {
debug("KP: PREFIX=" + hotkey_prefix + " CODE=" + keycode);
} else {
debug("KP: CODE=" + keycode);
}
} catch (e) {
exception_error("hotkey_handler", e);
}
}
function cleanSelectedList(element) {
var content = document.getElementById(element);

View File

@ -71,6 +71,10 @@
<img id="piggie" src="images/piggie.png" style="display : none" alt="piggie">
<div id="hotkey_help_overlay" style="display : none" onclick="Element.hide(this)">
<?php include "help/4.php" ?>
</div>
<script type="text/javascript">
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, null);

View File

@ -1796,10 +1796,9 @@ div#hotkey_help_overlay {
right : 15%;
top : 15%;
z-index : 999;
padding : 1em;
background : url("images/shadow_dark.png");
padding : 1em;
color : white;
border : 1px solid black;
font-size : 12pt;
}
@ -1839,3 +1838,5 @@ div#hotkey_help_overlay h2 {
text-align : center;
color : #88b0f0;
}

424
tt-rss.js
View File

@ -14,7 +14,7 @@ var active_feed_is_cat = false;
var number_of_feeds = 0;
var sanity_check_done = false;
var _hfd_scrolltop = 0;
var hotkey_prefix = false;
var init_params = new Object();
function tagsAreDisplayed() {
@ -900,4 +900,426 @@ function rescoreCurrentFeed() {
}
}
function hotkey_handler(e) {
try {
var keycode;
var shift_key = false;
var feedlist = document.getElementById('feedList');
try {
shift_key = e.shiftKey;
} catch (e) {
}
if (window.event) {
keycode = window.event.keyCode;
} else if (e) {
keycode = e.which;
}
if (keycode == 27) { // escape
if (Element.visible("hotkey_help_overlay")) {
Element.hide("hotkey_help_overlay");
}
hotkey_prefix = false;
closeInfoBox();
}
if (!hotkeys_enabled) {
debug("hotkeys disabled");
return;
}
if (keycode == 16) return; // ignore lone shift
if ((keycode == 70 || 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");
}
/* Global hotkeys */
if (!hotkey_prefix) {
if (keycode == 68 && shift_key) { // d
if (!debug_mode_enabled) {
document.getElementById('debug_output').style.display = 'block';
debug('debug mode activated');
} else {
document.getElementById('debug_output').style.display = 'none';
}
debug_mode_enabled = !debug_mode_enabled;
return;
}
if (keycode == 191 && shift_key) { // ?
if (!Element.visible("hotkey_help_overlay")) {
Element.show("hotkey_help_overlay");
} else {
Element.hide("hotkey_help_overlay");
}
return;
}
if (keycode == 191) { // /
return displayDlg("search", getActiveFeedId());
}
if (keycode == 74) { // j
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
if (new_feed) viewfeed(new_feed, '');
return;
}
if (keycode == 75) { // k
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'next');
if (new_feed) viewfeed(new_feed, '');
return;
}
if (keycode == 78 || keycode == 40) { // n, down
if (typeof moveToPost != 'undefined') {
return moveToPost('next');
}
}
if (keycode == 80 || keycode == 38) { // p, up
if (typeof moveToPost != 'undefined') {
return moveToPost('prev');
}
}
if (keycode == 83 && shift_key) { // S
var id = getActiveArticleId();
if (id) {
togglePub(id);
}
return;
}
if (keycode == 83) { // s
var id = getActiveArticleId();
if (id) {
toggleMark(id);
}
return;
}
if (keycode == 85) { // u
var id = getActiveArticleId();
if (id) {
toggleUnread(id);
}
return;
}
if (keycode == 84 && shift_key) { // t
var id = getActiveArticleId();
if (id) {
editArticleTags(id, getActiveFeedId(), isCdmMode());
}
}
if (keycode == 84) { // t
var id = getActiveArticleId();
if (id) {
var cb = document.getElementById("RCHK-" + id);
if (cb) {
cb.checked = !cb.checked;
toggleSelectRowById(cb, "RROW-" + id);
}
}
}
if (keycode == 79) { // o
if (getActiveArticleId()) {
openArticleInNewWindow(getActiveArticleId());
}
}
}
/* Prefix f */
if (hotkey_prefix == 70) { // f
hotkey_prefix = false;
if (keycode == 65) { // a
return toggleDispRead();
}
if (keycode == 85 && shift_key) { // r
return scheduleFeedUpdate(true);
}
if (keycode == 85) { // u
if (getActiveFeedId()) {
return viewfeed(getActiveFeedId(), "ForceUpdate");
}
}
if (keycode == 69) { // e
return editFeedDlg(getActiveFeedId());
}
if (keycode == 83) { // s
return displayDlg("quickAddFeed");
}
if (keycode == 67 && shift_key) { // C
if (typeof catchupAllFeeds != 'undefined') {
return catchupAllFeeds();
}
}
if (keycode == 67) { // c
if (getActiveFeedId()) {
return catchupCurrentFeed();
}
}
}
/* Prefix c */
if (hotkey_prefix == 67) { // c
hotkey_prefix = false;
if (keycode == 70) { // f
return displayDlg("quickAddFilter", getActiveFeedId());
}
if (keycode == 83) { // s
if (typeof collapse_feedlist != 'undefined') {
return collapse_feedlist();
}
}
}
/* Prefix g */
if (hotkey_prefix == 71) { // g
hotkey_prefix = false;
if (keycode == 83) { // s
return viewfeed(-1);
}
if (keycode == 80 && shift_key) { // P
return gotoPreferences();
}
if (keycode == 80) { // p
return viewfeed(-2);
}
if (keycode == 70) { // f
return viewfeed(-3);
}
}
/*
if (keycode == 48) { // 0
return setHotkeyZone(0);
}
if (keycode == 49) { // 1
return setHotkeyZone(1);
}
if (keycode == 50) { // 2
return setHotkeyZone(2);
}
if (keycode == 51) { // 3
return setHotkeyZone(3);
}
if (keycode == 82) { // r
return scheduleFeedUpdate(true);
}
if (keycode == 83) { // s
return displayDlg("search", getActiveFeedId());
}
if (keycode == 85) { // u
if (getActiveFeedId()) {
return viewfeed(getActiveFeedId(), "ForceUpdate");
}
}
if (keycode == 65) { // a
return toggleDispRead();
}
var feedlist = document.getElementById('feedList');
if (keycode == 74) { // j
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'prev');
if (new_feed) viewfeed(new_feed, '');
}
if (keycode == 75) { // k
var feed = getActiveFeedId();
var new_feed = getRelativeFeedId(feedlist, feed, 'next');
if (new_feed) viewfeed(new_feed, '');
}
if (shift_key && (keycode == 78 || keycode == 40)) { // shift - n, down
return catchupRelativeToArticle(1);
}
if (shift_key && (keycode == 80 || keycode == 38)) { // shift - p, up
return catchupRelativeToArticle(0);
}
if (keycode == 78 || keycode == 40) { // n, down
if (typeof moveToPost != 'undefined') {
return moveToPost('next');
}
}
if (keycode == 80 || keycode == 38) { // p, up
if (typeof moveToPost != 'undefined') {
return moveToPost('prev');
}
}
if (keycode == 68 && shift_key) { // d
if (!debug_mode_enabled) {
document.getElementById('debug_output').style.display = 'block';
debug('debug mode activated');
} else {
document.getElementById('debug_output').style.display = 'none';
}
debug_mode_enabled = !debug_mode_enabled;
}
if (keycode == 191 && shift_key) { // ?
if (!Element.visible("hotkey_help_overlay")) {
Element.show("hotkey_help_overlay");
} else {
Element.hide("hotkey_help_overlay");
}
}
if (keycode == 69 && shift_key) { // e
return editFeedDlg(getActiveFeedId());
}
if (keycode == 70 && shift_key) { // f
if (getActiveFeedId()) {
return catchupCurrentFeed();
}
}
if (keycode == 80 && shift_key) { // p
if (getActiveFeedId()) {
return catchupPage();
}
}
if (keycode == 86) { // v
if (getActiveArticleId()) {
openArticleInNewWindow(getActiveArticleId());
}
}
if (keycode == 84) { // t
var id = getActiveArticleId();
if (id) {
var cb = document.getElementById("RCHK-" + id);
if (cb) {
cb.checked = !cb.checked;
toggleSelectRowById(cb, "RROW-" + id);
}
}
}
if (keycode == 67) { // c
var id = getActiveArticleId();
if (id) {
toggleUnread(id, 0);
}
}
if (keycode == 67 && shift_key) { // c
if (typeof collapse_feedlist != 'undefined') {
return collapse_feedlist();
}
}
if (keycode == 81 && shift_key) { // shift + q
if (typeof catchupAllFeeds != 'undefined') {
return catchupAllFeeds();
}
}
if (keycode == 73 && shift_key) { // shift + i
if (document.getElementById("subtoolbar_search")) {
if (Element.visible("subtoolbar_search")) {
Element.hide("subtoolbar_search");
Element.show("subtoolbar_ftitle");
setTimeout("Element.focus('subtoolbar_search_box')", 100);
} else {
Element.show("subtoolbar_search");
Element.hide("subtoolbar_ftitle");
}
}
}
if (keycode == 27) { // escape
if (Element.visible("hotkey_help_overlay")) {
Element.hide("hotkey_help_overlay");
}
} */
if (typeof localHotkeyHandler != 'undefined') {
try {
return localHotkeyHandler(e);
} catch (e) {
exception_error("hotkey_handler, local:", e);
}
}
if (hotkey_prefix) {
debug("KP: PREFIX=" + hotkey_prefix + " CODE=" + keycode);
} else {
debug("KP: CODE=" + keycode);
}
} catch (e) {
exception_error("hotkey_handler", e);
}
}

View File

@ -795,6 +795,7 @@ function toggleUnread(id, cmode, effect) {
var row = document.getElementById("RROW-" + id);
if (row) {
var nc = row.className;
var is_selected = row.className.match("Selected");
nc = nc.replace("Unread", "");
nc = nc.replace("Selected", "");
@ -833,6 +834,9 @@ function toggleUnread(id, cmode, effect) {
row.className = nc + "Unread";
}
// Disable unmarking as selected for the time being (16.05.08) -fox
if (is_selected) row.className = row.className + "Selected";
if (cmode == undefined) cmode = 2;
var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +