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
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Translation\Block\Html\Head;
use Magento\Framework\RequireJs\Config as RequireJsConfig;
use Magento\Framework\Translate\Inline as Inline;
/**
* Block responsible for including Inline Translation config on the page
*
* @api
* @since 100.0.2
*/
class Config extends \Magento\Framework\View\Element\AbstractBlock
{
/**
* @var \Magento\Translation\Model\FileManager
*/
private $fileManager;
/**
* @var \Magento\Framework\View\Page\Config
*/
protected $pageConfig;
/**
* @var Inline
*/
private $inline;
/**
* @param \Magento\Framework\View\Element\Context $context
* @param \Magento\Framework\View\Page\Config $pageConfig
* @param \Magento\Translation\Model\FileManager $fileManager
* @param Inline $inline
* @param array $data
*/
public function __construct(
\Magento\Framework\View\Element\Context $context,
\Magento\Framework\View\Page\Config $pageConfig,
\Magento\Translation\Model\FileManager $fileManager,
Inline $inline,
array $data = []
) {
parent::__construct($context, $data);
$this->pageConfig = $pageConfig;
$this->fileManager = $fileManager;
$this->inline = $inline;
}
/**
* Include RequireJs configuration as an asset on the page
*
* @return $this
*/
protected function _prepareLayout()
{
$this->addInlineTranslationConfig();
return parent::_prepareLayout();
}
/**
* Include RequireJs inline translation configuration as an asset on the page
* @return void
*/
private function addInlineTranslationConfig()
{
if ($this->inline->isAllowed()) {
$after = RequireJsConfig::REQUIRE_JS_FILE_NAME;
$tConfig = $this->fileManager->createTranslateConfigAsset();
$assetCollection = $this->pageConfig->getAssetCollection();
$assetCollection->insert(
$tConfig->getFilePath(),
$tConfig,
$after
);
}
}
}