var FM = {}; GLOBAL.ajax_url = '/file_manager/fm_api.php'; FM.DIR_MARKER = '  /'; FM.CURRENT_TAB = ''; FM.CURRENT_A_LINE = -1; FM.CURRENT_B_LINE = -1; FM.BG_TAB = ''; FM.BG_LINE = 0; FM.ROOT_DIR = ''; FM.TAB_A = '.listing-left'; FM.TAB_B = '.listing-right'; FM.TAB_A_MENU = '.menu-left'; FM.TAB_B_MENU = '.menu-right'; FM.ORDER_BOX_A = $('.context-menu.sort-order.tab-a'); FM.ORDER_BOX_B = $('.context-menu.sort-order.tab-b'); FM.ORDER_TAB_A = 'type_asc'; FM.ORDER_TAB_B = 'type_asc'; FM.TAB_A_CURRENT_PATH = GLOBAL.TAB_A__PATH; FM.TAB_B_CURRENT_PATH = GLOBAL.TAB_B_PATH; FM.IMAGES = {'A':[], 'B': []}; FM.IMG_FILETYPES = 'png, jpg, jpeg, gif'; FM.directoryNotAvailable = function(reply) { alert('Directory not available'); // todo: translate } FM.showError = function(type, message) { alert(message); } FM.formatPath = function(dir) { var correct_path = ''; if (dir.substr(0, GLOBAL.ROOT_DIR.length) == GLOBAL.ROOT_DIR) { correct_path = dir; } else { correct_path = GLOBAL.ROOT_DIR + '/' + dir; } correct_path = correct_path.replace(/\/(\/+)/g, '/'); return correct_path; } FM.init = function() { FM.setTabActive(FM.TAB_A); FM.ROOT_DIR = 'undefined' == typeof GLOBAL.ROOT_DIR ? '' : GLOBAL.ROOT_DIR; var dir_A = 'undefined' == typeof GLOBAL.START_DIR_A ? '' : GLOBAL.START_DIR_A; var dir_B = 'undefined' == typeof GLOBAL.START_DIR_B ? '' : GLOBAL.START_DIR_B; FM.TAB_A_CURRENT_PATH = FM.formatPath(GLOBAL.START_DIR_A); FM.TAB_B_CURRENT_PATH = FM.formatPath(GLOBAL.START_DIR_B); FM.open(dir_A, FM.TAB_A, function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); if (FM['CURRENT_' + tab + '_LINE'] == -1) { FM.setActive(0, FM.CURRENT_TAB); } }); FM.open(dir_B, FM.TAB_B, function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); if (FM['CURRENT_' + tab + '_LINE'] == -1) { FM.setActive(0, FM.CURRENT_TAB); } }); } FM.setActive = function(index, box) { var tab = FM.getTabLetter(box); $(box + ' .selected').removeClass('selected'); $(box).find('li:eq('+index+')').addClass('selected'); //$(box).find('li:eq('+index+')').addClass('selected'); //var w_h = $(window).height() - 100; var w_offset = $(box).scrollTop(); var w_height = $(box).height() var pos = $(box).find('li.selected').position(); //console.log(w_height); //console.log(w_offset); //console.log(pos); var wwh = w_height - w_offset + pos.top; //console.info(wwh); console.info((pos.top + w_offset) + ' > ' + w_height); console.log((pos.top + w_offset) > w_height); /* if (pos.top > w_height) { var cur_elm = $(box).find('li.selected').position(); var cur_elm_height = $(box).find('li.selected').height(); //$(box).scrollTo(wwh - 350); $(box).scrollTo(w_offset + cur_elm.top - w_height/2 + cur_elm_height/2); } else {*/ var cur_elm = $(box).find('li.selected').position(); var cur_elm_height = $(box).find('li.selected').height(); $(box).scrollTo(w_offset + cur_elm.top - w_height/2 + cur_elm_height/2); //} FM['CURRENT_' + tab + '_LINE'] = index; FM.CURRENT_TAB = box; } FM.setSecondInactive = function(index, box) { //$(box + ' .active').removeClass('selected-inactive'); $(box).find('li:eq('+index+')').addClass('selected-inactive'); FM.BG_LINE = index; FM.BG_TAB = box; } FM.goUp = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var index = FM['CURRENT_' + tab + '_LINE']; index -= 1; if (index < 0) { index = $(FM.CURRENT_TAB).find('li').length - 1; } FM.setActive(index, FM.CURRENT_TAB); } FM.goDown = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var index = FM['CURRENT_' + tab + '_LINE']; index += 1; if (index > ($(FM.CURRENT_TAB).find('li').length - 1)) { index = 0; } FM.setActive(index, FM.CURRENT_TAB); } FM.open = function(dir, box, callback) { var tab = FM.getTabLetter(box); FM['TAB_'+tab+'_CURRENT_PATH'] = dir; var params = { 'dir': dir }; App.Ajax.request('cd', params, function(reply) { if (reply.result) { var html = FM.generate_listing(reply.listing, box); } else { FM.directoryNotAvailable(reply); } callback && callback(reply); var current_pwd = dir.trim() == '' ? FM.ROOT_DIR : dir; $('.pwd-tab-' + tab).html(current_pwd); }); } FM.isItemFile = function(item) { return item.type == 'f'; } FM.isItemDir = function(item) { return item.type == 'd'; } FM.getFileType = function(name) { var filetype = name.split('.').pop().toLowerCase(); return filetype.length > 6 || name.indexOf('.') <= 0 ? '' : filetype; } FM.sortItems = function(items, box) { var sorted = []; var files = []; var dirs = []; var combined = [] $.each(items, function(i, o) { if (i > 0) { // i == 0 means first .. element in list if (FM.isItemFile(o)) { files.push(o); } else { dirs.push(o); } } }); // var sort_type = $(box).parents('.window').find('.menu').find('.sort-by-v').val(); var sort_type = FM.ORDER_TAB_A; if($(box).closest('.window').find('.menu').hasClass('menu-right')){ sort_type = FM.ORDER_TAB_B; } switch (sort_type) { case 'type_asc': files.sort(function (a, b) { return a.name.localeCompare( b.name ); }); dirs.sort(function (a, b) { return a.name.localeCompare( b.name ); }); sorted = $.merge(dirs, files); break; case 'type_desc': files.sort(function (a, b) { return a.name.localeCompare( b.name ); }); dirs.sort(function (a, b) { return a.name.localeCompare( b.name ); }); sorted = $.merge(files, dirs); break; case 'size_asc': files.sort(function (a, b) { var size_a = parseInt(a.size, 10); var size_b = parseInt(b.size, 10); return ((size_a < size_b) ? -1 : ((size_a > size_b) ? 1 : 0)); }); sorted = $.merge(dirs, files); break; case 'size_desc': files.sort(function (a, b) { var size_a = parseInt(a.size, 10); var size_b = parseInt(b.size, 10); return ((size_a > size_b) ? -1 : ((size_a < size_b) ? 1 : 0)); }); sorted = $.merge(dirs, files); break; case 'date_asc': sorted = $.merge(dirs, files); sorted.sort(function (a, b) { var time_a = a.time.split('.')[0]; var time_b = b.time.split('.')[0]; var date_a = Date.parseDate(a.date + ' ' + time_a, 'yy-m-d h:i:s'); var date_b = Date.parseDate(b.date + ' ' + time_b, 'yy-m-d h:i:s'); return ((date_a < date_b) ? -1 : ((date_a > date_b) ? 1 : 0)); }); break; case 'date_desc': sorted = $.merge(dirs, files); sorted.sort(function (a, b) { var time_a = a.time.split('.')[0]; var time_b = b.time.split('.')[0]; var date_a = Date.parseDate(a.date + ' ' + time_a, 'yy-m-d h:i:s'); var date_b = Date.parseDate(b.date + ' ' + time_b, 'yy-m-d h:i:s'); return ((date_a > date_b) ? -1 : ((date_a < date_b) ? 1 : 0)); }); break; case 'name_asc': sorted = $.merge(dirs, files); sorted.sort(function (a, b) { return a.name.localeCompare(b.name); }); break; case 'name_desc': sorted = $.merge(dirs, files); sorted.sort(function (a, b) { return a.name.localeCompare(b.name); }); sorted = sorted.reverse(); break; default: files.sort(function (a, b) { return a.name.localeCompare( b.name ); }); dirs.sort(function (a, b) { return a.name.localeCompare( b.name ); }); sorted = $.merge(dirs, files); break; } sorted = $.merge([items[0]], sorted); return sorted; } FM.openFile = function(dir, box, elm) { var tab = FM.getTabLetter(box); FM['TAB_'+tab+'_CURRENT_PATH'] = dir; var elm = $(elm).hasClass('dir') ? $(elm) : $(elm).closest('.dir'); var src = $.parseJSON($(elm).find('.source').val()); var myWindow = window.open('/edit/file/?path=' + src.full_path, '_blank');//, src.full_path, "width=900, height=700"); /*var params = { 'dir': dir }; App.Ajax.request('open_file', params, function(reply) { if (reply.result) { //var html = FM.generate_listing(reply.listing, box); } else { //FM.directoryNotAvailable(reply); alert('Cannot open file'); } });*/ } FM.getTabLetter = function(box) { var tab = 'A'; if (box == FM.TAB_B) { tab = 'B'; } return tab; } FM.generate_listing = function(reply, box) { var tab = FM.getTabLetter(box); FM.IMAGES[tab] = []; var acc = []; if (reply.length == 0) { reply = [{ type: 'd', name: '', permissions: '', owner: '', size: '', time: '', date: '' }]; } var path_arr = FM['TAB_'+tab+'_CURRENT_PATH'].split('/'); path_arr = path_arr.filter(function(v){return v!==''}); path_arr.pop(); var back_path = '/' + path_arr.join('/'); if (back_path == FM.ROOT_DIR || path_arr.length < FM.ROOT_DIR.split('/').length) { back_path = '';//FM.ROOT_DIR; } reply = FM.sortItems(reply, box); $(reply).each(function(i, o) { var path = FM.formatPath(FM['TAB_'+tab+'_CURRENT_PATH']+'/'+o.name); var cl_act = o.type == 'd' ? 'onClick="FM.open(\'' + path + '\', \'' + box + '\')"' : 'onClick="FM.openFile(\''+path+'\', \'' + box + '\', this)"'; if (o.name == '') { path = FM.formatPath(back_path); cl_act = o.type == 'd' ? 'onClick="FM.open(\'' + path + '\', \'' + box + '\')"' : 'onClick="FM.openFile(\''+path+'\', \'' + box + '\', this)"'; o = { type: 'd', name: '..', permissions: '', owner: '', size: '', time: '', date: '' } } var time = o.time.split('.'); time = time[0]; o.full_path = path; o.filetype = FM.getFileType(o.name); if(FM.IMG_FILETYPES.indexOf(o.filetype) >= 0 && o.filetype.length > 0) { FM.IMAGES[tab][FM.IMAGES[tab].length] = {'img': "/view/file/?path=/home/admin/"+o.name+"&raw=true", 'thumb': "/view/file/?path=/home/admin/"+o.name+"&raw=true", 'id': 'img-'+i}; cl_act = 'onClick="FM.fotoramaOpen(\'' + tab + '\', \'img-' + i +'\')"'; } var tpl = Tpl.get('entry_line', 'FM'); tpl.set(':CL_ACTION_1', cl_act); tpl.set(':SOURCE', $.toJSON(o)); tpl.set(':NAME', o.name); tpl.set(':PERMISSIONS', o.permissions); tpl.set(':OWNER', o.owner); tpl.set(':SIZE', o.size); tpl.set(':TIME', time); tpl.set(':DATE', o.date); if (FM.isItemDir(o)) { tpl.set(':ITEM_TYPE', 'filetype-dir'); } else { tpl.set(':ITEM_TYPE', 'filetype-' + o.filetype); } acc.push(tpl.finalize()); }); $(box).html(acc.done()); FM['CURRENT_'+tab+'_LINE'] = -1; } FM.fotoramaOpen = function(tab, img_index) { console.log('index: ' + img_index); $('.fotorama').fotorama({ nav: 'thumbs', arrows: true, click: true, allowfullscreen: true, fit: 'scaledown', thumbfit: 'scaledown', data: FM.IMAGES[tab] }); $('.fotorama').on('fotorama:fullscreenexit', function (e, fotorama) { $('.fotorama').data('fotorama').destroy(); }); $('.fotorama').fotorama().data('fotorama').requestFullScreen(); $('.fotorama').fotorama().data('fotorama').show(img_index); } FM.selectItem = function(item, box) { if (FM.CURRENT_TAB == FM.TAB_A) { FM.setTabActive(FM.TAB_B); $(FM.TAB_B).find('.selected-inactive').removeClass('selected-inactive'); $(FM.TAB_A).find('.selected').addClass('selected-inactive'); } else { FM.setTabActive(FM.TAB_A); $(FM.TAB_A).find('.selected-inactive').removeClass('selected-inactive'); $(FM.TAB_B).find('.selected').addClass('selected-inactive'); } $(box).find('.active').removeClass('active'); $(box).find('.selected').removeClass('selected'); /*if ($(item).hasClass('active')) { $(item).removeClass('active'); } else { $(item).addClass('active'); }*/ if ($(item).hasClass('selected')) { $(item).removeClass('selected'); } else { $(item).addClass('selected'); } FM.setTabActive(box); } FM.switchTab = function() { if (FM.CURRENT_TAB == FM.TAB_A) { FM.setTabActive(FM.TAB_B); $(FM.TAB_B).find('.selected-inactive').removeClass('selected-inactive'); $(FM.TAB_A).find('.selected').addClass('selected-inactive'); } else { FM.setTabActive(FM.TAB_A); $(FM.TAB_A).find('.selected-inactive').removeClass('selected-inactive'); $(FM.TAB_B).find('.selected').addClass('selected-inactive'); } var tab = FM.getTabLetter(FM.CURRENT_TAB); if (FM['CURRENT_' + tab + '_LINE'] == -1) { FM.setActive(0, FM.CURRENT_TAB); } } FM.setTabActive = function(box) { FM.CURRENT_TAB = box; $('.window.active').removeClass('active'); $('.listing-left.active').removeClass('active'); $('.listing-right.active').removeClass('active'); $(FM.CURRENT_TAB).addClass('active'); $(FM.CURRENT_TAB).closest('.window').addClass('active'); } FM.confirmRename = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var box = FM['TAB_' + tab]; var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src); var target_name = $('#rename-title').val(); if (target_name.trim().length == 0) { return alert('Cannot be renamed.'); } var params = { item: src.name, target_name: target_name, dir: FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('rename_file', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('rename-items', reply.message); } FM.popupClose(); }); } FM.renameItems = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (selected.length == 0) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src); var tpl = Tpl.get('popup_rename', 'FM'); tpl.set(':FILENAME', src.name); FM.popupOpen(tpl.finalize()); /*var tab = FM.getTabLetter(FM.CURRENT_TAB); var box = FM.CURRENT_TAB; var delete_list = $(box).find('.active'); if (delete_list.length == 0) { return FM.showError('hint', 'No selected items'); } $(delete_list).each(function(i, o) { var opt = $(o).find('.source').val(); opt = $.parseJSON(opt); prompt('Rename "' + opt.name + '" to:'); });*/ } FM.popupOpen = function(html) { $('
').attr('id', 'popup').html(html).flayer(); } FM.popupClose = function() { return $('#popup').flayer_close(); } FM.copyItems = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var opposite_tab = 'A'; if (tab == 'A') { opposite_tab = 'B'; } var src = selected.find('.source').val(); src = $.parseJSON(src); console.log(src); var params = { item: src.full_path, filename: src.name, dir: FM['TAB_' + tab + '_CURRENT_PATH'], dir_target: FM['TAB_' + opposite_tab + '_CURRENT_PATH'] }; App.Ajax.request('copy_files', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], FM['TAB_' + tab]); FM.open(FM['TAB_' + opposite_tab + '_CURRENT_PATH'], FM['TAB_' + opposite_tab]); } else { FM.showError('delete-items', reply.message); } //FM.popupClose(); }); } FM.downloadFiles = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src); if (src.type != 'f') { return alert('Only files can be dosnloaded in this version'); } var path = src.full_path; var win = window.open('/download/file/?path=' + path, '_blank'); win.focus(); } FM.uploadFile = function() { //return alert('Not available atm..'); //$('
123
').flayer(); } FM.confirmDelete = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var box = FM['TAB_' + tab]; var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src); var params = { item: src.full_path, dir: FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('delete_files', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('delete-items', reply.message); } FM.popupClose(); }); } FM.deleteItems = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (selected.length == 0) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src); var tpl = Tpl.get('popup_delete', 'FM'); tpl.set(':FILENAME', src.name); FM.popupOpen(tpl.finalize()); /*var tab = FM.getTabLetter(FM.CURRENT_TAB); var confirmed = confirm(App.i18n.ARE_YOU_SURE); var box = FM.CURRENT_TAB; var delete_list = $(box).find('.selected'); if (delete_list.length == 0) { return FM.showError('hint', 'No selected items'); } var params = { items: [], dir: FM['TAB_' + tab + '_CURRENT_PATH'] }; $(delete_list).each(function(i, opt){ var opt = $(o).find('.source').val(); opt = $.parseJSON(opt); params.items.push(opt.name); }); App.Ajax.request('delete_files', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('delete-items', reply.message); } });*/ } FM.confirmCreateDir = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var box = FM['TAB_' + tab]; /*var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src);*/ var dirname = $('#rename-title').val(); if (dirname.trim().length == 0) { return alert('Cannot be created.'); } var params = { dirname: dirname, dir: FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('create_dir', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('create-file', reply.message); } FM.popupClose(); }); } FM.createDir = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var tpl = Tpl.get('popup_create_dir', 'FM'); FM.popupOpen(tpl.finalize()); /*var dirname = prompt('Enter dir name:'); if (dirname.trim() != '') { var box = FM.CURRENT_TAB; var tab = FM.getTabLetter(box); var params = { 'dirname': dirname, 'dir': FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('create_dir', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('create-dir', reply.message); } }); } else { FM.showError('dirname-empty', 'Dirname cannot be empty'); }*/ } FM.confirmCreateFile = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var box = FM['TAB_' + tab]; /*var selected = $(FM['TAB_' + tab] ).find('.dir.selected'); if (!selected) { return alert('No file selected'); } var src = selected.find('.source').val(); src = $.parseJSON(src);*/ var filename = $('#rename-title').val(); if (filename.trim().length == 0) { return alert('Cannot be created.'); } var params = { filename: filename, dir: FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('create_file', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('create-file', reply.message); } FM.popupClose(); }); } FM.createFile = function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var tpl = Tpl.get('popup_create_file', 'FM'); FM.popupOpen(tpl.finalize()); /*var filename = prompt('Enter file name:'); if (filename.trim() != '') { var box = FM.CURRENT_TAB; var tab = FM.getTabLetter(box); var params = { 'filename': filename, 'dir': FM['TAB_' + tab + '_CURRENT_PATH'] }; App.Ajax.request('create_file', params, function(reply) { if (reply.result) { FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box); } else { FM.showError('create-file', reply.message); } }); } else { FM.showError('filename-empty', 'Filename cannot be empty'); }*/ } FM.showOrderBox = function(elm, tab) { var primary_box = FM.ORDER_BOX_A; var secondary_box = FM.ORDER_BOX_B; if(tab == FM.TAB_B){ primary_box = FM.ORDER_BOX_B; secondary_box = FM.ORDER_BOX_A; } secondary_box.hide(); if(primary_box.is(':visible')){ primary_box.hide(); return; } var offset = elm.offset(); offset.top += elm.outerHeight() + 10; offset.left += elm.outerWidth() - primary_box.outerWidth(); primary_box.css({top: offset.top, left: offset.left}); primary_box.show(); } FM.reOrderList = function(elm){ var tab = FM.TAB_A; var menu = $(FM.TAB_A_MENU); var path = FM.TAB_A_CURRENT_PATH; var primary_box = FM.ORDER_BOX_A; var tab_order_type = FM.ORDER_TAB_A; if(elm.closest('.context-menu').hasClass('tab-b')){ tab = FM.TAB_B; path = FM.TAB_B_CURRENT_PATH; primary_box = FM.ORDER_BOX_B; menu = FM.TAB_B_MENU; tab_order_type = FM.ORDER_TAB_B; } var entity = elm.closest('li').attr('entity'); var direction = 'asc'; if(elm.hasClass('up')){ direction = 'desc'; } if(tab == FM.TAB_A){ FM.ORDER_TAB_A = entity+'_'+direction; }else{ FM.ORDER_TAB_B = entity+'_'+direction; } primary_box.find('span').removeClass('active'); $(menu).find('.sort-by .entity').html(elm.closest('li').find('span').html()); $(menu).find('.sort-by').removeClass('desc asc').addClass(direction).addClass('sort-by'); elm.addClass('active'); primary_box.hide(); FM.open(path, tab); } FM.init(); $(document).ready(function() { //return alert('statechange: Back'); /*$(document).bind('keydown.up', function() { console.log(1); //try{FM.goUp();}catch(e){console.log(e);} //console.log(FM); FM.goUp(); }); $(document).bind('keydown.down', function() { console.log(1); //try{FM.goUp();}catch(e){console.log(e);} //console.log(FM); FM.goDown(); });*/ var ph = $('.window .pwd').outerHeight(); var mh = $('.window .menu').outerHeight(); var wh = $(window).outerHeight(); var hgt = wh - (ph + mh) - 8; $('.window ul').outerHeight(hgt); shortcut.add("Down",function() { FM.goDown(); },{ 'type': 'keydown', 'propagate': false, 'disable_in_input': false, 'target': document }); shortcut.add("Up",function() { FM.goUp(); },{ 'type': 'keydown', 'propagate': false, 'disable_in_input': false, 'target': document }); shortcut.add("Tab",function() { FM.switchTab(); },{ 'type': 'keydown', 'propagate': false, 'disable_in_input': false, 'target': document }); shortcut.add("Enter",function() { var tab = FM.getTabLetter(FM.CURRENT_TAB); var elm = $(FM.CURRENT_TAB).find('.dir:eq('+FM['CURRENT_'+tab+'_LINE']+')'); if (elm.length == 1) { var src = $.parseJSON($(elm).find('.source').val()); if (src.type == 'd') { FM.open(src.full_path, FM.CURRENT_TAB); } else { FM.openFile(src.full_path, FM.CURRENT_TAB, elm); } } },{ 'type': 'keydown', 'propagate': false, 'disable_in_input': false, 'target': document }); /* is jQuery .live() has been removed in version 1.9 onwards $(FM.TAB_A + ' .dir').live('click', function(evt) { FM.selectItem(evt.target, FM.TAB_A); }); $(FM.TAB_B + ' .dir').live('click', function(evt) { FM.selectItem(evt.target, FM.TAB_B); }); */ $(FM.TAB_A).on('click', '.dir', function(evt) { FM.selectItem(evt.target, FM.TAB_A); }); $(FM.TAB_B).on('click', '.dir', function(evt) { FM.selectItem(evt.target, FM.TAB_B); }); $(FM.TAB_A_MENU).on('click', '.sort-by', function(evt){ FM.showOrderBox($(evt.target), FM.TAB_A); }); $(FM.TAB_B_MENU).on('click', '.sort-by', function(evt){ FM.showOrderBox($(evt.target), FM.TAB_B); }); $('.context-menu.sort-order').on('click', 'span', function(evt){ FM.reOrderList($(evt.target)); }); $('.warning-box .close').on('click', function(evt){ $(evt.target).closest('.warning-box').hide(); }); }); /*$(document).bind('keydown.tab', function() { FM.switchTab(); });*/ $(window).bind('statechange', function(evt){ $(evt).stopPropagation(); // History.getState() alert('No way back yet'); })