getModel($objectType); $aclToCheck = 'email:emails:'; if ('page' === $objectType) { $aclToCheck = 'page:pages:'; } // permission check if (str_contains((string) $objectId, 'new')) { $isNew = true; if (!$this->security->isGranted($aclToCheck.'create')) { return $this->accessDenied(); } /** @var Email|Page $entity */ $entity = $model->getEntity(); $entity->setSessionId($objectId); } else { /** @var Email|Page $entity */ $entity = $model->getEntity($objectId); $isNew = false; if (null == $entity || !$this->security->hasEntityAccess( $aclToCheck.'viewown', $aclToCheck.'viewother', $entity->getCreatedBy() ) ) { return $this->accessDenied(); } } $type = 'html'; $template = InputHelper::clean($request->query->get('template')); if (!$template) { $mauticLogger->warning('Grapesjs: no template in query'); return $this->json(false); } $templateName = '@themes/'.$template.'/html/'.$objectType; $content = $entity->getContent(); // Check for MJML template // @deprecated - use mjml directly in email.html.twig if ($logicalName = $this->checkForMjmlTemplate($templateName.'.mjml.twig')) { $type = 'mjml'; } else { $logicalName = $themeHelper->checkForTwigTemplate($templateName.'.html.twig'); } // Replace short codes to emoji $content = array_map(fn ($text) => EmojiHelper::toEmoji($text, 'short'), $content); $renderedTemplate = $this->renderView( $logicalName, [ 'isNew' => $isNew, 'content' => $content, $objectType => $entity, 'template' => $template, 'basePath' => $request->getBasePath(), ] ); if (str_contains($renderedTemplate, '')) { $type = 'mjml'; } $renderedTemplateHtml = ('html' === $type) ? $renderedTemplate : ''; $renderedTemplateMjml = ('mjml' === $type) ? $renderedTemplate : ''; return $this->render( '@GrapesJsBuilder/Builder/template.html.twig', [ 'templateHtml' => $renderedTemplateHtml, 'templateMjml' => $renderedTemplateMjml, ] ); } /** * @deprecated deprecated since version 5.0 - use mjml directly in email.html.twig */ private function checkForMjmlTemplate($template) { $twig = $this->container->get('twig'); if ($twig->getLoader()->exists($template)) { return $template; } return null; } }