Skip to content

Commit

Permalink
⏫ Forwardport of #13208 to 2.3-develop branch
Browse files Browse the repository at this point in the history
  • Loading branch information
magento-engcom-team committed Feb 1, 2018
1 parent 8c705bf commit 8c05a29
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@
<listingToolbar name="listing_top">
<bookmark name="bookmarks"/>
<columnsControls name="columns_controls"/>
<exportButton name="export_button"/>
<exportButton name="export_button">
<settings>
<additionalParams>
<param xsi:type="string" active="true" name="order_id">*</param>
</additionalParams>
</settings>
</exportButton>
<filterSearch name="fulltext"/>
<filters name="listing_filters">
<filterSelect name="store_id" provider="${ $.parentName }">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@
<listingToolbar name="listing_top">
<bookmark name="bookmarks"/>
<columnsControls name="columns_controls"/>
<exportButton name="export_button"/>
<exportButton name="export_button">
<settings>
<additionalParams>
<param xsi:type="string" active="true" name="order_id">*</param>
</additionalParams>
</settings>
</exportButton>
<filterSearch name="fulltext"/>
<filters name="listing_filters">
<filterSelect name="store_id" provider="${ $.parentName }">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@
<listingToolbar name="listing_top">
<bookmark name="bookmarks"/>
<columnsControls name="columns_controls"/>
<exportButton name="export_button"/>
<exportButton name="export_button">
<settings>
<additionalParams>
<param xsi:type="string" active="true" name="order_id">*</param>
</additionalParams>
</settings>
</exportButton>
<filterSearch name="fulltext"/>
<filters name="listing_filters">
<filterSelect name="store_id" provider="${ $.parentName }">
Expand Down
25 changes: 24 additions & 1 deletion app/code/Magento/Ui/Component/ExportButton.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,39 @@ public function getComponentName()
*/
public function prepare()
{
$context = $this->getContext();
$config = $this->getData('config');
if (isset($config['options'])) {
$options = [];
foreach ($config['options'] as $option) {
$option['url'] = $this->urlBuilder->getUrl($option['url']);
$additionalParams = $this->getAdditionalParams($config, $context);
$option['url'] = $this->urlBuilder->getUrl($option['url'], $additionalParams);
$options[] = $option;
}
$config['options'] = $options;
$this->setData('config', $config);
}
parent::prepare();
}

/**
* Get export button additional parameters
*
* @param array $config
* @param ContextInterface $context
* @return array
*/
protected function getAdditionalParams($config, $context)
{
$additionalParams = [];
if (isset($config['additionalParams'])) {
foreach ($config['additionalParams'] as $paramName => $paramValue) {
if ('*' == $paramValue) {
$paramValue = $context->getRequestParam($paramName);
}
$additionalParams[$paramName] = $paramValue;
}
}
return $additionalParams;
}
}
31 changes: 27 additions & 4 deletions app/code/Magento/Ui/Test/Unit/Component/ExportButtonTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,37 @@ public function testPrepare()
->disableOriginalConstructor()
->getMock();
$this->context->expects($this->atLeastOnce())->method('getProcessor')->willReturn($processor);
$this->context->expects($this->any())
->method('getRequestParam')
->with('test_asterisk')
->willReturn('test_asterisk_value');
$option = ['label' => 'test label', 'value' => 'test value', 'url' => 'test_url'];
$data = ['config' => ['options' => [$option]]];
$data = [
'config' => [
'options' => [
$option
],
'additionalParams' => [
'test_key' => 'test_value',
'test_asterisk' => '*'
]
],
];
$expected = $data;
$expected['config']['options'][0]['url'] = [
'test_key' => 'test_value',
'test_asterisk' => 'test_asterisk_value',
];
$this->model->setData($data);

$this->urlBuilderMock->expects($this->once())
->method('getUrl')
->with('test_url')
->willReturnArgument(0);
$this->assertNull($this->model->prepare());
->willReturnArgument(1);

self::assertNull($this->model->prepare());
self::assertEquals(
$expected,
$this->model->getData()
);
}
}

0 comments on commit 8c05a29

Please sign in to comment.