From 59478e06c25303a790a0840ab2ac30662c4ef781 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 5 Aug 2014 16:46:22 +0200 Subject: c'est la merde.. --- plugins/keyboard_shortcuts/keyboard_shortcuts.js | 139 +++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 plugins/keyboard_shortcuts/keyboard_shortcuts.js (limited to 'plugins/keyboard_shortcuts/keyboard_shortcuts.js') diff --git a/plugins/keyboard_shortcuts/keyboard_shortcuts.js b/plugins/keyboard_shortcuts/keyboard_shortcuts.js new file mode 100644 index 000000000..440c543e6 --- /dev/null +++ b/plugins/keyboard_shortcuts/keyboard_shortcuts.js @@ -0,0 +1,139 @@ +function keyboard_shortcuts_show_help() { + $('#keyboard_shortcuts_help').dialog('open'); +} + +$(function() { + rcmail.env.keyboard_shortcuts = true; + + // initialize a dialog window + $('#keyboard_shortcuts_help').dialog({ + autoOpen: false, + draggable: true, + modal: false, + resizable: false, + width: 750, + title: rcmail.gettext("keyboard_shortcuts.keyboard_shortcuts") + }); + + // if we're in an input or textarea form, skip this plugin + $('input,textarea').focus(function (e) { + rcmail.env.keyboard_shortcuts = false; + }); + + // if we move out of an input or textarea form, enable this plugin + $('input,textarea').blur(function (e) { + rcmail.env.keyboard_shortcuts = true; + }); + + // fire up the keypress event listener + $(document).keypress(function (e) { + key_pressed(e); + }); + + + function key_pressed (e) { + if (!rcmail.env.keyboard_shortcuts || rcmail.env.action == 'compose' || rcmail.env.task == 'login' || e.ctrlKey || e.metaKey) + return true; + + if (rcmail.env.action == '') { // list mailbox + + if(rcmail.env.ks_functions[e.which]) { + this[rcmail.env.ks_functions[e.which]](); + return false; + } + + switch (e.which) { + case 63: // ? = help + //keyboard_shortcuts_show_help(); + var ks_function = rcmail.env.ks_functions[e.which]; + this[ks_function](); + + return false; + case 65: // A = mark all as read + rcmail.command('select-all'); + rcmail.command('mark', 'read'); + return false; + case 67: // C = collapse-all + rcmail.command('collapse-all'); + return false; + case 69: // E = expand-all + rcmail.command('expand-all'); + return false; + case 82: // R = reply-all + if (rcmail.message_list.selection.length == 1) + rcmail.command('reply-all'); + return false; + case 85: // U = expand-unread + rcmail.command('expand-unread'); + return false; + case 97: // a = select all + rcmail.command('select-all'); + return false; + case 99: // c = compose + rcmail.command('compose'); + return false; + case 100: // d = delete + rcmail.command('delete', '', rcmail); + return false; + case 102: // f = forward + if (rcmail.message_list.selection.length == 1) + rcmail.command('forward'); + return false; + case 106: // j = previous page (similar to Gmail) + rcmail.command('previouspage'); + return false; + case 107: // k = next page (similar to Gmail) + rcmail.command('nextpage'); + return false; + case 112: // p = print + if (rcmail.message_list.selection.length == 1) + rcmail.command('print'); + return false; + case 114: // r = reply + if (rcmail.message_list.selection.length == 1) + rcmail.command('reply'); + return false; + case 115: // s = search + $('#quicksearchbox').focus(); + $('#quicksearchbox').select(); + return false; + case 117: // u = update (check for mail) + rcmail.command('checkmail'); + return false; + } + } else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') { + switch (e.which) { + case 82: // R = reply-all + rcmail.command('reply-all'); + return false; + case 99: // c = compose + rcmail.command('compose'); + return false; + case 100: // d = delete + rcmail.command('delete'); + return false; + case 102: // f = forward + rcmail.command('forward'); + return false; + case 106: // j = previous message (similar to Gmail) + rcmail.command('previousmessage'); + return false; + case 107: // k = next message (similar to Gmail) + rcmail.command('nextmessage'); + return false; + case 112: // p = print + rcmail.command('print'); + return false; + case 114: // r = reply + rcmail.command('reply'); + return false; + + } + } + } +}); + +// support functions for each function we support +function ks_help() { + keyboard_shortcuts_show_help(); +} -- cgit v1.2.3