Skip to content

Commit ec17c6a

Browse files
author
Oleksii Korshenko
committed
MAGETWO-70399: Support controller src_type for head links #9588
- Merge Pull Request #9588 from kassner/magento2:patch-4 - Merged commits: 1. d95fb8d 2. 313094e 3. 5e6afba
2 parents 0c69ba5 + 5e6afba commit ec17c6a

File tree

2 files changed

+60
-9
lines changed
  • lib/internal/Magento/Framework/View

2 files changed

+60
-9
lines changed

lib/internal/Magento/Framework/View/Page/Config/Generator/Head.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,23 @@ class Head implements Layout\GeneratorInterface
5757
*/
5858
protected $pageConfig;
5959

60+
/**
61+
* @var \Magento\Framework\UrlInterface
62+
*/
63+
protected $url;
64+
6065
/**
6166
* Constructor
6267
*
6368
* @param \Magento\Framework\View\Page\Config $pageConfig
69+
* @param \Magento\Framework\UrlInterface $url
6470
*/
65-
public function __construct(\Magento\Framework\View\Page\Config $pageConfig)
66-
{
71+
public function __construct(
72+
\Magento\Framework\View\Page\Config $pageConfig,
73+
\Magento\Framework\UrlInterface $url
74+
) {
6775
$this->pageConfig = $pageConfig;
76+
$this->url = $url;
6877
}
6978

7079
/**
@@ -107,10 +116,15 @@ protected function processAssets(Structure $pageStructure)
107116
{
108117
foreach ($pageStructure->getAssets() as $name => $data) {
109118
if (isset($data['src_type']) && in_array($data['src_type'], $this->remoteAssetTypes)) {
119+
if ($data['src_type'] === self::SRC_TYPE_CONTROLLER) {
120+
$data['src'] = $this->url->getUrl($data['src']);
121+
}
122+
110123
$this->pageConfig->addRemotePageAsset(
111-
$name,
124+
$data['src'],
112125
isset($data['content_type']) ? $data['content_type'] : self::VIRTUAL_CONTENT_TYPE_LINK,
113-
$this->getAssetProperties($data)
126+
$this->getAssetProperties($data),
127+
$name
114128
);
115129
} else {
116130
$this->pageConfig->addPageAsset($name, $this->getAssetProperties($data));

lib/internal/Magento/Framework/View/Test/Unit/Page/Config/Generator/HeadTest.php

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ class HeadTest extends \PHPUnit_Framework_TestCase
2626
*/
2727
protected $pageConfigMock;
2828

29+
/**
30+
* @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject
31+
*/
32+
protected $urlMock;
33+
2934
/**
3035
* @var \Magento\Framework\View\Page\Title|\PHPUnit_Framework_MockObject_MockObject
3136
*/
@@ -39,12 +44,16 @@ protected function setUp()
3944
$this->title = $this->getMockBuilder(\Magento\Framework\View\Page\Title::class)
4045
->disableOriginalConstructor()
4146
->getMock();
47+
$this->urlMock = $this->getMockBuilder(\Magento\Framework\UrlInterface::class)
48+
->disableOriginalConstructor()
49+
->getMock();
4250

4351
$objectManagerHelper = new ObjectManagerHelper($this);
4452
$this->headGenerator = $objectManagerHelper->getObject(
4553
\Magento\Framework\View\Page\Config\Generator\Head::class,
4654
[
4755
'pageConfig' => $this->pageConfigMock,
56+
'url' => $this->urlMock,
4857
]
4958
);
5059
}
@@ -68,18 +77,46 @@ public function testProcess()
6877

6978
$structureMock->expects($this->once())->method('processRemoveAssets');
7079
$structureMock->expects($this->once())->method('processRemoveElementAttributes');
80+
$this->urlMock->expects($this->once())
81+
->method('getUrl')
82+
->with('customcss/render/css')
83+
->willReturn('http://magento.dev/customcss/render/css');
7184

7285
$assets = [
73-
'remoteCss' => ['src' => 'file-url', 'src_type' => 'url', 'media' => "all", 'content_type' => 'css'],
74-
'remoteLink' => ['src' => 'file-url', 'src_type' => 'url', 'media' => "all"],
75-
'name' => ['src' => 'file-path', 'ie_condition' => 'lt IE 7', 'media' => "print", 'content_type' => 'css'],
86+
'remoteCss' => [
87+
'src' => 'file-url-css',
88+
'src_type' => 'url',
89+
'content_type' => 'css',
90+
'media' => 'all',
91+
],
92+
'remoteLink' => [
93+
'src' => 'file-url-link',
94+
'src_type' => 'url',
95+
'media' => 'all',
96+
],
97+
'controllerCss' => [
98+
'src' => 'customcss/render/css',
99+
'src_type' => 'controller',
100+
'content_type' => 'css',
101+
'media' => 'all',
102+
],
103+
'name' => [
104+
'src' => 'file-path',
105+
'ie_condition' => 'lt IE 7',
106+
'content_type' => 'css',
107+
'media' => 'print',
108+
],
76109
];
110+
77111
$this->pageConfigMock->expects($this->at(0))
78112
->method('addRemotePageAsset')
79-
->with('remoteCss', 'css', ['attributes' => ['media' => 'all']]);
113+
->with('file-url-css', 'css', ['attributes' => ['media' => 'all']]);
80114
$this->pageConfigMock->expects($this->at(1))
81115
->method('addRemotePageAsset')
82-
->with('remoteLink', Head::VIRTUAL_CONTENT_TYPE_LINK, ['attributes' => ['media' => 'all']]);
116+
->with('file-url-link', Head::VIRTUAL_CONTENT_TYPE_LINK, ['attributes' => ['media' => 'all']]);
117+
$this->pageConfigMock->expects($this->at(2))
118+
->method('addRemotePageAsset')
119+
->with('http://magento.dev/customcss/render/css', 'css', ['attributes' => ['media' => 'all']]);
83120
$this->pageConfigMock->expects($this->once())
84121
->method('addPageAsset')
85122
->with('name', ['attributes' => ['media' => 'print'], 'ie_condition' => 'lt IE 7']);

0 commit comments

Comments
 (0)