diff --git a/app/Console/Commands/MoveMediaToPublic.php b/app/Console/Commands/MoveMediaToPublic.php
deleted file mode 100644
index bce2727..0000000
--- a/app/Console/Commands/MoveMediaToPublic.php
+++ /dev/null
@@ -1,112 +0,0 @@
-option('dry-run');
-
- if ($dryRun) {
- $this->warn('DRY RUN MODE - No files will actually be moved');
- }
-
- // Get all media records using local disk
- $mediaRecords = Media::where('disk', 'local')->get();
-
- if ($mediaRecords->isEmpty()) {
- $this->info('No media records found using local disk.');
- return self::SUCCESS;
- }
-
- $this->info("Found {$mediaRecords->count()} media records to migrate.");
-
- $progressBar = $this->output->createProgressBar($mediaRecords->count());
- $progressBar->start();
-
- $moved = 0;
- $errors = 0;
-
- foreach ($mediaRecords as $media) {
- // Use relative path: {id}/{filename}
- $relativePath = $media->id . '/' . $media->file_name;
-
- // Check if source file exists
- if (!Storage::disk('local')->exists($relativePath)) {
- $this->newLine();
- $this->error("Source file not found: {$relativePath}");
- $errors++;
- $progressBar->advance();
- continue;
- }
-
- try {
- if (!$dryRun) {
- // Copy file from local to public disk
- $fileContent = Storage::disk('local')->get($relativePath);
- Storage::disk('public')->put($relativePath, $fileContent);
-
- // Verify the file was copied successfully
- if (Storage::disk('public')->exists($relativePath)) {
- // Update the database record
- $media->update([
- 'disk' => 'public',
- 'conversions_disk' => 'public',
- ]);
-
- // Delete the old file from local disk
- Storage::disk('local')->delete($relativePath);
-
- $moved++;
- } else {
- throw new \Exception("Failed to copy file to public disk");
- }
- } else {
- $this->newLine();
- $this->line("Would move: local:{$relativePath} -> public:{$relativePath}");
- $moved++;
- }
- } catch (\Exception $e) {
- $this->newLine();
- $this->error("Error moving {$relativePath}: {$e->getMessage()}");
- $errors++;
- }
-
- $progressBar->advance();
- }
-
- $progressBar->finish();
- $this->newLine(2);
-
- if ($dryRun) {
- $this->info("DRY RUN: Would move {$moved} files, {$errors} errors encountered.");
- $this->info("Run without --dry-run to actually perform the migration.");
- } else {
- $this->info("Successfully moved {$moved} files, {$errors} errors encountered.");
- }
-
- return self::SUCCESS;
- }
-}
diff --git a/app/Filament/Resources/Entries/Schemas/EntryForm.php b/app/Filament/Resources/Entries/Schemas/EntryForm.php
index 6c029f6..82e163d 100644
--- a/app/Filament/Resources/Entries/Schemas/EntryForm.php
+++ b/app/Filament/Resources/Entries/Schemas/EntryForm.php
@@ -2,18 +2,13 @@
namespace App\Filament\Resources\Entries\Schemas;
-use Filament\Actions\Action;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\RichEditor;
-use Filament\Forms\Components\Select;
-use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
-use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Schema;
-use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
-use Spatie\MediaLibrary\MediaCollections\Models\Media;
class EntryForm
{
@@ -23,183 +18,22 @@ class EntryForm
->components([
TextInput::make('title')
->required()
- ->live(onBlur: true)
+ ->reactive()
->afterStateUpdated(function ($state, $set): void {
$set('slug', Str::slug((string) $state));
}),
TextInput::make('slug')
->required()
- ->dehydrated()
- ->readOnly(),
+ ->disabled(),
Textarea::make('description')
->columnSpanFull(),
- SpatieMediaLibraryFileUpload::make('featured_image')
- ->collection('featured-image')
- ->image()
- ->imageEditor()
- ->disk('public')
- ->visibility('public')
- ->columnSpanFull()
- ->dehydrated(false)
- ->hintAction(
- Action::make('featured_picker')
- ->label('Pick from Gallery')
- ->icon('heroicon-m-photo')
- ->schema([
- Select::make('image_id')
- ->label('Select an existing image')
- ->allowHtml()
- ->options(function () {
- return Media::where('model_type', 'temp')
- ->where('model_id', 0)
- ->where('disk', 'public')
- ->latest()
- ->limit(30)
- ->get(['id', 'file_name', 'name', 'disk'])
- ->mapWithKeys(function (Media $item) {
- try {
- $url = $item->getUrl();
- $fileName = e($item->file_name);
- $name = e($item->name ?? '');
-
- $html = "
" .
- "

" .
- "
" .
- "{$name}" .
- "{$fileName}" .
- "
";
-
- return [$item->id => $html];
- } catch (\Exception $e) {
- return [];
- }
- })->toArray();
- })
- ->searchable()
- ->preload()
- ->required(),
- ])
- ->action(function (array $data, SpatieMediaLibraryFileUpload $component): void {
- $record = $component->getRecord();
-
- if (!$record) {
- \Filament\Notifications\Notification::make()
- ->warning()
- ->title('Save the entry first')
- ->send();
- return;
- }
-
- if (!$data['image_id']) {
- return;
- }
-
- $sourceMedia = Media::find($data['image_id']);
- if (!$sourceMedia || !file_exists($sourceMedia->getPath())) {
- \Filament\Notifications\Notification::make()
- ->danger()
- ->title('Image file not found')
- ->send();
- return;
- }
-
- $sourceFile = $sourceMedia->getPath();
- $tempCopy = sys_get_temp_dir() . '/' . uniqid() . '_' . $sourceMedia->file_name;
- copy($sourceFile, $tempCopy);
-
- try {
- // Verify record has ID
- if (!$record->id) {
- \Filament\Notifications\Notification::make()
- ->danger()
- ->title('Entry must be saved first')
- ->send();
- return;
- }
-
- // Add the copy to the entry's featured-image collection
- $newMedia = $record->addMedia($tempCopy)
- ->usingName($sourceMedia->name ?: pathinfo($sourceMedia->file_name, PATHINFO_FILENAME))
- ->usingFileName($sourceMedia->file_name)
- ->toMediaCollection('featured-image', 'public');
-
- // Dispatch event for app.js to handle
- $component->getLivewire()->dispatch('featured-image-added', ['mediaId' => $newMedia->id]);
-
- \Filament\Notifications\Notification::make()
- ->success()
- ->title('Image added to featured image')
- ->send();
- } catch (\Exception $e) {
- \Filament\Notifications\Notification::make()
- ->danger()
- ->title('Error: ' . $e->getMessage())
- ->send();
- } finally {
- if (file_exists($tempCopy)) {
- unlink($tempCopy);
- }
- }
- })
- ),
Toggle::make('is_published')
->required(),
Toggle::make('is_featured')
->required(),
DatePicker::make('published_at'),
RichEditor::make('content')
- ->columnSpanFull()
- ->hintAction(
- Action::make('picker')
- ->label('Gallery Picker')
- ->icon('heroicon-m-photo')
- ->schema([
- Select::make('image_url')
- ->label('Select an existing image')
- ->allowHtml()
- ->options(function () {
- return Media::latest()
- ->limit(30) // Limit to 30 most recent items for performance
- ->get(['id', 'file_name', 'name', 'uuid', 'collection_name', 'model_type', 'model_id', 'disk'])
- ->filter(function (Media $item) {
- // Only include media items that have a valid disk
- return $item->disk !== null;
- })
- ->mapWithKeys(function (Media $item) {
- try {
- $url = $item->getUrl();
- } catch (\Exception $e) {
- // Skip items that can't generate URLs
- return [];
- }
-
- $fileName = e($item->file_name);
- $name = e($item->name ?? '');
-
- // Smaller image preview for better performance
- $html = "" .
- "

" .
- "
" .
- "{$name}" .
- "{$fileName}" .
- "
";
-
- return [$url => $html];
- })->toArray();
- })
- ->searchable()
- ->preload()
- ->required(),
- ])
- ->action(function (array $data, RichEditor $component) {
- // We dispatch the URL to the browser to be inserted into TipTap
- $component->getLivewire()->dispatch('insert-editor-content', [
- 'statePath' => $component->getStatePath(),
- 'html' => "
",
- ]);
- })
- ),
-
+ ->columnSpanFull(),
]);
}
}
diff --git a/app/Filament/Resources/Entries/Schemas/EntryInfolist.php b/app/Filament/Resources/Entries/Schemas/EntryInfolist.php
index be741bc..6a5d87d 100644
--- a/app/Filament/Resources/Entries/Schemas/EntryInfolist.php
+++ b/app/Filament/Resources/Entries/Schemas/EntryInfolist.php
@@ -3,7 +3,6 @@
namespace App\Filament\Resources\Entries\Schemas;
use Filament\Infolists\Components\IconEntry;
-use Filament\Infolists\Components\SpatieMediaLibraryImageEntry;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Schema;
@@ -18,9 +17,6 @@ class EntryInfolist
TextEntry::make('description')
->placeholder('-')
->columnSpanFull(),
- SpatieMediaLibraryImageEntry::make('featured_image')
- ->collection('featured-image')
- ->columnSpanFull(),
IconEntry::make('is_published')
->boolean(),
IconEntry::make('is_featured')
diff --git a/app/Filament/Resources/Entries/Tables/EntriesTable.php b/app/Filament/Resources/Entries/Tables/EntriesTable.php
index eb89fd4..57035c0 100644
--- a/app/Filament/Resources/Entries/Tables/EntriesTable.php
+++ b/app/Filament/Resources/Entries/Tables/EntriesTable.php
@@ -7,7 +7,6 @@ use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\ViewAction;
use Filament\Tables\Columns\IconColumn;
-use Filament\Tables\Columns\SpatieMediaLibraryImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
@@ -17,11 +16,6 @@ class EntriesTable
{
return $table
->columns([
- SpatieMediaLibraryImageColumn::make('featured_image')
- ->collection('featured-image')
- ->circular()
- ->stacked()
- ->limit(3),
TextColumn::make('title')
->searchable(),
TextColumn::make('slug')
diff --git a/app/Filament/Resources/Media/MediaResource.php b/app/Filament/Resources/Media/MediaResource.php
deleted file mode 100644
index 2ac19fe..0000000
--- a/app/Filament/Resources/Media/MediaResource.php
+++ /dev/null
@@ -1,58 +0,0 @@
- ListMedia::route('/'),
- 'create' => CreateMedia::route('/create'),
- 'view' => ViewMedia::route('/{record}'),
- 'edit' => EditMedia::route('/{record}/edit'),
- ];
- }
-}
diff --git a/app/Filament/Resources/Media/Pages/CreateMedia.php b/app/Filament/Resources/Media/Pages/CreateMedia.php
deleted file mode 100644
index c652a96..0000000
--- a/app/Filament/Resources/Media/Pages/CreateMedia.php
+++ /dev/null
@@ -1,61 +0,0 @@
-uploadedFile = $file;
-
- // Set required fields for Media model
- $data['model_type'] = $data['model_type'] ?? 'temp';
- $data['model_id'] = $data['model_id'] ?? 0;
- $data['collection_name'] = $data['collection_name'] ?? 'default';
- $data['disk'] = $data['disk'] ?? 'public';
- $data['file_name'] = $file ? basename($file) : '';
- $data['mime_type'] = $file && Storage::disk('public')->exists($file)
- ? Storage::disk('public')->mimeType($file)
- : 'application/octet-stream';
- $data['size'] = $file && Storage::disk('public')->exists($file)
- ? Storage::disk('public')->size($file)
- : 0;
- $data['manipulations'] = [];
- $data['custom_properties'] = [];
- $data['generated_conversions'] = [];
- $data['responsive_images'] = [];
-
- return $data;
- }
-
- protected function afterCreate(): void
- {
- if ($this->uploadedFile && $this->record) {
- $disk = Storage::disk('public');
-
- // Create the directory for this media ID (Spatie structure: {id}/{filename})
- $mediaDirectory = (string) $this->record->id;
- $disk->makeDirectory($mediaDirectory);
-
- // Move file from temporary upload location to Spatie's expected location
- if ($disk->exists($this->uploadedFile)) {
- $newPath = $mediaDirectory.'/'.$this->record->file_name;
- $disk->move($this->uploadedFile, $newPath);
- }
- }
- }
-}
diff --git a/app/Filament/Resources/Media/Pages/EditMedia.php b/app/Filament/Resources/Media/Pages/EditMedia.php
deleted file mode 100644
index b6f4cdb..0000000
--- a/app/Filament/Resources/Media/Pages/EditMedia.php
+++ /dev/null
@@ -1,72 +0,0 @@
-record->getPathRelativeToRoot()) {
- $this->uploadedFile = $file;
-
- // Keep the original file_name to prevent breaking existing references
- // $data['file_name'] is not updated - we preserve the original filename
- $data['mime_type'] = Storage::disk('public')->exists($file)
- ? Storage::disk('public')->mimeType($file)
- : 'application/octet-stream';
- $data['size'] = Storage::disk('public')->exists($file)
- ? Storage::disk('public')->size($file)
- : 0;
- }
-
- return $data;
- }
-
- protected function afterSave(): void
- {
- if ($this->uploadedFile && $this->record) {
- $disk = Storage::disk('public');
- $mediaDirectory = (string) $this->record->id;
-
- // Delete old file if it exists
- $oldPath = $mediaDirectory.'/'.$this->record->getOriginal('file_name');
- if ($disk->exists($oldPath)) {
- $disk->delete($oldPath);
- }
-
- // Move new file to Spatie's expected location using the original filename
- if ($disk->exists($this->uploadedFile)) {
- $disk->makeDirectory($mediaDirectory);
- // Use the original file_name to preserve existing references
- $newPath = $mediaDirectory.'/'.$this->record->file_name;
- $disk->move($this->uploadedFile, $newPath);
- }
-
- // Redirect to the same page to refresh the form state
- $this->redirect(static::getUrl(['record' => $this->record]), navigate: true);
- }
- }
-}
diff --git a/app/Filament/Resources/Media/Pages/ListMedia.php b/app/Filament/Resources/Media/Pages/ListMedia.php
deleted file mode 100644
index 2e6b63d..0000000
--- a/app/Filament/Resources/Media/Pages/ListMedia.php
+++ /dev/null
@@ -1,19 +0,0 @@
-components([
- TextInput::make('name')
- ->required()
- ->maxLength(255),
- TextInput::make('collection_name')
- ->default('default')
- ->required()
- ->maxLength(255),
- Hidden::make('disk')
- ->default('public'),
- FileUpload::make('file')
- ->label('File')
- ->imageEditor()
- ->imageEditorAspectRatios([
- '16:9',
- '4:3',
- '1:1',
- ])
- ->columnSpanFull()
- ->disk('public')
- ->directory('media')
- ->visibility('public')
- ->acceptedFileTypes(['image/*', 'application/pdf'])
- ->maxSize(10240)
- ->required(fn ($context) => $context === 'create')
- ->afterStateHydrated(function (FileUpload $component, $state, $record): void {
- if (! $record) {
- return;
- }
-
- $media = $record;
-
- if (! $media instanceof SpatieMedia) {
- return;
- }
-
- // Construct the correct path: {media_id}/{filename}
- $path = $media->id.'/'.$media->file_name;
-
- $component->state($path);
- }),
- ]);
- }
-}
diff --git a/app/Filament/Resources/Media/Schemas/MediaInfolist.php b/app/Filament/Resources/Media/Schemas/MediaInfolist.php
deleted file mode 100644
index dfe4801..0000000
--- a/app/Filament/Resources/Media/Schemas/MediaInfolist.php
+++ /dev/null
@@ -1,36 +0,0 @@
-components([
- ImageEntry::make('file_name')
- ->label('Preview')
- ->getStateUsing(fn ($record) => $record->getUrl())
- ->visible(fn ($record) => $record->mime_type && str_starts_with($record->mime_type, 'image/')),
- TextEntry::make('name'),
- TextEntry::make('file_name'),
- TextEntry::make('mime_type'),
- TextEntry::make('collection_name'),
- TextEntry::make('size')
- ->formatStateUsing(fn ($state) => number_format($state / 1024, 2).' KB'),
- TextEntry::make('model_type')
- ->label('Attached to Model'),
- TextEntry::make('model_id'),
- TextEntry::make('custom_properties')
- ->formatStateUsing(fn ($state) => json_encode($state, JSON_PRETTY_PRINT)),
- TextEntry::make('created_at')
- ->dateTime(),
- TextEntry::make('updated_at')
- ->dateTime(),
- ]);
- }
-}
diff --git a/app/Filament/Resources/Media/Tables/MediaTable.php b/app/Filament/Resources/Media/Tables/MediaTable.php
deleted file mode 100644
index dba76b0..0000000
--- a/app/Filament/Resources/Media/Tables/MediaTable.php
+++ /dev/null
@@ -1,86 +0,0 @@
-modifyQueryUsing(fn ($query) => $query->where('collection_name', '!=', 'avatars'))
- ->columns([
- ImageColumn::make('url')
- ->label('Preview')
- ->getStateUsing(fn ($record) =>
- // Prefer the stored path produced by Filament's FileUpload (saved in custom_properties),
- // fall back to Spatie's getUrl() when no stored_path exists.
- ($record->getCustomProperty('stored_path'))
- ? Storage::url($record->getCustomProperty('stored_path'))
- : $record->getUrl()
- )
- ->height(40)
- ->width(40),
- TextColumn::make('name')
- ->searchable(),
- TextColumn::make('file_name')
- ->searchable(),
- TextColumn::make('collection_name')
- ->badge(),
- TextColumn::make('mime_type'),
- TextColumn::make('size')
- ->formatStateUsing(fn ($state) => number_format($state / 1024, 2).' KB'),
- TextColumn::make('created_at')
- ->dateTime(),
- ])
- ->filters([
- SelectFilter::make('collection_name')
- ->options([
- 'images' => 'Images',
- 'documents' => 'Documents',
- ]),
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make()
- ->action(function (Media $record) {
- // Delete the actual stored file path if we saved one, otherwise fall back to the Spatie path.
- $stored = $record->getCustomProperty('stored_path');
- if ($stored) {
- Storage::disk($record->disk)->delete($stored);
- } else {
- Storage::disk($record->disk)->delete($record->getPath());
- }
-
- $record->delete();
- }),
- ])
- ->toolbarActions([
- BulkActionGroup::make([
- DeleteBulkAction::make()
- ->action(function (Collection $records) {
- $records->each(function (Media $record) {
- $stored = $record->getCustomProperty('stored_path');
- if ($stored) {
- Storage::disk($record->disk)->delete($stored);
- } else {
- Storage::disk($record->disk)->delete($record->getPath());
- }
- $record->delete();
- });
- }),
- ]),
- ]);
- }
-}
diff --git a/app/Livewire/GalleryPicker.php b/app/Livewire/GalleryPicker.php
deleted file mode 100644
index c1da485..0000000
--- a/app/Livewire/GalleryPicker.php
+++ /dev/null
@@ -1,108 +0,0 @@
-entryId = $entryId;
- $this->loadMediaItems();
- $this->showModal = true;
- }
-
- public function loadMediaItems(): void
- {
- $this->mediaItems = Media::where('model_type', 'temp')
- ->where('model_id', 0)
- ->where('disk', 'public')
- ->latest()
- ->limit(30)
- ->get(['id', 'file_name', 'name', 'disk'])
- ->toArray();
- }
-
- public function selectMedia($mediaId): void
- {
- $this->selectedMediaId = $mediaId;
- }
-
- public function copyToEntry(): void
- {
- if (!$this->selectedMediaId || !$this->entryId) {
- $this->dispatch('notify-error', ['message' => 'Please select an image']);
- return;
- }
-
- $sourceMedia = Media::find($this->selectedMediaId);
- if (!$sourceMedia) {
- $this->dispatch('notify-error', ['message' => 'Media not found']);
- return;
- }
-
- try {
- // Get the entry
- $entry = \App\Models\Entry::find($this->entryId);
- if (!$entry) {
- $this->dispatch('notify-error', ['message' => 'Entry not found']);
- return;
- }
-
- // Get source file
- $sourceFile = $sourceMedia->getPath();
- if (!file_exists($sourceFile)) {
- $this->dispatch('notify-error', ['message' => 'Source file not found']);
- return;
- }
-
- // Create temp copy
- $tempCopy = sys_get_temp_dir() . '/' . uniqid() . '_' . $sourceMedia->file_name;
- copy($sourceFile, $tempCopy);
-
- try {
- // Clear existing featured image
- $entry->clearMediaCollection('featured-image');
-
- // Add to entry
- $newMedia = $entry->addMedia($tempCopy)
- ->usingName($sourceMedia->name ?: pathinfo($sourceMedia->file_name, PATHINFO_FILENAME))
- ->usingFileName($sourceMedia->file_name)
- ->toMediaCollection('featured-image', 'public');
-
- // Close modal and notify
- $this->showModal = false;
- $this->selectedMediaId = null;
- $this->dispatch('media-selected', ['mediaId' => $newMedia->id, 'fileName' => $newMedia->file_name]);
- $this->dispatch('notify-success', ['message' => 'Image added to entry']);
- } finally {
- if (file_exists($tempCopy)) {
- unlink($tempCopy);
- }
- }
- } catch (\Exception $e) {
- $this->dispatch('notify-error', ['message' => 'Error: ' . $e->getMessage()]);
- }
- }
-
- public function closePicker(): void
- {
- $this->showModal = false;
- $this->selectedMediaId = null;
- }
-
- public function render()
- {
- return view('livewire.gallery-picker');
- }
-}
diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php
index 81aa43d..373a4be 100644
--- a/app/Providers/Filament/AdminPanelProvider.php
+++ b/app/Providers/Filament/AdminPanelProvider.php
@@ -10,8 +10,6 @@ use Filament\Pages\Dashboard;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
-use Filament\Support\Facades\FilamentView;
-use Filament\View\PanelsRenderHook;
use Filament\Widgets\AccountWidget;
use Filament\Widgets\FilamentInfoWidget;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
@@ -58,12 +56,4 @@ class AdminPanelProvider extends PanelProvider
Authenticate::class,
]);
}
-
- public function boot(): void
- {
- FilamentView::registerRenderHook(
- PanelsRenderHook::BODY_END,
- fn (): string => \Illuminate\Support\Facades\Blade::render('@vite("resources/js/app.js")'),
- );
- }
}
diff --git a/composer.json b/composer.json
index c67e0d1..4745dfb 100644
--- a/composer.json
+++ b/composer.json
@@ -8,6 +8,7 @@
"require": {
"php": "^8.2",
"filament/filament": "^4.0",
+ "filament/spatie-laravel-media-library-plugin": "^4.0",
"laravel/fortify": "^1.30",
"laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1",
diff --git a/resources/js/app.js b/resources/js/app.js
index 22e1c9c..b677733 100644
--- a/resources/js/app.js
+++ b/resources/js/app.js
@@ -1,48 +1 @@
console.log('App.js is loaded');
-
-document.addEventListener('livewire:init', () => {
- Livewire.on('insert-editor-content', (data) => {
- console.log('Received insert-editor-content data:', data);
- // Handle if data is an array
- const payload = Array.isArray(data) ? data[0] : data;
- const statePath = payload.statePath;
- const html = payload.html;
- console.log('Extracted statePath:', statePath, 'html:', html);
- // 1. Find the editor by its statePath
- const container = document.querySelector(`[wire\\:model="${statePath}"]`) || document.querySelector(`[statepath="${statePath}"]`);
- console.log('Container found:', container);
- const editorElement = container ? container.querySelector('.tiptap') : null;
- console.log('Editor element found:', editorElement);
-
- if (editorElement && editorElement.editor) {
- console.log('Inserting content:', html);
- // 2. Insert the HTML (the
tag) into the editor
- setTimeout(() => {
- editorElement.editor.chain().focus().insertContent(html).run();
- }, 500);
- } else {
- console.log('Editor not found or not initialized');
- // Fallback: try to find any .tiptap on the page
- const anyTiptap = document.querySelector('.tiptap');
- console.log('Any tiptap found:', anyTiptap);
- if (anyTiptap && anyTiptap.editor) {
- console.log('Inserting to any tiptap');
- setTimeout(() => {
- anyTiptap.editor.chain().focus().insertContent(html).run();
- }, 500);
- }
- }
- });
-
- Livewire.on('featured-image-added', (data) => {
- console.log('Received featured-image-added event:', data);
- const payload = Array.isArray(data) ? data[0] : data;
-
- // Reload the page to show the updated featured image
- setTimeout(() => {
- window.location.reload();
- }, 500);
- });
-});
-
-console.log('Testing if app.js is still running');
\ No newline at end of file
diff --git a/resources/views/components/featured-image-display.blade.php b/resources/views/components/featured-image-display.blade.php
deleted file mode 100644
index 437552f..0000000
--- a/resources/views/components/featured-image-display.blade.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- @php
- $record = $this->data;
- if ($record && isset($record['id'])) {
- $entry = \App\Models\Entry::find($record['id']);
- $media = $entry ? $entry->getMedia('featured-image') : [];
- } else {
- $media = [];
- }
- @endphp
-
-
-
- @if(count($media) > 0)
-
- @foreach($media as $item)
-
-
-
 }})
-
-
{{ $item->name }}
-
{{ $item->file_name }}
-
-
-
- @endforeach
-
- @else
-
No featured image selected
- @endif
-
-
diff --git a/resources/views/livewire/gallery-picker.blade.php b/resources/views/livewire/gallery-picker.blade.php
deleted file mode 100644
index 103b66b..0000000
--- a/resources/views/livewire/gallery-picker.blade.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- @if($showModal ?? false)
-
-
-
-
-
-
-
-
-
-
- Select Image from Gallery
-
-
-
-
- @if(empty($mediaItems ?? []))
-
No images in gallery
- @else
-
- @foreach($mediaItems ?? [] as $item)
-
- @endforeach
-
- @endif
-
-
-
-
-
-
-
-
-
- @endif
-