Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace MauticPlugin\GrapesJsBuilderBundle\EventSubscriber; | |
use Mautic\CoreBundle\CoreEvents; | |
use Mautic\CoreBundle\Event\CustomAssetsEvent; | |
use Mautic\InstallBundle\Install\InstallService; | |
use MauticPlugin\GrapesJsBuilderBundle\Integration\Config; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
use Symfony\Component\HttpFoundation\RequestStack; | |
class AssetsSubscriber implements EventSubscriberInterface | |
{ | |
public function __construct( | |
private Config $config, | |
private InstallService $installer, | |
private RequestStack $requestStack | |
) { | |
} | |
public static function getSubscribedEvents(): array | |
{ | |
return [ | |
CoreEvents::VIEW_INJECT_CUSTOM_ASSETS => ['injectAssets', 0], | |
]; | |
} | |
public function injectAssets(CustomAssetsEvent $assetsEvent): void | |
{ | |
if (!$this->installer->checkIfInstalled() || !$this->isMauticAdministrationPage()) { | |
return; | |
} | |
if ($this->config->isPublished()) { | |
$assetsEvent->addScript('plugins/GrapesJsBuilderBundle/Assets/library/js/dist/builder.js'); | |
$assetsEvent->addStylesheet('plugins/GrapesJsBuilderBundle/Assets/library/js/dist/builder.css'); | |
} | |
} | |
/** | |
* Returns true for routes that starts with /s/. | |
*/ | |
private function isMauticAdministrationPage(): bool | |
{ | |
return preg_match('/^\/s\//', $this->requestStack->getCurrentRequest()->getPathInfo()) >= 1; | |
} | |
} | |