Grid.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Block\Adminhtml\Edit\Tab\Newsletter;
  7. /**
  8. * Adminhtml newsletter queue grid block
  9. *
  10. * @api
  11. * @since 100.0.2
  12. */
  13. class Grid extends \Magento\Backend\Block\Widget\Grid\Extended
  14. {
  15. /**
  16. * Core registry
  17. *
  18. * @var \Magento\Framework\Registry|null
  19. */
  20. protected $_coreRegistry = null;
  21. /**
  22. * @var \Magento\Newsletter\Model\ResourceModel\Queue\CollectionFactory
  23. */
  24. protected $_collectionFactory;
  25. /**
  26. * @param \Magento\Backend\Block\Template\Context $context
  27. * @param \Magento\Backend\Helper\Data $backendHelper
  28. * @param \Magento\Newsletter\Model\ResourceModel\Queue\CollectionFactory $collectionFactory
  29. * @param \Magento\Framework\Registry $coreRegistry
  30. * @param array $data
  31. */
  32. public function __construct(
  33. \Magento\Backend\Block\Template\Context $context,
  34. \Magento\Backend\Helper\Data $backendHelper,
  35. \Magento\Newsletter\Model\ResourceModel\Queue\CollectionFactory $collectionFactory,
  36. \Magento\Framework\Registry $coreRegistry,
  37. array $data = []
  38. ) {
  39. $this->_coreRegistry = $coreRegistry;
  40. $this->_collectionFactory = $collectionFactory;
  41. parent::__construct($context, $backendHelper, $data);
  42. }
  43. /**
  44. * @return void
  45. */
  46. protected function _construct()
  47. {
  48. parent::_construct();
  49. $this->setId('queueGrid');
  50. $this->setDefaultSort('start_at');
  51. $this->setDefaultDir('desc');
  52. $this->setUseAjax(true);
  53. $this->setEmptyText(__('No Newsletter Found'));
  54. }
  55. /**
  56. * @return string
  57. */
  58. public function getGridUrl()
  59. {
  60. return $this->getUrl('customer/*/newsletter', ['_current' => true]);
  61. }
  62. /**
  63. * @return $this
  64. */
  65. protected function _prepareCollection()
  66. {
  67. /** @var $collection \Magento\Newsletter\Model\ResourceModel\Queue\Collection */
  68. $collection = $this->_collectionFactory->create()->addTemplateInfo()->addSubscriberFilter(
  69. $this->_coreRegistry->registry('subscriber')->getId()
  70. );
  71. $this->setCollection($collection);
  72. return parent::_prepareCollection();
  73. }
  74. /**
  75. * @return $this
  76. */
  77. protected function _prepareColumns()
  78. {
  79. $this->addColumn(
  80. 'queue_id',
  81. ['header' => __('ID'), 'align' => 'left', 'index' => 'queue_id', 'width' => 10]
  82. );
  83. $this->addColumn(
  84. 'start_at',
  85. [
  86. 'header' => __('Start date'),
  87. 'type' => 'datetime',
  88. 'align' => 'center',
  89. 'index' => 'queue_start_at',
  90. 'default' => ' ---- '
  91. ]
  92. );
  93. $this->addColumn(
  94. 'finish_at',
  95. [
  96. 'header' => __('End Date'),
  97. 'type' => 'datetime',
  98. 'align' => 'center',
  99. 'index' => 'queue_finish_at',
  100. 'gmtoffset' => true,
  101. 'default' => ' ---- '
  102. ]
  103. );
  104. $this->addColumn(
  105. 'letter_sent_at',
  106. [
  107. 'header' => __('Receive Date'),
  108. 'type' => 'datetime',
  109. 'align' => 'center',
  110. 'index' => 'letter_sent_at',
  111. 'gmtoffset' => true,
  112. 'default' => ' ---- '
  113. ]
  114. );
  115. $this->addColumn(
  116. 'template_subject',
  117. ['header' => __('Subject'), 'align' => 'center', 'index' => 'template_subject']
  118. );
  119. $this->addColumn(
  120. 'status',
  121. [
  122. 'header' => __('Status'),
  123. 'align' => 'center',
  124. 'filter' => \Magento\Customer\Block\Adminhtml\Edit\Tab\Newsletter\Grid\Filter\Status::class,
  125. 'index' => 'queue_status',
  126. 'renderer' => \Magento\Customer\Block\Adminhtml\Edit\Tab\Newsletter\Grid\Renderer\Status::class
  127. ]
  128. );
  129. $this->addColumn(
  130. 'action',
  131. [
  132. 'header' => __('Action'),
  133. 'align' => 'center',
  134. 'filter' => false,
  135. 'sortable' => false,
  136. 'renderer' => \Magento\Customer\Block\Adminhtml\Edit\Tab\Newsletter\Grid\Renderer\Action::class
  137. ]
  138. );
  139. return parent::_prepareColumns();
  140. }
  141. }