/vendor/magento/module-backend/Block/Widget/Grid/Column/Renderer/Action.php
https://gitlab.com/yousafsyed/easternglamor · PHP · 162 lines · 96 code · 18 blank · 48 comment · 16 complexity · db54fd3dcaaa8554123c33e56b2d9c8f MD5 · raw file
- <?php
- /**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
- // @codingStandardsIgnoreFile
- namespace Magento\Backend\Block\Widget\Grid\Column\Renderer;
- /**
- * Grid column widget for rendering action grid cells
- *
- * @author Magento Core Team <core@magentocommerce.com>
- */
- 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);
- $htmlAttibutes = ['value' => $this->escapeHtml($this->_jsonEncoder->encode($action))];
- $actionAttributes->setData($htmlAttibutes);
- 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;
- }
- }