1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Sales\Block\Adminhtml\Reorder\Renderer;
/**
* Adminhtml alert queue grid block action item renderer
*
* @author Magento Core Team <core@magentocommerce.com>
*/
class Action extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
{
/**
* Array to store all options data
*
* @var array
*/
protected $_actions = [];
/**
* Sales reorder
*
* @var \Magento\Sales\Helper\Reorder
*/
protected $_salesReorder = null;
/**
* @param \Magento\Backend\Block\Context $context
* @param \Magento\Sales\Helper\Reorder $salesReorder
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Context $context,
\Magento\Sales\Helper\Reorder $salesReorder,
array $data = []
) {
$this->_salesReorder = $salesReorder;
parent::__construct($context, $data);
}
/**
* @param \Magento\Framework\DataObject $row
* @return string
*/
public function render(\Magento\Framework\DataObject $row)
{
$this->_actions = [];
if ($this->_salesReorder->canReorder($row->getId())) {
$reorderAction = [
'@' => [
'href' => $this->getUrl('sales/order_create/reorder', ['order_id' => $row->getId()]),
],
'#' => __('Reorder'),
];
$this->addToActions($reorderAction);
}
$this->_eventManager->dispatch(
'adminhtml_customer_orders_add_action_renderer',
['renderer' => $this, 'row' => $row]
);
return $this->_actionsToHtml();
}
/**
* Get escaped value
*
* @param string $value
* @return string
*/
protected function _getEscapedValue($value)
{
return addcslashes(htmlspecialchars($value), '\\\'');
}
/**
* Render options array as a HTML string
*
* @param array $actions
* @return string
*/
protected function _actionsToHtml(array $actions = [])
{
$html = [];
$attributesObject = new \Magento\Framework\DataObject();
if (empty($actions)) {
$actions = $this->_actions;
}
foreach ($actions as $action) {
$attributesObject->setData($action['@']);
$html[] = '<a ' . $attributesObject->serialize() . '>' . $action['#'] . '</a>';
}
return implode('', $html);
}
/**
* Add one action array to all options data storage
*
* @param array $actionArray
* @return void
*/
public function addToActions($actionArray)
{
$this->_actions[] = $actionArray;
}
}