1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Thinktomorrow\Chief\App\Http\Controllers\Back\Media; |
4
|
|
|
|
5
|
|
|
use Illuminate\Http\Request; |
6
|
|
|
use Thinktomorrow\AssetLibrary\Models\AssetUploader; |
7
|
|
|
use Thinktomorrow\Chief\Management\Managers; |
8
|
|
|
use Thinktomorrow\Chief\Media\MediaType; |
9
|
|
|
use Thinktomorrow\Chief\App\Http\Controllers\Controller; |
10
|
|
|
use Thinktomorrow\Chief\Pages\Page; |
11
|
|
|
|
12
|
|
|
class UploadManagersMediaController extends Controller |
13
|
|
|
{ |
14
|
|
|
/** @var Managers */ |
15
|
|
|
private $managers; |
16
|
|
|
|
17
|
|
|
public function __construct(Managers $managers) |
18
|
|
|
{ |
19
|
|
|
$this->managers = $managers; |
20
|
|
|
} |
21
|
|
|
|
22
|
|
|
/** |
23
|
|
|
* Upload a file via redactor editor. Keep in mind |
24
|
|
|
* that here one file at a time is accepted |
25
|
|
|
* |
26
|
|
|
* @param string $key |
27
|
|
|
* @param $id |
28
|
|
|
* @param Request $request |
29
|
|
|
* @return \Illuminate\Http\JsonResponse |
30
|
|
|
* @throws \Spatie\MediaLibrary\Exceptions\FileCannotBeAdded |
31
|
|
|
* @throws \Thinktomorrow\AssetLibrary\Exceptions\AssetUploadException |
32
|
|
|
*/ |
33
|
|
|
public function store(string $key, $id, Request $request) |
34
|
|
|
{ |
35
|
|
|
$uploads = $request->file('file'); |
36
|
|
|
$model = $this->managers->findByKey($key, $id)->model(); |
37
|
|
|
|
38
|
|
|
if (empty($uploads)) { |
39
|
|
|
return response()->json([ |
40
|
|
|
'error' => true, |
41
|
|
|
'messages' => 'Geen afbeelding opgeladen.', |
42
|
|
|
], 500); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
$responseContent = []; |
46
|
|
|
|
47
|
|
|
foreach ($uploads as $upload) { |
48
|
|
|
if (! $asset = AssetUploader::upload($upload)) { |
49
|
|
|
return response()->json([ |
50
|
|
|
'error' => true, |
51
|
|
|
'messages' => 'Afbeelding kan niet worden opgeladen.', |
52
|
|
|
], 500); |
53
|
|
|
} |
54
|
|
|
|
55
|
|
|
$asset->attachToModel($model, MediaType::CONTENT); |
56
|
|
|
|
57
|
|
|
$responseContent['file-'.$asset->id] = [ |
58
|
|
|
'url' => $asset->getFileUrl(), |
59
|
|
|
'id' => $asset->id, |
60
|
|
|
]; |
61
|
|
|
} |
62
|
|
|
|
63
|
|
|
return response()->json($responseContent, 201); |
64
|
|
|
} |
65
|
|
|
} |
66
|
|
|
|