示例#1
0
 /**
  * @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()));
 }
示例#3
0
 /**
  * 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()));
 }