FileManager stuff

This commit is contained in:
Serghey Rodin 2015-10-12 17:45:31 +03:00
parent 5c8e3d3489
commit 7565e8217f
13 changed files with 514 additions and 60 deletions

View file

@ -625,3 +625,102 @@ input[type="checkbox"] {
.subcontext-menu li { .subcontext-menu li {
/*float: left;*/ /*float: left;*/
} }
.shortcuts {
background: rgba(50, 50, 50, 0.9);
display: inline-block;
position: fixed;
right: 20%;
bottom: 0;
color: #eee;
width: 810px;
border: 1px solid #333;
font-family: arial;
font-size: 13px;
}
.shortcuts .header {
border-bottom: 1px solid #333;
height: 43px;
}
.shortcuts .title {
text-transform: uppercase;
color: #ffcc00;
padding: 7px 0 7px 14px;
display: inline-block;
float: left;
font-size: 11px;
letter-spacing: 3px;
font-weight: bold;
line-height: 30px;
}
.shortcuts .close {
background: url("/images/sprite.png") repeat scroll -408px -469px;
cursor: pointer;
display: inline-block;
float: right;
height: 32px;
padding-top: 11px;
width: 46px;
}
.shortcuts .close:hover {
background-color: #000;
..
}
.shortcuts .close:active {
background-color: #55c9c0;
}
.shortcuts ul {
list-style-type: none;
padding: 30px 10px;
display: inline-block;
float: left;
}
.shortcuts ul li {
padding: 5px 20px;
}
.shortcuts ul li.step-top {
padding-top: 30px;
}
.shortcuts ul li span {
color: #48F4EF;
display: inline-block;
font-weight: bold;
padding: 0 20px 0 0;
text-align: right;
width: 140px;
}
.shortcuts ul li span.bigger {
font-size: 18px;
}
.shortcuts ul.note {
font-style: italic;
color: #9CA484;
width: 700px;
padding-left: 50px;
}
.shortcuts ul.note a {
color: #9CA484;
}
.to-shortcuts {
display: inline-block;
position: fixed;
top: 95%;
right: 1%;
}
.l-icon-shortcuts {
display: inline-block;
vertical-align: middle;
background-image: url("/images/sprite.png");
width: 35px;
height: 35px;
background-position: -283px -68px;
border-radius: 18px;
}
.l-icon-shortcuts:hover {
background-color: #ccc;
}
.l-icon-shortcuts:active {
background-color: #98D5CD;
}

View file

@ -1867,7 +1867,7 @@ div.l-content > div.l-separator:nth-of-type(4) {
} }
.l-icon-up-arrow, .l-icon-down-arrow, .l-icon-star, .l-icon-to-top, .l-icon-star-orange, .l-icon-star-blue { .l-icon-up-arrow, .l-icon-down-arrow, .l-icon-star, .l-icon-to-top, .l-icon-shortcuts, .l-icon-star-orange, .l-icon-star-blue {
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
background-image: url("/images/sprite.png"); background-image: url("/images/sprite.png");
@ -1928,6 +1928,19 @@ div.l-content > div.l-separator:nth-of-type(4) {
background-position: -402px -68px; background-position: -402px -68px;
} }
.l-icon-shortcuts {
width: 35px;
height: 35px;
background-position: -283px -68px;
border-radius: 18px;
}
.l-icon-shortcuts:hover {
background-color: #ccc;
}
.l-icon-shortcuts:active {
background-color: #98D5CD;
}
.l-icon-star-orange { .l-icon-star-orange {
width: 13px; width: 13px;
height: 13px; height: 13px;
@ -1974,9 +1987,17 @@ div.l-content > div.l-separator:nth-of-type(4) {
display: inline-block; display: inline-block;
position: fixed; position: fixed;
top: 92%; top: 92%;
right: 3%; right: 4%;
} }
.to-shortcuts {
display: inline-block;
position: fixed;
top: 92%;
right: 1%;
}
/* /*
#vstobjects { #vstobjects {
margin-top: -1px; margin-top: -1px;
@ -2737,6 +2758,7 @@ form#vstobjects.suspended {
color: #eee; color: #eee;
width: 800px; width: 800px;
border: 1px solid #333; border: 1px solid #333;
font-size: 13px;
} }
.shortcuts .header { .shortcuts .header {
border-bottom: 1px solid #333; border-bottom: 1px solid #333;
@ -2777,7 +2799,7 @@ form#vstobjects.suspended {
padding: 5px 20px; padding: 5px 20px;
} }
.shortcuts ul li.step-top { .shortcuts ul li.step-top {
padding-bottom: 30px; padding-top: 30px;
} }
.shortcuts ul li span { .shortcuts ul li span {
color: #48F4EF; color: #48F4EF;

View file

@ -57,20 +57,24 @@ if ((!isset($_SESSION['user'])) && (!defined('NO_AUTH_REQUIRED'))) {
if ($fn) { if ($fn) {
$f = fopen ($fn, 'w+'); $f = fopen ($fn, 'w+');
fwrite($f, $_POST['contents']); fwrite($f, $_POST['contents']);
fclose($f);
chmod($fn, 0644);
if ($f) { if ($f) {
//copy($fn, $path); //copy($fn, $path);
exec (VESTA_CMD . "v-copy-fs-file {$user} {$fn} {$path}", $output, $return_var); exec (VESTA_CMD . "v-copy-fs-file {$user} {$fn} {$path}", $output, $return_var);
$error = check_return_code($return_var, $output); $error = check_return_code($return_var, $output);
if ($return_var != 0) { if ($return_var != 0) {
var_dump(VESTA_CMD . "v-copy-fs-file {$user} {$fn} {$path}"); /*var_dump(VESTA_CMD . "v-copy-fs-file {$user} {$fn} {$path}");
var_dump($path); var_dump($path);
var_dump($output); var_dump($output);*/
die('<p style="color: white">Error while saving file</p>');//echo '0'; die('<p style="color: white">Error while saving file</p>');//echo '0';
} }
} }
unlink($fn); unlink($fn);
} }
} }
// $content = file_get_contents($path); // $content = file_get_contents($path);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

View file

@ -546,4 +546,54 @@ $LANG['en'] = array(
'Create file' => 'Create file', 'Create file' => 'Create file',
'Create directory' => 'Create directory', 'Create directory' => 'Create directory',
'Add New object' => 'Add New object',
'Save Form' => 'Save Form',
'Cancel saving form' => 'Cancel saving form',
'Go to USER list' => 'Go to USER list',
'Go to WEB list' => 'Go to WEB list',
'Go to DNS list' => 'Go to DNS list',
'Go to MAIL list' => 'Go to MAIL list',
'Go to DB list' => 'Go to DB list',
'Go to CRON list' => 'Go to CRON list',
'Go to BACKUP list' => 'Go to BACKUP list',
'Focus on search' => 'Focus on search',
'Display/Close shortcuts' => 'Display/Close shortcuts',
'Go to Packages' => 'Go to Packages',
'Go to IP' => 'Go to IP',
'Go to Graphs' => 'Go to Graphs',
'Go to Statistic' => 'Go to Statistic',
'Go to Log' => 'Go to Log',
'Go to Updates' => 'Go to Updates',
'Go to Firewall' => 'Go to Firewall',
'Go to File Manager' => 'Go to File Manager',
'Go to Server' => 'Go to Server',
'Upload' => 'Upload',
'New File' => 'New File',
'New Folder' => 'New Folder',
'Download' => 'Download',
'Rename' => 'Rename',
'Copy' => 'Copy',
'Archive' => 'Archive',
'Delete' => 'Delete',
'Save File (in text editor)' => 'Save File (in text editor)',
'Display Shortcuts Hel' => 'Display Shortcuts Hel',
'Close Popup / Cancel' => 'Close Popup / Cancel',
'Move Cursor Up' => 'Move Cursor Up',
'Move Cursor Dow' => 'Move Cursor Dow',
'Switch to Left Tab' => 'Switch to Left Tab',
'Switch to Right Tab' => 'Switch to Right Tab',
'Switch Tab' => 'Switch Tab',
'Go to the Top of File List' => 'Go to the Top of File List',
'Go to the Last File' => 'Go to the Last File',
'Open File/Enter Directory' => 'Open File/Enter Directory',
'Go to Parent Directory' => 'Go to Parent Directory',
'Select Current File' => 'Select Current File',
'Select Bunch of Files' => 'Select Bunch of Files',
'Append File to the Current Selection' => 'Append File to the Current Selection',
'Select All Files' => 'Select All Files',
'shortcuts are inspired by magnificent GNU <a href="https://www.midnight-commander.org/">Midnight Commander</a> file manager' => 'shortcuts are inspired by magnificent GNU <a href="https://www.midnight-commander.org/">Midnight Commander</a> file manager',
); );

View file

@ -546,7 +546,7 @@ FM.downloadFileFromSubcontext = function(elm) {
FM.openFile = function(dir, box, elm) { FM.openFile = function(dir, box, elm) {
var tab = FM.getTabLetter(box); var tab = FM.getTabLetter(box);
FM['TAB_'+tab+'_CURRENT_PATH'] = dir; //FM['TAB_'+tab+'_CURRENT_PATH'] = dir;
var elm = $(elm).hasClass('dir') ? $(elm) : $(elm).closest('.dir'); var elm = $(elm).hasClass('dir') ? $(elm) : $(elm).closest('.dir');
var src = $.parseJSON($(elm).find('.source').val()); var src = $.parseJSON($(elm).find('.source').val());
@ -754,11 +754,11 @@ FM.checkBulkStatus = function(bulkStatuses, acc) {
if (status == true) { if (status == true) {
$('#popup .results').html(App.Constants.FM_DONE); $('#popup .results').html(App.Constants.FM_DONE);
$('.controls p').replaceWith('<p class="ok" onClick="FM.bulkPopupClose();">close</p>'); $('.controls').html('<p class="ok" onClick="FM.bulkPopupClose();">'+App.Constants.FM_DONE+'</p>');
} }
else { else {
$('#popup .results').html(msg); $('#popup .results').html(msg);
$('.controls p').replaceWith('<p class="ok" onClick="FM.bulkPopupClose();">close</p>'); $('.controls').html('<p class="ok" onClick="FM.bulkPopupClose();">'+App.Constants.FM_DONE+'</p>');
} }
} }
@ -795,49 +795,47 @@ FM.humanFileSizeUnit = function(size) {
} }
FM.bulkCopy = function() { FM.bulkCopyDo = function() {
var acc = $(FM.CURRENT_TAB).find('.dir.selected'); var acc = $(FM.CURRENT_TAB).find('.dir.selected');
if (acc.length > 0) { if (acc.length > 0) {
//FM.popupClose(); //FM.popupClose();
var cfr_html = ''; var cfr_html = '';
var numberOfItems = 0;
$.each(acc, function(i, o) { $.each(acc, function(i, o) {
var ref = $(o); var ref = $(o);
var src = $(ref).find('.source').val(); var src = $(ref).find('.source').val();
src = $.parseJSON(src); src = $.parseJSON(src);
if (!FM.isItemPseudo(o)) { if (!FM.isItemPseudo(o)) {
cfr_html += '<div>'+src.name+'</div>'; cfr_html += '<div>'+src.name+'</div>';
numberOfItems++;
} }
}); });
var tpl = Tpl.get('popup_bulk', 'FM');
tpl.set(':ACTION', App.Constants.FM_YOU_ARE_COPYING);
tpl.set(':TEXT', cfr_html);
FM.popupOpen(tpl.finalize());
var bulkStatuses = []; var bulkStatuses = [];
$.each(acc, function(i, o) { $.each(acc, function(i, o) {
var ref = $(o); var ref = $(o);
var src = $(ref).find('.source').val(); var src = $(ref).find('.source').val();
src = $.parseJSON(src); src = $.parseJSON(src);
/*if (!FM.isItemPseudo(o)) { if (FM.isItemPseudo(src)) {
cfr_html += '<div>'+src.name+'</div>'; //cfr_html += '<div>'+src.name+'</div>';
}*/ return;
var tab = FM.getTabLetter(FM.CURRENT_TAB); }
var tab = FM.getTabLetter(FM.CURRENT_TAB);
var opposite_tab = 'A'; var opposite_tab = 'A';
if (tab == 'A') { if (tab == 'A') {
opposite_tab = 'B'; opposite_tab = 'B';
} }
if (FM.isItemPseudo(src)) { if (FM.isItemPseudo(src)) {
return FM.displayError( /*return FM.displayError(
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
); );*/
return;
} }
var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ]; var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ];
@ -863,6 +861,106 @@ FM.bulkCopy = function() {
bulkStatuses.push(reply.message); bulkStatuses.push(reply.message);
} }
FM.checkBulkStatus(bulkStatuses, acc);
});
});
}
}
FM.bulkCopy = function() {
var acc = $(FM.CURRENT_TAB).find('.dir.selected');
if (acc.length > 0) {
FM.popupClose();
var cfr_html = '';
var numberOfItems = 0;
$.each(acc, function(i, o) {
var ref = $(o);
var src = $(ref).find('.source').val();
src = $.parseJSON(src);
if (!FM.isItemPseudo(o)) {
cfr_html += '<div>'+src.name+'</div>';
numberOfItems++;
}
});
var tab = FM.getTabLetter(FM.CURRENT_TAB);
var opposite_tab = 'A';
if (tab == 'A') {
opposite_tab = 'B';
}
var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ];
if (dest == '') {
dest = GLOBAL.ROOT_DIR;
}
var tpl = Tpl.get('popup_bulk_copy', 'FM');
tpl.set(':NUMBER_OF_ITEMS', numberOfItems);
tpl.set(':DST_FILENAME', dest);
//popup_bulk_copy
FM.popupOpen(tpl.finalize());
}
}
FM.bulkRemoveDo = function() {
var acc = $(FM.CURRENT_TAB).find('.dir.selected');
if (acc.length > 0) {
//FM.popupClose();
var cfr_html = '';
$.each(acc, function(i, o) {
var ref = $(o);
var src = $(ref).find('.source').val();
src = $.parseJSON(src);
if (!FM.isItemPseudo(o)) {
cfr_html += '<div>'+src.name+'</div>';
}
});
var bulkStatuses = [];
$.each(acc, function(i, o) {
var ref = $(o);
var src = $(ref).find('.source').val();
src = $.parseJSON(src);
var tab = FM.getTabLetter(FM.CURRENT_TAB);
var opposite_tab = 'A';
if (tab == 'A') {
opposite_tab = 'B';
}
if (FM.isItemPseudo(src)) {
return;
/*return FM.displayError(
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
);*/
}
var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ];
if (dest == '') {
dest = GLOBAL.ROOT_DIR;
}
var params = {
item: src.full_path,
dir: FM['TAB_' + tab + '_CURRENT_PATH']
};
App.Ajax.request('delete_files', params, function(reply) {
if (reply.result == true) {
bulkStatuses.push(true);
}
else {
//FM.showError('copy-items', reply.message);
bulkStatuses.push(reply.message);
}
FM.checkBulkStatus(bulkStatuses, acc); FM.checkBulkStatus(bulkStatuses, acc);
}); });
}); });
@ -871,6 +969,33 @@ FM.bulkCopy = function() {
} }
FM.bulkRemove = function() { FM.bulkRemove = function() {
var acc = $(FM.CURRENT_TAB).find('.dir.selected');
if (acc.length > 0) {
FM.popupClose();
var cfr_html = '';
var numberOfItems = 0;
$.each(acc, function(i, o) {
var ref = $(o);
var src = $(ref).find('.source').val();
src = $.parseJSON(src);
if (!FM.isItemPseudo(o)) {
cfr_html += '<div>'+src.name+'</div>';
numberOfItems++;
}
});
var tpl = Tpl.get('popup_bulk_remove', 'FM');
tpl.set(':NUMBER_OF_ITEMS', numberOfItems);
//tpl.set(':DST_FILENAME', dest);
FM.popupOpen(tpl.finalize());
}
}
FM.bulkRemove11111 = function() {
var acc = $(FM.CURRENT_TAB).find('.dir.selected'); var acc = $(FM.CURRENT_TAB).find('.dir.selected');
if (acc.length > 0) { if (acc.length > 0) {
//FM.popupClose(); //FM.popupClose();
@ -907,9 +1032,10 @@ FM.bulkRemove = function() {
} }
if (FM.isItemPseudo(src)) { if (FM.isItemPseudo(src)) {
return FM.displayError( return;
/*return FM.displayError(
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
); );*/
} }
var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ]; var dest = FM['TAB_' + opposite_tab + '_CURRENT_PATH' ];
@ -1810,6 +1936,7 @@ $(document).ready(function() {
shortcut.add("Esc",function() { shortcut.add("Esc",function() {
FM.Env.RELOAD_IN_TIME = false; FM.Env.RELOAD_IN_TIME = false;
$('#reload-in-time').remove(); $('#reload-in-time').remove();
$('.shortcuts').hide();
if (FM.isPopupOpened()) { if (FM.isPopupOpened()) {
return FM.handlePopupCancel(); return FM.handlePopupCancel();
} }
@ -1820,6 +1947,15 @@ $(document).ready(function() {
'target': document 'target': document
}); });
shortcut.add("h", function(){
$('.shortcuts').toggle();
}, {
'type': 'keydown',
'propagate': false,
'disable_in_input': true,
'target': document
});
shortcut.add("Down",function() { shortcut.add("Down",function() {
FM.goDown(); FM.goDown();
},{ },{
@ -2014,6 +2150,7 @@ $(document).ready(function() {
'disable_in_input': false, 'disable_in_input': false,
'target': document 'target': document
}); });
shortcut.add("a",function() { shortcut.add("a",function() {
FM.packItem(); FM.packItem();
},{ },{
@ -2023,8 +2160,6 @@ $(document).ready(function() {
'target': document 'target': document
}); });
shortcut.add("d",function() { shortcut.add("d",function() {
FM.downloadFiles(); FM.downloadFiles();
},{ },{
@ -2098,15 +2233,22 @@ $(document).ready(function() {
$('.context-menu.sort-order').on('click', 'span', function(evt){ $('.context-menu.sort-order').on('click', 'span', function(evt){
FM.reOrderList($(evt.target)); FM.reOrderList($(evt.target));
}); });
$('.warning-box .close').on('click', function(evt){ $('.warning-box .close').on('click', function(evt){
$(evt.target).closest('.warning-box').hide(); $(evt.target).closest('.warning-box').hide();
}); });
$('.menu-A .extract-btn').hide(); $('.menu-A .extract-btn').hide();
$('.menu-B .extract-btn').hide(); $('.menu-B .extract-btn').hide();
$('.to-shortcuts').click(function(){
$('.shortcuts').toggle();
});
$('.shortcuts .close').click(function(){
$('.shortcuts').hide();
});
}); });

View file

@ -63,6 +63,7 @@ App.Constants.FM_COPY = '<?=__('Copy') ?>';
App.Constants.FM_CANCEL = '<?=__('Cancel')?>'; App.Constants.FM_CANCEL = '<?=__('Cancel')?>';
App.Constants.FM_RENAME = '<?=__('Rename')?>'; App.Constants.FM_RENAME = '<?=__('Rename')?>';
App.Constants.FM_DELETE = '<?=__('Delete')?>'; App.Constants.FM_DELETE = '<?=__('Delete')?>';
App.Constants.FM_CONFIRM_DELETE_BULK = '<?=__('Delete items')?>';
App.Constants.FM_EXTRACT = '<?=__('Extract')?>'; App.Constants.FM_EXTRACT = '<?=__('Extract')?>';
App.Constants.FM_CREATE = '<?=__('Create')?>'; App.Constants.FM_CREATE = '<?=__('Create')?>';
App.Constants.FM_PACK = '<?=__('Compress')?>'; App.Constants.FM_PACK = '<?=__('Compress')?>';
@ -71,6 +72,8 @@ App.Constants.FM_OK = '<?=__('OK')?>';
App.Constants.FM_YOU_ARE_COPYING = '<?=__('YOU ARE COPYING')?>'; App.Constants.FM_YOU_ARE_COPYING = '<?=__('YOU ARE COPYING')?>';
App.Constants.FM_YOU_ARE_REMOVING = '<?=__('YOU ARE REMOVING')?>'; App.Constants.FM_YOU_ARE_REMOVING = '<?=__('YOU ARE REMOVING')?>';
App.Constants.FM_COPY_BULK = '<?=__('Copy files')?>';
App.Constants.FM_CONFIRM_COPY = '<?=__('Are you sure you want to copy')?>'; App.Constants.FM_CONFIRM_COPY = '<?=__('Are you sure you want to copy')?>';
App.Constants.FM_CONFIRM_DELETE = '<?=__('Are you sure you want to delete')?>'; App.Constants.FM_CONFIRM_DELETE = '<?=__('Are you sure you want to delete')?>';
App.Constants.FM_INTO_KEYWORD = '<?=__('into')?>'; App.Constants.FM_INTO_KEYWORD = '<?=__('into')?>';

View file

@ -10,11 +10,11 @@ App.Templates.html = {
// //
FM: { FM: {
reload_in_time: [ reload_in_time: [
'<div id="reload-in-time" class="warning-box reload">\ '<div id="reload-in-time" class="warning-box reload">\
<div class="message-small">'+App.Constants.FM_HIT+' <span>F5</span> '+App.Constants.FM_TO_RELOAD_THE_PAGE+'</div>\ <div class="message-small">'+App.Constants.FM_HIT+' <span>F5</span> '+App.Constants.FM_TO_RELOAD_THE_PAGE+'</div>\
</div>' </div>'
], ],
entry_line: ['<li class="dir">\ entry_line: ['<li class="dir">\
<span class="marker">\ <span class="marker">\
</span>\ </span>\
@ -37,14 +37,33 @@ App.Templates.html = {
<p class="ok" onClick="FM.popupClose();">'+App.Constants.FM_CLOSE+'</p>\ <p class="ok" onClick="FM.popupClose();">'+App.Constants.FM_CLOSE+'</p>\
</div>\ </div>\
</div>'], </div>'],
popup_bulk: ['<div class="confirm-box alarm popup-box">\ popup_bulk_remove: ['<div class="confirm-box delete popup-box">\
<div class="message">'+App.Constants.FM_CONFIRM_DELETE_BULK+' (~!:NUMBER_OF_ITEMS~!)?</div>\
<div class="controls">\
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
<p class="ok" onClick="FM.bulkRemoveDo();">'+App.Constants.FM_DELETE+'</p>\
</div>\
</div>'],
popup_bulk_copy: ['<div class="confirm-box copy popup-box">\
<div class="message">'+App.Constants.FM_COPY_BULK+' (~!:NUMBER_OF_ITEMS~!) '+ App.Constants.FM_INTO_KEYWORD +':</div>\
<div class="actions">\
<input type="text" id="copy_dest" value="~!:DST_FILENAME~!" class="new-title">\
</div>\
<div class="results"></div>\
<div class="message">'+App.Constants.FM_EXISTING_FILES_WILL_BE_REPLACED+'</div>\
<div class="controls">\
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
<p class="ok" onClick="FM.bulkCopyDo();">'+App.Constants.FM_COPY+'</p>\
</div>\
</div>'],
/*popup_bulk: ['<div class="confirm-box alarm popup-box">\
<div class="message">~!:ACTION~!: <br />~!:TEXT~!</div>\ <div class="message">~!:ACTION~!: <br />~!:TEXT~!</div>\
<div class="results"></div>\ <div class="results"></div>\
<div class="controls">\ <div class="controls">\
<!-- p class="ok" onClick="FM.popupClose();">'+App.Constants.FM_CLOSE+'</p -->\ <!-- p class="ok" onClick="FM.popupClose();">'+App.Constants.FM_CLOSE+'</p -->\
<p><img src="/images/in_progress.gif"></p>\ <p><img src="/images/in_progress.gif"></p>\
</div>\ </div>\
</div>'], </div>'],*/
popup_delete: ['<div class="confirm-box delete popup-box">\ popup_delete: ['<div class="confirm-box delete popup-box">\
<div class="message">'+App.Constants.FM_CONFIRM_DELETE+' <span class="title">"~!:FILENAME~!"</span>?</div>\ <div class="message">'+App.Constants.FM_CONFIRM_DELETE+' <span class="title">"~!:FILENAME~!"</span>?</div>\
<div class="controls">\ <div class="controls">\

View file

@ -1,6 +1,10 @@
<a href="#" class="to-top"> <a href="#" class="to-top">
<i class="l-icon-to-top"></i> <i class="l-icon-to-top"></i>
</a> </a>
<a href="#" class="to-shortcuts">
<i class="l-icon-shortcuts"></i>
</a>
<div class="l-header"> <div class="l-header">
<div class="l-center"> <div class="l-center">
<a href="/" class="l-logo"></a> <a href="/" class="l-logo"></a>

View file

@ -14,6 +14,10 @@
<link rel="stylesheet" href="/css/jquery.fileupload.css"> <link rel="stylesheet" href="/css/jquery.fileupload.css">
</head> </head>
<body> <body>
<a href="#" class="to-shortcuts">
<i class="l-icon-shortcuts"></i>
</a>
<div id="main"> <div id="main">
<div class="window active"> <div class="window active">
<a href="/" class="l-logo"></a> <a href="/" class="l-logo"></a>
@ -72,6 +76,43 @@
<div class="progress-elm"><span class="title"><?=__('Initializing')?></span><span class="progress" style="backround-position: -96px; backround-position:-10px"></span><span class="close hidden"></span></div> <div class="progress-elm"><span class="title"><?=__('Initializing')?></span><span class="progress" style="backround-position: -96px; backround-position:-10px"></span><span class="close hidden"></span></div>
</div> </div>
<div class="shortcuts" style="display:none">
<div class="header">
<div class="title">Shortcuts</div>
<div class="close"></div>
</div>
<ul>
<li><span class="key">u</span><?=__('Upload')?></li>
<li><span class="key">n</span><?=__('New File')?></li>
<li><span class="key">F7</span><?=__('New Folder')?></li>
<li><span class="key">d</span><?=__('Download')?></li>
<li><span class="key">F2 / &lt;Shift&gt;+F6</span><?=__('Rename')?></li>
<li><span class="key">F5</span><?=__('Copy')?></li>
<li><span class="key">a</span><?=__('Archive')?></li>
<li><span class="key">F8 / Del</span><?=__('Delete')?></li>
<li class="step-top"><span class="key">&lt;Ctrl&gt; + s</span><?=__('Save File (in text editor)')?></li>
<li class="step-top"><span class="key">h</span><?=__('Display Shortcuts Help')?></li>
<li class="step-top"><span class="key">Esc</span><?=__('Close Popup / Cancel')?></li>
</ul>
<ul>
<li><span class="key bigger">&uarr;</span><?=__('Move Cursor Up')?></li>
<li><span class="key bigger">&darr;</span><?=__('Move Cursor Down')?></li>
<li><span class="key bigger">&larr;</span><?=__('Switch to Left Tab')?></li>
<li><span class="key bigger">&rarr;</span><?=__('Switch to Right Tab')?></li>
<li><span class="key">&lt;Tab&gt;</span><?=__('Switch Tab')?></li>
<li><span class="key">&lt;Home&gt;</span><?=__('Go to the Top of the File List')?></li>
<li><span class="key">&lt;End&gt;</span><?=__('Go to the Last File')?></li>
<li class="step-top"><span class="key">&lt;Enter&gt;</span><?=__('Open File / Enter Directory')?></li>
<li><span class="key">&lt;Backspace&gt;</span><?=__('Go to Parent Directory')?></li>
<li class="step-top"><span class="key">&lt;Insert&gt; / &lt;Space&gt;</span><?=__('Select Current File')?></li>
<li><span class="key">&lt;Shift&gt; + click</span><?=__('Select Bunch of Files')?></li>
<li><span class="key">&lt;Ctrl&gt; + click</span><?=__('Add File to the Current Selection')?></li>
<li><span class="key">&lt;Ctrl&gt; + a</span><?=__('Select All Files')?></li>
</ul>
<ul class="note"><?=__('shortcuts are inspired by magnificent GNU <a href="https://www.midnight-commander.org/">Midnight Commander</a> file manager')?></ul>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.2/fotorama.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.2/fotorama.js"></script>
<script type="text/javascript" src="/js/jquery-ui.min.js"></script> <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
@ -346,6 +387,8 @@
FM['CURRENT_B_LINE'] = 0; FM['CURRENT_B_LINE'] = 0;
} }
} }
}); });
/*$(".listing-right").selectable({ /*$(".listing-right").selectable({
selected: function (event, ui) { selected: function (event, ui) {

View file

@ -460,11 +460,26 @@
} }
); );
shortcut.add("Esc", function(){
$('.shortcuts').hide();
}, {
'type': 'keydown',
'propagate': false,
'disable_in_input': true,
'target': document
}
);
$('.shortcuts .close').click(function(){ $('.shortcuts .close').click(function(){
$('.shortcuts').hide(); $('.shortcuts').hide();
}); });
$('.to-shortcuts').click(function(){
$('.shortcuts').toggle();
});
VE.core.register(); VE.core.register();
if (location.href.search(/list/) != -1) { if (location.href.search(/list/) != -1) {
var shift_select_ref = $('body').finderSelect({ var shift_select_ref = $('body').finderSelect({
@ -511,30 +526,31 @@
<div class="close"></div> <div class="close"></div>
</div> </div>
<ul> <ul>
<li><span class="key">n</span>Add New object</li> <li><span class="key">n</span><?=__('Add New object')?></li>
<li><span class="key">&lt;Ctrl&gt; + Enter</span>Save Form</li> <li><span class="key">&lt;Ctrl&gt; + Enter</span><?=__('Save Form')?></li>
<li class="step-top"><span class="key">&lt;Ctrl&gt; + Backspace</span>Cancel saving form</li> <li><span class="key">&lt;Ctrl&gt; + Backspace</span><?=__('Cancel saving form')?></li>
<li><span class="key">1</span>Go to USER list</li> <li class="step-top"><span class="key">1</span><?=__('Go to USER list')?></li>
<li><span class="key">2</span>Go to WEB list</li> <li><span class="key">2</span><?=__('Go to WEB list')?></li>
<li><span class="key">3</span>Go to DNS list</li> <li><span class="key">3</span><?=__('Go to DNS list')?></li>
<li><span class="key">4</span>Go to MAIL list</li> <li><span class="key">4</span><?=__('Go to MAIL list')?></li>
<li><span class="key">5</span>Go to DB list</li> <li><span class="key">5</span><?=__('Go to DB list')?></li>
<li><span class="key">6</span>Go to CRON list</li> <li><span class="key">6</span><?=__('Go to CRON list')?></li>
<li class="step-top"><span class="key">7</span>Go to BACKUP list</li> <li><span class="key">7</span><?=__('Go to BACKUP list')?></li>
</ul> </ul>
<ul> <ul>
<li class="step-top"><span class="key">f</span>Focus on search</li> <li><span class="key">f</span><?=__('Focus on search')?></li>
<li class="step-top"><span class="key">h</span>Display/Close shortcuts</li> <li class="step-top"><span class="key">h</span><?=__('Display/Close shortcuts')?></li>
<li><span class="key">&lt;Ctrl&gt; + 1</span>Go to Packages</li> <li class="step-top"><span class="key">&lt;Ctrl&gt; + 1</span><?=__('Go to Packages')?></li>
<li><span class="key">&lt;Ctrl&gt; + 2</span>Go to IP</li> <li><span class="key">&lt;Ctrl&gt; + 2</span><?=__('Go to IP')?></li>
<li><span class="key">&lt;Ctrl&gt; + 3</span>Go to Graphs</li> <li><span class="key">&lt;Ctrl&gt; + 3</span><?=__('Go to Graphs')?></li>
<li><span class="key">&lt;Ctrl&gt; + 4</span>Go to Statistics</li> <li><span class="key">&lt;Ctrl&gt; + 4</span><?=__('Go to Statistics')?></li>
<li><span class="key">&lt;Ctrl&gt; + 5</span>Go to Log</li> <li><span class="key">&lt;Ctrl&gt; + 5</span><?=__('Go to Log')?></li>
<li><span class="key">&lt;Ctrl&gt; + 6</span>Go to Updates</li> <li><span class="key">&lt;Ctrl&gt; + 6</span><?=__('Go to Updates')?></li>
<li><span class="key">&lt;Ctrl&gt; + 7</span>Go to Firewall</li> <li><span class="key">&lt;Ctrl&gt; + 7</span><?=__('Go to Firewall')?></li>
<li><span class="key">&lt;Ctrl&gt; + 8</span>Go to Server</li> <li><span class="key">&lt;Ctrl&gt; + 8</span><?=__('Go to File Manager')?></li>
<li><span class="key">&lt;Ctrl&gt; + 9</span><?=__('Go to Server')?></li>
</ul> </ul>
</div> </div>

View file

@ -1,6 +1,9 @@
<a href="#" class="to-top"> <a href="#" class="to-top">
<i class="l-icon-to-top"></i> <i class="l-icon-to-top"></i>
</a> </a>
<a href="#" class="to-shortcuts">
<i class="l-icon-shortcuts"></i>
</a>
<div class="l-header"> <div class="l-header">
<div class="l-center"> <div class="l-center">
<a href="/" class="l-logo"></a> <a href="/" class="l-logo"></a>
@ -8,6 +11,7 @@
<div class="l-menu clearfix"> <div class="l-menu clearfix">
<div class="l-menu__item <?php if($TAB == 'STATS' ) echo 'l-menu__item--active' ?>"><a href="/list/stats/"><?=__('Statistics')?></a></div> <div class="l-menu__item <?php if($TAB == 'STATS' ) echo 'l-menu__item--active' ?>"><a href="/list/stats/"><?=__('Statistics')?></a></div>
<div class="l-menu__item <?php if($TAB == 'LOG' ) echo 'l-menu__item--active' ?>"><a href="/list/log/"><?=__('Log')?></a></div> <div class="l-menu__item <?php if($TAB == 'LOG' ) echo 'l-menu__item--active' ?>"><a href="/list/log/"><?=__('Log')?></a></div>
<?php if ((isset($_SESSION['FILEMANAGER_KEY'])) && (!empty($_SESSION['FILEMANAGER_KEY']))) {?><div class="l-menu__item <?php if($TAB == 'FILEMANAGER' ) echo 'l-menu__item--active' ?>"><a href="/list/directory/"><?=__('File Manager')?></a></div><?php }?>
</div> </div>
<!-- /.l-menu --> <!-- /.l-menu -->

View file

@ -1,4 +1,36 @@
<?php <?php
//session_start();
include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
//$user = $_SESSION['user'];
if (empty($panel)) {
$command = VESTA_CMD."v-list-user '".$user."' 'json'";
exec ($command, $output, $return_var);
if ( $return_var > 0 ) {
header("Location: /error/");
exit;
}
$panel = json_decode(implode('', $output), true);
}
$user = array_keys($panel);
$user = $user[0];
define('USERNAME', $user);
/*
// Check user session
if ((!isset($_SESSION['user'])) && (!defined('NO_AUTH_REQUIRED'))) {
$_SESSION['request_uri'] = $_SERVER['REQUEST_URI'];
header("Location: /login/");
exit;
}
*/
/* /*
* jQuery File Upload Plugin PHP Class 8.1.0 * jQuery File Upload Plugin PHP Class 8.1.0
* https://github.com/blueimp/jQuery-File-Upload * https://github.com/blueimp/jQuery-File-Upload
@ -1042,6 +1074,8 @@ class UploadHandler
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
$index = null, $content_range = null) { $index = null, $content_range = null) {
$file = new \stdClass(); $file = new \stdClass();
$file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error,
$index, $content_range); $index, $content_range);
@ -1065,7 +1099,21 @@ class UploadHandler
FILE_APPEND FILE_APPEND
); );
} else { } else {
move_uploaded_file($uploaded_file, $file_path); chmod($uploaded_file, 0644);
//move_uploaded_file($uploaded_file, $file_path);
exec (VESTA_CMD . "v-copy-fs-file ". USERNAME ." {$uploaded_file} {$file_path}", $output, $return_var);
$error = check_return_code($return_var, $output);
if ($return_var != 0) {
//var_dump(VESTA_CMD . "v-copy-fs-file {$user} {$fn} {$path}");
//var_dump($path);
//var_dump($output);
$file->error = 'Error while saving file';
/*var_dump(VESTA_CMD . "v-copy-fs-file ". USERNAME ." {$uploaded_file} {$file_path}");
var_dump($return_var);
var_dump($output);
die();*/
}
} }
} else { } else {
// Non-multipart uploads (PUT method support) // Non-multipart uploads (PUT method support)