-
Notifications
You must be signed in to change notification settings - Fork 359
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
41b0a70
commit 4e38dc7
Showing
14 changed files
with
1,810 additions
and
189 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,6 +14,7 @@ | |
/public/svg | ||
/public/icons | ||
/public/vendors | ||
/public/public | ||
/storage/*.key | ||
/vendor | ||
.env | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
<?php | ||
|
||
namespace App\Http\Controllers; | ||
|
||
use Illuminate\Http\Request; | ||
use App\Models\Folder; | ||
use App\Services\RemoveFolderService; | ||
|
||
class MediaController extends Controller | ||
{ | ||
|
||
public function index(Request $request){ | ||
if($request->has('id') && $request->input('id') != null && $request->input('id') != 'null'){ | ||
$thisFolder = Folder::where('id', '=', $request->input('id'))->first(); | ||
if($thisFolder->folder_id == null){ | ||
$result = view('dashboard.media.index', array( | ||
'medias' => $thisFolder->getMedia(), | ||
'mediaFolders' => Folder::where('folder_id', '=', $thisFolder->id)->get(), | ||
'thisFolder' => $thisFolder->id, | ||
'parentFolder' => 'disable' | ||
)); | ||
}else{ | ||
$result = view('dashboard.media.index', array( | ||
'medias' => $thisFolder->getMedia(), | ||
'mediaFolders' => Folder::where('folder_id', '=', $request->input('id'))->get(), | ||
'thisFolder' => $request->input('id'), | ||
'parentFolder' => $thisFolder['folder_id'] | ||
)); | ||
} | ||
}else{ | ||
$rootFolder = Folder::whereNull('folder_id')->first(); | ||
$result = view('dashboard.media.index', array( | ||
'medias' => $rootFolder->getMedia(), | ||
'mediaFolders' => Folder::where('folder_id', '=', $rootFolder->id)->get(), | ||
'thisFolder' => $rootFolder->id, | ||
'parentFolder' => 'disable' | ||
)); | ||
} | ||
return $result; | ||
} | ||
|
||
public function folderAdd(Request $request){ | ||
$mediaFolder = new Folder(); | ||
$mediaFolder->name = 'New Folder'; | ||
if($request->input('thisFolder') !== 'null'){ | ||
$mediaFolder->folder_id = $request->input('thisFolder'); | ||
} | ||
$mediaFolder->save(); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function folderUpdate(Request $request){ | ||
$validatedData = $request->validate([ | ||
'name' => 'required|min:1|max:256', | ||
]); | ||
$thisFolder = Folder::where('id', '=', $request->input('id'))->first(); | ||
$thisFolder->name = $request->input('name'); | ||
$thisFolder->save(); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function folder(Request $request){ | ||
$thisFolder = Folder::where('id', '=', $request->input('id'))->first(); | ||
return response()->json(array( | ||
'id' => $request->input('id'), | ||
'name' => $thisFolder['name'], | ||
)); | ||
} | ||
|
||
public function folderMove(Request $request){ | ||
if($request->input('id') != $request->input('folder')){ | ||
$thisFolder = Folder::where('id', '=', $request->input('id'))->first(); | ||
if($request->input('folder') === 'moveUp'){ | ||
$newFolder = Folder::where('id', '=', $thisFolder->folder_id)->first(); | ||
$newFolder = $newFolder->folder_id; | ||
}else{ | ||
$newFolder = $request->input('folder'); | ||
} | ||
$thisFolder->folder_id = $newFolder; | ||
$thisFolder->save(); | ||
} | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function folderDelete(Request $request){ | ||
$validatedData = $request->validate([ | ||
'id' => 'numeric', | ||
]); | ||
$removeFolderService = new RemoveFolderService(); | ||
$removeFolderService->folderDelete($request->input('id'), $request->input('thisFolder')); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function fileAdd(Request $request){ | ||
$mediaFolder = Folder::where('id', '=', $request->input('thisFolder'))->first(); | ||
if($request->hasFile('file')){ | ||
$file = $request->file('file'); | ||
$path = $file->path(); | ||
$oryginalName = $file->getClientOriginalName(); | ||
if(!empty($mediaFolder)){ | ||
$mediaFolder->addMedia($path)->usingName($oryginalName)->toMediaCollection(); | ||
|
||
} | ||
} | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function file(Request $request){ | ||
$mediaFolder = Folder::where('id', '=', $request->input('thisFolder'))->first(); | ||
$media = $mediaFolder->getMedia()->where('id', $request->input('id'))->first(); | ||
return response()->json(array( | ||
'id' => $request->input('id'), | ||
'name' => $media['name'], | ||
'realName' => $media['file_name'], | ||
'url' => $media->getUrl(), | ||
'mimeType' => $media['mime_type'], | ||
'size' => $media['size'], | ||
'createdAt' => substr($media['created_at'], 0, 10) . ' ' . substr($media['created_at'], 11, 19), | ||
'updatedAt' => substr($media['updated_at'], 0, 10) . ' ' . substr($media['updated_at'], 11, 19), | ||
)); | ||
} | ||
|
||
public function fileDelete(Request $request){ | ||
$validatedData = $request->validate([ | ||
'id' => 'numeric', | ||
]); | ||
$mediaFolder = Folder::where('id', '=', $request->input('thisFolder'))->first(); | ||
$media = $mediaFolder->getMedia()->where('id', $request->input('id'))->first(); | ||
$media->delete(); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function fileUpdate(Request $request){ | ||
$validatedData = $request->validate([ | ||
'name' => 'required|min:1|max:256', | ||
]); | ||
$mediaFolder = Folder::where('id', '=', $request->input('thisFolder'))->first(); | ||
$media = $mediaFolder->getMedia()->where('id', $request->input('id'))->first(); | ||
$media->name = $request->input('name'); | ||
$media->save(); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
public function fileMove(Request $request){ | ||
$oldFolder = Folder::where('id', '=', $request->input('thisFolder'))->first(); | ||
$media = $oldFolder->getMedia()->where('id', $request->input('id'))->first(); | ||
if($oldFolder->folder_id != NULL && $request->input('folder') === 'moveUp'){ | ||
$newFolder = Folder::where('id', '=', $oldFolder->folder_id)->first(); | ||
}else{ | ||
$newFolder = Folder::where('id', '=', $request->input('folder'))->first(); | ||
} | ||
$newFolder->addMedia($media->getPath())->usingName($media->name)->toMediaCollection(); | ||
$media->delete(); | ||
return redirect()->route('media.folder.index', ['id' => $request->input('thisFolder')]); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?php | ||
|
||
namespace App\Models; | ||
|
||
use Illuminate\Database\Eloquent\Model; | ||
use Spatie\MediaLibrary\HasMedia\HasMedia; | ||
use Spatie\MediaLibrary\HasMedia\HasMediaTrait; | ||
|
||
class Folder extends Model implements HasMedia | ||
{ | ||
use HasMediaTrait; | ||
|
||
protected $table = 'folder'; | ||
|
||
/** | ||
* Get the comments for the blog post. | ||
*/ | ||
/* | ||
public function media() | ||
{ | ||
return $this->hasMany('App\Models\Media'); | ||
} | ||
*/ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
<?php | ||
/* | ||
16.12.2019 | ||
RolesService.php | ||
*/ | ||
|
||
namespace App\Services; | ||
|
||
use App\Models\Folder; | ||
|
||
class REmoveFolderService{ | ||
|
||
public $foldersArray; | ||
|
||
public function findFolderChildAnd($thisFolderId, $thisFolder){ | ||
array_push($this->foldersArray, $thisFolderId); | ||
$childs = Folder::where('folder_id', '=', $thisFolderId)->get(); | ||
if(!empty($childs)){ | ||
foreach($childs as $child){ | ||
$this->findFolderChildAnd($child->id, $thisFolder); | ||
} | ||
} | ||
} | ||
|
||
public function folderDelete($id, $thisFolder){ | ||
$folder = Folder::where('id', '=', $id)->first(); | ||
if($folder->folder_id != NULL){ | ||
$this->foldersArray = array(); | ||
$this->findFolderChildAnd($id, $thisFolder); | ||
foreach($this->foldersArray as $folderId){ | ||
$folder = Folder::where('id', '=', $folderId)->first(); | ||
$folder->delete(); | ||
} | ||
} | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
4e38dc7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This update cause migration error
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'json null,custom_propertiesjson null,responsive_imagesjson null,order_' at line 1 (SQL: create table media (id bigint unsigned not null auto_increment primary key, model_type varchar(191) not null, model_id bigint unsigned not null, collection_name varchar(191) not null, name varchar(191) not null, file_name varchar(191) not null, mime_type varchar(191) null, disk varchar(191) not null, size bigint unsigned not null, manipulations json null, custom_properties json null, responsive_images json null, order_column int unsigned null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
`
unless commenting out those three migration lines:
`$table->json('manipulations')->nullable();
$table->json('custom_properties')->nullable();
$table->json('responsive_images')->nullable();`
4e38dc7
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
You probably have an outdated version of the database.
From laravel documentation https://laravel.com/docs/6.x/database
We know that the minimum version of the MySQL is: 5.6+
Please check version of your database.