diff --git a/src/Actions/NotifyUsersWorkflowAction.php b/src/Actions/NotifyUsersWorkflowAction.php index e9eaeaf7..08d68f6f 100644 --- a/src/Actions/NotifyUsersWorkflowAction.php +++ b/src/Actions/NotifyUsersWorkflowAction.php @@ -3,6 +3,7 @@ namespace Symbiote\AdvancedWorkflow\Actions; use SilverStripe\Control\Email\Email; +use SilverStripe\Core\Injector\Injector; use SilverStripe\Forms\HeaderField; use SilverStripe\Forms\LiteralField; use SilverStripe\Forms\TextareaField; @@ -14,7 +15,8 @@ use SilverStripe\Security\Member; use SilverStripe\Security\Security; use SilverStripe\Model\ArrayData; -use SilverStripe\View\SSViewer; +use SilverStripe\View\TemplateEngine; +use SilverStripe\View\ViewLayerData; use Swift_RfcComplianceException; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowAction; use Symbiote\AdvancedWorkflow\DataObjects\WorkflowInstance; @@ -134,10 +136,7 @@ public function execute(WorkflowInstance $workflow) ]); } - - $view = SSViewer::fromString($this->EmailTemplate); - $this->extend('updateView', $view); - + $engine = Injector::inst()->create(TemplateEngine::class); foreach ($members as $member) { if ($member->Email) { // We bind in the assignee at this point, as it changes each loop iteration @@ -146,7 +145,7 @@ public function execute(WorkflowInstance $workflow) $item->Assignee = ArrayData::create($assigneeVars); } - $body = $view->process($item); + $body = $engine->renderString($this->EmailTemplate, ViewLayerData::create($item)); $email = Email::create(); try { diff --git a/src/Admin/WorkflowDefinitionExporter.php b/src/Admin/WorkflowDefinitionExporter.php index d3ce0805..abe87c48 100644 --- a/src/Admin/WorkflowDefinitionExporter.php +++ b/src/Admin/WorkflowDefinitionExporter.php @@ -108,9 +108,11 @@ public function export() */ public function format($templateData) { - $viewer = SSViewer::execute_template(['type' => 'Includes', 'WorkflowDefinitionExport'], $templateData); - // Temporary until we find the source of the replacement in SSViewer - $processed = str_replace('&', '&', $viewer ?? ''); + $viewer = SSViewer::create(['type' => 'Includes', 'WorkflowDefinitionExport']); + $viewer->setRewriteHashLinks(false); + $viewer->includeRequirements(false); + // str_replace is temporary until we find the source of the replacement in SSViewer + $processed = str_replace('&', '&', $viewer->process($templateData)); // Clean-up newline "gaps" that SSViewer leaves behind from the placement of template control structures return preg_replace("#^\R+|^[\t\s]*\R+#m", '', $processed ?? ''); }