Skip to content

Commit e953185

Browse files
ENGCOM-8217: fix incorrect image size when rendition is inserted #29979
- Merge Pull Request #29979 from engcom-Golf/magento2:asi-1806 - Merged commits: 1. 22da500 2. b5180c0 3. 7cfbc30 4. 9a6bd96 5. 9d0252a 6. e832db8 7. 1db2872 8. 837dd9d 9. 79ddf27 10. 1535626 11. cbc38f6 12. 0cafa20 13. ccd7251 14. 35642f7 15. f6f5a5e
2 parents b9c13fd + f6f5a5e commit e953185

File tree

11 files changed

+489
-6
lines changed

11 files changed

+489
-6
lines changed

app/code/Magento/Catalog/Test/Mftf/Section/AdminCategoryContentSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<element name="selectFromGalleryButton" type="button" selector="//*[@class='file-uploader-area']/label[text()='Select from Gallery']"/>
1515
<element name="uploadImageFile" type="input" selector=".file-uploader-area>input"/>
1616
<element name="imageFileName" type="text" selector=".file-uploader-filename"/>
17+
<element name="imageFileMeta" type="text" selector=".file-uploader-meta"/>
1718
<element name="removeImageButton" type="button" selector=".file-uploader-summary .action-remove"/>
1819
<element name="AddCMSBlock" type="select" selector="//*[@name='landing_page']"/>
1920
<element name="description" type="input" selector="//*[@name='description']"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="AdminMediaGalleryInsertLargeImageFileSizeTest">
12+
<annotations>
13+
<features value="AdminMediaGalleryInsertLargeImageFileSizeTest"/>
14+
<useCaseId value="https://github.com/magento/adobe-stock-integration/issues/1806"/>
15+
<title value="Admin user should see correct image file size after rendition"/>
16+
<testCaseId value="https://studio.cucumber.io/projects/131313/test-plan/folders/1507933/scenarios/5200023"/>
17+
<stories value="User inserts image rendition to the content"/>
18+
<description value="Admin user should see correct image file size after rendition"/>
19+
<severity value="AVERAGE"/>
20+
<group value="media_gallery_ui"/>
21+
</annotations>
22+
<before>
23+
<createData entity="SimpleSubCategory" stepKey="category"/>
24+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
25+
</before>
26+
<after>
27+
<!-- Delete uploaded image -->
28+
<actionGroup ref="AdminOpenCategoryGridPageActionGroup" stepKey="openCategoryPageFoDelete"/>
29+
<actionGroup ref="AdminEditCategoryInGridPageActionGroup" stepKey="editCategoryItemForDelete">
30+
<argument name="categoryName" value="$category.name$"/>
31+
</actionGroup>
32+
<actionGroup ref="AdminOpenMediaGalleryFromCategoryImageUploaderActionGroup" stepKey="openMediaGalleryForDelete"/>
33+
<actionGroup ref="AdminEnhancedMediaGalleryEnableMassActionModeActionGroup" stepKey="enableMassActionToDeleteImages"/>
34+
<actionGroup ref="AdminEnhancedMediaGallerySelectImageForMassActionActionGroup" stepKey="selectSecondImageToDelete">
35+
<argument name="imageName" value="{{ImageUpload.fileName}}"/>
36+
</actionGroup>
37+
<actionGroup ref="AdminEnhancedMediaGalleryClickDeleteImagesButtonActionGroup" stepKey="clickDeleteSelectedButton"/>
38+
<actionGroup ref="AdminEnhancedMediaGalleryConfirmDeleteImagesActionGroup" stepKey="deleteImages"/>
39+
40+
<!-- Delete category -->
41+
<deleteData createDataKey="category" stepKey="deleteCategory"/>
42+
</after>
43+
44+
<!-- Open category page -->
45+
<actionGroup ref="AdminOpenCategoryGridPageActionGroup" stepKey="openCategoryPage"/>
46+
<actionGroup ref="AdminEditCategoryInGridPageActionGroup" stepKey="editCategoryItem">
47+
<argument name="categoryName" value="$category.name$"/>
48+
</actionGroup>
49+
50+
<!-- Add image to category from gallery -->
51+
<actionGroup ref="AdminOpenMediaGalleryFromCategoryImageUploaderActionGroup" stepKey="openMediaGallery"/>
52+
<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="addCategoryImage">
53+
<argument name="image" value="ImageUpload"/>
54+
</actionGroup>
55+
<actionGroup ref="AdminMediaGalleryClickImageInGridActionGroup" stepKey="selectImage">
56+
<argument name="imageName" value="{{ImageUpload.fileName}}"/>
57+
</actionGroup>
58+
<actionGroup ref="AdminMediaGalleryClickAddSelectedActionGroup" stepKey="addSelected"/>
59+
60+
61+
<!-- Assert added image size -->
62+
<actionGroup ref="AdminAssertImageUploadFileSizeThanActionGroup" stepKey="assertSize">
63+
<argument name="fileSize" value="26 KB"/>
64+
</actionGroup>
65+
</test>
66+
</tests>
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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\MediaGalleryUi\Controller\Adminhtml\Image;
10+
11+
use Magento\Backend\App\Action;
12+
use Magento\Backend\App\Action\Context;
13+
use Magento\Framework\App\Action\HttpPostActionInterface;
14+
use Magento\Framework\Controller\Result\JsonFactory;
15+
use Magento\Framework\Controller\ResultInterface;
16+
use Magento\MediaGalleryUi\Model\InsertImageData\GetInsertImageData;
17+
18+
/**
19+
* OnInsert action returns on insert image details
20+
*/
21+
class OnInsert extends Action implements HttpPostActionInterface
22+
{
23+
/**
24+
* @see _isAllowed()
25+
*/
26+
public const ADMIN_RESOURCE = 'Magento_MediaGalleryUiApi::insert_assets';
27+
28+
/**
29+
* @var JsonFactory
30+
*/
31+
private $resultJsonFactory;
32+
33+
/**
34+
* @var GetInsertImageData
35+
*/
36+
private $getInsertImageData;
37+
38+
/**
39+
* @param Context $context
40+
* @param JsonFactory $resultJsonFactory
41+
* @param GetInsertImageData $getInsertImageData
42+
*/
43+
public function __construct(
44+
Context $context,
45+
JsonFactory $resultJsonFactory,
46+
GetInsertImageData $getInsertImageData
47+
) {
48+
parent::__construct($context);
49+
$this->resultJsonFactory = $resultJsonFactory;
50+
$this->getInsertImageData = $getInsertImageData;
51+
}
52+
53+
/**
54+
* Return a content (just a link or an html block) for inserting image to the content
55+
*
56+
* @return ResultInterface
57+
*/
58+
public function execute()
59+
{
60+
$data = $this->getRequest()->getParams();
61+
$insertImageData = $this->getInsertImageData->execute(
62+
$data['filename'],
63+
(bool)$data['force_static_path'],
64+
(bool)$data['as_is'],
65+
isset($data['store']) ? (int)$data['store'] : null
66+
);
67+
68+
return $this->resultJsonFactory->create()->setData([
69+
'content' => $insertImageData->getContent(),
70+
'size' => $insertImageData->getSize(),
71+
'type' => $insertImageData->getType(),
72+
]);
73+
}
74+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
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\MediaGalleryUi\Model;
10+
11+
use Magento\MediaGalleryUi\Model\InsertImageDataExtensionInterface;
12+
13+
/**
14+
* Class responsible to provide insert image details
15+
*/
16+
class InsertImageData implements InsertImageDataInterface
17+
{
18+
/**
19+
* @var InsertImageDataExtensionInterface
20+
*/
21+
private $extensionAttributes;
22+
23+
/**
24+
* @var string
25+
*/
26+
private $content;
27+
28+
/**
29+
* @var int
30+
*/
31+
private $size;
32+
33+
/**
34+
* @var string
35+
*/
36+
private $type;
37+
38+
/**
39+
* InsertImageData constructor.
40+
*
41+
* @param string $content
42+
* @param int $size
43+
* @param string $type
44+
*/
45+
public function __construct(string $content, int $size, string $type)
46+
{
47+
$this->content = $content;
48+
$this->size = $size;
49+
$this->type = $type;
50+
}
51+
52+
/**
53+
* Returns a content (just a link or an html block) for inserting image to the content
54+
*
55+
* @return string
56+
*/
57+
public function getContent(): string
58+
{
59+
return $this->content;
60+
}
61+
62+
/**
63+
* Returns size of requested file
64+
*
65+
* @return int
66+
*/
67+
public function getSize(): int
68+
{
69+
return $this->size;
70+
}
71+
72+
/**
73+
* Returns MIME type of requested file
74+
*
75+
* @return string
76+
*/
77+
public function getType(): string
78+
{
79+
return $this->type;
80+
}
81+
82+
/**
83+
* Get extension attributes
84+
*
85+
* @return \Magento\MediaGalleryUi\Model\InsertImageDataExtensionInterface|null
86+
*/
87+
public function getExtensionAttributes(): ?InsertImageDataExtensionInterface
88+
{
89+
return $this->extensionAttributes;
90+
}
91+
92+
/**
93+
* Set extension attributes
94+
*
95+
* @param \Magento\MediaGalleryUi\Model\InsertImageDataExtensionInterface $extensionAttributes
96+
* @return void
97+
*/
98+
public function setExtensionAttributes(InsertImageDataExtensionInterface $extensionAttributes): void
99+
{
100+
$this->extensionAttributes = $extensionAttributes;
101+
}
102+
}

0 commit comments

Comments
 (0)