Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2397597
kolab_shortcuts.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Referenced Files
None
Subscribers
None
kolab_shortcuts.js
View Options
/**
* Kolab keyboard shortcuts
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (C) 2015, Kolab Systems AG <contact@kolabsys.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
var
kolab_shortcuts
=
{
'mail.refresh'
:
{
key
:
108
,
// Ctrl+L
ctrl
:
true
,
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'checkmail'
,
''
,
e
.
target
,
e
);
}
},
'mail.copy'
:
{
key
:
99
,
// c
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
e
=
kolab_shortcuts_menu_target
(
e
);
e
.
rcmail
.
command
(
'copy'
,
''
,
e
.
target
,
e
);
e
.
target
.
remove
();
}
},
'mail.edit'
:
{
key
:
116
,
// t
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
var
mode
=
rcmail
.
env
.
mailbox
==
rcmail
.
env
.
drafts_mailbox
?
''
:
'new'
;
return
rcmail
.
command
(
'edit'
,
mode
,
e
.
target
,
e
);
}
},
'mail.expand-all-threads'
:
{
key
:
46
,
// Ctrl+.
ctrl
:
true
,
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'expand-all'
,
''
,
e
.
target
,
e
);
}
},
'mail.expand-thread'
:
{
key
:
46
,
// .
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
if
(
rcmail
.
message_list
)
{
var
row
,
uid
=
rcmail
.
message_list
.
get_single_selection
();
if
(
uid
&&
(
row
=
rcmail
.
message_list
.
rows
[
uid
]))
{
rcmail
.
message_list
.
expand_all
(
row
);
}
}
}
},
'mail.collapse-all-threads'
:
{
key
:
44
,
// Ctrl+,
ctrl
:
true
,
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'collapse-all'
,
''
,
e
.
target
,
e
);
}
},
'mail.collapse-thread'
:
{
key
:
44
,
// ,
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
if
(
rcmail
.
message_list
)
{
var
row
,
uid
=
rcmail
.
message_list
.
get_single_selection
();
if
(
uid
&&
(
row
=
rcmail
.
message_list
.
rows
[
uid
]))
{
rcmail
.
message_list
.
collapse_all
(
row
);
}
}
}
},
'search.focus'
:
{
key
:
115
,
// s
active
:
function
(
e
)
{
return
true
;
},
action
:
function
(
e
)
{
if
(
!
rcmail
.
is_framed
())
$
(
'#quicksearchbox'
).
focus
();
else
if
(
window
.
parent
&&
window
.
parent
.
$
)
window
.
parent
.
$
(
'#quicksearchbox'
).
focus
();
}
},
'mail.move'
:
{
key
:
109
,
// m
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
e
=
kolab_shortcuts_menu_target
(
e
);
e
.
rcmail
.
command
(
'move'
,
''
,
e
.
target
,
e
);
e
.
target
.
remove
();
}
},
'mail.next-msg'
:
{
key
:
110
,
// n
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
if
(
rcmail
.
message_list
)
return
rcmail
.
message_list
.
select_next
();
else
return
rcmail
.
command
(
'nextmessage'
,
''
,
''
,
e
);
}
},
'mail.prev-msg'
:
{
key
:
112
,
// p
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
if
(
rcmail
.
message_list
)
return
rcmail
.
message_list
.
use_arrow_key
(
38
,
false
);
else
return
rcmail
.
command
(
'previousmessage'
,
''
,
''
,
e
);
}
},
'mail.replyall'
:
{
key
:
97
,
// a
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'reply-all'
,
'sub'
,
e
.
target
,
e
);
}
},
'mail.replylist'
:
{
key
:
108
,
// l
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
commands
[
'reply-list'
]
?
rcmail
.
command
(
'reply-list'
,
''
,
e
.
target
,
e
)
:
false
;
}
},
'mail.reply'
:
{
key
:
114
,
// r
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'reply'
,
''
,
e
.
target
,
e
);
}
},
'mail.forward-attachment'
:
{
key
:
102
,
// f
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'forward-attachment'
,
'sub'
,
e
.
target
,
e
);
}
},
'mail.forward-inline'
:
{
key
:
70
,
// F
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
return
rcmail
.
command
(
'forward-inline'
,
'sub'
,
e
.
target
,
e
);
}
},
'mail.html2text'
:
{
key
:
72
,
// H
active
:
function
(
e
)
{
return
rcmail
.
task
==
'mail'
;
},
action
:
function
(
e
)
{
var
rc
=
rcmail
;
// we're in list mode, get reference to preview window
if
(
rc
.
env
.
contentframe
)
{
var
win
=
rc
.
get_frame_window
(
rc
.
env
.
contentframe
);
if
(
!
win
||
!
win
.
rcmail
)
return
false
;
rc
=
win
.
rcmail
;
}
if
(
rc
.
env
.
optional_format
)
{
var
format
=
rc
.
env
.
optional_format
==
'html'
?
'html'
:
'text'
;
return
rc
.
command
(
'change-format'
,
format
,
e
.
target
,
e
);
}
}
}
};
// create a fake element centered on the page,
// so folder selector popupup appears in the center
var
kolab_shortcuts_menu_target
=
function
(
e
)
{
var
rc
,
target
,
css
=
{
visibility
:
'hidden'
,
width
:
10
,
height
:
10
,
margin
:
'auto'
};
if
(
rcmail
.
is_framed
())
{
rc
=
parent
.
rcmail
;
target
=
parent
.
$
(
'<div>'
).
css
(
css
).
appendTo
(
parent
.
$
(
'body'
));
}
else
{
rc
=
rcmail
;
target
=
$
(
'<div>'
).
css
(
css
).
appendTo
(
$
(
'body'
));
}
e
.
target
=
target
;
e
.
rcmail
=
rc
;
return
e
;
};
var
kolab_shortcuts_keypress
=
function
(
e
)
{
var
i
,
handler
,
key
=
e
.
which
,
alt
=
e
.
altKey
,
ctrl
=
e
.
ctrlKey
;
//console.log(e.which);
// do nothing on input elements
if
(
$
(
e
.
target
).
is
(
'textarea,input'
))
{
return
true
;
}
// do nothing if any popup menu is displayed
if
(
$
(
'.popupmenu:visible'
).
length
)
{
return
true
;
}
for
(
i
in
kolab_shortcuts
)
{
handler
=
kolab_shortcuts
[
i
];
// check if presses key(s) match
if
(
handler
.
key
==
key
&&
((
handler
.
ctrl
&&
ctrl
)
||
(
!
handler
.
ctrl
&&
!
ctrl
))
&&
((
handler
.
alt
&&
alt
)
||
(
!
handler
.
alt
&&
!
alt
))
)
{
// ... and action is active here
if
(
handler
.
active
(
e
))
{
// execute action, the real check if action is active
// will be done in .action() or in rcmail.command()
handler
.
action
(
e
);
e
.
preventDefault
();
return
false
;
}
// we can break here, there can be only one handler
// for the specified shortcut
break
;
}
}
return
true
;
};
// register the keypress handler
window
.
rcmail
&&
$
(
document
).
ready
(
function
()
{
$
(
document
).
on
(
'keypress.kolab_shortcuts'
,
function
(
e
)
{
return
kolab_shortcuts_keypress
(
e
);
});
});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Nov 3, 2:24 PM (16 h, 55 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
288747
Default Alt Text
kolab_shortcuts.js (8 KB)
Attached To
Mode
R14 roundcubemail-plugins-kolab
Attached
Detach File
Event Timeline
Log In to Comment