123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?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();
- }
- }
|