From 6195f76e26eb65980989c76989af036dfb7f674f Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Tue, 19 Feb 2019 21:53:11 +0800 Subject: [PATCH] User can delete project file --- app/Http/Controllers/Projects/FilesController.php | 11 +++++++++++ phpunit.xml | 1 + resources/views/projects/files.blade.php | 19 +++++++++++++++++-- routes/web/projects.php | 1 + tests/Feature/Projects/UploadFilesTest.php | 2 +- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Projects/FilesController.php b/app/Http/Controllers/Projects/FilesController.php index 9dcd3d1..e07595b 100644 --- a/app/Http/Controllers/Projects/FilesController.php +++ b/app/Http/Controllers/Projects/FilesController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Projects; +use Storage; use File as FileSystem; use Illuminate\Http\Request; use App\Entities\Projects\File; @@ -90,6 +91,16 @@ class FilesController extends Controller return redirect()->route($file->fileable_type.'.files', $file->fileable_id); } + public function destroy(Request $request, File $file) + { + Storage::disk('avatar')->delete('public/files/'.$file->filename); + $file->delete(); + + flash(trans('file.deleted'), 'warning'); + + return redirect()->route($file->fileable_type.'.files', $file->fileable_id); + } + private function proccessPhotoUpload($data, $fileableType, $fileableId) { $file = $data['file']; diff --git a/phpunit.xml b/phpunit.xml index 1636410..c32237e 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -26,6 +26,7 @@ + diff --git a/resources/views/projects/files.blade.php b/resources/views/projects/files.blade.php index 890cf69..611a8a0 100755 --- a/resources/views/projects/files.blade.php +++ b/resources/views/projects/files.blade.php @@ -42,7 +42,8 @@ {!! html_link_to_route('files.download', '', [$file->id], ['icon' => 'file', 'title' => __('file.download')]) !!} - {!! html_link_to_route('projects.files', '', [$project->id, 'action' => 'edit', 'id' => $file->id], ['icon' => 'edit', 'title' => __('file.edit')]) !!} + {!! html_link_to_route('projects.files', '', [$project, 'action' => 'edit', 'id' => $file->id], ['icon' => 'edit', 'title' => __('file.edit')]) !!} + {!! html_link_to_route('projects.files', '', [$project, 'action' => 'delete', 'id' => $file->id], ['icon' => 'delete', 'title' => __('file.delete'), 'id' => 'delete-file-'.$file->id]) !!} @empty @@ -79,7 +80,21 @@ {!! Form::close() !!} - @endif + @endif + @if (Request::get('action') == 'delete' && $editableFile) +
+

{{ __('file.delete') }} : {{ $editableFile->title }}

+
+ {!! FormField::delete( + ['route' => ['files.destroy', $editableFile->id]], + __('app.delete_confirm_button'), + ['class' => 'btn btn-danger'], + ['file_id' => $editableFile->id, ] + ) !!} + {{ link_to_route('projects.files', __('app.cancel'), $project, ['class' => 'btn btn-default']) }} +
+
+ @endif diff --git a/routes/web/projects.php b/routes/web/projects.php index c51d41e..c1b6deb 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -61,6 +61,7 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function () Route::post('files/{fileable}', ['as' => 'files.upload', 'uses' => 'FilesController@create']); Route::get('files/{file}', ['as' => 'files.download', 'uses' => 'FilesController@show']); Route::patch('files/{file}', ['as' => 'files.update', 'uses' => 'FilesController@update']); + Route::delete('files/{file}', ['as' => 'files.destroy', 'uses' => 'FilesController@destroy']); }); Route::group(['middleware' => ['auth']], function () { diff --git a/tests/Feature/Projects/UploadFilesTest.php b/tests/Feature/Projects/UploadFilesTest.php index 3affc74..59767d3 100644 --- a/tests/Feature/Projects/UploadFilesTest.php +++ b/tests/Feature/Projects/UploadFilesTest.php @@ -101,7 +101,7 @@ class UploadFilesTest extends TestCase $this->click('delete-file-'.$file->id); $this->seePageIs(route('projects.files', [$project, 'action' => 'delete', 'id' => $file->id])); - $this->press(__('file.delete')); + $this->press(__('app.delete_confirm_button')); $this->seePageIs(route('projects.files', $project)); $this->seeText(__('file.deleted'));