Spaces:
No application file
No application file
File size: 3,739 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
<?php
declare(strict_types=1);
namespace MauticPlugin\GrapesJsBuilderBundle\EventSubscriber;
use Mautic\CoreBundle\CoreEvents;
use Mautic\CoreBundle\Event\CustomContentEvent;
use Mautic\EmailBundle\Entity\Email;
use MauticPlugin\GrapesJsBuilderBundle\Entity\GrapesJsBuilder;
use MauticPlugin\GrapesJsBuilderBundle\Integration\Config;
use MauticPlugin\GrapesJsBuilderBundle\Model\GrapesJsBuilderModel;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\RouterInterface;
use Twig\Environment;
class InjectCustomContentSubscriber implements EventSubscriberInterface
{
public function __construct(
private Config $config,
private GrapesJsBuilderModel $grapesJsBuilderModel,
private Environment $twig,
private RequestStack $requestStack,
private RouterInterface $router
) {
}
public static function getSubscribedEvents(): array
{
return [
CoreEvents::VIEW_INJECT_CUSTOM_CONTENT => ['injectViewCustomContent', 0],
];
}
public function injectViewCustomContent(CustomContentEvent $customContentEvent): void
{
if (!$this->config->isPublished()) {
return;
}
$passParams = [];
$parameters = $customContentEvent->getVars();
if ('email.settings.advanced' === $customContentEvent->getContext()) {
// Inject MJML form within mail page
if (empty($parameters['email']) || !$parameters['email'] instanceof Email) {
return;
}
$passParams = ['customMjml' => ''];
if ($this->requestStack->getCurrentRequest()->request->has('grapesjsbuilder')) {
$data = $this->requestStack->getCurrentRequest()->get('grapesjsbuilder', '');
if (isset($data['customMjml'])) {
$passParams['customMjml'] = $data['customMjml'];
}
}
$grapesJsBuilder = $this->grapesJsBuilderModel->getRepository()->findOneBy(['email' => $parameters['email']]);
if ('POST' !== $this->requestStack->getCurrentRequest()->getMethod()) {
if (!$grapesJsBuilder instanceof GrapesJsBuilder && $parameters['email']->getIsClone()) {
$grapesJsBuilder = $this->grapesJsBuilderModel->getGrapesJsFromEmailId(
$parameters['email']->getClonedId()
);
}
if ($grapesJsBuilder instanceof GrapesJsBuilder) {
$passParams['customMjml'] = $grapesJsBuilder->getCustomMjml();
}
}
$content = $this->twig->render(
'@GrapesJsBuilder/Setting/fields.html.twig',
$passParams
);
$customContentEvent->addContent($content);
} elseif ('page.header.left' === $customContentEvent->getContext()) {
// Inject fileManager URL
$passParams['dataAssets'] = $this->router->generate('grapesjsbuilder_assets', [], \Symfony\Component\Routing\Generator\UrlGeneratorInterface::ABSOLUTE_URL);
$passParams['dataUpload'] = $this->router->generate('grapesjsbuilder_upload', [], \Symfony\Component\Routing\Generator\UrlGeneratorInterface::ABSOLUTE_URL);
$passParams['dataDelete'] = $this->router->generate('grapesjsbuilder_delete', [], \Symfony\Component\Routing\Generator\UrlGeneratorInterface::ABSOLUTE_URL);
$content = $this->twig->render(
'@GrapesJsBuilder/Setting/vars.html.twig',
$passParams
);
$customContentEvent->addContent($content);
}
}
}
|