From dba330bcb3b881308313a34ca4911ebb527b1b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 13 Apr 2021 16:43:35 +0200 Subject: [PATCH 1/7] wip --- .../Designs/Utilities/DesignHelpers.php | 10 + app/Utils/TemplateEngine.php | 18 +- composer.json | 1 + composer.lock | 159 +------- .../views/email/template/master.blade.php | 353 +++++++++++++----- 5 files changed, 291 insertions(+), 250 deletions(-) diff --git a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php index 3081a0c5595a..9f9e2e9033ed 100644 --- a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php +++ b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php @@ -16,6 +16,7 @@ use App\Utils\Traits\MakesHash; use DOMDocument; use DOMXPath; use Exception; +use League\CommonMark\CommonMarkConverter; trait DesignHelpers { @@ -308,4 +309,13 @@ trait DesignHelpers $this->client ); } + + public static function parseMarkdownToHtml(string $markdown): ?string + { + $converter = new CommonMarkConverter([ + 'allow_unsafe_links' => false, + ]); + + return $converter->convertToHtml($markdown); + } } diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index fb9b863e0949..31637e83853a 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -16,11 +16,13 @@ use App\Models\Client; use App\Models\ClientContact; use App\Models\Invoice; use App\Models\InvoiceInvitation; +use App\Services\PdfMaker\Designs\Utilities\DesignHelpers; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesInvoiceHtml; use App\Utils\Traits\MakesTemplateData; use DB; use League\CommonMark\CommonMarkConverter; +use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles; class TemplateEngine { @@ -162,17 +164,12 @@ class TemplateEngine $this->body = strtr($this->body, $data['labels']); $this->body = strtr($this->body, $data['values']); - $this->body = str_replace("\n", "
", $this->body); - +// $this->body = str_replace("\n", "
", $this->body); $this->subject = strtr($this->subject, $data['labels']); $this->subject = strtr($this->subject, $data['values']); - $converter = new CommonMarkConverter([ - 'allow_unsafe_links' => false, - ]); - - $this->body = $converter->convertToHtml($this->body); + $this->body = DesignHelpers::parseMarkdownToHtml($this->body); } private function renderTemplate() @@ -256,4 +253,11 @@ class TemplateEngine { DB::rollBack(); } + + private static function inlineMarkupCss(string $css, string $html): ?string + { + $inliner = new CssToInlineStyles(); + + return $inliner->convert($html, $css); + } } diff --git a/composer.json b/composer.json index 29da3c0fb585..12254fd48628 100644 --- a/composer.json +++ b/composer.json @@ -65,6 +65,7 @@ "sentry/sentry-laravel": "^2", "stripe/stripe-php": "^7.50", "symfony/http-client": "^5.2", + "tijsverkoyen/css-to-inline-styles": "^2.2", "turbo124/beacon": "^1.0", "turbo124/laravel-gmail": "^5", "webpatser/laravel-countries": "dev-master#75992ad", diff --git a/composer.lock b/composer.lock index 27906d3c6663..25bd1c789eee 100644 --- a/composer.lock +++ b/composer.lock @@ -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": "7ccb8d2434343dfb0ba62866f0ee919a", + "content-hash": "f01381d3d00f0bd84acbda078ad1b99e", "packages": [ { "name": "authorizenet/authorizenet", @@ -11718,103 +11718,6 @@ ], "time": "2021-01-25T15:34:13+00:00" }, - { - "name": "nunomaduro/larastan", - "version": "v0.7.3", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/larastan.git", - "reference": "9c515d46851dca5a99fc82c0a69392c362b7affd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/9c515d46851dca5a99fc82c0a69392c362b7affd", - "reference": "9c515d46851dca5a99fc82c0a69392c362b7affd", - "shasum": "" - }, - "require": { - "composer/composer": "^1.0 || ^2.0", - "ext-json": "*", - "illuminate/console": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/container": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/contracts": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/database": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/pipeline": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "mockery/mockery": "^0.9 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^0.12.83", - "symfony/process": "^4.3 || ^5.0" - }, - "require-dev": { - "orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0", - "phpunit/phpunit": "^7.3 || ^8.2 || ^9.3" - }, - "suggest": { - "orchestra/testbench": "^4.0 || ^5.0" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.6-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v0.7.3" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-04-12T11:01:46+00:00" - }, { "name": "openlss/lib-array2xml", "version": "1.0.0", @@ -12259,66 +12162,6 @@ }, "time": "2021-03-17T13:42:18+00:00" }, - { - "name": "phpstan/phpstan", - "version": "0.12.83", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "4a967cec6efb46b500dd6d768657336a3ffe699f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/4a967cec6efb46b500dd6d768657336a3ffe699f", - "reference": "4a967cec6efb46b500dd6d768657336a3ffe699f", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.83" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2021-04-03T15:35:45+00:00" - }, { "name": "phpunit/php-code-coverage", "version": "9.2.6", diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index c9cfad3a08cb..05304d60fe0c 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -2,113 +2,296 @@ if(!isset($design)) { $design = 'light'; } + $primary_color = isset($settings) ? $settings->primary_color : '#4caf50'; @endphp - - - + + - - + + + + + + + - + + + + +
+ {{ $header }} +
- - - - - - - @isset($whitelabel) - @if(!$whitelabel) - - @endif - @endif - -
- - - - - - - -
- {{ $header }} -
- - - + + +
- @yield('greeting') +
+ + + + + + + + + + + + +
+
+
+ + + +
+
+
{{ $slot }} - @yield('signature') - @yield('footer') -
-
-

- - Invoice Ninja - -

-
+{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{--
--}} + +{{--
--}} +{{-- --}} +{{-- --}} +{{-- Visit portal--}} +{{-- --}} +{{-- --}} +{{--
--}} + +{{--
--}} + +{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{-- --}} +{{--
--}} + +{{--
--}} +{{--

If you can't click on button copy following link: https://invoiceninja.com/example-url-to-copy

--}} +{{--
--}} + +{{--
--}} + + + + + + + + +
+ + + + + + + +
+   +
+ +
+ + + + + + + + +
+ + + + + +
+ + Image + +
+ +
+ + + + + + + + + + + + + + + From 325d39736f2dbf604cfb09ca021d20a918698cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 13 Apr 2021 17:07:34 +0200 Subject: [PATCH 2/7] wip --- app/Utils/TemplateEngine.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index 31637e83853a..7ed921c639da 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -198,6 +198,33 @@ class TemplateEngine $wrapper = str_replace('', $injection, $wrapper); } + +// $root = new DOMDocument(); +// $root->loadHTML(' +// +// +// +// +// +//
+//
+//
'); +// +// $node = new DOMDocument(); +// $node->loadXML('

This is my content

'); +// +// $node = $root->importNode($node->documentElement, true); +// +//// $root->documentElement->appendChild($node); +// +// $root->getElementById('content')->appendChild($node); +// $root->getElementById('content')->ownerDocument->saveHTML(); +// +// var_dump($root->getElementById('content')->ownerDocument->saveHTML($root->getElementsByTagName('table')->item(0))); + + $wrapper_document = new \DOMDocument(); + $wrapper_document->loadHTML($wrapper); + $data = [ 'subject' => $this->subject, 'body' => $this->body, From df6718a31e705587315e1ef635ac8cb37aae444a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Wed, 14 Apr 2021 16:09:37 +0200 Subject: [PATCH 3/7] wip --- app/Utils/TemplateEngine.php | 69 ++++++++++-------- .../views/email/template/master.blade.php | 72 +++++++------------ 2 files changed, 65 insertions(+), 76 deletions(-) diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index 7ed921c639da..eac2def3bf8a 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -198,36 +198,46 @@ class TemplateEngine $wrapper = str_replace('', $injection, $wrapper); } + $documents['wrapper'] = new \DOMDocument(); + $documents['wrapper']->loadHTML($wrapper); -// $root = new DOMDocument(); -// $root->loadHTML(' -// -// -// -// -// -//
-//
-//
'); -// -// $node = new DOMDocument(); -// $node->loadXML('

This is my content

'); -// -// $node = $root->importNode($node->documentElement, true); -// -//// $root->documentElement->appendChild($node); -// -// $root->getElementById('content')->appendChild($node); -// $root->getElementById('content')->ownerDocument->saveHTML(); -// -// var_dump($root->getElementById('content')->ownerDocument->saveHTML($root->getElementsByTagName('table')->item(0))); + $styles = $documents['wrapper']->getElementsByTagName('style')->item(0)->nodeValue; - $wrapper_document = new \DOMDocument(); - $wrapper_document->loadHTML($wrapper); + $documents['wrapper']->saveHTML(); + + $documents['body'] = new \DOMDocument(); + $documents['body']->loadHTML(empty($this->body) ? '
' : (new CssToInlineStyles())->convert($this->body, $styles)); + + $table_html =' + + + + + + +
+
+
'; + + foreach ($documents['body']->getElementsByTagName('body')->item(0)->childNodes as $element) { + $table = new \DOMDocument(); + + $table->loadHTML($table_html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + + $element = $table->importNode($element, true); + + $table->getElementById('table-content')->appendChild($element); + + $node = $documents['wrapper']->importNode($table->documentElement, true); + + $documents['wrapper']->getElementById('content-wrapper')->appendChild($node); + } + + $body = $documents['wrapper']->getElementById('content-wrapper')->ownerDocument->saveHTML($documents['wrapper']->getElementById('content-wrapper')); $data = [ 'subject' => $this->subject, - 'body' => $this->body, + 'body' => $body, 'wrapper' => $wrapper, 'raw_body' => $this->raw_body, 'raw_subject' => $this->raw_subject @@ -281,10 +291,13 @@ class TemplateEngine DB::rollBack(); } - private static function inlineMarkupCss(string $css, string $html): ?string + private static function cssToInlineStyles(string $css, string $html): ?string + { + return (new CssToInlineStyles())->convert($html, $css); + } + + private static function wrapElementsIntoTables() { - $inliner = new CssToInlineStyles(); - return $inliner->convert($html, $css); } } diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index 05304d60fe0c..09fc5069f0fc 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -198,40 +198,12 @@
+
+ {{ $slot }} +
- {{ $slot }} - -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{--
--}} - -{{--
--}} -{{-- --}} -{{-- --}} -{{-- Visit portal--}} -{{-- --}} -{{-- --}} -{{--
--}} - -{{--
--}} - -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{-- --}} -{{--
--}} - -{{--
--}} -{{--

If you can't click on button copy following link: https://invoiceninja.com/example-url-to-copy

--}} -{{--
--}} - -{{--
--}} + + @@ -255,25 +227,29 @@
- - - - + + +
+ @isset($whitelabel) + @if(!$whitelabel) + + + + - - -
- - - + +
+ + + - -
- Image + Image -
+
-
+
+ @endif + @endisset
From 331b49ff044f321f8e24999ae063a5129a28d687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 15 Apr 2021 15:56:20 +0200 Subject: [PATCH 4/7] wip --- app/Mail/TemplateEmail.php | 16 ++++++-- app/Utils/TemplateEngine.php | 79 ++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index 68350ecb1298..4c490c92e2af 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -14,7 +14,9 @@ namespace App\Mail; use App\Models\Client; use App\Models\ClientContact; use App\Models\User; +use App\Services\PdfMaker\Designs\Utilities\DesignHelpers; use App\Utils\HtmlEngine; +use App\Utils\TemplateEngine; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; @@ -53,6 +55,14 @@ class TemplateEmail extends Mailable $this->build_email->setBody(str_replace('$body', $this->build_email->getBody(), $this->client->getSetting('email_style_custom'))); } + $this->build_email->setBody( + DesignHelpers::parseMarkdownToHtml($this->build_email->getBody()) + ); + + $this->build_email->setBody( + TemplateEngine::wrapElementsIntoTables('
', $this->build_email->getBody()) + ); + $settings = $this->client->getMergedSettings(); $company = $this->client->company; @@ -64,10 +74,10 @@ class TemplateEmail extends Mailable } else $signature = $settings->email_signature; - + $this->from(config('mail.from.address'), $this->company->present()->name()); - - if (strlen($settings->bcc_email) > 1) + + if (strlen($settings->bcc_email) > 1) $this->bcc($settings->bcc_email, $settings->bcc_email); $this->subject($this->build_email->getSubject()) diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index eac2def3bf8a..e4add15e5748 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -198,46 +198,9 @@ class TemplateEngine $wrapper = str_replace('', $injection, $wrapper); } - $documents['wrapper'] = new \DOMDocument(); - $documents['wrapper']->loadHTML($wrapper); - - $styles = $documents['wrapper']->getElementsByTagName('style')->item(0)->nodeValue; - - $documents['wrapper']->saveHTML(); - - $documents['body'] = new \DOMDocument(); - $documents['body']->loadHTML(empty($this->body) ? '
' : (new CssToInlineStyles())->convert($this->body, $styles)); - - $table_html =' - - - - - - -
-
-
'; - - foreach ($documents['body']->getElementsByTagName('body')->item(0)->childNodes as $element) { - $table = new \DOMDocument(); - - $table->loadHTML($table_html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); - - $element = $table->importNode($element, true); - - $table->getElementById('table-content')->appendChild($element); - - $node = $documents['wrapper']->importNode($table->documentElement, true); - - $documents['wrapper']->getElementById('content-wrapper')->appendChild($node); - } - - $body = $documents['wrapper']->getElementById('content-wrapper')->ownerDocument->saveHTML($documents['wrapper']->getElementById('content-wrapper')); - $data = [ 'subject' => $this->subject, - 'body' => $body, + 'body' => self::wrapElementsIntoTables(strtr($wrapper, ['$body' => '']), $this->body), 'wrapper' => $wrapper, 'raw_body' => $this->raw_body, 'raw_subject' => $this->raw_subject @@ -291,13 +254,43 @@ class TemplateEngine DB::rollBack(); } - private static function cssToInlineStyles(string $css, string $html): ?string + public static function wrapElementsIntoTables(string $wrapper, string $body): ?string { - return (new CssToInlineStyles())->convert($html, $css); - } + $documents['wrapper'] = new \DOMDocument(); + $documents['wrapper']->loadHTML($wrapper); - private static function wrapElementsIntoTables() - { + $styles = $documents['wrapper']->getElementsByTagName('style')->item(0)->nodeValue; + $documents['wrapper']->saveHTML(); + + $documents['body'] = new \DOMDocument(); + $documents['body']->loadHTML(empty($body) ? '
' : (new CssToInlineStyles())->convert($body, $styles)); + + $table_html =' + + + + + + +
+
+
'; + + foreach ($documents['body']->getElementsByTagName('body')->item(0)->childNodes as $element) { + $table = new \DOMDocument(); + + $table->loadHTML($table_html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + + $element = $table->importNode($element, true); + + $table->getElementById('table-content')->appendChild($element); + + $node = $documents['wrapper']->importNode($table->documentElement, true); + + $documents['wrapper']->getElementById('content-wrapper')->appendChild($node); + } + + return $documents['wrapper']->getElementById('content-wrapper')->ownerDocument->saveHTML($documents['wrapper']->getElementById('content-wrapper')); } } From b9528d09c08ec4f50db80cc8d0f9c4240d6887a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Sun, 18 Apr 2021 17:09:44 +0200 Subject: [PATCH 5/7] - Add support for centering the content - Load styles from the master branch --- app/Mail/TemplateEmail.php | 2 +- app/Utils/TemplateEngine.php | 8 +++++++- resources/views/email/template/master.blade.php | 9 +++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index 4c490c92e2af..5aa12323bb3b 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -60,7 +60,7 @@ class TemplateEmail extends Mailable ); $this->build_email->setBody( - TemplateEngine::wrapElementsIntoTables('
', $this->build_email->getBody()) + TemplateEngine::wrapElementsIntoTables('
', $this->build_email->getBody()) ); $settings = $this->client->getMergedSettings(); diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index e4add15e5748..858d22046df6 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -259,7 +259,13 @@ class TemplateEngine $documents['wrapper'] = new \DOMDocument(); $documents['wrapper']->loadHTML($wrapper); - $styles = $documents['wrapper']->getElementsByTagName('style')->item(0)->nodeValue; + $documents['master'] = new \DOMDocument(); + + $documents['master']->loadHTML( + view('email.template.master', ['header' => '', 'slot' => ''])->render() + ); + + $styles = $documents['master']->getElementsByTagName('style')->item(0)->nodeValue; $documents['wrapper']->saveHTML(); diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index 09fc5069f0fc..3bd5032170e3 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -117,6 +117,10 @@ .button { padding: 12px; box-sizing: border-box;display: inline-block;font-family:arial,helvetica,sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #142cb5; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none; } + + .center { + text-align: center; + } @@ -199,7 +203,12 @@
+ @yield('greeting') + {{ $slot }} + + @yield('signature') + @yield('footer')
From 875c7ba9503f0d0ae12000287293afcb4de3f808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Sun, 18 Apr 2021 17:35:33 +0200 Subject: [PATCH 6/7] - Dark mode --- app/Utils/TemplateEngine.php | 2 +- .../views/email/template/master.blade.php | 32 ++++++++++++++++--- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index 858d22046df6..a48ce7afd666 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -277,7 +277,7 @@ class TemplateEngine -
+
diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index 3bd5032170e3..93b15102580c 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -115,19 +115,41 @@ } .button { - padding: 12px; box-sizing: border-box;display: inline-block;font-family:arial,helvetica,sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #142cb5; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none; + padding: 12px; + box-sizing: border-box; + display: inline-block; + font-family: arial, helvetica, sans-serif; + text-decoration: none; + -webkit-text-size-adjust: none; + text-align: center; + color: #FFFFFF; + background-color: {{ $primary_color }} !important; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + width: auto; + max-width: 100%; + overflow-wrap: break-word; + word-break: break-word; + word-wrap: break-word; + mso-border-alt: none; } .center { text-align: center; } + + .content-contrast-color { + color: {{ $design == 'dark' ? '#ffffff' : '#000000' }} !important; + opacity: {{ $design == 'dark' ? '87%': '100%' }} !important; + } - + - +
@@ -149,7 +171,7 @@
- +
@@ -220,7 +242,7 @@
- +
From 417260e25d66fa891deaeb32f5d6a8b41f812812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 19 Apr 2021 11:41:56 +0200 Subject: [PATCH 7/7] wip --- app/Mail/TemplateEmail.php | 8 ++++---- app/Utils/TemplateEngine.php | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index 5aa12323bb3b..8a85af8f5aeb 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -59,12 +59,12 @@ class TemplateEmail extends Mailable DesignHelpers::parseMarkdownToHtml($this->build_email->getBody()) ); - $this->build_email->setBody( - TemplateEngine::wrapElementsIntoTables('
', $this->build_email->getBody()) - ); - $settings = $this->client->getMergedSettings(); + $this->build_email->setBody( + TemplateEngine::wrapElementsIntoTables('
', $this->build_email->getBody(), $settings) + ); + $company = $this->client->company; if($this->invitation) diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index a48ce7afd666..7dd349766e41 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -200,7 +200,7 @@ class TemplateEngine $data = [ 'subject' => $this->subject, - 'body' => self::wrapElementsIntoTables(strtr($wrapper, ['$body' => '']), $this->body), + 'body' => self::wrapElementsIntoTables(strtr($wrapper, ['$body' => '']), $this->body, $this->entity_obj->client->getMergedSettings()), 'wrapper' => $wrapper, 'raw_body' => $this->raw_body, 'raw_subject' => $this->raw_subject @@ -254,7 +254,7 @@ class TemplateEngine DB::rollBack(); } - public static function wrapElementsIntoTables(string $wrapper, string $body): ?string + public static function wrapElementsIntoTables(string $wrapper, string $body, $settings): ?string { $documents['wrapper'] = new \DOMDocument(); $documents['wrapper']->loadHTML($wrapper); @@ -262,7 +262,7 @@ class TemplateEngine $documents['master'] = new \DOMDocument(); $documents['master']->loadHTML( - view('email.template.master', ['header' => '', 'slot' => ''])->render() + view('email.template.master', ['header' => '', 'slot' => '', 'settings' => $settings])->render() ); $styles = $documents['master']->getElementsByTagName('style')->item(0)->nodeValue;