123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Block\Widget\Grid\Column\Renderer;
- /**
- * Grid column widget for rendering action grid cells
- *
- * @api
- * @deprecated 100.2.0 in favour of UI component implementation
- * @since 100.0.2
- */
- class Action extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Text
- {
- /**
- * @var \Magento\Framework\Json\EncoderInterface
- */
- protected $_jsonEncoder;
- /**
- * @param \Magento\Backend\Block\Context $context
- * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder
- * @param array $data
- */
- public function __construct(
- \Magento\Backend\Block\Context $context,
- \Magento\Framework\Json\EncoderInterface $jsonEncoder,
- array $data = []
- ) {
- $this->_jsonEncoder = $jsonEncoder;
- parent::__construct($context, $data);
- }
- /**
- * Renders column
- *
- * @param \Magento\Framework\DataObject $row
- * @return string
- */
- public function render(\Magento\Framework\DataObject $row)
- {
- $actions = $this->getColumn()->getActions();
- if (empty($actions) || !is_array($actions)) {
- return ' ';
- }
- if (sizeof($actions) == 1 && !$this->getColumn()->getNoLink()) {
- foreach ($actions as $action) {
- if (is_array($action)) {
- return $this->_toLinkHtml($action, $row);
- }
- }
- }
- $out = '<select class="admin__control-select" onchange="varienGridAction.execute(this);">' .
- '<option value=""></option>';
- $i = 0;
- foreach ($actions as $action) {
- $i++;
- if (is_array($action)) {
- $out .= $this->_toOptionHtml($action, $row);
- }
- }
- $out .= '</select>';
- return $out;
- }
- /**
- * Render single action as dropdown option html
- *
- * @param array $action
- * @param \Magento\Framework\DataObject $row
- * @return string
- */
- protected function _toOptionHtml($action, \Magento\Framework\DataObject $row)
- {
- $actionAttributes = new \Magento\Framework\DataObject();
- $actionCaption = '';
- $this->_transformActionData($action, $actionCaption, $row);
- $htmlAttributes = [
- 'value' => $this->escapeHtmlAttr($this->_jsonEncoder->encode($action), false)
- ];
- $actionAttributes->setData($htmlAttributes);
- return '<option ' . $actionAttributes->serialize() . '>' . $actionCaption . '</option>';
- }
- /**
- * Render single action as link html
- *
- * @param array $action
- * @param \Magento\Framework\DataObject $row
- * @return string
- */
- protected function _toLinkHtml($action, \Magento\Framework\DataObject $row)
- {
- $actionAttributes = new \Magento\Framework\DataObject();
- $actionCaption = '';
- $this->_transformActionData($action, $actionCaption, $row);
- if (isset($action['confirm'])) {
- $action['onclick'] = 'return window.confirm(\'' . addslashes(
- $this->escapeHtml($action['confirm'])
- ) . '\')';
- unset($action['confirm']);
- }
- $actionAttributes->setData($action);
- return '<a ' . $actionAttributes->serialize() . '>' . $actionCaption . '</a>';
- }
- /**
- * Prepares action data for html render
- *
- * @param array &$action
- * @param string &$actionCaption
- * @param \Magento\Framework\DataObject $row
- * @return $this
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @SuppressWarnings(PHPMD.UnusedLocalVariable)
- */
- protected function _transformActionData(&$action, &$actionCaption, \Magento\Framework\DataObject $row)
- {
- foreach ($action as $attribute => $value) {
- if (isset($action[$attribute]) && !is_array($action[$attribute])) {
- $this->getColumn()->setFormat($action[$attribute]);
- $action[$attribute] = parent::render($row);
- } else {
- $this->getColumn()->setFormat(null);
- }
- switch ($attribute) {
- case 'caption':
- $actionCaption = $action['caption'];
- unset($action['caption']);
- break;
- case 'url':
- if (is_array($action['url']) && isset($action['field'])) {
- $params = [$action['field'] => $this->_getValue($row)];
- if (isset($action['url']['params'])) {
- $params = array_merge($action['url']['params'], $params);
- }
- $action['href'] = $this->getUrl($action['url']['base'], $params);
- unset($action['field']);
- } else {
- $action['href'] = $action['url'];
- }
- unset($action['url']);
- break;
- case 'popup':
- $action['onclick'] = 'popWin(this.href,\'_blank\',\'width=800,height=700,resizable=1,'
- . 'scrollbars=1\');return false;';
- break;
- }
- }
- return $this;
- }
- }
|