8000 support deleting multiple files · maximkou/laravel-filemanager@809c3b8 · GitHub
[go: up one dir, main page]

8000
Skip to content

Commit 809c3b8

Browse files
committed
support deleting multiple files
1 parent 4c27451 commit 809c3b8

File tree

3 files changed

+57
-31
lines changed

3 files changed

+57
-31
lines changed

public/js/script.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,11 @@ $(document).on('click', '[data-sortby]', function() {
142142
});
143143

144144
$(document).on('click', '[data-action]', function () {
145-
window[$(this).data('action')](getOneSelectedElement());
145+
if ($(this).data('multiple')) {
146+
window[$(this).data('action')](getSelectedItems());
147+
} else {
148+
window[$(this).data('action')](getOneSelectedElement());
149+
}
146150
});
147151

148152
// ======================
@@ -197,7 +201,8 @@ function toggleActions() {
197201
$('[data-action=download]').toggleClass('d-none', !(one_selected && only_file))
198202
$('[data-action=resize]').toggleClass('d-none', !(one_selected && only_image))
199203
$('[data-action=crop]').toggleClass('d-none', !(one_selected && only_image))
200-
$('[data-action=trash]').toggleClass('d-none', !one_selected)
204+
$('[data-action=trash]').toggleClass('d-none', !many_selected)
205+
$('#actions').toggleClass('d-none', selected.length === 0)
201206
$('#fab').toggleClass('d-none', selected.length !== 0)
202207
}
203208

@@ -347,9 +352,11 @@ function rename(item) {
347352
});
348353
}
349354

350-
function trash(item) {
355+
function trash(items) {
351356
notify(lang['message-delete'], function () {
352-
performLfmRequest('delete', {items: item.name})
357+
performLfmRequest('delete', {
358+
items: items.map(function (item) { return item.name; })
359+
})
353360
.done(refreshFoldersAndItems)
354361
});
355362
}

src/controllers/DeleteController.php

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,44 @@ class DeleteController extends LfmController
1414
*/
1515
public function getDelete()
1616
{
17-
$name_to_delete = request('items');
18-
$file_to_delete = $this->lfm->pretty($name_to_delete);
19-
$file_path = $file_to_delete->absolutePath();
17+
$item_names = request('items');
18+
$errors = [];
2019

21-
event(new ImageIsDeleting($file_path));
20+
foreach ($item_names as $name_to_delete) {
21+
$file_to_delete = $this->lfm->pretty($name_to_delete);
22+
$file_path = $file_to_delete->absolutePath();
2223

23-
if (is_null($name_to_delete)) {
24-
return parent::error('folder-name');
25-
}
24+
event(new ImageIsDeleting($file_path));
2625

27-
if (! $this->lfm->setName($name_to_delete)->exists()) {
28-
return parent::error('folder-not-found', ['folder' => $file_path]);
29-
}
26+
if (is_null($name_to_delete)) {
27+
array_push($errors, parent::error('folder-name'));
28+
continue;
29+
}
3030

31-
if ($this->lfm->setName($name_to_delete)->isDirectory()) {
32-
if (! $this->lfm->setName($name_to_delete)->directoryIsEmpty()) {
33-
return parent::error('delete-folder');
31+
if (! $this->lfm->setName($name_to_delete)->exists()) {
32+
array_push($errors, parent::error('folder-not-found', ['folder' => $file_path]));
33+
continue;
3434
}
35-
} else {
36-
if ($file_to_delete->isImage()) {
37-
$this->lfm->setName($name_to_delete)->thumb()->delete();
35+
36+
if ($this->lfm->setName($name_to_delete)->isDirectory()) {
37+
if (! $this->lfm->setName($name_to_delete)->directoryIsEmpty()) {
38+
array_push($errors, parent::error('delete-folder'));
39+
continue;
40+
}
41+
} else {
42+
if ($file_to_delete->isImage()) {
43+
$this->lfm->setName($name_to_delete)->thumb()->delete();
44+
}
3845
}
39-
}
4046

41-
$this->lfm->setName($name_to_delete)->delete();
47+
$this->lfm->setName($name_to_delete)->delete();
48+
49+
event(new ImageWasDeleted($file_path));
50+
}
4251

43-
event(new ImageWasDeleted($file_path));
52+
if (count($errors) > 0) {
53+
return $errors;
54+
}
4455

4556
return parent::$success_response;
4657
}

src/views/index.blade.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,42 +171,50 @@
171171
{
172172
name: 'use',
173173
icon: 'check',
174-
label: 'Confirm'
174+
label: 'Confirm',
175+
multiple: true
175176
},
176177
{
177178
name: 'rename',
178179
icon: 'edit',
179-
label: lang['menu-rename']
180+
label: lang['menu-rename'],
181+
multiple: false
180182
},
181183
{
182184
name: 'download',
183185
icon: 'arrow-circle-o-down',
184-
label: lang['menu-download']
186+
label: lang['menu-download'],
187+
multiple: true
185188
},
186189
{
187190
name: 'preview',
188191
icon: 'image',
189-
label: lang['menu-view']
192+
label: lang['menu-view'],
193+
multiple: true
190194
},
191195
{
192196
name: 'move',
193197
icon: 'sign-out',
194-
label: 'move'
198+
label: 'move',
199+
multiple: true
195200
},
196201
{
197202
name: 'resize',
198203
icon: 'arrows-alt',
199-
label: lang['menu-resize']
204+
label: lang['menu-resize'],
205+
multiple: false
200206
},
201207
{
202208
name: 'crop',
203209
icon: 'crop',
204-
label: lang['menu-crop']
210+
label: lang['menu-crop'],
211+
multiple: false
205212
},
206213
{
207214
name: 'trash',
208215
icon: 'trash',
209-
label: lang['menu-delete']
216+
label: lang['menu-delete'],
217+
multiple: true
210218
},
211219
];
212220

0 commit comments

Comments
 (0)
0