diff --git a/app/code/Magento/Theme/Model/Design/Backend/File.php b/app/code/Magento/Theme/Model/Design/Backend/File.php index 92380b70530f29eb30522f1d934da9633665fbd9..52e4b3a35e6004c62d018a8105a3a0df7ae1c7e5 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 76c2ec651639cb3833652fa3fe688e6876838a48..8857e79297fa0ae8c6dace9aa6d95bc987710ca1 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 755173055bae104c307947000feedf01e2da6313..4c8c790fa42b201adb64720c983a524b31eaed7a 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 5c6b1edc1e52e160846d2501d3565198c01f50d3..77d027b87ec57e061f9df671cef78c477c07333d 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 0bd41722b9cfa37635ef6e52c0b52a02c3c091a8..eeb73108d96e844f2366fedfaa34ca1d5bbe691d 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 968ac48198106d03d03fa88da8489e3efaa691e6..ce7eda260fd5ffc7be4cc54bbd558acf9ce04d22 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 1c8f6225f81dfa792fab4f99a51c660f466fcb2d..c11b539f2b807953673046aa075a46398272c810 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 9e4b97ff5ca666af912f872f7a1a199b3eeb5e51..075e098462758ed19f5f906dd83680104f429402 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 318016a7007522e772b443e06d22b49249a4c30c..19f3da24aca80a9a34b549a83a03ccc7282dce30 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, [])); } }