diff --git a/app/Http/Controllers/Admin/CreateNewDirectory.php b/app/Http/Controllers/Admin/CreateNewDirectory.php new file mode 100644 index 00000000..31e960fa --- /dev/null +++ b/app/Http/Controllers/Admin/CreateNewDirectory.php @@ -0,0 +1,62 @@ +name) + ->where('parent_id', $request->parentDirectory) + ->exists(); + if ($exists) { + if ($request->ajax()) { + return response()->json([ + 'status' => 'failed', + 'message' => trans('admin/fileManager.subdirectoryExists') + ]); + } else { + return redirect() + ->route('upload.overview', ['id' => $request->parentDirectory]) + ->with('error', trans('admin/fileManager.subdirectoryExists')) + ->withInput(); + } + } + + // create new database entry + $directory = new Directory(); + $directory->name = $request->name; + $directory->parent_id = $request->parentDirectory; + $directory->user_id = \Auth::user()->id; + $directory->description = $request->description; + + $directory->save(); + + $message = trans('admin/fileManager.newDirectorySuccess'); + if (!$request->ajax()) { + return redirect() + ->route('upload.overview', ['id' => $request->parentDirectory]) + ->with('success', $message); + } else { + $payload = [ + 'status' => 'success', + 'message' => $message, + 'parentDirectory' => $request->parentDirectory + ]; + + return response()->json($payload); + } + } +} diff --git a/app/Http/Controllers/Admin/EditDirectory.php b/app/Http/Controllers/Admin/EditDirectory.php new file mode 100644 index 00000000..7992a7cb --- /dev/null +++ b/app/Http/Controllers/Admin/EditDirectory.php @@ -0,0 +1,61 @@ +parent_id) + ->where('name', $request->name) + ->where('id', '!=', $directoryId) + ->exists(); + + if ($exists) { + if ($request->ajax()) { + return response()->json([ + 'status' => 'failed', + 'message' => trans('admin/fileManager.subdirectoryExists') + ]); + } else { + return redirect() + ->route('upload.overview', ['id' => $directoryId]) + ->with('error', trans('admin/fileManager.subdirectoryExists')) + ->withInput(); + } + } + + $directory->name = $request->name; + $directory->description = $request->description; + + $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); + } + } +} diff --git a/app/Http/Requests/CreateNewDirectoryRequest.php b/app/Http/Requests/CreateNewDirectoryRequest.php new file mode 100644 index 00000000..a35650d9 --- /dev/null +++ b/app/Http/Requests/CreateNewDirectoryRequest.php @@ -0,0 +1,19 @@ + 'required|max:255', + 'parentDirectory' => 'exists:directories,id' + ]; + } +} diff --git a/app/Http/Requests/EditDirectoryRequest.php b/app/Http/Requests/EditDirectoryRequest.php new file mode 100644 index 00000000..1e60f2e7 --- /dev/null +++ b/app/Http/Requests/EditDirectoryRequest.php @@ -0,0 +1,19 @@ + 'required|max:255', + 'parentDirectory' => 'exists:directories,id' + ]; + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 5a0141c2..37166940 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -186,9 +186,17 @@ Route::group([ // uploader methods Route::get('upload/file', 'UploadFile@getFile') ->name('upload.file'); + Route::get('directories/new/{id?}', 'CreateNewDirectory@getNew') + ->name('upload.newDirectory'); - Route::get('directories/overview/{id?}', 'DirectoriesOverview@getOverview') - ->name('upload.directories'); + Route::get('directories/edit/{id}', 'EditDirectory@getEdit') + ->name('upload.editDirectory'); + + Route::post('directories/edit/{id}', 'EditDirectory@postEdit') + ->name('upload.postEditDirectory'); + + Route::get('files/overview/{id?}/{type?}/{subtype?}', 'UploadedFilesOverview@getOverview') + ->name('upload.overview'); route::post('directories/new', 'CreateNewDirectory@postNew') ->name('upload.postNewDirectory'); @@ -202,9 +210,6 @@ Route::group([ Route::get('upload/delete/{id}', 'EditUploadedFile@deleteFile') ->name('upload.delete'); - Route::get('upload/overview/{type?}/{subtype?}', 'UploadedFilesOverview@getOverview') - ->name('upload.overview'); - // uploader methods Route::post('upload/file', 'UploadFile@postFile') ->name('upload.postFile'); diff --git a/app/Models/Directory.php b/app/Models/Directory.php new file mode 100644 index 00000000..f0b4416b --- /dev/null +++ b/app/Models/Directory.php @@ -0,0 +1,42 @@ +id); + + if (!$includeHidden) { + $subdirectories = $subdirectories->where('hidden', 0); + + } + + return $subdirectories->get(); + + } +} diff --git a/resources/assets/css/admin.css b/resources/assets/css/admin.css index 04d8c1b5..048689fe 100644 --- a/resources/assets/css/admin.css +++ b/resources/assets/css/admin.css @@ -74,6 +74,9 @@ code { overflow:hidden; } +.tile-overview .directory .preview { + line-height: 1em; +} .ace-editor-container { position: relative; diff --git a/resources/lang/en/admin/fileManager.php b/resources/lang/en/admin/fileManager.php index 5fc4a29b..79d9adce 100644 --- a/resources/lang/en/admin/fileManager.php +++ b/resources/lang/en/admin/fileManager.php @@ -1,26 +1,41 @@ 'List of all files', - 'upload' => 'Upload new file', - 'edit' => 'Edit file :name', - 'fileInfo' => 'Information', - 'createdAt' => 'Uploaded', - 'updatedAt' => 'Last change', - 'originalFilename' => 'Original filename', - 'url' => 'Public URL', - 'fileSize' => 'File size', - 'encoding' => 'Encoding', - 'resolution' => 'Resolution', - 'editButton' => 'Edit', - 'successfullyChanged' => 'Successfully saved', - 'newFile' => 'New file', - 'hash' => 'Hash', - 'mime' => 'MIME type', - 'invalidFile' => 'The file you submitted is somehow not valid file!', - 'noFileSpecified' => 'You have not specified any file for upload', - 'uploadSuccessfull' => 'Your file was successfully uploaded', - 'selectFile' => 'Select file for upload', - 'keywords' => 'Keywords (comma separated)', - 'description' => 'File description', - 'noFiles' => 'No files were found. Try to upload some.' + 'overview' => 'List of all files', + 'upload' => 'Upload new file', + 'edit' => 'Edit file :name', + 'fileInfo' => 'Information', + 'createdAt' => 'Uploaded', + 'updatedAt' => 'Last change', + 'originalFilename' => 'Original filename', + 'url' => 'Public URL', + 'fileSize' => 'File size', + 'encoding' => 'Encoding', + 'resolution' => 'Resolution', + 'editButton' => 'Edit', + 'successfullyChanged' => 'Successfully saved', + 'newFile' => 'New file', + 'hash' => 'Hash', + 'mime' => 'MIME type', + 'invalidFile' => 'The file you submitted is somehow not valid file!', + 'noFileSpecified' => 'You have not specified any file for upload', + 'uploadSuccessfull' => 'Your file was successfully uploaded', + 'selectFile' => 'Select file for upload', + 'keywords' => 'Keywords (comma separated)', + 'description' => 'File description', + 'noFiles' => 'No files were found. Try to upload some.', + 'directories' => 'Subdirectories in :directory directory', + 'rootDirectories' => 'Root directories', + 'newDirectory' => 'Create new directory', + 'newDirectorySuccess' => 'New directory successfully created', + 'createSubdirectoryFor' => 'Create subdirectory for :directory.', + 'noSubdirectories' => 'No subdirectories available.', + 'directoryName' => 'Directory name', + 'directoryDescription' => 'Directory description', + 'directoryHidden' => 'Hidden directory', + 'subdirectoryExists' => 'Directory with this name already exists', + 'parentDirectory' => 'Parent directory', + 'editDirectory' => 'Edit directory', + 'editDirectorySuccess' => 'Succesfully edited', + 'fileDeleted' => 'File deleted', + ]; \ No newline at end of file diff --git a/resources/lang/en/admin/mainMenu.php b/resources/lang/en/admin/mainMenu.php index 950388de..2029511d 100644 --- a/resources/lang/en/admin/mainMenu.php +++ b/resources/lang/en/admin/mainMenu.php @@ -23,7 +23,8 @@ return [ 'widgetsOverview' => 'All widgets', 'assignWidgets' => 'Assign widgets', 'templates' => 'Templates', - 'contentPages' => 'Web content', - 'contentPageOverview' => 'Overview', - 'newContentPage' => 'New content' + 'contentPages' => 'Web content', + 'contentPageOverview' => 'Overview', + 'newContentPage' => 'New content', + 'directories' => 'Directories' ]; \ No newline at end of file diff --git a/resources/views/admin/fileManager/directories/editForm.blade.php b/resources/views/admin/fileManager/directories/editForm.blade.php new file mode 100644 index 00000000..ebf675a4 --- /dev/null +++ b/resources/views/admin/fileManager/directories/editForm.blade.php @@ -0,0 +1,20 @@ +