Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CoreBundle\Twig\Extension; | |
use Mautic\CoreBundle\Twig\Helper\AssetsHelper; | |
use Twig\Extension\AbstractExtension; | |
use Twig\TwigFunction; | |
class AssetExtension extends AbstractExtension | |
{ | |
public function __construct( | |
protected AssetsHelper $assetsHelper | |
) { | |
} | |
/** | |
* @see Twig_Extension::getFunctions() | |
*/ | |
public function getFunctions() | |
{ | |
return [ | |
new TwigFunction('outputScripts', [$this, 'outputScripts'], ['is_safe' => ['all']]), | |
new TwigFunction('includeScript', [$this, 'includeScript'], ['is_safe' => ['all']]), | |
new TwigFunction('includeStylesheet', [$this, 'includeStylesheet'], ['is_safe' => ['all']]), | |
new TwigFunction('outputHeadDeclarations', [$this, 'outputHeadDeclarations'], ['is_safe' => ['all']]), | |
new TwigFunction('getAssetUrl', [$this, 'getAssetUrl'], ['is_safe' => ['html']]), | |
new TwigFunction('getOverridableUrl', [$this, 'getOverridableUrl'], ['is_safe' => ['html']]), | |
new TwigFunction('addAssetScript', [$this, 'addScript'], ['is_safe' => ['html']]), | |
new TwigFunction('outputStyles', [$this, 'outputStyles'], ['is_safe' => ['html']]), | |
new TwigFunction('outputSystemScripts', [$this, 'outputSystemScripts'], ['is_safe' => ['html']]), | |
new TwigFunction('outputSystemStylesheets', [$this, 'outputSystemStylesheets'], ['is_safe' => ['html']]), | |
new TwigFunction('assetsGetImagesPath', [$this, 'getImagesPath']), | |
new TwigFunction('assetsGetPrefix', [$this, 'getAssetPrefix']), | |
new TwigFunction('assetAddScriptDeclaration', [$this, 'addScriptDeclaration']), | |
new TwigFunction('assetAddCustomDeclaration', [$this, 'addCustomDeclaration']), | |
new TwigFunction('assetGetCountryFlag', [$this, 'getCountryFlag']), | |
new TwigFunction('assetGetBaseUrl', [$this, 'getBaseUrl'], ['is_safe' => ['html']]), | |
new TwigFunction('assetMakeLinks', [$this, 'makeLinks'], ['is_safe' => ['html']]), | |
]; | |
} | |
public function getName(): string | |
{ | |
return 'coreasset'; | |
} | |
public function outputSystemStylesheets(): string | |
{ | |
ob_start(); | |
$this->assetsHelper->outputSystemStylesheets(); | |
return ob_get_clean(); | |
} | |
/** | |
* Loads an addon JS script file. | |
*/ | |
public function includeScript(string $assetFilePath, string $onLoadCallback = '', string $alreadyLoadedCallback = ''): string | |
{ | |
return $this->assetsHelper->includeScript($assetFilePath, $onLoadCallback, $alreadyLoadedCallback); | |
} | |
public function includeStylesheet(string $assetFilePath): string | |
{ | |
return $this->assetsHelper->includeStylesheet($assetFilePath); | |
} | |
/** | |
* @param bool $includeEditor | |
*/ | |
public function outputSystemScripts($includeEditor = false): string | |
{ | |
ob_start(); | |
$this->assetsHelper->outputSystemScripts($includeEditor); | |
return ob_get_clean(); | |
} | |
public function outputScripts(string $name): string | |
{ | |
ob_start(); | |
$this->assetsHelper->outputScripts($name); | |
return ob_get_clean(); | |
} | |
public function outputStyles(): string | |
{ | |
ob_start(); | |
$this->assetsHelper->outputStyles(); | |
return ob_get_clean(); | |
} | |
public function outputHeadDeclarations(): string | |
{ | |
ob_start(); | |
$this->assetsHelper->outputHeadDeclarations(); | |
return ob_get_clean(); | |
} | |
public function addScript(string $script, string $location = 'head', bool $async = false, string $name = null): AssetsHelper | |
{ | |
return $this->assetsHelper->addScript($script, $location, $async, $name); | |
} | |
/** | |
* @param string|null $packageName | |
* @param string|null $version | |
* @param bool $absolute | |
* @param bool $ignorePrefix | |
*/ | |
public function getAssetUrl(string $path, $packageName = null, $version = null, $absolute = false, $ignorePrefix = false): string | |
{ | |
return $this->assetsHelper->getUrl($path, $packageName, $version, $absolute, $ignorePrefix); | |
} | |
/** | |
* @param string $path | |
* @param bool|false $absolute | |
*/ | |
public function getOverridableUrl($path, $absolute = false): string | |
{ | |
return $this->assetsHelper->getOverridableUrl($path, $absolute); | |
} | |
public function getImagesPath(): string | |
{ | |
return $this->assetsHelper->getImagesPath(); | |
} | |
public function getAssetPrefix(bool $includeEndingslash = false): string | |
{ | |
return $this->assetsHelper->getAssetPrefix($includeEndingslash); | |
} | |
public function addScriptDeclaration(string $script, string $location = 'head'): string | |
{ | |
$this->assetsHelper->addScriptDeclaration($script, $location); | |
return ''; | |
} | |
public function addCustomDeclaration(string $script, string $location): string | |
{ | |
$this->assetsHelper->addCustomDeclaration($script, $location); | |
return ''; | |
} | |
/** | |
* @see Mautic\CoreBundle\Twig\Helper\AssetsHelper::getCountryFlag | |
*/ | |
public function getCountryFlag(string $country, bool $urlOnly = true, string $class = ''): string | |
{ | |
return $this->assetsHelper->getCountryFlag($country, $urlOnly, $class); | |
} | |
public function getBaseUrl(): string | |
{ | |
return (string) $this->assetsHelper->getBaseUrl(); | |
} | |
/** | |
* @param array<string> $protocols | |
* @param array<mixed> $attributes | |
*/ | |
public function makeLinks(string $text, array $protocols = ['http', 'mail'], array $attributes = []): string | |
{ | |
return $this->assetsHelper->makeLinks($text, $protocols, $attributes); | |
} | |
} | |