Fixes for plain email templates

This commit is contained in:
David Bomba 2022-03-04 10:55:02 +11:00
parent 6fbaa209a7
commit 7afb9f9bb9
12 changed files with 869 additions and 654 deletions

View File

@ -33,6 +33,10 @@ class BaseEmailEngine implements EngineInterface
public $invitation; public $invitation;
public $text_body;
public $text_footer;
public function setFooter($footer) public function setFooter($footer)
{ {
$this->footer = $footer; $this->footer = $footer;
@ -105,6 +109,13 @@ class BaseEmailEngine implements EngineInterface
return $this; return $this;
} }
public function setTextBody($text)
{
$this->text_body = $text;
return $this;
}
public function getSubject() public function getSubject()
{ {
return $this->subject; return $this->subject;
@ -148,11 +159,37 @@ class BaseEmailEngine implements EngineInterface
public function setInvitation($invitation) public function setInvitation($invitation)
{ {
$this->invitation = $invitation; $this->invitation = $invitation;
return $this;
} }
public function getInvitation() public function getInvitation()
{ {
return $this->invitation; return $this->invitation;
} }
public function getTextBody()
{
return $this->text_body;
}
private function replaceEntities($content)
{
$find = [
'<p>',
'</p>',
'<div class="center">',
'<\div>',
];
$replace = [
'',
'\n\n',
'',
'\n\n',
];
return str_replace($find, $replace, $content);
}
} }

View File

@ -93,6 +93,18 @@ class CreditEmailEngine extends BaseEmailEngine
); );
} }
$text_body = trans(
'texts.credit_message',
[
'credit' => $this->credit->number,
'company' => $this->credit->company->present()->name(),
'amount' => Number::formatMoney($this->credit->balance, $this->client),
],
null,
$this->client->locale()
) . "\n\n" . $this->invitation->getLink();
$this->setTemplate($this->client->getSetting('email_style')) $this->setTemplate($this->client->getSetting('email_style'))
->setContact($this->contact) ->setContact($this->contact)
->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine ->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine
@ -101,7 +113,8 @@ class CreditEmailEngine extends BaseEmailEngine
->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_credit').'</a>') ->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_credit').'</a>')
->setViewLink($this->invitation->getLink()) ->setViewLink($this->invitation->getLink())
->setViewText(ctrans('texts.view_credit')) ->setViewText(ctrans('texts.view_credit'))
->setInvitation($this->invitation); ->setInvitation($this->invitation)
->setTextBody($text_body);
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->credit->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { if ($this->client->getSetting('pdf_email_attachment') !== false && $this->credit->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {

View File

@ -46,4 +46,7 @@ interface EngineInterface
public function getViewText(); public function getViewText();
public function build(); public function build();
public function getTextBody();
} }

View File

@ -79,6 +79,17 @@ class InvoiceEmailEngine extends BaseEmailEngine
} }
$text_body = trans(
'texts.invoice_message',
[
'invoice' => $this->invoice->number,
'company' => $this->invoice->company->present()->name(),
'amount' => Number::formatMoney($this->invoice->balance, $this->client),
],
null,
$this->client->locale()
) . "\n\n" . $this->invitation->getLink();
if (is_array($this->template_data) && array_key_exists('subject', $this->template_data) && strlen($this->template_data['subject']) > 0) { if (is_array($this->template_data) && array_key_exists('subject', $this->template_data) && strlen($this->template_data['subject']) > 0) {
$subject_template = $this->template_data['subject']; $subject_template = $this->template_data['subject'];
nlog("subject = template data"); nlog("subject = template data");
@ -111,7 +122,8 @@ class InvoiceEmailEngine extends BaseEmailEngine
->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_invoice').'</a>') ->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_invoice').'</a>')
->setViewLink($this->invitation->getLink()) ->setViewLink($this->invitation->getLink())
->setViewText(ctrans('texts.view_invoice')) ->setViewText(ctrans('texts.view_invoice'))
->setInvitation($this->invitation); ->setInvitation($this->invitation)
->setTextBody($text_body);
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->invoice->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { if ($this->client->getSetting('pdf_email_attachment') !== false && $this->invoice->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {

View File

@ -94,6 +94,18 @@ class QuoteEmailEngine extends BaseEmailEngine
); );
} }
$text_body = trans(
'texts.quote_message',
[
'quote' => $this->quote->number,
'company' => $this->quote->company->present()->name(),
'amount' => Number::formatMoney($this->quote->amount, $this->client),
],
null,
$this->client->locale()
) . "\n\n" . $this->invitation->getLink();
$this->setTemplate($this->client->getSetting('email_style')) $this->setTemplate($this->client->getSetting('email_style'))
->setContact($this->contact) ->setContact($this->contact)
->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine ->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine
@ -102,7 +114,8 @@ class QuoteEmailEngine extends BaseEmailEngine
->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_quote').'</a>') ->setFooter("<a href='{$this->invitation->getLink()}'>".ctrans('texts.view_quote').'</a>')
->setViewLink($this->invitation->getLink()) ->setViewLink($this->invitation->getLink())
->setViewText(ctrans('texts.view_quote')) ->setViewText(ctrans('texts.view_quote'))
->setInvitation($this->invitation); ->setInvitation($this->invitation)
->setTextBody($text_body);
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->quote->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { if ($this->client->getSetting('pdf_email_attachment') !== false && $this->quote->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {

View File

@ -92,12 +92,10 @@ class TemplateEmail extends Mailable
$this->bcc(explode(",",str_replace(" ", "", $settings->bcc_email)));//remove whitespace if any has been inserted. $this->bcc(explode(",",str_replace(" ", "", $settings->bcc_email)));//remove whitespace if any has been inserted.
$this->subject($this->build_email->getSubject()) $this->subject($this->build_email->getSubject())
->text('email.template.plain', [ ->text('email.template.text', [
'body' => $this->build_email->getBody(), 'text_body' => $this->build_email->getTextBody(),
'footer' => $this->build_email->getFooter(),
'whitelabel' => $this->client->user->account->isPaid() ? true : false, 'whitelabel' => $this->client->user->account->isPaid() ? true : false,
'settings' => $settings, 'settings' => $settings,
'unsubscribe_link' => $this->invitation ? $this->invitation->getUnsubscribeLink() : '',
]) ])
->view($template_name, [ ->view($template_name, [
'greeting' => ctrans('texts.email_salutation', ['name' => $this->contact->present()->name()]), 'greeting' => ctrans('texts.email_salutation', ['name' => $this->contact->present()->name()]),
@ -111,7 +109,6 @@ class TemplateEmail extends Mailable
'company' => $company, 'company' => $company,
'whitelabel' => $this->client->user->account->isPaid() ? true : false, 'whitelabel' => $this->client->user->account->isPaid() ? true : false,
'logo' => $this->company->present()->logo($settings), 'logo' => $this->company->present()->logo($settings),
'unsubscribe_link' => $this->invitation ? $this->invitation->getUnsubscribeLink() : '',
]) ])
->withSwiftMessage(function ($message) use($company){ ->withSwiftMessage(function ($message) use($company){
$message->getHeaders()->addTextHeader('Tag', $company->company_key); $message->getHeaders()->addTextHeader('Tag', $company->company_key);

View File

@ -26,7 +26,7 @@
], ],
"type": "project", "type": "project",
"require": { "require": {
"php": "^7.4|^8", "php": "^8.0",
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-libxml": "*", "ext-libxml": "*",
@ -64,6 +64,7 @@
"league/flysystem-aws-s3-v3": "~1.0", "league/flysystem-aws-s3-v3": "~1.0",
"league/flysystem-cached-adapter": "^1.1", "league/flysystem-cached-adapter": "^1.1",
"league/fractal": "^0.17.0", "league/fractal": "^0.17.0",
"league/html-to-markdown": "^5.1",
"league/omnipay": "^3.1", "league/omnipay": "^3.1",
"livewire/livewire": "^2.6", "livewire/livewire": "^2.6",
"mollie/mollie-api-php": "^2.36", "mollie/mollie-api-php": "^2.36",

1399
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
@component('email.template.admin', ['logo' => $logo, 'settings' => $settings])
<div class="center">
<h1>{{ ctrans('texts.credits_backup_subject') }}</h1>
<p>{{ ctrans('texts.download_timeframe') }}</p>
<a target="_blank" class="button" href="{{ $url }}">
{{ ctrans('texts.download') }}
</a>
</div>
@endcomponent

View File

@ -0,0 +1,10 @@
@component('email.template.admin', ['logo' => $logo, 'settings' => $settings])
<div class="center">
<h1>{{ ctrans('texts.quotes_backup_subject') }}</h1>
<p>{{ ctrans('texts.download_timeframe') }}</p>
<a target="_blank" class="button" href="{{ $url }}">
{{ ctrans('texts.download') }}
</a>
</div>
@endcomponent

View File

@ -177,9 +177,6 @@
</p> </p>
@endif @endif
</div> </div>
@if(isset($unsubscribe_link))
<p><a href="{{$unsubscribe_link}}">{{ ctrans('texts.unsubscribe') }}</a></p>
@endif
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -0,0 +1,7 @@
{!! $text_body !!}
@isset($whitelabel)
@if(!$whitelabel)
{{ ctrans('texts.ninja_email_footer', ['site' => 'https://invoiceninja.com']) }}
@endif
@endisset