Skip to content

Commit 624f58e

Browse files
author
Yuri Kovsher
committed
Merge remote-tracking branch 'tango-ce/MAGETWO-15418' into MAGETWO-32571
2 parents 6171d10 + 4a1089f commit 624f58e

File tree

14 files changed

+416
-13
lines changed

14 files changed

+416
-13
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Controller\Adminhtml\Dashboard;
8+
9+
class RefreshStatistics extends \Magento\Reports\Controller\Adminhtml\Report\Statistics
10+
{
11+
/**
12+
* @param \Magento\Backend\App\Action\Context $context
13+
* @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
14+
* @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
15+
* @param array $reportTypes
16+
* @param \Psr\Log\LoggerInterface $logger
17+
*/
18+
public function __construct(
19+
\Magento\Backend\App\Action\Context $context,
20+
\Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
21+
\Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
22+
array $reportTypes,
23+
\Psr\Log\LoggerInterface $logger
24+
) {
25+
parent::__construct($context, $dateFilter, $resultRedirectFactory, $reportTypes);
26+
$this->logger = $logger;
27+
}
28+
29+
/**
30+
* @return \Magento\Backend\Model\View\Result\Redirect
31+
*/
32+
public function execute()
33+
{
34+
try {
35+
$collectionsNames = array_values($this->reportTypes);
36+
foreach ($collectionsNames as $collectionName) {
37+
$this->_objectManager->create($collectionName)->aggregate();
38+
}
39+
$this->messageManager->addSuccess(__('We updated lifetime statistic.'));
40+
} catch (\Exception $e) {
41+
$this->messageManager->addError(__('We can\'t refresh lifetime statistics.'));
42+
$this->logger->critical($e);
43+
}
44+
return $this->resultRedirectFactory->create()->setPath('*/*');
45+
}
46+
}

app/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
</block>
1616
</referenceContainer>
1717
<referenceContainer name="content">
18-
<block class="Magento\Backend\Block\Dashboard" name="dashboard"/>
18+
<block class="Magento\Backend\Block\Dashboard" name="dashboard">
19+
<block class="Magento\Backend\Block\Template" name="refresh_statistics" template="Magento_Backend::dashboard/totalbar/refreshstatistics.phtml"/>
20+
</block>
1921
</referenceContainer>
2022
</body>
2123
</page>

app/code/Magento/Backend/view/adminhtml/templates/dashboard/index.phtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ window.changeDiagramsPeriod = function(periodObj) {
8181
<div class="dashboard-store-stats">
8282
<?php echo $block->getChildHtml('grids') ?>
8383
<div id="grid_tab_content" class="dashboard-store-stats-content"></div>
84+
<?php echo $block->getChildHtml('refresh_statistics') ?>
8485
</div>
8586
</div>
8687
<div class="dashboard-secondary">
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
?>
7+
<form action="<?php echo $block->getUrl('*/*/refreshStatistics'); ?>" method="post">
8+
<input name="form_key" type="hidden" value="<?php echo $block->getFormKey(); ?>" />
9+
<button type="submit" style="float:right; margin: 15px" title="Refresh data">
10+
<?php echo __('Refresh data') ?>
11+
</button>
12+
</form>

app/code/Magento/Reports/Controller/Adminhtml/Report/Statistics.php

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,33 @@ class Statistics extends \Magento\Backend\App\Action
2828
*/
2929
protected $_dateFilter;
3030

31+
/**
32+
* Codes for Refresh Statistics
33+
*
34+
* @var []
35+
*/
36+
protected $reportTypes;
37+
38+
/**
39+
* @var \Magento\Backend\Model\View\Result\RedirectFactory
40+
*/
41+
protected $resultRedirectFactory;
42+
3143
/**
3244
* @param \Magento\Backend\App\Action\Context $context
3345
* @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
46+
* @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
47+
* @param [] $reportTypes
3448
*/
3549
public function __construct(
3650
\Magento\Backend\App\Action\Context $context,
37-
\Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
51+
\Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
52+
\Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
53+
array $reportTypes
3854
) {
3955
$this->_dateFilter = $dateFilter;
56+
$this->reportTypes = $reportTypes;
57+
$this->resultRedirectFactory = $resultRedirectFactory;
4058
parent::__construct($context);
4159
}
4260

@@ -72,19 +90,9 @@ protected function _getCollectionNames()
7290
$codes = explode(',', $codes);
7391
}
7492

75-
$aliases = [
76-
'sales' => 'Magento\Sales\Model\Resource\Report\Order',
77-
'tax' => 'Magento\Tax\Model\Resource\Report\Tax',
78-
'shipping' => 'Magento\Sales\Model\Resource\Report\Shipping',
79-
'invoiced' => 'Magento\Sales\Model\Resource\Report\Invoiced',
80-
'refunded' => 'Magento\Sales\Model\Resource\Report\Refunded',
81-
'coupons' => 'Magento\SalesRule\Model\Resource\Report\Rule',
82-
'bestsellers' => 'Magento\Sales\Model\Resource\Report\Bestsellers',
83-
'viewed' => 'Magento\Reports\Model\Resource\Report\Product\Viewed',
84-
];
8593
$out = [];
8694
foreach ($codes as $code) {
87-
$out[] = $aliases[$code];
95+
$out[] = $this->reportTypes[$code];
8896
}
8997
return $out;
9098
}

app/code/Magento/Reports/etc/adminhtml/di.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,18 @@
1111
<argument name="modelName" xsi:type="string">Magento\Customer\Model\Backend\Customer</argument>
1212
</arguments>
1313
</type>
14+
<type name="Magento\Reports\Controller\Adminhtml\Report\Statistics">
15+
<arguments>
16+
<argument name="reportTypes" xsi:type="array">
17+
<item name="sales" xsi:type="string">Magento\Sales\Model\Resource\Report\Order</item>
18+
<item name="tax" xsi:type="string">Magento\Tax\Model\Resource\Report\Tax</item>
19+
<item name="shipping" xsi:type="string">Magento\Sales\Model\Resource\Report\Shipping</item>
20+
<item name="invoiced" xsi:type="string">Magento\Sales\Model\Resource\Report\Invoiced</item>
21+
<item name="refunded" xsi:type="string">Magento\Sales\Model\Resource\Report\Refunded</item>
22+
<item name="coupons" xsi:type="string">Magento\SalesRule\Model\Resource\Report\Rule</item>
23+
<item name="bestsellers" xsi:type="string">Magento\Sales\Model\Resource\Report\Bestsellers</item>
24+
<item name="viewed" xsi:type="string">Magento\Reports\Model\Resource\Report\Product\Viewed</item>
25+
</argument>
26+
</arguments>
27+
</type>
1428
</config>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Block\Dashboard;
8+
9+
class StoreStats extends \Magento\Backend\Test\Block\Widget\FormTabs
10+
{
11+
/**
12+
* Refresh data button
13+
*
14+
* @var string
15+
*/
16+
protected $refreshData = 'button';
17+
18+
/**
19+
* Click Refresh Data button
20+
*
21+
* return void
22+
*/
23+
public function refreshData()
24+
{
25+
$this->_rootElement->find($this->refreshData)->click();
26+
}
27+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" ?>
2+
<!--
3+
/**
4+
* Copyright © 2015 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tabs>
9+
<bestsellers>
10+
<class>\Magento\Backend\Test\Block\Dashboard\Tab\Products</class>
11+
<selector>#grid_tab_ordered_products</selector>
12+
<strategy>css selector</strategy>
13+
</bestsellers>
14+
</tabs>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Block\Dashboard\Tab;
8+
9+
use Magento\Mtf\Client\Element;
10+
use Magento\Backend\Test\Block\Widget\Tab;
11+
12+
class Products extends Tab
13+
{
14+
/**
15+
* Locator for ordered products grid
16+
*
17+
* @var string
18+
*/
19+
protected $orderedProductsGrid = '#grid_tab_ordered_products_content';
20+
21+
/**
22+
* Get bestsellers grid
23+
*
24+
* @return \Magento\Backend\Test\Block\Dashboard\Tab\Products\Ordered
25+
*/
26+
public function getBestsellersGrid()
27+
{
28+
return $this->blockFactory->create(
29+
'\Magento\Backend\Test\Block\Dashboard\Tab\Products\Ordered',
30+
['element' => $this->browser->find($this->orderedProductsGrid)]
31+
);
32+
}
33+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Block\Dashboard\Tab\Products;
8+
9+
use Magento\Mtf\Client\Locator;
10+
use Magento\Backend\Test\Block\Widget\Grid;
11+
use Magento\Catalog\Test\Fixture\CatalogProductSimple;
12+
13+
/**
14+
* Ordered products grid on bestsellers tab on Dashboard
15+
*/
16+
class Ordered extends Grid
17+
{
18+
/**
19+
* Base part of row locator template
20+
*
21+
* @var string
22+
*/
23+
protected $location = '//table[@id="productsOrderedGrid_table"]/tbody/tr';
24+
25+
/**
26+
* Secondary part of row locator template
27+
*
28+
* @var string
29+
*/
30+
protected $rowTemplate = 'td[contains(., "%s")]';
31+
32+
/**
33+
* Check if ordered product is in grid
34+
*
35+
* @param CatalogProductSimple $product
36+
* @return bool
37+
*/
38+
public function isProductVisible(CatalogProductSimple $product)
39+
{
40+
$filter = [
41+
$product->getName(),
42+
$product->getPrice(),
43+
$product->getCheckoutData()['qty'],
44+
];
45+
$rows = [];
46+
foreach ($filter as $value) {
47+
$rows[] = sprintf($this->rowTemplate, $value);
48+
}
49+
$location = $this->location . '[' . implode(' and ', $rows) . ']';
50+
51+
return $this->_rootElement->find($location, Locator::SELECTOR_XPATH)->isVisible();
52+
}
53+
}

0 commit comments

Comments
 (0)