jsonHelper = $jsonHelper; parent::__construct($context, $data); $this->_messages = $messages; $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\Framework\Serialize\Serializer\Json::class); } /** * Prepare html output * * @return string */ protected function _toHtml() { if (count($this->_messages->getItems())) { return parent::_toHtml(); } return ''; } /** * Retrieve message list * * @return \Magento\Framework\Notification\MessageInterface[] */ public function getLastCritical() { $items = array_values($this->_messages->getItems()); if (isset( $items[0] ) && $items[0]->getSeverity() == \Magento\Framework\Notification\MessageInterface::SEVERITY_CRITICAL ) { return $items[0]; } return null; } /** * Retrieve number of critical messages * * @return int */ public function getCriticalCount() { return $this->_messages->getCountBySeverity( \Magento\Framework\Notification\MessageInterface::SEVERITY_CRITICAL ); } /** * Retrieve number of major messages * * @return int */ public function getMajorCount() { return $this->_messages->getCountBySeverity( \Magento\Framework\Notification\MessageInterface::SEVERITY_MAJOR ); } /** * Check whether system messages are present * * @return bool */ public function hasMessages() { return (bool)count($this->_messages->getItems()); } /** * Retrieve message list url * * @return string */ protected function _getMessagesUrl() { return $this->getUrl('adminhtml/system_message/list'); } /** * Initialize system message dialog widget * * @return string */ public function getSystemMessageDialogJson() { return $this->serializer->serialize( [ 'systemMessageDialog' => [ 'buttons' => [], 'modalClass' => 'ui-dialog-active ui-popup-message modal-system-messages', 'ajaxUrl' => $this->_getMessagesUrl() ], ] ); } }