Skip to content

Commit

Permalink
Preview mail in PDF
Browse files Browse the repository at this point in the history
  • Loading branch information
Baspa committed Sep 6, 2024
1 parent 2ad47f0 commit 9439887
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 16 deletions.
1 change: 1 addition & 0 deletions resources/views/mails/preview.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<iframe src="{{ route('mail.preview', ['mail' => $mail->id]) }}" width="100%" height="700"></iframe>
6 changes: 6 additions & 0 deletions routes/web.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?php

use Illuminate\Support\Facades\Route;
use Vormkracht10\FilamentMails\Controllers\MailPreviewController;

Route::get('/mail-preview/{mail}', MailPreviewController::class)->name('mail.preview');
16 changes: 16 additions & 0 deletions src/Controllers/MailPreviewController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace Vormkracht10\FilamentMails\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Vormkracht10\Mails\Models\Mail;

class MailPreviewController extends Controller
{
public function __invoke(Request $request)
{
$mail = Mail::find($request->mail);
return response($mail->html);

Check failure on line 14 in src/Controllers/MailPreviewController.php

View workflow job for this annotation

GitHub Actions / phpstan

Access to an undefined property Illuminate\Database\Eloquent\Collection<int, Vormkracht10\Mails\Models\Mail>|Vormkracht10\Mails\Models\Mail::$html.
}
}
3 changes: 2 additions & 1 deletion src/FilamentMailsPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

namespace Vormkracht10\FilamentMails;

use Filament\Contracts\Plugin;
use Filament\Panel;
use Filament\Contracts\Plugin;
use Filament\Support\Colors\Color;
use Filament\Support\Enums\MaxWidth;

class FilamentMailsPlugin implements Plugin
{
Expand Down
2 changes: 2 additions & 0 deletions src/FilamentMailsServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ public function configurePackage(Package $package): void
if (file_exists($package->basePath('/../resources/views'))) {
$package->hasViews(static::$viewNamespace);
}

$package->hasRoute('web');
}

public function packageRegistered(): void {}
Expand Down
3 changes: 2 additions & 1 deletion src/Resources/EventResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class EventResource extends Resource
{
protected static ?string $model = MailEvent::class;

protected static ?string $slug = 'events';
protected static ?string $slug = 'mails/events';

protected static ?string $recordTitleAttribute = 'subject';

Expand Down Expand Up @@ -178,6 +178,7 @@ public static function table(Table $table): Table
})
->searchable(),
Tables\Columns\TextColumn::make('mail.subject')
->url(fn (MailEvent $record) => route('filament.admin.resources.mails.view', $record->mail))
->label(__('Subject'))
->searchable(),
Tables\Columns\TextColumn::make('occurred_at')
Expand Down
38 changes: 24 additions & 14 deletions src/Resources/MailResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,28 @@

namespace Vormkracht10\FilamentMails\Resources;

use Filament\Forms\Components\TextInput;
use Filament\Infolists\Components\Grid;
use Filament\Infolists\Components\RepeatableEntry;
use Filament\Infolists\Components\Section;
use Filament\Infolists\Components\Tabs;
use Filament\Infolists\Components\Tabs\Tab;
use Filament\Infolists\Components\TextEntry;
use Filament\Infolists\Infolist;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Actions\Action;
use Illuminate\View\View;
use Filament\Tables\Table;
use Filament\Infolists\Infolist;
use Filament\Resources\Resource;
use Illuminate\Support\Collection;
use Filament\Tables\Actions\Action;
use Filament\Support\Enums\MaxWidth;
use Filament\Infolists\Components\Grid;
use Filament\Infolists\Components\Tabs;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Infolists\Components\Section;
use Vormkracht10\Mails\Jobs\ResendMailJob;
use Filament\Infolists\Components\Tabs\Tab;
use Vormkracht10\FilamentMails\Models\Mail;
use Vormkracht10\FilamentMails\Resources\MailResource\Pages\ListMails;
use Filament\Infolists\Components\TextEntry;
use Vormkracht10\Mails\Enums\WebhookEventType;
use Vormkracht10\Mails\Jobs\ResendMailJob;
use Filament\Infolists\Components\RepeatableEntry;
use Filament\Mails\Resources\MailResource\Pages\ViewMail;
use Filament\Infolists\Components\TextEntry\TextEntrySize;
use Vormkracht10\FilamentMails\Resources\MailResource\Pages\ListMails;

class MailResource extends Resource
{
Expand Down Expand Up @@ -176,7 +180,10 @@ public static function infolist(Infolist $infolist): Infolist
TextEntry::make('html')
->hiddenLabel()
->label(__('HTML Content'))
->html()
->formatStateUsing(fn (string $state, Mail $record): View => view(
'filament-mails::mails.preview',
['html' => $state, 'mail' => $record],
))
->columnSpanFull(),
])->columnSpanFull(),
Tab::make('HTML')
Expand Down Expand Up @@ -208,6 +215,8 @@ public static function infolist(Infolist $infolist): Infolist
public static function table(Table $table): Table
{
return $table
->recordAction('view')
->recordUrl(null)
->defaultSort('created_at', 'desc')
->columns([
Tables\Columns\TextColumn::make('status')
Expand Down Expand Up @@ -330,6 +339,7 @@ public static function getPages(): array
{
return [
'index' => ListMails::route('/'),
'view' => ViewMail::route('/{record}/view'),
];
}

Expand Down
11 changes: 11 additions & 0 deletions src/Resources/MailResource/Pages/ViewMail.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Filament\Mails\Resources\MailResource\Pages;

use Filament\Resources\Pages\ViewRecord;
use Vormkracht10\FilamentMails\Resources\MailResource;

class ViewMail extends ViewRecord
{
protected static string $resource = MailResource::class;
}

0 comments on commit 9439887

Please sign in to comment.