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] 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')); } }