From 599dc81f7a2ac343c935642e1670986d4c66677e Mon Sep 17 00:00:00 2001 From: Philipp Dieter Date: Wed, 23 Mar 2022 23:22:10 +0100 Subject: [PATCH] [TASK] Add buttion option to email template --- Classes/Utility/MailUtility.php | 166 ++++++++++++------ .../Private/Partials/Mails/DefaultHtml.html | 43 ++++- 2 files changed, 154 insertions(+), 55 deletions(-) diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php index 2e6d41d..dbc2c12 100644 --- a/Classes/Utility/MailUtility.php +++ b/Classes/Utility/MailUtility.php @@ -59,6 +59,18 @@ class MailUtility $type = 'list'; $textPart = substr($textPart, 2); } + if (substr($textPart, 0, 3) === '+< ') { + $type = 'buttonleft'; + $textPart = substr($textPart, 3); + } + if (substr($textPart, 0, 3) === '+| ') { + $type = 'buttoncenter'; + $textPart = substr($textPart, 3); + } + if (substr($textPart, 0, 3) === '+> ') { + $type = 'buttonright'; + $textPart = substr($textPart, 3); + } if (substr($textPart, 0, 2) === '| ') { $type = 'table'; $textPart = substr($textPart, 2); @@ -195,6 +207,10 @@ class MailUtility case 'headline': case 'headline2': case 'headline3': + case 'button': + case 'buttonleft': + case 'buttoncenter': + case 'buttonright': $row['data'] = str_replace( "\\\n", '', @@ -203,16 +219,33 @@ class MailUtility $htmlRow = $row; $htmlRow['data'] = preg_replace_callback( '/\[.*\]/mU', - function($matches) { + function($matches) use ($row) { foreach ($matches as $match) { return preg_replace_callback( '/\[(\S*)\s(.*)\]/mU', - function($matchesInner) { - return '' - . $matchesInner[2] - . ''; + function($matchesInner) use ($row) { + switch($row['type']) { + case 'button': + case 'buttonleft': + case 'buttoncenter': + case 'buttonright': + return '' + . '' + . 'Button!!!! ' + . $matchesInner[2] + . '' + . ''; + break; + default: + return '' + . $matchesInner[2] + . ''; + break; + } }, $match ); @@ -257,51 +290,77 @@ class MailUtility $bodydataText[] = $textRow; $bodydataHtml[] = $htmlRow; break; - case 'button': - case 'buttons': - $htmlRow = $row; - //$htmlRow['targets'] = preg_replace_callback( - // '/\[.*\]/mU', - // function($matches) { - // foreach ($matches as $match) { - // return preg_replace_callback( - // '/\[(\S*)\s(.*)\]/mU', - // function($matchesInner) { - // return $matchesInner; - // //return '' - // // . $matchesInner[2] - // // . ''; - // }, - // $match - // ); - // } - // }, - // $htmlRow['targets'] - //); - $textRow = $row; - //$textRow['targets'] = preg_replace_callback( - // '/\[.*\]/mU', - // function($matches) { - // foreach ($matches as $match) { - // return preg_replace_callback( - // '/\[(\S*)\s(.*)\]/mU', - // function($matchesInner) { - // return $matchesInner; - // //return $matchesInner[2] - // // . ': ' - // // . $matchesInner[1]; - // }, - // $match - // ); - // } - // }, - // $textRow['targets'] - //); - $bodydataText[] = $textRow; - $bodydataHtml[] = $htmlRow; - break; + //case 'button': + // $row['data'] = str_replace( + // "\\\n", + // '', + // $row['data'] + // ); + // $htmlRow = $row; + // $htmlRow['data'] = preg_replace_callback( + // '/\[.*\]/mU', + // function($matches) { + // foreach ($matches as $match) { + // $test = preg_replace_callback( + // '/\[(\S*)\s(.*)\]/mU', + // function($matchesInner) { + // + // return '' + // . $matchesInner[2] + // . ''; + // }, + // $match + // ); + // \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( + // $test, null, 3, true, false + // ); + // return $test; + // } + // }, + // $htmlRow['data'] + // ); + // \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( + // $htmlRow['data'], null, 3, true, false + // ); + // $htmlRow['data'] = preg_replace_callback( + // '/\*.*\*/mU', + // function($matches) { + // foreach ($matches as $match) { + // return '' + // . substr($match, 1, -1) + // . ''; + // } + // }, + // $htmlRow['data'] + // ); + // $textRow = $row; + // $textRow['data'] = preg_replace_callback( + // '/\[.*\]/mU', + // function($matches) { + // foreach ($matches as $match) { + // return preg_replace_callback( + // '/\[(\S*)\s(.*)\]/mU', + // function($matchesInner) { + // if ( + // $matchesInner[2] == $matchesInner[1] + // ) { + // return $matchesInner[1]; + // } + // return $matchesInner[2] + // . ': ' + // . $matchesInner[1]; + // }, + // $match + // ); + // } + // }, + // $textRow['data'] + // ); + // $bodydataText[] = $textRow; + // $bodydataHtml[] = $htmlRow; + // break; case 'attachment': $mail->attach(new \Swift_Attachment( $row['data'][0], @@ -325,6 +384,9 @@ class MailUtility } $textView->assign('content', $bodydataText); $htmlView->assign('content', $bodydataHtml); + //\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( + // $bodydataHtml, null, 8, true, false + //); $domain = $settings['mailDomain']; if ($assetDomain) { $domain = $assetDomain; diff --git a/Resources/Private/Partials/Mails/DefaultHtml.html b/Resources/Private/Partials/Mails/DefaultHtml.html index 3d1956c..cee579e 100644 --- a/Resources/Private/Partials/Mails/DefaultHtml.html +++ b/Resources/Private/Partials/Mails/DefaultHtml.html @@ -14,7 +14,13 @@ - +