| Current Path : /home/rtorresani/www/vendor/magento/module-import-export/Block/Adminhtml/Import/Frame/ |
| Current File : //home/rtorresani/www/vendor/magento/module-import-export/Block/Adminhtml/Import/Frame/Result.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\ImportExport\Block\Adminhtml\Import\Frame;
use Magento\Framework\View\Element\Template;
/**
* Import frame result block.
*
* @api
* @since 100.0.2
*/
class Result extends \Magento\Backend\Block\Template
{
/**
* JavaScript actions for response.
* 'clear' remove element from DOM
* 'innerHTML' set innerHTML property (use: elementID => new content)
* 'value' set value for form element (use: elementID => new value)
* 'show' show specified element
* 'hide' hide specified element
* 'removeClassName' remove specified class name from element
* 'addClassName' add specified class name to element
*
* @var array
*/
protected $_actions = [
'clear' => [],
'innerHTML' => [],
'value' => [],
'show' => [],
'hide' => [],
'removeClassName' => [],
'addClassName' => [],
];
/**
* Validation messages.
*
* @var array
*/
protected $_messages = ['error' => [], 'success' => [], 'notice' => []];
/**
* @var \Magento\Framework\Json\EncoderInterface
*/
protected $_jsonEncoder;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Json\EncoderInterface $jsonEncoder
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Json\EncoderInterface $jsonEncoder,
array $data = []
) {
$this->_jsonEncoder = $jsonEncoder;
parent::__construct($context, $data);
}
/**
* Add action for response.
*
* @param string $actionName
* @param string $elementId
* @param mixed $value OPTIONAL
* @return $this
*/
public function addAction($actionName, $elementId, $value = null)
{
if (isset($this->_actions[$actionName])) {
if (null === $value) {
if (is_array($elementId)) {
foreach ($elementId as $oneId) {
$this->_actions[$actionName][] = $oneId;
}
} else {
$this->_actions[$actionName][] = $elementId;
}
} else {
$this->_actions[$actionName][$elementId] = $value;
}
}
return $this;
}
/**
* Add error message.
*
* @param string $message Error message
* @return $this
*/
public function addError($message)
{
if (is_array($message)) {
foreach ($message as $row) {
$this->addError($row);
}
} else {
$this->_messages['error'][] = $this->escapeHtml($message);
}
return $this;
}
/**
* Add notice message.
*
* @param string[]|string $message Message text
* @param bool $appendImportButton OPTIONAL Append import button to message?
* @return $this
*/
public function addNotice($message, $appendImportButton = false)
{
if (is_array($message)) {
foreach ($message as $row) {
$this->addNotice($row);
}
} else {
$this->_messages['notice'][] = $message . ($appendImportButton ? $this->getImportButtonHtml() : '');
}
return $this;
}
/**
* Add success message.
*
* @param string[]|string $message Message text
* @param bool $appendImportButton OPTIONAL Append import button to message?
* @return $this
*/
public function addSuccess($message, $appendImportButton = false)
{
if (is_array($message)) {
foreach ($message as $row) {
$this->addSuccess($row);
}
} else {
$escapedMessage = $this->escapeHtml($message);
$this->_messages['success'][] = $escapedMessage . ($appendImportButton ? $this->getImportButtonHtml() : '');
}
return $this;
}
/**
* Import button HTML for append to message.
*
* @return string
*/
public function getImportButtonHtml()
{
return ' <button onclick="varienImport.startImport(\'' .
$this->getImportStartUrl() .
'\', \'' .
\Magento\ImportExport\Model\Import::FIELD_NAME_SOURCE_FILE .
'\');" class="scalable save"' .
' type="button"><span><span><span>' .
__(
'Import'
) . '</span></span></span></button>';
}
/**
* Import start action URL.
*
* @return string
*/
public function getImportStartUrl()
{
return $this->getUrl('adminhtml/*/start');
}
/**
* Messages getter.
*
* @return array
*/
public function getMessages()
{
return $this->_messages;
}
/**
* Messages rendered HTML getter.
*
* @return string
*/
public function getMessagesHtml()
{
/** @var $messagesBlock \Magento\Framework\View\Element\Messages */
$messagesBlock = $this->_layout->createBlock(\Magento\Framework\View\Element\Messages::class);
foreach ($this->_messages as $priority => $messages) {
$method = "add{$priority}";
foreach ($messages as $message) {
$messagesBlock->{$method}($message);
}
}
return $messagesBlock->toHtml();
}
/**
* Return response as JSON.
*
* @return string
*/
public function getResponseJson()
{
// add messages HTML if it is not already specified
if (!isset($this->_actions['import_validation_messages'])) {
$this->addAction('innerHTML', 'import_validation_messages', $this->getMessagesHtml());
}
return $this->_jsonEncoder->encode($this->_actions);
}
}