1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 21:22:58 +01:00

Merge pull request #4709 from beganovich/v5-1801-refactor-email-templates

(v5) Refactor email templates
This commit is contained in:
Benjamin Beganović 2021-01-19 11:07:39 +01:00 committed by GitHub
commit 5dd38421e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 268 additions and 468 deletions

View File

@ -123,7 +123,7 @@ class HtmlEngine
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.invoice_terms')];
$data['$terms'] = &$data['$entity.terms'];
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')];
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')];
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')];
}
@ -132,7 +132,7 @@ class HtmlEngine
$data['$number'] = ['value' => $this->entity->number ?: '&nbsp;', 'label' => ctrans('texts.quote_number')];
$data['$entity.terms'] = ['value' => $this->entity->terms ?: '&nbsp;', 'label' => ctrans('texts.quote_terms')];
$data['$terms'] = &$data['$entity.terms'];
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')];
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')];
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_quote')];
}
@ -141,7 +141,7 @@ class HtmlEngine
$data['$number'] = ['value' => $this->entity->number ?: '&nbsp;', 'label' => ctrans('texts.credit_number')];
$data['$entity.terms'] = ['value' => $this->entity->terms ?: '&nbsp;', 'label' => ctrans('texts.credit_terms')];
$data['$terms'] = &$data['$entity.terms'];
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')];
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')];
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
// $data['$view_link'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
}

View File

@ -38,7 +38,6 @@
"composer/composer": "^2",
"czproject/git-php": "^3.17",
"doctrine/dbal": "^2.10",
"fedeisas/laravel-mail-css-inliner": "^3",
"fideloper/proxy": "^4.2",
"fzaninotto/faker": "^1.4",
"google/apiclient": "^2.7",

62
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "0afe2d541cb6e16cfb9d29faf3425c2d",
"content-hash": "94ab2953278081e3fdf663e1e7cf14c4",
"packages": [
{
"name": "asgrim/ofxparser",
@ -1657,66 +1657,6 @@
],
"time": "2020-12-29T14:50:06+00:00"
},
{
"name": "fedeisas/laravel-mail-css-inliner",
"version": "3.1",
"source": {
"type": "git",
"url": "https://github.com/fedeisas/laravel-mail-css-inliner.git",
"reference": "263f395b46ef9666151ac78daf429632b0b2e2c3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fedeisas/laravel-mail-css-inliner/zipball/263f395b46ef9666151ac78daf429632b0b2e2c3",
"reference": "263f395b46ef9666151ac78daf429632b0b2e2c3",
"shasum": ""
},
"require": {
"ext-dom": "*",
"illuminate/mail": "^7.4 || ^8.0",
"illuminate/support": "^7.4 || ^8.0",
"php": "^7.2.5",
"tijsverkoyen/css-to-inline-styles": "~2.0"
},
"require-dev": {
"phpunit/phpunit": "^8.5",
"swiftmailer/swiftmailer": "^6.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Fedeisas\\LaravelMailCssInliner\\LaravelMailCssInlinerServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Fedeisas\\LaravelMailCssInliner\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fede Isas",
"email": "fedeisas@hotmail.com"
}
],
"description": "Inline the CSS of your HTML emails using Laravel",
"keywords": [
"css",
"laravel",
"mailer"
],
"support": {
"issues": "https://github.com/fedeisas/laravel-mail-css-inliner/issues",
"source": "https://github.com/fedeisas/laravel-mail-css-inliner/tree/3.1"
},
"time": "2020-09-12T05:00:14+00:00"
},
{
"name": "fideloper/proxy",
"version": "4.4.1",

View File

@ -1,22 +1,19 @@
@component('email.template.master', ['design' => 'light'])
@component('email.template.master', ['design' => 'light', 'whitelabel' => false])
@slot('header')
@component('email.components.header', ['p' => '', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
Hello!
@endcomponent
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@endslot
<p>You are receiving this email because we received a password reset request for your account.</p>
You are receiving this email because we received a password reset request for your account.
<a href="{{ $link }}" target="_blank" class="button">
Reset Password
</a>
@component('email.components.button', ['url' => $link, 'show_link' => true])
Reset Password
@endcomponent
<p>
If youre having trouble clicking the "Reset Password" button, copy and paste the URL below into your web
browser:
</p>
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '&copy; InvoiceNinja'])
If youre having trouble clicking the "Reset Password" button, copy and paste the URL below into your web browser:
<a href="{{ $link }}">{{ $link }}</a>
@endcomponent
@endcomponent

View File

@ -1,35 +1,12 @@
@component('mail::layout')
@component('email.template.master', ['design' => 'light', 'whitelabel' => false])
{{-- Header --}}
@slot('header')
@component('mail::header', ['url' => config('app.url')])
Header Title
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
<p>{{ ctrans('texts.confirmation_message') }}</p>
<a href="{{ url("/user/confirm/{$user->confirmation_code}") }}" target="_blank" class="button">
{{ ctrans('texts.confirm') }}
</a>
@endcomponent
@endslot
{{-- Body --}}
{{ $user }}
trans('texts.confirmation_message')
@component('mail::button', ['url' => url("/user/confirm/{$user->confirmation_code}")])
trans('texts.confirm')
@endcomponent
{{-- Subcopy --}}
@isset($subcopy)
@slot('subcopy')
@component('mail::subcopy')
{{ $subcopy }}
@endcomponent
@endslot
@endisset
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
© {{ date('Y') }} {{ config('ninja.app_name') }}.
@endcomponent
@endslot
@endcomponent

View File

@ -1,14 +1,3 @@
<div id="header" class="border-b {{ isset($logo) ? 'p-6' : '' }} flex justify-center">
@isset($logo)
<img src="{{ $logo }}" style="height: 6rem;">
@endisset
</div>
<div class="flex flex-col items-center mt-8 mb-4">
<h1 id="title" class="text-2xl md:text-3xl mt-5">
{{ $slot }}
</h1>
@isset($p)
{!! $p !!}
@endisset
</div>
@isset($logo)
<img src="{{ $logo }}" style="height: 4rem;">
@endisset

View File

@ -1,82 +1,56 @@
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@slot('header')
@component('email.components.header')
Import completed
@endcomponent
@endslot
<h1>Import completed</h1>
<p>Hello, here is the output of your recent import job.</p>
@slot('greeting')
Hello,
@endslot
@if(isset($clients) && count($clients) >=1)
<h3>Clients Imported: {{ count($clients) }} </h3>
@endif
Here is the output of your recent import job. <br><br>
@if(isset($errors['clients']) && count($errors['clients']) >=1)
<h3>Client Errors</h3>
@if(isset($clients) && count($clients) >=1)
<ul>
@foreach($errors['clients'] as $error)
<li>{{ $error['client'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
<h3>Clients Imported: {{ count($clients) }} </h3>
@if(isset($invoices) && count($invoices) >=1)
@endif
<h3>Invoices Imported: {{ count($invoices) }} </h3>
@if(isset($errors['clients']) && count($errors['clients']) >=1)
@endif
<h3>Client Errors</h3>
@if(isset($errors['invoices']) && count($errors['invoices']) >=1)
<h3>Invoices Errors</h3>
<ul>
@foreach($errors['clients'] as $error)
<li>{{ $error['client'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
<ul>
@foreach($errors['invoices'] as $error)
<li>{{ $error['invoice'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
@if(isset($invoices) && count($invoices) >=1)
@if(isset($products) && count($products) >=1)
<h3>Products Imported: {{ count($products) }} </h3>
@endif
<h3>Invoices Imported: {{ count($invoices) }} </h3>
@if(isset($errors['products']) && count($errors['products']) >=1)
<h3>Client Errors</h3>
@endif
<ul>
@foreach($errors['products'] as $error)
<li>{{ $error['product'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
@if(isset($errors['invoices']) && count($errors['invoices']) >=1)
<a href="{{ url('/') }}" target="_blank" class="button">Visit portal</a>
<h3>Invoices Errors</h3>
<ul>
@foreach($errors['invoices'] as $error)
<li>{{ $error['invoice'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
@if(isset($products) && count($products) >=1)
<h3>Products Imported: {{ count($products) }} </h3>
@endif
@if(isset($errors['products']) && count($errors['products']) >=1)
<h3>Client Errors</h3>
<ul>
@foreach($errors['products'] as $error)
<li>{{ $error['product'] }} - {{ $error['error'] }}</li>
@endforeach
</ul>
@endif
@component('email.components.button', ['url' => url('/')])
Visit portal
<p>Thank you, <br/> Invoice Ninja.</p>
@endcomponent
@slot('signature')
Thank you, <br>
Invoice Ninja
@endslot
@slot('footer')
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '&copy; InvoiceNinja'])
For any info, please visit InvoiceNinja.
@endcomponent
@endslot
@endcomponent

View File

@ -1,26 +1,10 @@
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@slot('header')
@component('email.components.header', ['p' => 'Payment for your invoice has been completed!', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
Invoice paid
@endcomponent
<h1>Payment for your invoice has been completed!</h1>
<p>We want to inform you that payment was completed for your invoice.</p>
@endslot
@slot('greeting')
Hello,
@endslot
We want to inform you that payment was completed for your invoice. Amount: $10,000.00.
@component('email.components.button', ['url' => 'https://invoiceninja.com', 'show_link' => true])
Visit InvoiceNinja
<a href="https://invoiceninja.com" target="_blank" class="button">Visit Invoice Ninja</a>
@endcomponent
@slot('below_card')
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '&copy; InvoiceNinja'])
For any info, please visit InvoiceNinja.
@endcomponent
@endslot
@endcomponent

View File

@ -1,31 +1,13 @@
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@component('email.components.header')
Migration completed
@endcomponent
@endslot
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@slot('greeting')
Hello,
@endslot
<h1>Migration completed</h1>
<p>We're happy to inform you that migration has been completed successfully. It is ready for you to review it.</p>
We're happy to inform you that migration has been completed successfully. It is ready for you to review it.
<a href="{{ url('/') }}" target="_blank" class="button">Visit portal</a>
@component('email.components.button', ['url' => url('/')])
Visit portal
<p>Thank you, <br/> Invoice Ninja</p>
@endcomponent
@slot('signature')
Thank you, <br>
Invoice Ninja
@endslot
@slot('footer')
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '&copy; InvoiceNinja'])
For any info, please visit InvoiceNinja.
@endcomponent
@endslot
@endcomponent

View File

@ -1,4 +1,4 @@
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@component('email.components.header')
@ -19,7 +19,7 @@ Looks like you already migrated your data to V2 version of the Invoice Ninja. In
@slot('signature')
Thank you, <br>
Invoice Ninja
Invoice Ninja
@endslot
@slot('footer')
@ -28,4 +28,4 @@ Invoice Ninja
@endcomponent
@endslot
@endcomponent
@endcomponent

View File

@ -1,7 +1,13 @@
Whoops!
Looks like your migration failed.
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
<pre>
{!! $exception->getMessage() !!}
{!! $content !!}
</pre>
<h1>Whoops, migration failed.</h1>
<p>Looks like your migration failed. Here's the error message:</p>
<pre>
{!! $exception->getMessage() !!}
{!! $content !!}
</pre>
@endcomponent

View File

@ -1,26 +1,10 @@
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@slot('header')
@component('email.components.header', ['p' => 'Your quote was approved!', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
Quote approved
@endcomponent
<h1>Quote approved!</h1>
<p>We want to inform you that quote was approved.</p>
@endslot
@slot('greeting')
Hello,
@endslot
We want to inform you that quote was approved. Put nicer text here.
@component('email.components.button', ['url' => 'https://invoiceninja.com', 'show_link' => true])
Visit InvoiceNinja
<a href="https://invoiceninja.com" target="_blank" class="button">Visit Invoice Ninja</a>
@endcomponent
@slot('below_card')
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '&copy; InvoiceNinja'])
For any info, please visit InvoiceNinja.
@endcomponent
@endslot
@endcomponent

View File

@ -1,30 +1,7 @@
@component('mail::layout')
{{-- Header --}}
@slot('header')
@component('mail::header', ['url' => config('app.url')])
Header Title
@endcomponent
@endslot
{{-- Body --}}
{{ $message }}
{{-- Subcopy --}}
@isset($subcopy)
@slot('subcopy')
@component('mail::subcopy')
{{ $subcopy }}
@endcomponent
@endslot
@endisset
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
© {{ date('Y') }} {{ config('ninja.app_name') }}.
@endcomponent
@endslot
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
{{ $message }}
@endcomponent

View File

@ -1,40 +1,19 @@
@component('mail::layout')
{{-- Header --}}
@slot('header')
@component('mail::header', ['url' => config('app.url')])
Header Title
@endcomponent
@endslot
{{-- Body --}}
{{ $message }}
{!! str_replace('\n', '<br>', $system_info) !!}
@if(@count($laravel_log) > 0)
<details>
<summary>{{ ctrans('texts.display_log') }}</summary>
@foreach($laravel_log as $log_line)
<small>{{ $log_line }}</small> <br>
@endforeach
</details>
@endif
{{-- Subcopy --}}
@isset($subcopy)
@slot('subcopy')
@component('mail::subcopy')
{{ $subcopy }}
@endcomponent
@endslot
@endisset
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
© {{ date('Y') }} {{ config('ninja.app_name') }}.
@endcomponent
@endslot
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
@slot('header')
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
{{-- Body --}}
{{ $message }}
{!! str_replace('\n', '<br>', $system_info) !!}
@if(@count($laravel_log) > 0)
<details>
<summary>{{ ctrans('texts.display_log') }}</summary>
@foreach($laravel_log as $log_line)
<small>{{ $log_line }}</small> <br>
@endforeach
</details>
@endif
@endcomponent

View File

@ -1,22 +1,15 @@
@component('email.template.master', ['design' => 'dark', 'settings' => $settings, 'whitelabel' => $whitelabel])
@slot('header')
@component('email.components.header', ['p' => $body, 'logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
@if(isset($title))
{{$title}}
@slot('header')
@include('email.components.header', ['logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
{!! $body !!}
@slot('below_card')
@if($signature)
{{ $signature }}
@endif
@endcomponent
@if($footer)
@component('email.components.button', ['url' => $view_link])
{{$view_text}}
@endcomponent
@endif
@endslot
@endslot
@endcomponent

View File

@ -1,30 +1,15 @@
@component('email.template.master', ['design' => 'light', 'settings' => $settings, 'whitelabel' => $whitelabel])
@slot('header')
@component('email.components.header', ['p' => $body, 'logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
@if(isset($title))
{{$title}}
@endif
@endcomponent
@if($footer)
@component('email.components.button', ['url' => $view_link])
{{$view_text}}
@endcomponent
@endif
@include('email.components.header', ['logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
@endslot
@slot('below_card')
{!! $body !!}
@slot('below_card')
@if($signature)
{{ $signature }}
@endif
@endslot
@endslot
@endcomponent

View File

@ -1,78 +1,95 @@
@php
if(!isset($design)) $design = 'light';
if(!isset($design)) {
$design = 'light';
}
@endphp
<!DOCTYPE html>
<html lang="en">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title')</title>
</head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<style>
:root {
@isset($settings)
--primary-color: {{ $settings->primary_color }};
@else
--primary-color: #4caf50;
@endisset
}
:root {
--primary-color: {{ isset($settings) ? $settings->primary_color : '#4caf50' }};
}
.border-primary {
border-color: var(--primary-color);
}
.primary-color-bg {
background-color: var(--primary-color);
}
#email-content h1, h2, h3, h4 {
display: block;
color: {{ $design == 'light' ? 'black' : 'white' }};
padding-bottom: 20px;
padding-top: 20px;
}
#email-content p {
display: block;
color: {{ $design == 'light' ? 'black' : 'white' }};
padding-bottom: 20px;
padding-top: 20px;
}
.button {
background-color: var(--primary-color);
color: white;
padding: 10px 16px;
text-decoration: none;
}
#email-content a, .link {
word-break: break-all;
}
</style>
@if($design == 'dark')
<style>
* {
color: #cbd5e0 !important;
}
</style>
@endif
<body class="{{ $design == 'light' ? 'bg-gray-200' : 'bg-gray-800' }} my-10 font-sans {{ $design == 'light' ? 'text-gray-700' : 'text-gray-400' }}">
<div class="grid grid-cols-6">
<div class="col-span-4 col-start-2">
<div class="{{ $design == 'light' ? 'bg-white' : 'bg-gray-900' }} shadow border-t-2 {{ $design == 'light' ? 'border-primary' : 'border-gray-800' }}">
<div class="px-10 break-all">
{{ $header }}
</div>
<div id="text" class="flex flex-col px-10 py-6">
@isset($greeting)
{{ $greeting }}
@endisset
<div class="break-all">
{{ $slot}}
</div>
@isset($signature)
{{ $signature }}
@endisset
</div>
</div>
@isset($below_card)
<div id="bottomText" class="px-10 my-4 text-center">
{{ $below_card }}
</div>
@endisset
</div>
</div>
<!-- Whitelabel -->
@isset($whitelabel)
@if(!$whitelabel)
<div style="display: flex; flex-direction: row; justify-content: center; margin-top: 1rem; margin-bottom: 1rem;">
<a href="https://invoiceninja.com" target="_blank">
<img style="height: 4rem; {{ $design == 'dark' ? 'filter: invert(100%);' : '' }}" src="{{ asset('images/created-by-invoiceninja-new.png') }}" alt="Invoice Ninja">
</a>
</div>
@endif
@endif
<body style="margin: 0; padding: 0; background-color: {{ $design == 'light' ? '#F9FAFB' : '#111827' }};">
<table role="presentation" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="padding: 20px; font-family: Arial, sans-serif, 'Open Sans'">
<table align="center" cellpadding="0" cellspacing="0" width="600"
style="box-shadow: 0 1px 3px 0 rgba(0,0,0,.1), 0 1px 2px 0 rgba(0,0,0,.06)">
<tr>
<td align="center" bgcolor="#4caf50" class="primary-color-bg" style="padding: 40px 0 30px 0;">
{{ $header }}
</td>
</tr>
<tr>
<td bgcolor="{{ $design == 'light' ? '#ffffff' : '#1F2937'}}" style="padding: 40px 30px 40px 30px;">
<table cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;">
<tr>
<td align="center" id="email-content">
{{ $slot }}
</td>
</tr>
</table>
</td>
</tr>
<tr>
@isset($whitelabel)
@if(!$whitelabel)
<td bgcolor="{{ $design == 'light' ? '#ffffff' : '#1F2937'}}" style="padding-top: 20px; padding-bottom: 20px;" align="center">
<p style="margin: 0; border-top: 1px solid {{ $design == 'light' ? '#F3F4F6' : '#374151' }}; padding-top: 20px;">
<a href="https://invoiceninja.com" target="_blank">
<img
style="height: 4rem; {{ $design == 'dark' ? 'filter: invert(100%);' : '' }}"
src="{{ asset('images/created-by-invoiceninja-new.png') }}"
alt="Invoice Ninja">
</a>
</p>
</td>
@endif
@endif
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
</html>

View File

@ -1,30 +1,47 @@
<!DOCTYPE html>
<html lang="{{ App::getLocale() }}" class="bg-white">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Invoice Ninja</title>
</head>
<body class="bg-white p-4">
{!! $body !!}
@if($signature)
<div style="margin-top: 20px">
{!! $signature !!}
</div>
@endif
<body>
<table role="presentation" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="font-family: Arial, sans-serif, 'Open Sans'">
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="email-content">
{!! $body !!}
</td>
</tr>
</table>
</td>
</tr>
<tr>
@isset($whitelabel)
@if(!$whitelabel)
<td>
<p>
<a href="https://invoiceninja.com" target="_blank">
{{ __('texts.ninja_email_footer', ['site' => 'Invoice Ninja']) }}
</a>
</p>
</td>
@endif
@endif
</tr>
</table>
</td>
</tr>
</table>
</body>
<footer class="p-4">
{!! $footer !!}
</footer>
</html>
@if(!$whitelabel)
<div style="display: block; margin-top: 1rem; margin-bottom: 1rem;">
<a href="https://invoiceninja.com" target="_blank">
{{ __('texts.ninja_email_footer', ['site' => 'Invoice Ninja']) }}
</a>
</div>
@endif
</html>