Skip to content

Commit 317c90b

Browse files
author
Serghey Rodin
committed
FileManager create archvies
1 parent 4adbef4 commit 317c90b

File tree

5 files changed

+66
-38
lines changed

5 files changed

+66
-38
lines changed

bin/v-add-fs-archive

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
user=$1
88
archive=$2
9-
src=$3
9+
src0=$3
1010

1111
# Checking arguments
12-
if [ -z "$src" ]; then
13-
echo "Usage: USER ARCHIVE SOURCE"
12+
if [ -z "$src0" ]; then
13+
echo "Usage: USER ARCHIVE FILE [FILE_2] [FILE_3] [FILE ...]"
1414
exit 1
1515
fi
1616

@@ -21,36 +21,56 @@ if [ ! -e "$VESTA/data/users/$user" ]; then
2121
fi
2222

2323
# Checking user homedir
24-
homedir=$(grep "^$user:" /etc/passwd | cut -f 6 -d :)
24+
homedir=$(grep "^$user:" /etc/passwd |cut -f 6 -d :)
2525
if [ -z $homedir ]; then
2626
echo "Error: user home directory doesn't exist"
2727
exit 12
2828
fi
2929

3030
# Checking archive
31-
if [ -e "$archive.tar.gz" ]; then
32-
echo "Error: archive already exist $archive.tar.gz"
31+
if [ -e "$archive" ]; then
32+
echo "Error: archive already exist $archive"
3333
exit 1
3434
fi
3535

3636
# Checking source path
37-
rpath=$(readlink -f "$src")
38-
if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
39-
echo "Error: invalid source path $src"
40-
exit 1
41-
fi
37+
IFS=$'\n'
38+
i=1
39+
for src in $*; do
40+
if [ "$i" -gt 2 ]; then
41+
rpath=$(readlink -f "$src")
42+
if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
43+
echo "Error: invalid source path $src"
44+
exit 1
45+
fi
46+
fi
47+
((i++))
48+
done
4249

43-
# Parsing current directory
44-
d=$(dirname "$src")
50+
i=1
51+
for src in $*; do
52+
if [ "$i" -gt 2 ]; then
53+
# Deleting leading home path
54+
src=$(echo "$src"| sed -e "s|/home/$user/||")
4555

46-
# Removing leading file path
47-
f=$(echo "$src" |sed -e "s|$d/||")
56+
# Creating tar.gz archive
57+
sudo -u $user tar -rf "${archive/.gz/}" -C /home/$user $src >\
58+
/dev/null 2>&1
59+
if [ "$?" -ne 0 ]; then
60+
echo "Error: archive $archive was not created"
61+
exit 3
62+
fi
63+
fi
64+
((i++))
65+
done
4866

49-
# Creating tar.gz archive
50-
sudo -u $user tar -czf "$archive.tar.gz" -C $d $f >/dev/null 2>&1
51-
if [ "$?" -ne 0 ]; then
52-
echo "Error: archive $archive.tar.gz was not created"
53-
exit 3
67+
# Checking gzip
68+
if [[ "$archive" =~ \.gz$ ]]; then
69+
sudo -u $user gzip "${archive/.gz/}" >/dev/null 2>&1
70+
if [ "$?" -ne 0 ]; then
71+
echo "Error: archive $archive was not gziped"
72+
exit 3
73+
fi
5474
fi
5575

5676
exit

web/file_manager/fm_api.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
break;
111111

112112
case 'pack_item':
113-
$items = $_REQUEST['items'];
113+
$items = $_REQUEST['items'];
114114
$dst_item = $_REQUEST['dst_item'];
115115
print json_encode($fm->packItem($items, $dst_item));
116116
break;

web/file_manager/fm_core.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,7 @@ function packItem($items, $dst_item) {
158158
$items = implode(' ', $items_arr);
159159

160160
$dst_item = $this->formatFullPath($dst_item);
161-
$dst_item = str_replace('.tar.gz', '', $dst_item);
162161

163-
// echo VESTA_CMD . "v-add-fs-archive {$this->user} {$dst_item} {$items}";
164162
exec (VESTA_CMD . "v-add-fs-archive {$this->user} {$dst_item} {$items}", $output, $return_var);
165163

166164
$error = self::check_return_code($return_var, $output);

web/js/file_manager.js

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,6 @@ FM.unpackItem = function() {
11411141
App.Constants.FM_NO_FILE_SELECTED
11421142
);
11431143
}
1144-
11451144

11461145
var src = selected.find('.source').val();
11471146
src = $.parseJSON(src);
@@ -1157,12 +1156,12 @@ FM.unpackItem = function() {
11571156
App.Constants.FM_FILE_TYPE_NOT_SUPPORTED
11581157
);
11591158
}
1160-
1159+
11611160
var dst = FM['TAB_' + tab + '_CURRENT_PATH'];
11621161
if (dst == '') {
11631162
dst = GLOBAL.ROOT_DIR;
11641163
}
1165-
1164+
11661165
var tpl = Tpl.get('popup_unpack', 'FM');
11671166
tpl.set(':FILENAME', src.name);
11681167
tpl.set(':DST_DIRNAME', (dst).replace('//', '/'));
@@ -1172,36 +1171,32 @@ FM.unpackItem = function() {
11721171
FM.packItem = function() {
11731172
var tab = FM.getTabLetter(FM.CURRENT_TAB);
11741173
var box = FM['TAB_' + tab];
1175-
var selected = $(FM['TAB_' + tab] ).find('.dir.active');
1174+
var selected = $(FM['TAB_' + tab] ).find('.dir.selected');
11761175
if (selected.length == 0) {
11771176
return FM.displayError(
11781177
App.Constants.FM_NO_FILE_SELECTED
11791178
);
11801179
}
1181-
11821180

11831181
var src = selected.find('.source').val();
11841182
src = $.parseJSON(src);
1185-
1186-
if (FM.isItemPseudo(src)) {
1187-
return FM.displayError(
1188-
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
1189-
);
1190-
}
1191-
1192-
if (FM.isItemPseudo(src)) {
1183+
1184+
if (FM.isItemPseudo(src) && selected.length <=1 ) {
11931185
return FM.displayError(
11941186
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
11951187
);
11961188
}
11971189

1198-
11991190
var dst = FM['TAB_' + tab + '_CURRENT_PATH'];
12001191
if (dst == '') {
12011192
dst = GLOBAL.ROOT_DIR;
12021193
}
1203-
1194+
12041195
var tpl = Tpl.get('popup_pack', 'FM');
1196+
if(selected.length > 1){
1197+
tpl = Tpl.get('popup_bulk_pack', 'FM');
1198+
}
1199+
tpl.set(':NUMBER_OF_ITEMS', selected.length);
12051200
tpl.set(':FILENAME', src.name);
12061201
tpl.set(':DST_DIRNAME', (dst + '/' + src.name + '.tar.gz').replace('//', '/'));
12071202
FM.popupOpen(tpl.finalize());

web/js/templates.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,21 @@ App.Templates.html = {
188188
</div>\
189189
</div>'],
190190

191+
popup_bulk_pack: ['<div class="confirm-box pack warning">\
192+
<div class="message">'+App.Constants.FM_PACK+' (~!:NUMBER_OF_ITEMS~!)</div>\
193+
<div class="actions">\
194+
<input type="text" id="pack-destination" class="new-title" value="~!:DST_DIRNAME~!">\
195+
</div>\
196+
<div class="warning warning-message"></div>\
197+
<!-- div class="actions">\
198+
<label><input type="checkbox" name="overwrite" class="title" />Overwrite exising files</label>\
199+
</div -->\
200+
<div class="controls">\
201+
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
202+
<p class="ok" onClick="FM.confirmPackItem();">'+App.Constants.FM_PACK_BUTTON+'</p>\
203+
</div>\
204+
</div>'],
205+
191206
popup_unpack: ['<div class="confirm-box unpack warning">\
192207
<div class="message">'+App.Constants.FM_EXTRACT+' <span class="title">"~!:FILENAME~!"</span> '+App.Constants.FM_INTO_KEYWORD+':</div>\
193208
<div class="actions">\

0 commit comments

Comments
 (0)