mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-18 08:56:20 +00:00
fixed bug with scrollIntoViewIfNeeded, when up key pressed
This commit is contained in:
parent
9a0fb1cc67
commit
3fe6943237
4 changed files with 419 additions and 375 deletions
10
client.js
10
client.js
|
|
@ -737,6 +737,16 @@ CloudClient.Utils = (function(){
|
|||
lPanel.className = 'panel hidden';
|
||||
};
|
||||
|
||||
this.scrollIntoViewIfNeeded = function(pElement){
|
||||
var lOk = true;
|
||||
if(pElement && pElement.scrollIntoViewIfNeeded)
|
||||
pElement.scrollIntoViewIfNeeded();
|
||||
else lOk = false;
|
||||
|
||||
return lOk;
|
||||
};
|
||||
|
||||
|
||||
this.CloudStatus = [];
|
||||
|
||||
this.addCloudStatus = function(pStatus){
|
||||
|
|
|
|||
|
|
@ -57,8 +57,43 @@ var CloudCommander, $;
|
|||
if (pParams_o.inner)lElement += '>' + pParams_o.inner;
|
||||
|
||||
lElement +='</style>';
|
||||
|
||||
return $(lElement)
|
||||
.appendTo(pParams_o.parent || document.head);
|
||||
|
||||
},
|
||||
|
||||
|
||||
this.scrollIntoViewIfNeeded = function(el){
|
||||
/*
|
||||
* http://www.performantdesign.com/2009/08/26/scrollintoview-but-only-if-out-of-view/
|
||||
*/
|
||||
var topOfPage = window.pageYOffset ||
|
||||
document.documentElement.scrollTop ||
|
||||
document.body.scrollTop;
|
||||
|
||||
var heightOfPage = window.innerHeight ||
|
||||
document.documentElement.clientHeight ||
|
||||
document.body.clientHeight;
|
||||
|
||||
var elY = 0;
|
||||
var elH = 0;
|
||||
|
||||
if (document.layers) { // NS4
|
||||
elY = el.y;
|
||||
elH = el.height;
|
||||
}
|
||||
else {
|
||||
for(var p = el; p && p.tagName != 'BODY'; p = p.offsetParent)
|
||||
elY += p.offsetTop;
|
||||
|
||||
elH = el.offsetHeight;
|
||||
}
|
||||
|
||||
if ((topOfPage + heightOfPage) < (elY + elH))
|
||||
el.scrollIntoView(false);
|
||||
|
||||
else if (elY < topOfPage)
|
||||
el.scrollIntoView(true);
|
||||
};
|
||||
|
||||
})();
|
||||
|
|
@ -1,374 +1,373 @@
|
|||
var CloudCommander;
|
||||
|
||||
/* Key constants*/
|
||||
CloudCommander.KEY = {
|
||||
TAB : 9,
|
||||
ENTER : 13,
|
||||
ESC : 27,
|
||||
|
||||
PPAGE_UP : 33,
|
||||
PAGE_DOWN : 34,
|
||||
END : 35,
|
||||
HOME : 36,
|
||||
UP : 38,
|
||||
DOWN : 40,
|
||||
|
||||
D : 68,
|
||||
|
||||
O : 79,
|
||||
Q : 81,
|
||||
R : 82,
|
||||
S : 83,
|
||||
|
||||
F2 : 113,
|
||||
F3 : 114,
|
||||
F4 : 115,
|
||||
F10 : 121
|
||||
};
|
||||
|
||||
CloudCommander.keyBinding = (function(){
|
||||
"use strict";
|
||||
|
||||
var Util = new CloudCommander.Utils();
|
||||
|
||||
/* saving state of tabs varibles */
|
||||
var lTabPanel = {
|
||||
left : 0,
|
||||
right : 0
|
||||
|
||||
};
|
||||
|
||||
var lKEY = CloudCommander.KEY;
|
||||
|
||||
var key_event = function(event){
|
||||
/* получаем выдленный файл*/
|
||||
var lCurrentFile = Util.getCurrentFile(),
|
||||
lName, i;
|
||||
/* если клавиши можно обрабатывать*/
|
||||
if(CloudCommander.keyBinded && event){
|
||||
|
||||
/* open configuration window */
|
||||
if(event.keyCode === lKEY.O && event.altKey){
|
||||
console.log('openning config window...');
|
||||
|
||||
Util.Images.showLoad();
|
||||
if (typeof CloudCommander.Config === 'function')
|
||||
CloudCommander.Config();
|
||||
|
||||
}
|
||||
|
||||
/* если нажали таб:
|
||||
* переносим курсор на
|
||||
* правую панель, если
|
||||
* мы были на левой и
|
||||
* наоборот
|
||||
*/
|
||||
if(event.keyCode === lKEY.TAB){
|
||||
console.log('Tab pressed');
|
||||
|
||||
try{
|
||||
/* changing parent panel of curent-file */
|
||||
var lPanel = Util.getPanel();
|
||||
var lId = lPanel.id;
|
||||
|
||||
lTabPanel[lId] = lCurrentFile;
|
||||
|
||||
lPanel = Util.getPanel({active:false});
|
||||
lId = lPanel.id;
|
||||
|
||||
|
||||
if(lTabPanel[lId])
|
||||
Util.setCurrentFile(lTabPanel[lId]);
|
||||
else{
|
||||
var lFirstFileOnList = Util.getByTag('li', lPanel)[2];
|
||||
|
||||
Util.setCurrentFile(lFirstFileOnList);
|
||||
}
|
||||
|
||||
}catch(error){console.log(error);}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
/* if f2 pressed */
|
||||
else if(event.keyCode === lKEY.F2){
|
||||
|
||||
}
|
||||
|
||||
/* if f3 or shift+f3 pressed */
|
||||
else if(event.keyCode === lKEY.F3){
|
||||
Util.Images.showLoad();
|
||||
if(event.shiftKey &&
|
||||
typeof CloudCommander.Viewer === 'function')
|
||||
CloudCommander.Viewer(lCurrentFile);
|
||||
|
||||
else if (typeof CloudCommander.Editor === 'function')
|
||||
CloudCommander.Editor(lCurrentFile, true);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* if alt+f3 pressed */
|
||||
else if(event.keyCode === lKEY.F3 &&
|
||||
event.altKey){
|
||||
Util.Images.showLoad();
|
||||
if (typeof CloudCommander.Terminal === 'function')
|
||||
CloudCommander.Terminal();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* if f4 pressed */
|
||||
else if(event.keyCode === lKEY.F4) {
|
||||
Util.Images.showLoad();
|
||||
|
||||
if (typeof CloudCommander.Editor === 'function')
|
||||
CloudCommander.Editor(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
else if(event.keyCode === lKEY.F10 &&
|
||||
event.shiftKey){
|
||||
if (typeof CloudCommander.Menu === 'function')
|
||||
CloudCommander.Menu();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
/* навигация по таблице файлов*/
|
||||
/* если нажали клавишу вверх*/
|
||||
else if(event.keyCode === lKEY.UP){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile) return;
|
||||
|
||||
/* если это строка существет и
|
||||
* если она не заголовок
|
||||
* файловой таблицы
|
||||
*/
|
||||
lCurrentFile = lCurrentFile.previousSibling;
|
||||
if(lCurrentFile){
|
||||
/* выделяем предыдущую строку*/
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
/* scrolling to current file*/
|
||||
lCurrentFile = lCurrentFile.previousSibling;
|
||||
if(lCurrentFile)
|
||||
lCurrentFile.scrollIntoViewIfNeeded();
|
||||
}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу в низ*/
|
||||
else if(event.keyCode === lKEY.DOWN){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile)return;
|
||||
|
||||
/* если это не последняя строка */
|
||||
if(lCurrentFile.nextSibling){
|
||||
/* выделяем следующую строку*/
|
||||
Util.setCurrentFile(lCurrentFile.nextSibling);
|
||||
|
||||
/* scrolling to current file*/
|
||||
lCurrentFile.nextSibling.scrollIntoViewIfNeeded();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали клавишу Home
|
||||
* переходим к самому верхнему
|
||||
* элементу
|
||||
*/
|
||||
else if(event.keyCode === lKEY.HOME){
|
||||
/* получаем первый элемент
|
||||
* пропускаем путь и заголовки столбиков
|
||||
* выделяем верхий файл
|
||||
*/
|
||||
Util.setCurrentFile(lCurrentFile
|
||||
.parentElement.children[2]);
|
||||
|
||||
/* move scrollbar to top */
|
||||
Util.getPanel().scrollByLines(-100000000000000);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу End
|
||||
* выделяем последний элемент
|
||||
*/
|
||||
else if( event.keyCode === lKEY.END){
|
||||
/* выделяем самый нижний файл */
|
||||
Util.setCurrentFile(lCurrentFile
|
||||
.parentElement.lastElementChild);
|
||||
|
||||
/* move scrollbar to bottom*/
|
||||
Util.getPanel().scrollByLines(100000000000000);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу page down
|
||||
* проматываем экран
|
||||
*/
|
||||
else if(event.keyCode === lKEY.PAGE_DOWN){
|
||||
Util.getPanel().scrollByPages(1);
|
||||
|
||||
for(i=0; i<30; i++){
|
||||
if(!lCurrentFile.nextSibling) break;
|
||||
|
||||
lCurrentFile = lCurrentFile.nextSibling;
|
||||
}
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу page up
|
||||
* проматываем экран
|
||||
*/
|
||||
else if(event.keyCode === lKEY.PAGE_UP){
|
||||
Util.getPanel().scrollByPages(-1);
|
||||
|
||||
for(i=0; i<30; i++){
|
||||
if(!lCurrentFile.previousSibling) break;
|
||||
else try{
|
||||
lCurrentFile
|
||||
.previousSibling
|
||||
.previousSibling
|
||||
.previousSibling
|
||||
.previousSibling;
|
||||
}
|
||||
catch(pError){
|
||||
break;
|
||||
}
|
||||
lCurrentFile = lCurrentFile.previousSibling;
|
||||
}
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали Enter - открываем папку*/
|
||||
else if(event.keyCode === lKEY.ENTER){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile)return;
|
||||
|
||||
/* из него достаём спан с именем файла*/
|
||||
lName = Util.getByClass('name', lCurrentFile);
|
||||
/* если нету (что вряд ли) - выходим*/
|
||||
if(!lName)return false;
|
||||
/* достаём все ссылки*/
|
||||
var lATag = Util.getByTag('a', lName[0]);
|
||||
/* если нету - выходим */
|
||||
if(!lATag)return false;
|
||||
|
||||
/* вызываем ajaxload привязанный через changelinks
|
||||
* пробуем нажать на ссылку, если не получиться
|
||||
* (opera, ie), вызываем событие onclick,
|
||||
*/
|
||||
|
||||
if(lCurrentFile.onclick)lCurrentFile.onclick(true);
|
||||
else try{
|
||||
lATag[0].click();
|
||||
}
|
||||
catch(error){
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали <ctr>+r
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
else if(event.keyCode === lKEY.R &&
|
||||
event.ctrlKey){
|
||||
console.log('<ctrl>+r pressed');
|
||||
console.log('reloading page...');
|
||||
console.log('press <alt>+q to remove all key-handlers');
|
||||
/* Программно нажимаем на кнопку перезагрузки
|
||||
* содержимого каталога
|
||||
*/
|
||||
var lRefreshIcon = Util.getRefreshButton();
|
||||
if(lRefreshIcon){
|
||||
/* получаем название файла*/
|
||||
var lSelectedName = Util
|
||||
.getByTag('a', lCurrentFile)[0].textContent;
|
||||
|
||||
/* если нашли элемент нажимаем него
|
||||
* а если не можем - нажимаем на
|
||||
* ссылку, на которую повешен eventHandler
|
||||
* onclick
|
||||
*/
|
||||
lRefreshIcon.onclick();
|
||||
|
||||
CloudCommander._currentToParent(lSelectedName);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <ctrl>+d чистим кэш */
|
||||
else if(event.keyCode === lKEY.D &&
|
||||
event.ctrlKey){
|
||||
console.log('<ctrl>+d pressed');
|
||||
console.log('clearing cache...');
|
||||
console.log('press <alt>+q to remove all key-handlers');
|
||||
|
||||
var lClearCache = Util.getById('clear-cache');
|
||||
if(lClearCache && lClearCache.onclick)
|
||||
lClearCache.onclick();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали <alt>+q
|
||||
* убираем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(event.keyCode === lKEY.Q &&
|
||||
event.altKey){
|
||||
//document.removeEventListener('keydown', key_event,false);
|
||||
console.log('<alt>+q pressed');
|
||||
console.log('<ctrl>+r reload key-handerl - removed');
|
||||
console.log('<ctrl>+s clear cache key-handler - removed');
|
||||
console.log('press <alt>+s to to set them');
|
||||
|
||||
/* обработчик нажатий клавиш снят*/
|
||||
CloudCommander.keyBinded = false;
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <alt>+s
|
||||
* устанавливаем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(event.keyCode === lKEY.S &&
|
||||
event.altKey){
|
||||
/* обрабатываем нажатия на клавиши*/
|
||||
CloudCommander.keyBinded = true;
|
||||
|
||||
console.log('<alt>+s pressed');
|
||||
console.log('<ctrl>+r reload key-handerl - set');
|
||||
console.log('<ctrl>+s clear cache key-handler - set');
|
||||
console.log('press <alt>+q to remove them');
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/* добавляем обработчик клавишь */
|
||||
if(document.addEventListener)
|
||||
document.addEventListener('keydown', key_event,false);
|
||||
else document.onkeydown = key_event;
|
||||
|
||||
/* клавиши назначены*/
|
||||
CloudCommander.keyBinded=true;
|
||||
var CloudCommander;
|
||||
|
||||
/* Key constants*/
|
||||
CloudCommander.KEY = {
|
||||
TAB : 9,
|
||||
ENTER : 13,
|
||||
ESC : 27,
|
||||
|
||||
PPAGE_UP : 33,
|
||||
PAGE_DOWN : 34,
|
||||
END : 35,
|
||||
HOME : 36,
|
||||
UP : 38,
|
||||
DOWN : 40,
|
||||
|
||||
D : 68,
|
||||
|
||||
O : 79,
|
||||
Q : 81,
|
||||
R : 82,
|
||||
S : 83,
|
||||
|
||||
F2 : 113,
|
||||
F3 : 114,
|
||||
F4 : 115,
|
||||
F10 : 121
|
||||
};
|
||||
|
||||
CloudCommander.keyBinding = (function(){
|
||||
"use strict";
|
||||
|
||||
var Util = new CloudCommander.Utils();
|
||||
|
||||
/* saving state of tabs varibles */
|
||||
var lTabPanel = {
|
||||
left : 0,
|
||||
right : 0
|
||||
|
||||
};
|
||||
|
||||
var lKEY = CloudCommander.KEY;
|
||||
|
||||
var key_event = function(event){
|
||||
/* получаем выдленный файл*/
|
||||
var lCurrentFile = Util.getCurrentFile(),
|
||||
lName, i;
|
||||
/* если клавиши можно обрабатывать*/
|
||||
if(CloudCommander.keyBinded && event){
|
||||
|
||||
/* open configuration window */
|
||||
if(event.keyCode === lKEY.O && event.altKey){
|
||||
console.log('openning config window...');
|
||||
|
||||
Util.Images.showLoad();
|
||||
if (typeof CloudCommander.Config === 'function')
|
||||
CloudCommander.Config();
|
||||
|
||||
}
|
||||
|
||||
/* если нажали таб:
|
||||
* переносим курсор на
|
||||
* правую панель, если
|
||||
* мы были на левой и
|
||||
* наоборот
|
||||
*/
|
||||
if(event.keyCode === lKEY.TAB){
|
||||
console.log('Tab pressed');
|
||||
|
||||
try{
|
||||
/* changing parent panel of curent-file */
|
||||
var lPanel = Util.getPanel();
|
||||
var lId = lPanel.id;
|
||||
|
||||
lTabPanel[lId] = lCurrentFile;
|
||||
|
||||
lPanel = Util.getPanel({active:false});
|
||||
lId = lPanel.id;
|
||||
|
||||
|
||||
if(lTabPanel[lId])
|
||||
Util.setCurrentFile(lTabPanel[lId]);
|
||||
else{
|
||||
var lFirstFileOnList = Util.getByTag('li', lPanel)[2];
|
||||
|
||||
Util.setCurrentFile(lFirstFileOnList);
|
||||
}
|
||||
|
||||
}catch(error){console.log(error);}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
/* if f2 pressed */
|
||||
else if(event.keyCode === lKEY.F2){
|
||||
|
||||
}
|
||||
|
||||
/* if f3 or shift+f3 pressed */
|
||||
else if(event.keyCode === lKEY.F3){
|
||||
Util.Images.showLoad();
|
||||
if(event.shiftKey &&
|
||||
typeof CloudCommander.Viewer === 'function')
|
||||
CloudCommander.Viewer(lCurrentFile);
|
||||
|
||||
else if (typeof CloudCommander.Editor === 'function')
|
||||
CloudCommander.Editor(lCurrentFile, true);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* if alt+f3 pressed */
|
||||
else if(event.keyCode === lKEY.F3 &&
|
||||
event.altKey){
|
||||
Util.Images.showLoad();
|
||||
if (typeof CloudCommander.Terminal === 'function')
|
||||
CloudCommander.Terminal();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* if f4 pressed */
|
||||
else if(event.keyCode === lKEY.F4) {
|
||||
Util.Images.showLoad();
|
||||
|
||||
if (typeof CloudCommander.Editor === 'function')
|
||||
CloudCommander.Editor(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
else if(event.keyCode === lKEY.F10 &&
|
||||
event.shiftKey){
|
||||
if (typeof CloudCommander.Menu === 'function')
|
||||
CloudCommander.Menu();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
/* навигация по таблице файлов*/
|
||||
/* если нажали клавишу вверх*/
|
||||
else if(event.keyCode === lKEY.UP){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile) return;
|
||||
|
||||
/* если это строка существет и
|
||||
* если она не заголовок
|
||||
* файловой таблицы
|
||||
*/
|
||||
lCurrentFile = lCurrentFile.previousSibling;
|
||||
if(lCurrentFile){
|
||||
/* выделяем предыдущую строку*/
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
/* scrolling to current file*/
|
||||
Util.scrollIntoViewIfNeeded(lCurrentFile);
|
||||
}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу в низ*/
|
||||
else if(event.keyCode === lKEY.DOWN){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile)return;
|
||||
|
||||
lCurrentFile = lCurrentFile.nextSibling;
|
||||
/* если это не последняя строка */
|
||||
if(lCurrentFile){
|
||||
/* выделяем следующую строку*/
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
/* scrolling to current file*/
|
||||
Util.scrollIntoViewIfNeeded(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали клавишу Home
|
||||
* переходим к самому верхнему
|
||||
* элементу
|
||||
*/
|
||||
else if(event.keyCode === lKEY.HOME){
|
||||
/* получаем первый элемент
|
||||
* пропускаем путь и заголовки столбиков
|
||||
* выделяем верхий файл
|
||||
*/
|
||||
Util.setCurrentFile(lCurrentFile
|
||||
.parentElement.children[2]);
|
||||
|
||||
/* move scrollbar to top */
|
||||
Util.getPanel().scrollByLines(-100000000000000);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу End
|
||||
* выделяем последний элемент
|
||||
*/
|
||||
else if( event.keyCode === lKEY.END){
|
||||
/* выделяем самый нижний файл */
|
||||
Util.setCurrentFile(lCurrentFile
|
||||
.parentElement.lastElementChild);
|
||||
|
||||
/* move scrollbar to bottom*/
|
||||
Util.getPanel().scrollByLines(100000000000000);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу page down
|
||||
* проматываем экран
|
||||
*/
|
||||
else if(event.keyCode === lKEY.PAGE_DOWN){
|
||||
Util.getPanel().scrollByPages(1);
|
||||
|
||||
for(i=0; i<30; i++){
|
||||
if(!lCurrentFile.nextSibling) break;
|
||||
|
||||
lCurrentFile = lCurrentFile.nextSibling;
|
||||
}
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали клавишу page up
|
||||
* проматываем экран
|
||||
*/
|
||||
else if(event.keyCode === lKEY.PAGE_UP){
|
||||
Util.getPanel().scrollByPages(-1);
|
||||
|
||||
for(i=0; i<30; i++){
|
||||
if(!lCurrentFile.previousSibling) break;
|
||||
else try{
|
||||
lCurrentFile
|
||||
.previousSibling
|
||||
.previousSibling
|
||||
.previousSibling
|
||||
.previousSibling;
|
||||
}
|
||||
catch(pError){
|
||||
break;
|
||||
}
|
||||
lCurrentFile = lCurrentFile.previousSibling;
|
||||
}
|
||||
Util.setCurrentFile(lCurrentFile);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали Enter - открываем папку*/
|
||||
else if(event.keyCode === lKEY.ENTER){
|
||||
/* если ненайдены выделенные файлы - выходим*/
|
||||
if(!lCurrentFile)return;
|
||||
|
||||
/* из него достаём спан с именем файла*/
|
||||
lName = Util.getByClass('name', lCurrentFile);
|
||||
/* если нету (что вряд ли) - выходим*/
|
||||
if(!lName)return false;
|
||||
/* достаём все ссылки*/
|
||||
var lATag = Util.getByTag('a', lName[0]);
|
||||
/* если нету - выходим */
|
||||
if(!lATag)return false;
|
||||
|
||||
/* вызываем ajaxload привязанный через changelinks
|
||||
* пробуем нажать на ссылку, если не получиться
|
||||
* (opera, ie), вызываем событие onclick,
|
||||
*/
|
||||
|
||||
if(lCurrentFile.onclick)lCurrentFile.onclick(true);
|
||||
else try{
|
||||
lATag[0].click();
|
||||
}
|
||||
catch(error){
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали <ctr>+r
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
else if(event.keyCode === lKEY.R &&
|
||||
event.ctrlKey){
|
||||
console.log('<ctrl>+r pressed');
|
||||
console.log('reloading page...');
|
||||
console.log('press <alt>+q to remove all key-handlers');
|
||||
/* Программно нажимаем на кнопку перезагрузки
|
||||
* содержимого каталога
|
||||
*/
|
||||
var lRefreshIcon = Util.getRefreshButton();
|
||||
if(lRefreshIcon){
|
||||
/* получаем название файла*/
|
||||
var lSelectedName = Util
|
||||
.getByTag('a', lCurrentFile)[0].textContent;
|
||||
|
||||
/* если нашли элемент нажимаем него
|
||||
* а если не можем - нажимаем на
|
||||
* ссылку, на которую повешен eventHandler
|
||||
* onclick
|
||||
*/
|
||||
lRefreshIcon.onclick();
|
||||
|
||||
CloudCommander._currentToParent(lSelectedName);
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <ctrl>+d чистим кэш */
|
||||
else if(event.keyCode === lKEY.D &&
|
||||
event.ctrlKey){
|
||||
console.log('<ctrl>+d pressed');
|
||||
console.log('clearing cache...');
|
||||
console.log('press <alt>+q to remove all key-handlers');
|
||||
|
||||
var lClearCache = Util.getById('clear-cache');
|
||||
if(lClearCache && lClearCache.onclick)
|
||||
lClearCache.onclick();
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
/* если нажали <alt>+q
|
||||
* убираем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(event.keyCode === lKEY.Q &&
|
||||
event.altKey){
|
||||
//document.removeEventListener('keydown', key_event,false);
|
||||
console.log('<alt>+q pressed');
|
||||
console.log('<ctrl>+r reload key-handerl - removed');
|
||||
console.log('<ctrl>+s clear cache key-handler - removed');
|
||||
console.log('press <alt>+s to to set them');
|
||||
|
||||
/* обработчик нажатий клавиш снят*/
|
||||
CloudCommander.keyBinded = false;
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <alt>+s
|
||||
* устанавливаем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(event.keyCode === lKEY.S &&
|
||||
event.altKey){
|
||||
/* обрабатываем нажатия на клавиши*/
|
||||
CloudCommander.keyBinded = true;
|
||||
|
||||
console.log('<alt>+s pressed');
|
||||
console.log('<ctrl>+r reload key-handerl - set');
|
||||
console.log('<ctrl>+s clear cache key-handler - set');
|
||||
console.log('press <alt>+q to remove them');
|
||||
|
||||
event.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
/* добавляем обработчик клавишь */
|
||||
if(document.addEventListener)
|
||||
document.addEventListener('keydown', key_event,false);
|
||||
else document.onkeydown = key_event;
|
||||
|
||||
/* клавиши назначены*/
|
||||
CloudCommander.keyBinded=true;
|
||||
});
|
||||
|
|
@ -219,7 +219,7 @@ CloudFunc.getUserUIDsAndNames=function(pPasswd_s){
|
|||
* возвращаеться массив каталогов
|
||||
* @url - адрес каталога
|
||||
*/
|
||||
CloudFunc._getDirPath=function(url)
|
||||
CloudFunc._getDirPath = function(url)
|
||||
{
|
||||
var folders=[];
|
||||
var i=0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue