forked from magento/magento2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMultiaction.php
More file actions
102 lines (92 loc) · 3.01 KB
/
Multiaction.php
File metadata and controls
102 lines (92 loc) · 3.01 KB
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
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Block\Adminhtml\Grid\Renderer;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Math\Random;
use Magento\Framework\View\Helper\SecureHtmlRenderer;
/**
* Adminhtml customers wishlist grid item action renderer for few action controls in one cell
*/
class Multiaction extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Action
{
/**
* @var SecureHtmlRenderer
*/
private $secureHtmlRenderer;
/**
* @var Random
*/
private $random;
/**
* @inheritDoc
*/
public function __construct(
\Magento\Backend\Block\Context $context,
\Magento\Framework\Json\EncoderInterface $jsonEncoder,
array $data = [],
?SecureHtmlRenderer $secureHtmlRenderer = null,
?Random $random = null
) {
parent::__construct($context, $jsonEncoder, $data, $secureHtmlRenderer, $random);
$this->secureHtmlRenderer = $secureHtmlRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class);
$this->random = $random ?? ObjectManager::getInstance()->get(Random::class);
}
/**
* Renders column
*
* @param \Magento\Framework\DataObject $row
* @return string
*/
public function render(\Magento\Framework\DataObject $row)
{
$html = '';
$actions = $this->getColumn()->getActions();
if (!empty($actions) && is_array($actions)) {
$links = [];
foreach ($actions as $action) {
if (is_array($action)) {
$link = $this->_toLinkHtml($action, $row);
if ($link) {
$links[] = $link;
}
}
}
$html = implode('<br />', $links);
}
if ($html == '') {
$html = ' ';
}
return $html;
}
/**
* Render single action as link html
*
* @param array $action
* @param \Magento\Framework\DataObject $row
* @return string|false
*/
protected function _toLinkHtml($action, \Magento\Framework\DataObject $row)
{
$product = $row->getProduct();
if (isset($action['process']) && $action['process'] == 'configurable') {
if ($product->canConfigure()) {
$id = 'id' .$this->random->getRandomString(10);
$onClick = sprintf('return %s.configureItem(%s)', $action['control_object'], $row->getId());
return sprintf(
'<a href="%s" id="%s" class="configure-item-link">%s</a>%s',
$action['url'],
$id,
$action['caption'],
$this->secureHtmlRenderer->renderEventListenerAsTag('onclick', $onClick, "#$id")
);
} else {
return false;
}
} else {
return parent::_toLinkHtml($action, $row);
}
}
}