UnreadMessagePopup.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\AdminNotification\Block\System\Messages;
  7. use Magento\Framework\Notification\MessageInterface;
  8. /**
  9. * @api
  10. * @since 100.0.2
  11. */
  12. class UnreadMessagePopup extends \Magento\Backend\Block\Template
  13. {
  14. /**
  15. * List of item classes per severity
  16. *
  17. * @var array
  18. */
  19. protected $_itemClasses = [
  20. MessageInterface::SEVERITY_CRITICAL => 'error',
  21. MessageInterface::SEVERITY_MAJOR => 'warning',
  22. ];
  23. /**
  24. * System Message list
  25. *
  26. * @var \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection
  27. */
  28. protected $_messages;
  29. /**
  30. * @param \Magento\Backend\Block\Template\Context $context
  31. * @param \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection\Synchronized $messages
  32. * @param array $data
  33. */
  34. public function __construct(
  35. \Magento\Backend\Block\Template\Context $context,
  36. \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection\Synchronized $messages,
  37. array $data = []
  38. ) {
  39. parent::__construct($context, $data);
  40. $this->_messages = $messages;
  41. }
  42. /**
  43. * Render block
  44. *
  45. * @return string
  46. */
  47. protected function _toHtml()
  48. {
  49. if (count($this->_messages->getUnread())) {
  50. return parent::_toHtml();
  51. }
  52. return '';
  53. }
  54. /**
  55. * Retrieve list of unread messages
  56. *
  57. * @return MessageInterface[]
  58. */
  59. public function getUnreadMessages()
  60. {
  61. return $this->_messages->getUnread();
  62. }
  63. /**
  64. * Retrieve popup title
  65. *
  66. * @return \Magento\Framework\Phrase
  67. */
  68. public function getPopupTitle()
  69. {
  70. $messageCount = count($this->_messages->getUnread());
  71. if ($messageCount > 1) {
  72. return __('You have %1 new system messages', $messageCount);
  73. }
  74. return __('You have %1 new system message', $messageCount);
  75. }
  76. /**
  77. * Retrieve item class by severity
  78. *
  79. * @param MessageInterface $message
  80. * @return string
  81. */
  82. public function getItemClass(MessageInterface $message)
  83. {
  84. return $this->_itemClasses[$message->getSeverity()];
  85. }
  86. }