/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\JsonResponse */ protected function getEmailTemplateAction(Request $request) { $data = array('success' => 1, 'body' => '', 'subject' => ''); $emailId = $request->get('template'); /** @var \Mautic\EmailBundle\Model\EmailModel $model */ $model = $this->factory->getModel('email'); /** @var \Mautic\EmailBundle\Entity\Email $email */ $email = $model->getEntity($emailId); if ($email !== null && $this->factory->getSecurity()->hasEntityAccess('email:emails:viewown', 'email:emails:viewother', $email->getCreatedBy())) { $mailer = $this->factory->getMailer(); $mailer->setEmail($email, true, array(), array(), true); $data['body'] = $mailer->getBody(); $data['subject'] = $mailer->getSubject(); // Parse tokens into view data $tokens = $model->getBuilderComponents($email, array('tokens', 'visualTokens')); BuilderTokenHelper::replaceTokensWithVisualPlaceholders($tokens, $data['body']); } return $this->sendJsonResponse($data); }
/** * Activate the builder * * @param $objectId * * @return array|\Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response * @throws \Exception * @throws \Mautic\CoreBundle\Exception\FileNotFoundException */ public function builderAction($objectId) { /** @var \Mautic\EmailBundle\Model\EmailModel $model */ $model = $this->factory->getModel('email'); //permission check if (strpos($objectId, 'new') !== false) { $isNew = true; if (!$this->factory->getSecurity()->isGranted('email:emails:create')) { return $this->accessDenied(); } $entity = $model->getEntity(); $entity->setSessionId($objectId); } else { $isNew = false; $entity = $model->getEntity($objectId); if ($entity == null || !$this->factory->getSecurity()->hasEntityAccess('email:emails:viewown', 'email:emails:viewother', $entity->getCreatedBy())) { return $this->accessDenied(); } } $template = InputHelper::clean($this->request->query->get('template')); $slots = $this->factory->getTheme($template)->getSlots('email'); //merge any existing changes $newContent = $this->factory->getSession()->get('mautic.emailbuilder.' . $objectId . '.content', array()); $content = $entity->getContent(); $tokens = $model->getBuilderComponents($entity, array('tokens', 'visualTokens')); BuilderTokenHelper::replaceTokensWithVisualPlaceholders($tokens, $content); if (is_array($newContent)) { $content = array_merge($content, $newContent); } // Replace short codes to emoji $content = EmojiHelper::toEmoji($content, 'short'); return $this->render('MauticEmailBundle::builder.html.php', array('isNew' => $isNew, 'slots' => $slots, 'content' => $content, 'email' => $entity, 'template' => $template, 'basePath' => $this->request->getBasePath())); }
/** * Activate the builder * * @param int $objectId * * @return \Symfony\Component\HttpFoundation\Response */ public function builderAction($objectId) { /** @var \Mautic\PageBundle\Model\PageModel $model */ $model = $this->factory->getModel('page.page'); //permission check if (strpos($objectId, 'new') !== false) { $isNew = true; if (!$this->factory->getSecurity()->isGranted('page:pages:create')) { return $this->accessDenied(); } $entity = $model->getEntity(); $entity->setSessionId($objectId); } else { $isNew = false; $entity = $model->getEntity($objectId); if ($entity == null || !$this->factory->getSecurity()->hasEntityAccess('page:pages:viewown', 'page:pages:viewother', $entity->getCreatedBy())) { return $this->accessDenied(); } } $template = InputHelper::clean($this->request->query->get('template')); $slots = $this->factory->getTheme($template)->getSlots('page'); //merge any existing changes $newContent = $this->factory->getSession()->get('mautic.pagebuilder.' . $objectId . '.content', array()); $content = $entity->getContent(); $tokens = $model->getBuilderComponents($entity, array('tokens', 'visualTokens')); BuilderTokenHelper::replaceTokensWithVisualPlaceholders($tokens, $content); if (is_array($newContent)) { $content = array_merge($content, $newContent); } $this->addAssetsForBuilder(); $this->processSlots($slots, $entity); $logicalName = $this->factory->getHelper('theme')->checkForTwigTemplate(':' . $template . ':page.html.php'); return $this->render($logicalName, array('isNew' => $isNew, 'slots' => $slots, 'formFactory' => $this->get('form.factory'), 'content' => $content, 'page' => $entity, 'template' => $template, 'basePath' => $this->request->getBasePath())); }