From 99ed8806da71e9f716527e4efd8fa8f2f4884f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 28 Nov 2016 01:46:05 +0100 Subject: [PATCH] REFACTORING #2039 @1h: clean a little bit file manager --- app/CMS/Helpers/FileManager.php | 2 +- .../Admin/FileManager/EditDirectory.php | 40 +++++----------- .../Admin/FileManager/EditUploadedFile.php | 46 ++++--------------- .../Admin/FileManager/UploadFile.php | 2 +- .../FileManager/UploadedFilesOverview.php | 28 ++--------- app/Http/routes/admin/fileManager.php | 18 ++++---- app/Models/FileManager/Directory.php | 27 +++++++---- .../directories/subdirectoriesTiles.blade.php | 4 +- .../admin/fileManager/overview.blade.php | 4 +- 9 files changed, 60 insertions(+), 111 deletions(-) diff --git a/app/CMS/Helpers/FileManager.php b/app/CMS/Helpers/FileManager.php index 845ec787..63c01e48 100644 --- a/app/CMS/Helpers/FileManager.php +++ b/app/CMS/Helpers/FileManager.php @@ -98,7 +98,7 @@ class FileManager return $string; break; case 'application': - return ''; + return ''; break; default: return self::getPreview($file); diff --git a/app/Http/Controllers/Admin/FileManager/EditDirectory.php b/app/Http/Controllers/Admin/FileManager/EditDirectory.php index 565749dc..fb19c5be 100644 --- a/app/Http/Controllers/Admin/FileManager/EditDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/EditDirectory.php @@ -10,33 +10,26 @@ class EditDirectory extends Controller { /** * @param Requests\EditDirectoryRequest $request - * @param $directoryId + * @param Directory $directory * * @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse + * @internal param $directoryId + * */ - public function postEdit(Requests\EditDirectoryRequest $request, $directoryId) + public function postEdit(Requests\EditDirectoryRequest $request, Directory $directory) { - $directory = Directory::findOrFail($directoryId); - // check if given name is not used in parent directory $exists = Directory::where('parent_id', $directory->parent_id) ->where('name', $request->name) - ->where('id', '!=', $directoryId) + ->where('id', '!=', $directory->id) ->exists(); if ($exists) { - if ($request->ajax()) { - return response()->json([ - 'status' => 'failed', - 'message' => trans('admin/fileManager.subdirectoryExists') - ]); - } else { - return redirect() - ->route('upload.overview', ['id' => $directoryId]) - ->withInput() - ->with('error', trans('admin/fileManager.subdirectoryExists')); - } + return redirect() + ->route('upload.overview', ['id' => $directory->id]) + ->withInput() + ->with('error', trans('admin/fileManager.subdirectoryExists')); } $directory->name = $request->name; @@ -45,17 +38,8 @@ class EditDirectory extends Controller $directory->save(); $message = trans('admin/fileManager.editDirectorySuccess'); - if (!$request->ajax()) { - return redirect() - ->route('upload.overview', ['id' => $directory->id]) - ->with('success', $message); - } else { - $payload = [ - 'status' => 'success', - 'message' => $message - ]; - - return response()->json($payload); - } + return redirect() + ->route('upload.overview', ['id' => $directory->id]) + ->with('success', $message); } } diff --git a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php index 6d80163a..78886163 100644 --- a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php +++ b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php @@ -21,14 +21,8 @@ class EditUploadedFile extends Controller * * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View */ - public function getDetail($id) + public function show(File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - return view('admin.fileManager.edit', [ 'file' => $file, 'extraInfo' => FileManager::getAdditionalInfo($file) @@ -42,18 +36,14 @@ class EditUploadedFile extends Controller * unchanged * * @param EditUploadedFileRequest $request - * @param $id + * @param File $file * * @return \Illuminate\Http\RedirectResponse + * @internal param $id + * */ - public function postEdit(EditUploadedFileRequest $request, $id) + public function update(EditUploadedFileRequest $request, File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - // set values from form $file->name = $request->name; $file->keywords = $request->keywords; @@ -65,23 +55,19 @@ class EditUploadedFile extends Controller // update successfull return redirect() - ->route('upload.detail', ['id' => $id]) + ->route('upload.detail', ['file' => $file]) ->with('success', trans('admin/fileManager.successfullyChanged')); } /** * Deletes file * - * @param $id + * @param File $file + * + * @return \Illuminate\Http\RedirectResponse */ - public function deleteFile($id) + public function delete(File $file) { - try { - $file = File::findOrFail($id); - } catch (NotFoundHttpException $e) { - return $this->fileNotFound(); - } - $directoryId = $file->directory_id; $file->delete(); @@ -89,16 +75,4 @@ class EditUploadedFile extends Controller ->route('upload.overview', ['id' => $directoryId]) ->with('success', trans('admin/fileManager.fileDeleted')); } - - /** - * Redirects user to files overview - * - * @return \Illuminate\Http\RedirectResponse - */ - private function fileNotFound() - { - return redirect() - ->route('upload.overview') - ->with('error', trans('admin/fileManager.fileNotFound')); - } } diff --git a/app/Http/Controllers/Admin/FileManager/UploadFile.php b/app/Http/Controllers/Admin/FileManager/UploadFile.php index 70d9f5fb..645bd027 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadFile.php +++ b/app/Http/Controllers/Admin/FileManager/UploadFile.php @@ -28,7 +28,7 @@ class UploadFile extends Controller * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ - public function postFile(Request $request) + public function store(Request $request) { if (Input::get('CKEditor')) { return $this->ckEditorUpload($request); diff --git a/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php b/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php index fda05484..9363e192 100644 --- a/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php +++ b/app/Http/Controllers/Admin/FileManager/UploadedFilesOverview.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Admin\FileManager; use App\Http\Controllers\Admin\Controller; use App\Models\FileManager\Directory; -use App\Models\FileManager\File; use Illuminate\Support\Facades\Input; class UploadedFilesOverview extends Controller @@ -11,37 +10,20 @@ class UploadedFilesOverview extends Controller /** * List of all files and directories * - * @param null $directoryId - * @param null $fileType - * @param null $fileSubtype + * @param Directory $directory * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function getOverview($directoryId = null, $fileType = null, $fileSubtype = null) + public function index(Directory $directory =null) { - // get directory information - $directory = is_null($directoryId) ? new Directory() : Directory::findOrFail($directoryId); - - // get all files in this directory - $files = File::orderBy('updated_at', 'DESC') - ->where('directory_id', $directory->id); - - // try to filter by given type - if (!is_null($fileType)) { - if (is_null($fileSubtype)) { - $files = $files->where('mime_type', 'LIKE', $fileType . '%'); - } else { - $files = $files->where('mime_type', $fileType . '/' . $fileSubtype); - } - } - // include hidden directories? $includeHidden = Input::get('hidden'); + $subdirectories = $includeHidden ? $directory->allSubdirectories : $directory->subdirectories; + return view('admin.fileManager.overview', [ 'directory' => $directory, - 'subdirectories' => $directory->subdirectories($includeHidden), - 'files' => $files->get(), + 'subdirectories' => $subdirectories, 'newDirectory' => new Directory() ]); } diff --git a/app/Http/routes/admin/fileManager.php b/app/Http/routes/admin/fileManager.php index 58eecfaf..ec85fc37 100644 --- a/app/Http/routes/admin/fileManager.php +++ b/app/Http/routes/admin/fileManager.php @@ -1,32 +1,32 @@ 'FileManager'], function () { - Route::get('files/overview/{id?}/{type?}/{subtype?}', 'UploadedFilesOverview@getOverview') + Route::get('files/overview/{directory?}', 'UploadedFilesOverview@index') ->name('upload.overview'); // uploader methods - Route::get('directories/new/{id?}', 'CreateNewDirectory@getNew') + Route::get('directories/new/{parentDirectory?}', 'CreateNewDirectory@create') ->name('upload.newDirectory'); - Route::get('directories/edit/{id}', 'EditDirectory@getEdit') + Route::get('directories/edit/{directory}', 'EditDirectory@edit') ->name('upload.editDirectory'); - Route::post('directories/edit/{id}', 'EditDirectory@postEdit') + Route::post('directories/edit/{directory}', 'EditDirectory@update') ->name('upload.postEditDirectory'); - route::post('directories/new', 'CreateNewDirectory@postNew') + route::post('directories/new', 'CreateNewDirectory@store') ->name('upload.postNewDirectory'); - Route::get('upload/detail/{id}', 'EditUploadedFile@getDetail') + Route::get('upload/detail/{file}', 'EditUploadedFile@show') ->name('upload.detail'); - Route::post('upload/detail/{id}', 'EditUploadedFile@postEdit') + Route::post('upload/detail/{file}', 'EditUploadedFile@update') ->name('upload.postEdit'); - Route::get('upload/delete/{id}', 'EditUploadedFile@deleteFile') + Route::get('upload/delete/{file}', 'EditUploadedFile@delete') ->name('upload.delete'); // uploader methods - Route::post('upload', 'UploadFile@postFile') + Route::post('upload', 'UploadFile@store') ->name('upload.postFile'); }); diff --git a/app/Models/FileManager/Directory.php b/app/Models/FileManager/Directory.php index ba52b4bc..e98fdd07 100644 --- a/app/Models/FileManager/Directory.php +++ b/app/Models/FileManager/Directory.php @@ -18,24 +18,33 @@ class Directory extends Model 'hidden' ]; + public function files() + { + return $this->hasMany(File::class); + } + /** * Relationship with parent/sub directories * - * @param bool $includeHidden - * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function subdirectories($includeHidden = false) + public function allSubdirectories() { + $subdirectories = $this->hasMany(Directory::class, 'parent_id', 'id'); - $subdirectories = Directory::where('parent_id', $this->id); - - if (!$includeHidden) { - $subdirectories = $subdirectories->where('hidden', 0); - + // todo fix this ugly hack! statement above produces WHERE parent_id IS NOT NULL and parent_id IS NULL when selecting subdirectories from root/none directory + if (is_null($this->id)) { + $subdirectories = $subdirectories->orWhereNull('parent_id'); } - return $subdirectories->get(); + return $subdirectories; + } + public function subdirectories() + { + $subdirectories = $this->allSubdirectories() + ->where('hidden', false); + + return $subdirectories; } } diff --git a/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php b/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php index 541818aa..9957b44f 100644 --- a/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php +++ b/resources/views/admin/fileManager/directories/subdirectoriesTiles.blade.php @@ -1,7 +1,7 @@ @if($directory->id)
@include('admin.snippets.card', [ - 'body' => '


'.trans('admin/fileManager.parentDirectory').'

', + 'body' => '


'.trans('admin/fileManager.parentDirectory').'

', 'cardClass' => 'file-preview', ])
@@ -10,7 +10,7 @@ @foreach($subdirectories as $dir)
@include('admin.snippets.card', [ - 'body' => '


'.e(str_limit($dir->name, 15)).'

', + 'body' => '


'.e(str_limit($dir->name, 15)).'

', 'cardClass' => 'file-preview', ])
diff --git a/resources/views/admin/fileManager/overview.blade.php b/resources/views/admin/fileManager/overview.blade.php index 6fe41c95..a5cd2d0c 100644 --- a/resources/views/admin/fileManager/overview.blade.php +++ b/resources/views/admin/fileManager/overview.blade.php @@ -11,7 +11,7 @@
@include('admin.fileManager.directories.subdirectoriesTiles') - @include('admin.fileManager.filesTiles') + @include('admin.fileManager.filesTiles', ['files' => $directory->files])
@@ -31,7 +31,7 @@
- @if ($directory->id) + @if ($directory->exists)