content ?? []; $this->hydrateMedia($content); return view('admin.posts.editor', [ 'customPostType' => $customPostType->load('fields'), 'post' => $post->setAttribute('content', $content), 'a11yIssues' => $analyzer->analyze($content), 'availableLocales' => $settingService->getSupportedLocales(), 'defaultLocale' => $settingService->get('default_locale', config('app.locale')), 'permissions' => [ 'view-media' => Gate::allows('view-media'), 'upload-media' => Gate::allows('upload-media'), 'update-media' => Gate::allows('update-media'), 'delete-media' => Gate::allows('delete-media'), ], ]); } /** * Recursively hydrate media blocks with filenames if only media_id is present. */ protected function hydrateMedia(array &$content): void { foreach ($content as $locale => &$blocks) { if (is_array($blocks)) { foreach ($blocks as &$block) { if (($block['type'] ?? '') === 'media' && !empty($block['data']['media_id']) && empty($block['data']['filename'])) { $media = Media::find($block['data']['media_id']); if ($media) { $block['data']['filename'] = $media->filename; } } } } } } }