Skip to content

Commit 6e193e0

Browse files
committed
FM updates
1 parent 7734c6c commit 6e193e0

File tree

5 files changed

+135
-77
lines changed

5 files changed

+135
-77
lines changed

web/file_manager/fm_core.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public function __construct($user) {
4545
public function checkFileType($dir) {
4646
$dir = $this->formatFullPath($dir);
4747

48-
exec(VESTA_CMD . "v-delete-fs-file {$this->user} {$dir}", $output, $return_var);
48+
exec(VESTA_CMD . "v-get-fs-file-type {$this->user} {$dir}", $output, $return_var);
4949

5050
$error = self::check_return_code($return_var, $output);
51-
5251
if (empty($error)) {
5352
return array(
54-
'result' => true
53+
'result' => true,
54+
'data' => implode('', $output)
5555
);
5656
}
5757
else {

web/js/file_manager.js

Lines changed: 73 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,37 @@ FM.EDITABLE_FILETYPES = [
4646
'txt', 'php', 'js', 'html'
4747
];
4848

49+
FM.EDITABLE_MIMETYPES = [
50+
'application/emma+xml',
51+
'application/epp+xml',
52+
'application/javascript',
53+
'application/json',
54+
'application/jsonml+json ',
55+
'application/lost+xml',
56+
'application/marc',
57+
'application/msword',
58+
'application/sru+xml',
59+
'application/vnd.android.package-archive',
60+
'text/csv',
61+
'text/css',
62+
'text/javascript',
63+
'text/html',
64+
'text/x-java-source'
65+
];
66+
67+
FM.EDITABLE_MIMETYPES_MASKS = [
68+
/(.)*text(.)*/,
69+
/(.)*inode(.)*/
70+
];
71+
4972
FM.preselectedItems = {'A': [], 'B': []};
5073

5174

5275
FM.directoryNotAvailable = function(reply) {
53-
alert('Directory not available'); // todo: translate
76+
var tpl = Tpl.get('popup_alert', 'FM');
77+
tpl.set(':TEXT', App.Constants.FM_DIRECTORY_NOT_AVAILABLE);
78+
79+
FM.popupOpen(tpl.finalize());
5480
}
5581

5682
FM.showError = function(type, message) {
@@ -382,7 +408,8 @@ FM.sortItems = function(items, box) {
382408
return sorted;
383409
}
384410

385-
FM.isFileEditable = function(src) {
411+
FM.isFileEditable = function(src, mime) {
412+
386413
if ('undefined' == typeof src.filetype) {
387414
return false;
388415
}
@@ -391,7 +418,21 @@ FM.isFileEditable = function(src) {
391418
return true;
392419
}
393420

394-
return false;
421+
var mime_type = mime.split(';');
422+
mime_type = mime_type[0];
423+
424+
if ($.inArray(mime_type, FM.EDITABLE_MIMETYPES) != -1) {
425+
return true;
426+
}
427+
428+
var editable = false;
429+
$.each(FM.EDITABLE_MIMETYPES_MASKS, function(i, mask) {
430+
if (mime_type.search(mask) != -1) {
431+
editable = true;
432+
}
433+
});
434+
435+
return editable;
395436
}
396437

397438
FM.editFileFromSubcontext = function(elm) {
@@ -414,26 +455,36 @@ FM.openFile = function(dir, box, elm) {
414455
var tab = FM.getTabLetter(box);
415456

416457
FM['TAB_'+tab+'_CURRENT_PATH'] = dir;
417-
418-
419-
458+
420459
var elm = $(elm).hasClass('dir') ? $(elm) : $(elm).closest('.dir');
421460
var src = $.parseJSON($(elm).find('.source').val());
422-
423-
if (FM.isItemPseudo(src)) {
424-
FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], FM['TAB_' + tab]);
425-
}
426461

427-
if (FM.isFileEditable(src)) {
428-
var myWindow = window.open('/edit/file/?path=' + src.full_path, '_blank');//, src.full_path, "width=900, height=700");
429-
}
430-
else {
431-
var path = src.full_path;
432-
var win = window.open('/download/file/?path=' + path, '_blank');
433-
win.focus();
462+
if (FM.isItemPseudo(src)) {
463+
return FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], FM['TAB_' + tab]);
434464
}
435465

466+
var params = {
467+
dir: src.full_path
468+
};
436469

470+
App.Ajax.request('check_file_type', params, function(reply) {
471+
if (reply.result) {
472+
if (FM.isFileEditable(src, reply.data)) {
473+
var myWindow = window.open('/edit/file/?path=' + src.full_path, '_blank');//, src.full_path, "width=900, height=700");
474+
}
475+
else {
476+
var path = src.full_path;
477+
var win = window.open('/download/file/?path=' + path, '_blank');
478+
//win.focus();
479+
}
480+
}
481+
else {
482+
// force download file
483+
var path = src.full_path;
484+
var win = window.open('/download/file/?path=' + path, '_blank');
485+
//win.focus();
486+
}
487+
});
437488
}
438489

439490
FM.getTabLetter = function(box) {
@@ -551,7 +602,6 @@ FM.generate_listing = function(reply, box) {
551602
FM.toggleCheck = function(uid) {
552603
var ref = $('#check' + uid);
553604
if (ref.length > 0) {
554-
//ref.attr('checked', true);
555605
$(ref).hasClass('checkbox-selected') ? $(ref).addClass('checkbox-selected') : $(ref).removeClass('checkbox-selected');
556606
}
557607
}
@@ -605,7 +655,7 @@ FM.checkBulkStatus = function(bulkStatuses, acc) {
605655
}
606656

607657
if (status == true) {
608-
$('#popup .results').html('Done');
658+
$('#popup .results').html(App.Constants.FM_DONE);
609659
$('.controls p').replaceWith('<p class="ok" onClick="FM.bulkPopupClose();">close</p>');
610660
}
611661
else {
@@ -665,7 +715,7 @@ FM.bulkCopy = function() {
665715
});
666716

667717
var tpl = Tpl.get('popup_bulk', 'FM');
668-
tpl.set(':ACTION', 'YOU ARE COPYING');
718+
tpl.set(':ACTION', App.Constants.FM_YOU_ARE_COPYING);
669719
tpl.set(':TEXT', cfr_html);
670720

671721
FM.popupOpen(tpl.finalize());
@@ -740,7 +790,7 @@ FM.bulkRemove = function() {
740790
});
741791

742792
var tpl = Tpl.get('popup_bulk', 'FM');
743-
tpl.set(':ACTION', 'YOU ARE REMOVING');
793+
tpl.set(':ACTION', App.Constants.FM_YOU_ARE_REMOVING);
744794
tpl.set(':TEXT', cfr_html);
745795

746796
FM.popupOpen(tpl.finalize());
@@ -750,10 +800,7 @@ FM.bulkRemove = function() {
750800
var ref = $(o);
751801
var src = $(ref).find('.source').val();
752802
src = $.parseJSON(src);
753-
754-
/*if (!FM.isItemPseudo(o)) {
755-
cfr_html += '<div>'+src.name+'</div>';
756-
}*/
803+
757804
var tab = FM.getTabLetter(FM.CURRENT_TAB);
758805

759806
var opposite_tab = 'A';
@@ -1610,22 +1657,6 @@ FM.init();
16101657
$(document).ready(function() {
16111658
$('.progress-container').hide();
16121659

1613-
//return alert('statechange: Back');
1614-
/*$(document).bind('keydown.up', function() {
1615-
console.log(1);
1616-
//try{FM.goUp();}catch(e){console.log(e);}
1617-
//console.log(FM);
1618-
FM.goUp();
1619-
});
1620-
1621-
$(document).bind('keydown.down', function() {
1622-
console.log(1);
1623-
//try{FM.goUp();}catch(e){console.log(e);}
1624-
//console.log(FM);
1625-
FM.goDown();
1626-
});*/
1627-
1628-
16291660
var ph = $('.window .pwd').outerHeight();
16301661
var mh = $('.window .menu').outerHeight();
16311662
var wh = $(window).outerHeight();
@@ -1825,5 +1856,5 @@ $(document).ready(function() {
18251856
$(window).bind('statechange', function(evt){
18261857
$(evt).stopPropagation();
18271858
// History.getState()
1828-
alert('No way back yet');
1859+
//alert('No way back yet');
18291860
})

web/js/i18n.js.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,29 @@ function __() {
5353
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED = '<?php echo __('No file or folder selected') ?>';
5454
App.Constants.FM_FILE_TYPE_NOT_SUPPORTED = '<?php echo __('File type not supported') ?>';
5555

56+
App.Constants.FM_DIRECTORY_NOT_AVAILABLE = '<?php echo __('Directory not available') ?>';
57+
App.Constants.FM_DONE = '<?php echo __('Done') ?>';
58+
App.Constants.FM_CLOSE = '<?php echo __('Close') ?>';
59+
App.Constants.FM_COPY = '<?php echo __('Copy') ?>';
60+
App.Constants.FM_CANCEL = '<?php echo __('Cancel') ?>';
61+
App.Constants.FM_RENAME = '<?php echo __('Rename') ?>';
62+
App.Constants.FM_DELETE = '<?php echo __('Delete') ?>';
63+
App.Constants.FM_EXTRACT = '<?php echo __('Extract') ?>';
64+
App.Constants.FM_CREATE = '<?php echo __('Create') ?>';
65+
App.Constants.FM_PACK = '<?php echo __('Pack') ?>';
66+
App.Constants.FM_OK = '<?php echo __('OK') ?>';
67+
App.Constants.FM_YOU_ARE_COPYING = '<?php echo __('YOU ARE COPYING') ?>';
68+
App.Constants.FM_YOU_ARE_REMOVING = '<?php echo __('YOU ARE REMOVING') ?>';
69+
70+
App.Constants.FM_CONFIRM_COPY = '<?php echo __('Are you sure you want to copy') ?>';
71+
App.Constants.FM_CONFIRM_DELETE = '<?php echo __('Are you sure you want to delete') ?>';
72+
App.Constants.FM_INTO_KEYWORD = '<?php echo __('into') ?>';
73+
App.Constants.FM_EXISTING_FILES_WILL_BE_DELETED = '<?php echo __('existing files will be deleted') ?>';
74+
App.Constants.FM_ORIGINAL_NAME = '<?php echo __('Original name') ?>';
75+
App.Constants.FM_FILE = '<?php echo __('File') ?>';
76+
App.Constants.FM_ALREADY_EXISTS = '<?php echo __('already exists') ?>';
77+
App.Constants.FM_EXTRACT = '<?php echo __('extract archive') ?>';
78+
App.Constants.FM_CREATE_FILE = '<?php echo __('Create file') ?>';
79+
80+
81+

web/js/templates.js

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -38,47 +38,47 @@ App.Templates.html = {
3838
<div class="message">~!:ACTION~!: <br />~!:TEXT~!</div>\
3939
<div class="results"></div>\
4040
<div class="controls">\
41-
<!-- p class="ok" onClick="FM.popupClose();">close</p -->\
41+
<!-- p class="ok" onClick="FM.popupClose();">'+App.Constants.FM_CLOSE+'</p -->\
4242
<p><img src="/images/in_progress.gif"></p>\
4343
</div>\
4444
</div>'],
4545
popup_delete: ['<div class="confirm-box delete popup-box">\
46-
<div class="message">Are you sure you want to delete <span class="title">"~!:FILENAME~!"</span>?</div>\
46+
<div class="message">'+App.Constants.FM_CONFIRM_DELETE+' <span class="title">"~!:FILENAME~!"</span>?</div>\
4747
<div class="controls">\
48-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
49-
<p class="ok" onClick="FM.confirmDelete();">delete</p>\
48+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
49+
<p class="ok" onClick="FM.confirmDelete();">'+App.Constants.FM_DELETE+'</p>\
5050
</div>\
5151
</div>'],
5252
popup_copy: ['<div class="confirm-box copy popup-box">\
53-
<div class="message">Are you sure you want to copy <span class="title">"~!:SRC_FILENAME~!"</span> into:</div>\
53+
<div class="message">'+App.Constants.FM_CLOSE+' <span class="title">"~!:SRC_FILENAME~!"</span> '+App.Constants.FM_INTO_KEYWORD+':</div>\
5454
<div class="actions">\
5555
<input type="text" id="copy_dest" value="~!:DST_FILENAME~!" class="new-title">\
5656
</div>\
57-
<div class="message">existing files will be replaced</div>\
57+
<div class="message">'+App.Constants.FM_EXISTING_FILES_WILL_BE_DELETED+'</div>\
5858
<div class="controls">\
59-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
60-
<p class="ok" onClick="FM.confirmCopyItems();">copy</p>\
59+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
60+
<p class="ok" onClick="FM.confirmCopyItems();">'+App.Constants.FM_COPY+'</p>\
6161
</div>\
6262
</div>'],
6363
popup_rename: ['<div class="confirm-box rename warning">\
64-
<div class="message">Original name: <span class="title">"~!:FILENAME~!"</span></div>\
65-
<!-- div class="warning">File <span class="title">"reading.txt"</span> already exists</div -->\
64+
<div class="message">'+App.Constants.FM_ORIGINAL_NAME+': <span class="title">"~!:FILENAME~!"</span></div>\
65+
<!-- div class="warning">'+App.Constants.FM_FILE+' <span class="title">"reading.txt"</span> '+App.Constants.FM_ALREADY_EXISTS+'</div -->\
6666
<div class="warning warning-message"></div>\
6767
<div class="actions">\
6868
<input type="text" id="rename-title" class="new-title" value="~!:NEW_NAME~!" />\
6969
</div>\
7070
<div class="controls">\
71-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
72-
<p class="ok" onClick="FM.confirmRename();">rename</p>\
71+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
72+
<p class="ok" onClick="FM.confirmRename();">'+App.Constants.FM_RENAME+'</p>\
7373
</div>\
7474
<div class="controls replace">\
75-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
76-
<p class="ok" onClick="FM.confirmRename();">rename</p>\
75+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
76+
<p class="ok" onClick="FM.confirmRename();">'+App.Constants.FM_Rename+'</p>\
7777
</div>\
7878
</div>'],
7979

8080
popup_pack: ['<div class="confirm-box pack warning">\
81-
<div class="message">Pack <span class="title">"~!:FILENAME~!"</span> into:</div>\
81+
<div class="message">'+App.Constants.FM_PACK+' <span class="title">"~!:FILENAME~!"</span> '+App.Constants.FM_INTO_KEYWORD+':</div>\
8282
<div class="actions">\
8383
<input type="text" id="pack-destination" class="new-title" value="~!:DST_DIRNAME~!">\
8484
</div>\
@@ -87,13 +87,13 @@ App.Templates.html = {
8787
<label><input type="checkbox" name="overwrite" class="title" />Overwrite exising files</label>\
8888
</div -->\
8989
<div class="controls">\
90-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
91-
<p class="ok" onClick="FM.confirmPackItem();">Pack</p>\
90+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
91+
<p class="ok" onClick="FM.confirmPackItem();">'+App.Constants.FM_PACK+'</p>\
9292
</div>\
9393
</div>'],
9494

9595
popup_unpack: ['<div class="confirm-box unpack warning">\
96-
<div class="message">Extract archive <span class="title">"~!:FILENAME~!"</span> to:</div>\
96+
<div class="message">'+App.Constants.FM_EXTRACT+' <span class="title">"~!:FILENAME~!"</span> '+App.Constants.FM_INTO_KEYWORD+':</div>\
9797
<div class="actions">\
9898
<input type="text" id="unpack-destination" class="new-title" value="~!:DST_DIRNAME~!">\
9999
</div>\
@@ -102,22 +102,22 @@ App.Templates.html = {
102102
<label><input type="checkbox" name="overwrite" class="title" />Overwrite exising files</label>\
103103
</div -->\
104104
<div class="controls">\
105-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
106-
<p class="ok" onClick="FM.confirmUnpackItem();">Extract</p>\
105+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
106+
<p class="ok" onClick="FM.confirmUnpackItem();">'+App.Constants.FM_EXTRACT+'</p>\
107107
</div>\
108108
</div>'],
109109

110110

111111
popup_create_file: ['<div class="confirm-box rename warning">\
112-
<div class="message">Create file</div>\
112+
<div class="message">'+App.Constants.FM_CREATE_FILE+'</div>\
113113
<!-- div class="warning">File <span class="title">"reading.txt"</span> already exists</div -->\
114114
<div class="warning warning-message"></div>\
115115
<div class="actions">\
116116
<input type="text" id="rename-title" class="new-title" />\
117117
</div>\
118118
<div class="controls replace">\
119-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
120-
<p class="ok" onClick="FM.confirmCreateFile();">create</p>\
119+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
120+
<p class="ok" onClick="FM.confirmCreateFile();">'+App.Constants.FM_CREATE+'</p>\
121121
</div>\
122122
</div>'],
123123
popup_create_dir: ['<div class="confirm-box rename warning">\
@@ -128,14 +128,14 @@ App.Templates.html = {
128128
<input type="text" id="rename-title" class="new-title" />\
129129
</div>\
130130
<div class="controls replace">\
131-
<p class="cancel" onClick="FM.popupClose();">cancel</p>\
132-
<p class="ok" onClick="FM.confirmCreateDir();">create</p>\
131+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
132+
<p class="ok" onClick="FM.confirmCreateDir();">'+App.Constants.FM_CREATE+'</p>\
133133
</div>\
134134
</div>'],
135135
popup_no_file_selected: ['<div class="confirm-box no-file-selected">\
136136
<div class="message">Please select a file</div>\
137137
<div class="controls">\
138-
<p class="ok" onClick="FM.confirmCreateDir();">ok</p>\
138+
<p class="ok" onClick="FM.confirmCreateDir();">'+App.Constants.FM_OK+'</p>\
139139
</div>\
140140
</div>']
141141
}

0 commit comments

Comments
 (0)