From b06df231d2c5ceea14ddee621527e190539efc6b Mon Sep 17 00:00:00 2001 From: Oleksandr Karpenko <okarpenko@ebay.com> Date: Wed, 6 Apr 2016 18:13:53 +0300 Subject: [PATCH] MAGETWO-51604: [TD] Add functionality to save image in custom folder --- app/code/Magento/Theme/Model/Design/Backend/File.php | 2 +- app/code/Magento/Theme/Model/Design/Config/Storage.php | 2 ++ .../Magento/Theme/Model/Design/Config/ValueChecker.php | 4 ++++ .../Theme/Model/Design/Config/ValueProcessor.php | 6 +++++- .../Model/ResourceModel/Design/Config/Collection.php | 10 +++++++++- .../ResourceModel/Design/Config/Scope/Collection.php | 2 ++ .../Theme/Test/Unit/Model/Design/Backend/FileTest.php | 6 +++--- .../Test/Unit/Model/Design/Config/StorageTest.php | 2 +- .../Unit/Model/Design/Config/ValueProcessorTest.php | 6 +++++- 9 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/Theme/Model/Design/Backend/File.php b/app/code/Magento/Theme/Model/Design/Backend/File.php index 92380b70530..52e4b3a35e6 100644 --- a/app/code/Magento/Theme/Model/Design/Backend/File.php +++ b/app/code/Magento/Theme/Model/Design/Backend/File.php @@ -111,7 +111,7 @@ class File extends BackendFile { $value = $this->getValue(); if ($value && !is_array($value)) { - $fileName = $this->_getUploadDir() . '/' . $value; + $fileName = $this->_getUploadDir() . '/' . basename($value); $stat = $this->_mediaDirectory->stat($fileName); $this->setValue([ [ diff --git a/app/code/Magento/Theme/Model/Design/Config/Storage.php b/app/code/Magento/Theme/Model/Design/Config/Storage.php index 76c2ec65163..8857e79297f 100644 --- a/app/code/Magento/Theme/Model/Design/Config/Storage.php +++ b/app/code/Magento/Theme/Model/Design/Config/Storage.php @@ -78,6 +78,8 @@ class Storage $value = $this->valueProcessor->process( $this->scopeConfig->getValue($fieldData->getPath(), $scope, $scopeId), $fieldData->getPath(), + $scope, + $scopeId, $fieldData->getFieldConfig() ); if ($value !== null) { diff --git a/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php b/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php index 755173055ba..4c8c790fa42 100644 --- a/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php +++ b/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php @@ -58,11 +58,15 @@ class ValueChecker $this->valueProcessor->process( $value, $fieldConfig['path'], + $scope, + $scopeId, $fieldConfig ), $this->valueProcessor->process( $this->appConfig->getValue($fieldConfig['path'], $scope, $scopeId), $fieldConfig['path'], + $scope, + $scopeId, $fieldConfig ) ); diff --git a/app/code/Magento/Theme/Model/Design/Config/ValueProcessor.php b/app/code/Magento/Theme/Model/Design/Config/ValueProcessor.php index 5c6b1edc1e5..77d027b87ec 100644 --- a/app/code/Magento/Theme/Model/Design/Config/ValueProcessor.php +++ b/app/code/Magento/Theme/Model/Design/Config/ValueProcessor.php @@ -28,16 +28,20 @@ class ValueProcessor * * @param string $value * @param string $path + * @param string $scope + * @param string $scopeId * @param array $fieldConfig * @return mixed */ - public function process($value, $path, array $fieldConfig) + public function process($value, $path, $scope, $scopeId, array $fieldConfig) { $backendModel = $this->backendModelFactory->createByPath( $path, [ 'value' => $value, 'field_config' => $fieldConfig, + 'scope' => $scope, + 'scope_id' => $scopeId ] ); $backendModel->afterLoad(); diff --git a/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Collection.php b/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Collection.php index 0bd41722b9c..eeb73108d96 100644 --- a/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Collection.php +++ b/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Collection.php @@ -73,7 +73,15 @@ class Collection extends ConfigCollection protected function _afterLoad() { foreach ($this->_items as $item) { - $item->setData('value', $this->valueProcessor->process($item->getData('value'), $item->getData('path'))); + $item->setData( + 'value', + $this->valueProcessor->process( + $item->getData('value'), + $this->getData('scope'), + $this->getData('scope_id'), + $item->getData('path') + ) + ); } parent::_afterLoad(); } diff --git a/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Scope/Collection.php b/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Scope/Collection.php index 968ac481981..ce7eda260fd 100644 --- a/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Scope/Collection.php +++ b/app/code/Magento/Theme/Model/ResourceModel/Design/Config/Scope/Collection.php @@ -102,6 +102,8 @@ class Collection extends \Magento\Framework\Data\Collection $result[$itemName] = $this->valueProcessor->process( $this->appConfig->getValue($itemData['path'], $scope, $scopeId), $itemData['path'], + $scope, + $scopeId, $itemData ); } diff --git a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/FileTest.php b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/FileTest.php index 1c8f6225f81..c11b539f2b8 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/FileTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Design/Backend/FileTest.php @@ -85,7 +85,7 @@ class FileTest extends \PHPUnit_Framework_TestCase public function testAfterLoad() { - $value = 'store/1/filename.jpg'; + $value = '/filename.jpg'; $this->fileBackend->setValue($value); $this->fileBackend->setFieldConfig( [ @@ -97,7 +97,7 @@ class FileTest extends \PHPUnit_Framework_TestCase ); $this->mediaDirectory->expects($this->once()) ->method('stat') - ->with('/' . $value) + ->with($value) ->willReturn(['size' => 234234]); $this->fileConfig->expects($this->once()) ->method('getStoreMediaUrl') @@ -106,7 +106,7 @@ class FileTest extends \PHPUnit_Framework_TestCase $this->assertEquals( [ [ - 'url' => 'http://magento2.com/pub/media/' . $value, + 'url' => 'http://magento2.com/pub/media' . $value, 'file' => $value, 'size' => 234234, 'exists' => true, diff --git a/app/code/Magento/Theme/Test/Unit/Model/Design/Config/StorageTest.php b/app/code/Magento/Theme/Test/Unit/Model/Design/Config/StorageTest.php index 9e4b97ff5ca..075e0984627 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Design/Config/StorageTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Design/Config/StorageTest.php @@ -184,7 +184,7 @@ class StorageTest extends \PHPUnit_Framework_TestCase ->willReturn('value'); $this->valueProcessor->expects($this->once()) ->method('process') - ->with('value', 'path', []) + ->with('value', 'path', 'website', 1, []) ->willReturnArgument(0); $this->designConfigData->expects($this->once()) ->method('setValue') diff --git a/app/code/Magento/Theme/Test/Unit/Model/Design/Config/ValueProcessorTest.php b/app/code/Magento/Theme/Test/Unit/Model/Design/Config/ValueProcessorTest.php index 318016a7007..19f3da24aca 100644 --- a/app/code/Magento/Theme/Test/Unit/Model/Design/Config/ValueProcessorTest.php +++ b/app/code/Magento/Theme/Test/Unit/Model/Design/Config/ValueProcessorTest.php @@ -35,6 +35,8 @@ class ValueProcessorTest extends \PHPUnit_Framework_TestCase { $path = 'design/head/logo'; $value = 'path/to/logo'; + $scope = 'websites'; + $scopeId = 1; $this->backendModelFactory->expects($this->once()) ->method('createByPath') @@ -43,6 +45,8 @@ class ValueProcessorTest extends \PHPUnit_Framework_TestCase [ 'value' => $value, 'field_config' => [], + 'scope' => $scope, + 'scope_id' => $scopeId ] ) ->willReturn($this->backendModel); @@ -51,6 +55,6 @@ class ValueProcessorTest extends \PHPUnit_Framework_TestCase $this->backendModel->expects($this->once()) ->method('getValue') ->willReturn($value); - $this->assertEquals($value, $this->valueProcessor->process($value, $path, [])); + $this->assertEquals($value, $this->valueProcessor->process($value, $path, $scope, $scopeId, [])); } } -- GitLab