Skip to content

Commit 387b024

Browse files
committed
Merge branch '1504-M2-repo-Insert-rendition-images-to-the-content-from-media-gallery-instead-of-original-images' of github.com:jmonteros422/magento2-1 into asi-delivery-24
2 parents 745d38e + 6f1f676 commit 387b024

File tree

3 files changed

+225
-35
lines changed

3 files changed

+225
-35
lines changed
Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,63 @@
11
<?php
22
/**
3-
*
43
* Copyright © Magento, Inc. All rights reserved.
54
* See COPYING.txt for license details.
65
*/
76
namespace Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
87

9-
class OnInsert extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images
8+
use Magento\Backend\App\Action\Context;
9+
use Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
10+
use Magento\Cms\Model\Wysiwyg\Images\GetInsertImageContent;
11+
use Magento\Framework\App\Action\HttpPostActionInterface;
12+
use Magento\Framework\Controller\Result\RawFactory;
13+
use Magento\Framework\Controller\ResultInterface;
14+
use Magento\Framework\Registry;
15+
16+
class OnInsert extends Images implements HttpPostActionInterface
1017
{
1118
/**
12-
* @var \Magento\Framework\Controller\Result\RawFactory
19+
* @var RawFactory
1320
*/
1421
protected $resultRawFactory;
1522

1623
/**
17-
* @param \Magento\Backend\App\Action\Context $context
18-
* @param \Magento\Framework\Registry $coreRegistry
19-
* @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
24+
* @var GetInsertImageContent
25+
*/
26+
private $getInsertImageContent;
27+
28+
/**
29+
* @param Context $context
30+
* @param Registry $coreRegistry
31+
* @param RawFactory $resultRawFactory
32+
* @param GetInsertImageContent $getInsertImageContent
2033
*/
2134
public function __construct(
22-
\Magento\Backend\App\Action\Context $context,
23-
\Magento\Framework\Registry $coreRegistry,
24-
\Magento\Framework\Controller\Result\RawFactory $resultRawFactory
35+
Context $context,
36+
Registry $coreRegistry,
37+
RawFactory $resultRawFactory,
38+
?GetInsertImageContent $getInsertImageContent = null
2539
) {
2640
$this->resultRawFactory = $resultRawFactory;
2741
parent::__construct($context, $coreRegistry);
42+
$this->getInsertImageContent = $getInsertImageContent ?: $this->_objectManager
43+
->get(GetInsertImageContent::class);
2844
}
2945

3046
/**
31-
* Fire when select image
47+
* Return a content (just a link or an html block) for inserting image to the content
3248
*
33-
* @return \Magento\Framework\Controller\ResultInterface
49+
* @return ResultInterface
3450
*/
3551
public function execute()
3652
{
37-
$imagesHelper = $this->_objectManager->get(\Magento\Cms\Helper\Wysiwyg\Images::class);
38-
$request = $this->getRequest();
39-
40-
$storeId = $request->getParam('store');
41-
42-
$filename = $request->getParam('filename');
43-
$filename = $imagesHelper->idDecode($filename);
44-
45-
$asIs = $request->getParam('as_is');
46-
47-
$forceStaticPath = $request->getParam('force_static_path');
48-
49-
$this->_objectManager->get(\Magento\Catalog\Helper\Data::class)->setStoreId($storeId);
50-
$imagesHelper->setStoreId($storeId);
51-
52-
if ($forceStaticPath) {
53-
$image = parse_url($imagesHelper->getCurrentUrl() . $filename, PHP_URL_PATH);
54-
} else {
55-
$image = $imagesHelper->getImageHtmlDeclaration($filename, $asIs);
56-
}
57-
58-
/** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
59-
$resultRaw = $this->resultRawFactory->create();
60-
return $resultRaw->setContents($image);
53+
$data = $this->getRequest()->getParams();
54+
return $this->resultRawFactory->create()->setContents(
55+
$this->getInsertImageContent->execute(
56+
$data['filename'],
57+
$data['force_static_path'],
58+
$data['as_is'],
59+
isset($data['store']) ? (int) $data['store'] : null
60+
)
61+
);
6162
}
6263
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Cms\Model\Wysiwyg\Images;
10+
11+
use Magento\Cms\Helper\Wysiwyg\Images as ImagesHelper;
12+
13+
class GetInsertImageContent
14+
{
15+
/**
16+
* @var ImagesHelper
17+
*/
18+
private $imagesHelper;
19+
20+
/**
21+
* PrepareImage constructor.
22+
*
23+
* @param ImagesHelper $imagesHelper
24+
*/
25+
public function __construct(ImagesHelper $imagesHelper)
26+
{
27+
$this->imagesHelper = $imagesHelper;
28+
}
29+
30+
/**
31+
* Create a content (just a link or an html block) for inserting image to the content
32+
*
33+
* @param string $encodedFilename
34+
* @param bool $forceStaticPath
35+
* @param bool $renderAsTag
36+
* @param int|null $storeId
37+
* @return string
38+
*/
39+
public function execute(
40+
string $encodedFilename,
41+
bool $forceStaticPath,
42+
bool $renderAsTag,
43+
?int $storeId = null
44+
): string {
45+
$filename = $this->imagesHelper->idDecode($encodedFilename);
46+
47+
$this->imagesHelper->setStoreId($storeId);
48+
49+
if ($forceStaticPath) {
50+
// phpcs:ignore Magento2.Functions.DiscouragedFunction
51+
return parse_url($this->imagesHelper->getCurrentUrl() . $filename, PHP_URL_PATH);
52+
}
53+
54+
return $this->imagesHelper->getImageHtmlDeclaration($filename, $renderAsTag);
55+
}
56+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Cms\Model\Wysiwyg\Images;
10+
11+
use Magento\Backend\Model\UrlInterface;
12+
use Magento\Cms\Helper\Wysiwyg\Images as ImagesHelper;
13+
use Magento\Framework\Url\EncoderInterface;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use PHPUnit\Framework\TestCase;
16+
17+
class GetInsertImageContentTest extends TestCase
18+
{
19+
/**
20+
* @var GetInsertImageContent
21+
*/
22+
private $getInsertImageContent;
23+
24+
/**
25+
* @var ImagesHelper
26+
*/
27+
private $imagesHelper;
28+
29+
/**
30+
* @var EncoderInterface
31+
*/
32+
private $urlEncoder;
33+
34+
/**
35+
* @var UrlInterface
36+
*/
37+
protected $url;
38+
39+
/**
40+
* @inheritdoc
41+
*/
42+
protected function setUp(): void
43+
{
44+
$this->getInsertImageContent = Bootstrap::getObjectManager()->get(GetInsertImageContent::class);
45+
$this->imagesHelper = Bootstrap::getObjectManager()->get(ImagesHelper::class);
46+
$this->urlEncoder = Bootstrap::getObjectManager()->get(EncoderInterface::class);
47+
$this->url = Bootstrap::getObjectManager()->get(UrlInterface::class);
48+
}
49+
50+
/**
51+
* Test for GetInsertImageContent::execute
52+
*
53+
* @dataProvider imageDataProvider
54+
* @param string $filename
55+
* @param bool $forceStaticPath
56+
* @param bool $renderAsTag
57+
* @param int|null $storeId
58+
* @param string $expectedResult
59+
*/
60+
public function testExecute(
61+
string $filename,
62+
bool $forceStaticPath,
63+
bool $renderAsTag,
64+
?int $storeId,
65+
string $expectedResult
66+
): void {
67+
if (!$forceStaticPath && !$renderAsTag && !$this->imagesHelper->isUsingStaticUrlsAllowed()) {
68+
$expectedResult = $this->url->getUrl(
69+
'cms/wysiwyg/directive',
70+
[
71+
'___directive' => $this->urlEncoder->encode($expectedResult),
72+
'_escape_params' => false
73+
]
74+
);
75+
}
76+
77+
$this->assertEquals(
78+
$expectedResult,
79+
$this->getInsertImageContent->execute(
80+
$this->imagesHelper->idEncode($filename),
81+
$forceStaticPath,
82+
$renderAsTag,
83+
$storeId
84+
)
85+
);
86+
}
87+
88+
/**
89+
* Data provider for testExecute
90+
*
91+
* @return array[]
92+
*/
93+
public function imageDataProvider(): array
94+
{
95+
return [
96+
[
97+
'test-image.jpg',
98+
false,
99+
true,
100+
1,
101+
'<img src="{{media url=&quot;test-image.jpg&quot;}}" alt="" />'
102+
],
103+
[
104+
'catalog/category/test-image.jpg',
105+
true,
106+
false,
107+
1,
108+
'/pub/media/catalog/category/test-image.jpg'
109+
],
110+
[
111+
'test-image.jpg',
112+
false,
113+
false,
114+
1,
115+
'{{media url="test-image.jpg"}}'
116+
],
117+
[
118+
'/test-image.jpg',
119+
false,
120+
true,
121+
2,
122+
'<img src="{{media url=&quot;/test-image.jpg&quot;}}" alt="" />'
123+
],
124+
[
125+
'test-image.jpg',
126+
false,
127+
true,
128+
null,
129+
'<img src="{{media url=&quot;test-image.jpg&quot;}}" alt="" />'
130+
],
131+
];
132+
}
133+
}

0 commit comments

Comments
 (0)