diff --git a/config/filament-email-templates.php b/config/filament-email-templates.php index c730c21..9c1fd42 100644 --- a/config/filament-email-templates.php +++ b/config/filament-email-templates.php @@ -24,6 +24,9 @@ //Default Logo 'logo' => 'media/email-templates/logo.png', + //Browsed Logo + 'browsed_logo' => 'media/email-templates/logos', + //Logo size in pixels -> 200 pixels high is plenty big enough. 'logo_width' => '500', 'logo_height' => '126', diff --git a/database/migrations/create_email_templates_table.php.stub b/database/migrations/create_email_templates_table.php.stub index b07a051..a1f4798 100644 --- a/database/migrations/create_email_templates_table.php.stub +++ b/database/migrations/create_email_templates_table.php.stub @@ -28,6 +28,9 @@ return new class extends Migration $table->string('preheader', 191)->nullable()->comment('Only shows on some email clients below subject line'); $table->string('title', 50)->nullable()->comment('First line of email h1 string'); $table->text('content')->nullable(); + $table->enum('logo_type', ['website_logo', 'browse_another', 'paste_url'])->default('website_logo'); + $table->string('logo_img', 191)->nullable(); + $table->string('logo_url', 191)->nullable(); $table->timestamps(); $table->softDeletes(); $table->unique(['key', 'language']); diff --git a/resources/views/email/parts/_body.blade.php b/resources/views/email/parts/_body.blade.php index f17568d..bee5871 100644 --- a/resources/views/email/parts/_body.blade.php +++ b/resources/views/email/parts/_body.blade.php @@ -18,7 +18,7 @@ {{config('app.name')}} Logologo_type) { + case "browse_another": + $logo = 'storage/'.$this->logo_img; + break; + case "paste_url": + $logo = $this->logo_url; + break; + default: + $logo = config('filament-email-templates.logo'); + } return [ 'user' => $model->user, @@ -166,6 +182,7 @@ public function getEmailPreviewData() 'preHeaderText' => $this->replaceTokens($this->preheader, $model), 'title' => $this->replaceTokens($this->title, $model), 'theme' => $this->theme->colours, + 'logo' => $logo, ]; } diff --git a/src/Resources/EmailTemplateResource.php b/src/Resources/EmailTemplateResource.php index 8b91998..f43f853 100644 --- a/src/Resources/EmailTemplateResource.php +++ b/src/Resources/EmailTemplateResource.php @@ -23,6 +23,9 @@ use Visualbuilder\EmailTemplates\Contracts\FormHelperInterface; use Visualbuilder\EmailTemplates\Models\EmailTemplate; use Visualbuilder\EmailTemplates\Resources\EmailTemplateResource\Pages; +use Filament\Forms\Components\Radio; +use Filament\Forms\Components\FileUpload; +use Filament\Forms\Get; class EmailTemplateResource extends Resource { @@ -129,6 +132,33 @@ public static function form(Form $form): Form ->label(__('vb-email-templates::email-templates.form-fields-labels.content')) ->profile('default') ->default("

Dear ##user.firstname##,

"), + + Radio::make('logo_type') + ->label('Logo Type') + ->options([ + 'website_logo' => 'Website logo', + 'browse_another' => 'Browse another', + 'paste_url' => 'Paste url', + ]) + ->default('website_logo') + ->inline() + ->live(), + + FileUpload::make('logo_img') + ->label('Logo') + ->hint('Browse image') + ->hidden(fn (Get $get) => $get('logo_type') !== 'browse_another') + ->directory(config('filament-email-templates.browsed_logo')) + ->image() + ->required(), + + TextInput::make('logo_url') + ->label('Logo') + ->hint('Paste image url here') + ->placeholder('https://www.example.com/media/test.png') + ->hidden(fn (Get $get) => $get('logo_type') !== 'paste_url') + ->activeUrl() + ->required(), ] ),