From df3bc22954f5a8c5dd6c8b210a2e176d648ff2c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Sun, 13 Mar 2016 22:50:20 +0100 Subject: [PATCH] FEATURE #1508: merge files and directories overview. This commit merges list of all uploaded files and created directories into one page. It also modifies way of uploading files. Special page for uploading files was removed (because of no support for directories) and files can be uploaded only via overview. --- app/Handlers/Handler.php | 8 +- app/Http/Controllers/Admin/UploadFile.php | 7 +- .../Admin/UploadedFilesOverview.php | 38 +++++--- app/Http/Requests/UploadRequest.php | 3 +- app/Http/routes.php | 2 - app/Models/File.php | 3 +- .../admin/fileManager/filesTiles.blade.php | 32 +++++++ .../views/admin/fileManager/newFile.blade.php | 14 --- .../admin/fileManager/newFileForm.blade.php | 71 ++++++-------- .../admin/fileManager/newImage.blade.php | 14 --- .../admin/fileManager/overview.blade.php | 93 ++++++++++++------- 11 files changed, 151 insertions(+), 134 deletions(-) create mode 100644 resources/views/admin/fileManager/filesTiles.blade.php delete mode 100644 resources/views/admin/fileManager/newFile.blade.php delete mode 100644 resources/views/admin/fileManager/newImage.blade.php diff --git a/app/Handlers/Handler.php b/app/Handlers/Handler.php index dc470407..a6305096 100644 --- a/app/Handlers/Handler.php +++ b/app/Handlers/Handler.php @@ -38,7 +38,7 @@ abstract class Handler implements AppHandler 'basicInfo' => 'admin.content.formParts.basicInformation', 'meta' => 'admin.content.formParts.metaInformation', 'publication' => 'admin.content.formParts.publicationSetup', - 'appearance' => 'admin.content.formParts.appearance', + 'appearance' => 'admin.content.formParts.appearance', ]; } @@ -93,11 +93,7 @@ abstract class Handler implements AppHandler $sub->route('content.overview', trans('admin/mainMenu.contentPageOverview'), [], 20, ['icon' => 'fa fa-list']); }, 15, ['icon' => 'fa fa-database']); - $menu->dropdown(trans('admin/mainMenu.fileManager'), function ($sub) { - $sub->route('upload.directories', trans('admin/mainMenu.directories'), [], 1, ['icon' => 'fa fa-folder']); - $sub->route('upload.file', trans('admin/mainMenu.uploadFile'), [], 10, ['icon' => 'fa fa-file']); - $sub->route('upload.overview', trans('admin/mainMenu.uploadedFiles'), [], 150, ['icon' => 'fa fa-files-o']); - }, 25, ['icon' => 'fa fa-film']); + $menu->route('upload.overview', trans('admin/mainMenu.fileManager'), [], 30, ['icon' => 'fa fa-folder']); $menu->dropdown(trans('admin/mainMenu.widgets'), function ($sub) { // create list of all widget types $sub->dropdown(trans('admin/mainMenu.newWidget'), function ($sub) { diff --git a/app/Http/Controllers/Admin/UploadFile.php b/app/Http/Controllers/Admin/UploadFile.php index 3c403615..8e933a44 100644 --- a/app/Http/Controllers/Admin/UploadFile.php +++ b/app/Http/Controllers/Admin/UploadFile.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\Admin; use App\Http\Requests\UploadFileRequest; -use App\Http\Requests\UploadImageRequest; use App\Models\File; use Symfony\Component\HttpFoundation\File\Exception\FileException; @@ -19,10 +18,6 @@ class UploadFile extends Controller $this->file = $file; } - public function getFile() - { - return view('admin/fileManager.newFile'); - } /** * Uploads any file @@ -47,7 +42,7 @@ class UploadFile extends Controller // upload was not performed via ajax, redirect user return redirect() - ->route('upload.file') + ->route('upload.overview', ['directory' => $request->directoryId]) ->with('success', trans('admin/fileManager.uploadSuccessfull')); } catch (FileException $e) { return $this->invalidUpload('invalidFile'); diff --git a/app/Http/Controllers/Admin/UploadedFilesOverview.php b/app/Http/Controllers/Admin/UploadedFilesOverview.php index 93721771..6b5c0a21 100644 --- a/app/Http/Controllers/Admin/UploadedFilesOverview.php +++ b/app/Http/Controllers/Admin/UploadedFilesOverview.php @@ -4,30 +4,46 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests; +use App\Models\Directory; use App\Models\File; +use Illuminate\Support\Facades\Input; class UploadedFilesOverview extends Controller { - public function getOverview($type = null, $subtype = null) + /** + * List of all files and directories + * + * @param null $directoryId + * @param null $fileType + * @param null $fileSubtype + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function getOverview($directoryId = null, $fileType = null, $fileSubtype = null) { - $directories = []; + // get directory information + $directory = is_null($directoryId) ? new Directory() : Directory::findOrFail($directoryId); - $files = File::orderBy('updated_at', 'DESC'); + // 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($type)) { - if (is_null($subtype)) - $files = $files->where('mime_type', 'LIKE', $type.'%'); - else { - $files = $files->where('mime_type', $type.'/'.$subtype); + if (!is_null($fileType)) { + if (is_null($fileSubtype)) { + $files = $files->where('mime_type', 'LIKE', $fileType . '%'); + } else { + $files = $files->where('mime_type', $fileType . '/' . $fileSubtype); } } - $files = $files->paginate(18); + // include hidden directories? + $includeHidden = Input::get('hidden'); return view('admin.fileManager.overview', [ - 'direcories' => $directories, - 'files' => $files + 'directory' => $directory, + 'subdirectories' => $directory->subdirectories($includeHidden), + 'files' => $files->get() ]); } } diff --git a/app/Http/Requests/UploadRequest.php b/app/Http/Requests/UploadRequest.php index 7d05410e..ebfe5c2f 100644 --- a/app/Http/Requests/UploadRequest.php +++ b/app/Http/Requests/UploadRequest.php @@ -17,7 +17,8 @@ abstract class UploadRequest extends Request { // some globaly defined rules $rules = [ - 'keywords' => 'max:255' + 'keywords' => 'max:255', + 'directoryId' => 'exists:directories,id' ]; // setup additional rules diff --git a/app/Http/routes.php b/app/Http/routes.php index 37166940..4eb5d6d9 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -184,8 +184,6 @@ Route::group([ ->name('widgets.makeAssociation'); // uploader methods - Route::get('upload/file', 'UploadFile@getFile') - ->name('upload.file'); Route::get('directories/new/{id?}', 'CreateNewDirectory@getNew') ->name('upload.newDirectory'); diff --git a/app/Models/File.php b/app/Models/File.php index 86ffc192..447950ff 100644 --- a/app/Models/File.php +++ b/app/Models/File.php @@ -101,9 +101,10 @@ class File extends Model $newFile->hash_algorithm = self::HASH_ALGORITHM; $newFile->mime_type = $file->getMimeType(); $newFile->file_size = $file->getSize(); + $newFile->directory_id = $request->directoryId; // save optional fields - $optionalFields = ['description', 'keywords', 'directory']; + $optionalFields = ['description', 'keywords']; foreach ($optionalFields as $field) { if ($request->has($field)) { $newFile->$field = $request->$field; diff --git a/resources/views/admin/fileManager/filesTiles.blade.php b/resources/views/admin/fileManager/filesTiles.blade.php new file mode 100644 index 00000000..9cf3fa31 --- /dev/null +++ b/resources/views/admin/fileManager/filesTiles.blade.php @@ -0,0 +1,32 @@ +
+ @forelse($files as $file) +
+
+ +
+
+ {{str_limit($file->original_filename, 15)}} +
+
+ {{$file->mime_type}} +
+
+ + +
+
+ @empty + @lang('admin/fileManager.noFiles') + @endforelse +
\ No newline at end of file diff --git a/resources/views/admin/fileManager/newFile.blade.php b/resources/views/admin/fileManager/newFile.blade.php deleted file mode 100644 index 576762b9..00000000 --- a/resources/views/admin/fileManager/newFile.blade.php +++ /dev/null @@ -1,14 +0,0 @@ -@extends('admin.layout') - -@section('pageName', @trans('admin/fileManager.newFile')) - -@section('content') - -
-

@lang('admin/fileManager.newFile')

-
- -
- @include('admin.fileManager.newFileForm') -
-@stop \ No newline at end of file diff --git a/resources/views/admin/fileManager/newFileForm.blade.php b/resources/views/admin/fileManager/newFileForm.blade.php index 237fcf0e..edc0b27f 100644 --- a/resources/views/admin/fileManager/newFileForm.blade.php +++ b/resources/views/admin/fileManager/newFileForm.blade.php @@ -1,56 +1,39 @@ -@if (session('success')) -
- {{ session('success') }} -
-@endif - -@if (session('error')) -
- {{ session('error') }} -
-@endif +

@lang('admin/fileManager.newFile')

{!! csrf_field() !!} -
-
-
-
- + + - - - -
-
+ +
\ No newline at end of file diff --git a/resources/views/admin/fileManager/newImage.blade.php b/resources/views/admin/fileManager/newImage.blade.php deleted file mode 100644 index f7138efc..00000000 --- a/resources/views/admin/fileManager/newImage.blade.php +++ /dev/null @@ -1,14 +0,0 @@ -@extends('admin.layout') - -@section('pageName', @trans('admin/fileManager.newFile')) - -@section('content') - -
-

@lang('admin/fileManager.new')

-
- -
- @include('admin.fileManager.newFileForm') -
-@stop \ No newline at end of file diff --git a/resources/views/admin/fileManager/overview.blade.php b/resources/views/admin/fileManager/overview.blade.php index c791ec11..52c58da1 100644 --- a/resources/views/admin/fileManager/overview.blade.php +++ b/resources/views/admin/fileManager/overview.blade.php @@ -1,48 +1,71 @@ @extends('admin.layout') -@section('pageName', @trans('admin/fileManager.overview')) +@if ($directory->id) + @section('pageName', @trans('admin/fileManager.directories', ['directory' => $directory->name])) +@else + @section('pageName', @trans('admin/fileManager.rootDirectories')) +@endif + @section('content') -
-

@lang('admin/fileManager.overview')

+

+ @if ($directory->id) + @lang('admin/fileManager.directories', ['directory' => $directory->name]) + @else + @lang('admin/fileManager.rootDirectories') + @endif +

-
- @forelse($files as $file) + @if (session('success')) +
+ {{ session('success') }} +
+ @endif -
-
- -
-
- {{str_limit($file->original_filename, 15)}} -
-
- {{$file->mime_type}} -
-
+ @if (session('error')) +
+ {{ session('error') }} +
+ @endif - +
+
+ @include('admin.fileManager.directories.subdirectoriesTiles') +
+
+ @include('admin.fileManager.filesTiles') +
+
+ +
+
- @empty - @lang('admin/fileManager.noFiles') - @endforelse -
+ +
  • + @lang('admin/fileManager.newDirectory') -
    - {!! $files->render() !!} +
    + @include('admin.fileManager.directories.newForm') +
    +
  • + + @if ($directory->id) +
  • + @lang('admin/fileManager.editDirectory') + +
    + @include('admin.fileManager.directories.editForm') +
    +
  • + @endif + +
    @stop \ No newline at end of file