Skip to content

Commit 54b3b9c

Browse files
authored
Merge pull request #6 from queents/dev
update media collection and media lib type
2 parents 3d92a70 + 870edbc commit 54b3b9c

File tree

9 files changed

+138
-35
lines changed

9 files changed

+138
-35
lines changed

Http/Controllers/DashboardController.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Http\Controllers\Controller;
88
use Modules\Base\Services\Components\Base\Alert;
99
use Modules\Base\Services\Components\Base\Render;
10+
use Spatie\MediaLibrary\MediaCollections\Models\Media;
1011

1112
class DashboardController extends Controller
1213
{
@@ -21,6 +22,25 @@ public function logout()
2122
return redirect()->route('login');
2223
}
2324

25+
public function getMedia(){
26+
$media = Media::all()->groupBy('model_type');
27+
$mediaCollection = [];
28+
foreach ($media as $key=>$value){
29+
$getKey = collect(explode("\\",$key))->last();
30+
$mediaCollection[$getKey] = $value->toArray();
31+
}
32+
33+
return response()->json([
34+
"data" =>$mediaCollection
35+
]);
36+
}
37+
38+
public function destroy(Media $media){
39+
$media->delete();
40+
41+
return Alert::make(__('Your Media Item Has Been deleted'))->fire();
42+
}
43+
2444
public function select(Request $request){
2545
$request->validate([
2646
"model_type" => "required",

Routes/web.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,7 @@
7070
Route::post('/select', [DashboardController::class, 'select'])->name('select');
7171
Route::post('/create', [DashboardController::class, 'create'])->name('create');
7272
Route::post('logout', [DashboardController::class, 'logout'])->name('logout');
73+
Route::post('media/delete/{media}', [DashboardController::class, 'destroy'])->name('media.destroy');
74+
Route::get('media/get-media', [DashboardController::class, 'getMedia'])->name('media.api');
7375
});
76+

Services/Components/Base/Page.php

Lines changed: 0 additions & 8 deletions
This file was deleted.

Services/Concerns/HasCol.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Modules\Base\Services\Concerns;
4+
5+
trait HasCol
6+
{
7+
/**
8+
* @var int
9+
* @example 12
10+
*/
11+
public int $col = 12;
12+
13+
/**
14+
* @param int $col
15+
* @return $this
16+
*/
17+
public function col(int $col): static
18+
{
19+
$this->col = $col;
20+
return $this;
21+
}
22+
}

Services/Concerns/HasSection.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace Modules\Base\Services\Concerns;
4+
5+
trait HasSection
6+
{
7+
/**
8+
* @var ?string
9+
* @example 'groupId'
10+
*/
11+
public ?string $section = null;
12+
public ?string $sectionLabel = null;
13+
14+
/**
15+
* @param string $section
16+
* @param ?string $sectionLabel
17+
* @return $this
18+
*/
19+
public function section(string $section, ?string $sectionLabel): static
20+
{
21+
$this->section = $section;
22+
$this->sectionLabel = $sectionLabel;
23+
return $this;
24+
}
25+
}

Services/Resource/Concerns/Process/Media.php

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,22 @@ public function processMediaOnCreate(Request $request, $record): void
1212
{
1313
foreach ($this->rows() as $field) {
1414
if($field->vue === 'ViltMedia.vue') {
15-
if ($request->{$field->name} && is_array($request->{$field->name})) {
16-
foreach ($request->{$field->name} as $item) {
17-
$record->addMedia($item)
15+
if($field->type === 'lib' && is_string($request->{$field->name})){
16+
if($request->{$field->name}){
17+
$record->addMediaFromUrl($request->{$field->name})
1818
->preservingOriginal()
1919
->toMediaCollection($field->name);
2020
}
2121
}
22+
else {
23+
if ($request->{$field->name} && is_array($request->{$field->name})) {
24+
foreach ($request->{$field->name} as $item) {
25+
$record->addMedia($item)
26+
->preservingOriginal()
27+
->toMediaCollection($field->name);
28+
}
29+
}
30+
}
2231
}
2332
}
2433
}
@@ -27,27 +36,40 @@ public function processMediaOnUpdate(Request $request, $record): void
2736
{
2837
foreach ($this->rows() as $field) {
2938
if (($field->vue === 'ViltMedia.vue')) {
30-
if ($request->{$field->name} && is_array($request->{$field->name})) {
31-
$record->clearMediaCollection($field->name);
32-
foreach ($request->{$field->name} as $key=>$item) {
33-
if(!is_string($item)){
34-
if($item->getClientOriginalName() === 'blob'){
35-
$record->addMedia($item)
36-
->usingFileName(strtolower(Str::random(10).'_'.$key.'.'.$item->extension()))
37-
->preservingOriginal()
38-
->toMediaCollection($field->name);
39-
}
40-
else {
41-
$record->addMedia($item)
42-
->preservingOriginal()
43-
->toMediaCollection($field->name);
44-
}
39+
if($field->type === 'lib' && is_string($request->{$field->name})){
40+
if($request->{$field->name}){
41+
if(!$record->getMedia($field->name)->first() || $record->getMedia($field->name)->first()->getUrl() !== $request->{$field->name}){
42+
$record->clearMediaCollection($field->name);
43+
$record->addMediaFromUrl($request->{$field->name})
44+
->preservingOriginal()
45+
->toMediaCollection($field->name);
4546
}
4647
}
4748
}
48-
else if(empty($request->get($field->name))){
49-
$record->clearMediaCollection($field->name);
49+
else {
50+
if ($request->{$field->name} && is_array($request->{$field->name})) {
51+
$record->clearMediaCollection($field->name);
52+
foreach ($request->{$field->name} as $key=>$item) {
53+
if(!is_string($item)){
54+
if($item->getClientOriginalName() === 'blob'){
55+
$record->addMedia($item)
56+
->usingFileName(strtolower(Str::random(10).'_'.$key.'.'.$item->extension()))
57+
->preservingOriginal()
58+
->toMediaCollection($field->name);
59+
}
60+
else {
61+
$record->addMedia($item)
62+
->preservingOriginal()
63+
->toMediaCollection($field->name);
64+
}
65+
}
66+
}
67+
}
68+
else if(empty($request->get($field->name))){
69+
$record->clearMediaCollection($field->name);
70+
}
5071
}
72+
5173
}
5274
}
5375
}

Services/Rows/Abstracts/Base.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44

55
use Modules\Base\Services\Concerns\HasAdd;
66
use Modules\Base\Services\Concerns\HasApi;
7+
use Modules\Base\Services\Concerns\HasCol;
78
use Modules\Base\Services\Concerns\HasColor;
89
use Modules\Base\Services\Concerns\HasDefault;
910
use Modules\Base\Services\Concerns\HasDescription;
1011
use Modules\Base\Services\Concerns\HasHint;
12+
use Modules\Base\Services\Concerns\HasIcon;
1113
use Modules\Base\Services\Concerns\HasId;
1214
use Modules\Base\Services\Concerns\HasLabel;
1315
use Modules\Base\Services\Concerns\HasMax;
@@ -23,6 +25,7 @@
2325
use Modules\Base\Services\Concerns\HasRelation;
2426
use Modules\Base\Services\Concerns\HasRoles;
2527
use Modules\Base\Services\Concerns\HasRows;
28+
use Modules\Base\Services\Concerns\HasSection;
2629
use Modules\Base\Services\Concerns\HasTab;
2730
use Modules\Base\Services\Concerns\HasTrack;
2831
use Modules\Base\Services\Concerns\HasType;
@@ -70,6 +73,9 @@ abstract class Base implements Component
7073
use HasValidation;
7174
use HasRows;
7275
use HasAdd;
76+
use HasSection;
77+
use HasCol;
78+
use HasIcon;
7379
use IsUrl;
7480
use IsMulti;
7581
use IsOver;

Services/Rows/Section.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Modules\Base\Services\Rows;
4+
5+
use Modules\Base\Services\Rows\Abstracts\Base;
6+
7+
class Section extends Base
8+
{
9+
10+
public string $vue = 'ViltSection.vue';
11+
12+
/**
13+
* @param string $name
14+
* @return static
15+
*/
16+
public static function make(string $name): self
17+
{
18+
return (new self)->name($name)->over()->list(false);
19+
}
20+
}

Services/Widget.php

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)