| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-require-js/Block/Html/Head/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-require-js/Block/Html/Head/Config.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\RequireJs\Block\Html\Head;
use Magento\Framework\RequireJs\Config as RequireJsConfig;
use Magento\Framework\View\Asset\Minification;
/**
* Block responsible for including RequireJs config on the page
*
* @api
* @since 100.0.2
*/
class Config extends \Magento\Framework\View\Element\AbstractBlock
{
/**
* @var RequireJsConfig
*/
private $config;
/**
* @var \Magento\RequireJs\Model\FileManager
*/
private $fileManager;
/**
* @var \Magento\Framework\View\Page\Config
*/
protected $pageConfig;
/**
* @var Minification
*/
protected $minification;
/**
* @var \Magento\Framework\View\Asset\ConfigInterface
*/
private $bundleConfig;
/**
* @param \Magento\Framework\View\Element\Context $context
* @param RequireJsConfig $config
* @param \Magento\RequireJs\Model\FileManager $fileManager
* @param \Magento\Framework\View\Page\Config $pageConfig
* @param \Magento\Framework\View\Asset\ConfigInterface $bundleConfig
* @param Minification $minification
* @param array $data
*/
public function __construct(
\Magento\Framework\View\Element\Context $context,
RequireJsConfig $config,
\Magento\RequireJs\Model\FileManager $fileManager,
\Magento\Framework\View\Page\Config $pageConfig,
\Magento\Framework\View\Asset\ConfigInterface $bundleConfig,
Minification $minification,
array $data = []
) {
parent::__construct($context, $data);
$this->config = $config;
$this->fileManager = $fileManager;
$this->pageConfig = $pageConfig;
$this->bundleConfig = $bundleConfig;
$this->minification = $minification;
}
/**
* Include RequireJs configuration as an asset on the page
*
* @return $this
*/
protected function _prepareLayout()
{
$after = RequireJsConfig::REQUIRE_JS_FILE_NAME;
$assetCollection = $this->pageConfig->getAssetCollection();
if ($this->minification->isEnabled('js')) {
$minResolver = $this->fileManager->createMinResolverAsset();
$assetCollection->insert(
$minResolver->getFilePath(),
$minResolver,
$after
);
$after = $minResolver->getFilePath();
}
$requireJsMapConfig = $this->fileManager->createRequireJsMapConfigAsset();
if ($requireJsMapConfig) {
$urlResolverAsset = $this->fileManager->createUrlResolverAsset();
$assetCollection->insert(
$urlResolverAsset->getFilePath(),
$urlResolverAsset,
$after
);
$after = $urlResolverAsset->getFilePath();
$assetCollection->insert(
$requireJsMapConfig->getFilePath(),
$requireJsMapConfig,
$after
);
$after = $requireJsMapConfig->getFilePath();
}
if ($this->bundleConfig->isBundlingJsFiles()) {
$bundleAssets = $this->fileManager->createBundleJsPool();
$staticAsset = $this->fileManager->createStaticJsAsset();
/** @var \Magento\Framework\View\Asset\File $bundleAsset */
if (!empty($bundleAssets) && $staticAsset !== false) {
$bundleAssets = array_reverse($bundleAssets);
foreach ($bundleAssets as $bundleAsset) {
$assetCollection->insert(
$bundleAsset->getFilePath(),
$bundleAsset,
$after
);
}
$assetCollection->insert(
$staticAsset->getFilePath(),
$staticAsset,
reset($bundleAssets)->getFilePath()
);
$after = $staticAsset->getFilePath();
}
}
$requireJsConfig = $this->fileManager->createRequireJsConfigAsset();
$assetCollection->insert(
$requireJsConfig->getFilePath(),
$requireJsConfig,
$after
);
$requireJsMixinsConfig = $this->fileManager->createRequireJsMixinsAsset();
$assetCollection->insert(
$requireJsMixinsConfig->getFilePath(),
$requireJsMixinsConfig,
$after
);
return parent::_prepareLayout();
}
}