1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Sales\Block\Adminhtml\Order\View;
/**
* Order history block
*
* @api
* @since 100.0.2
*/
class History extends \Magento\Backend\Block\Template
{
/**
* Core registry
*
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry = null;
/**
* Sales data
*
* @var \Magento\Sales\Helper\Data
*/
protected $_salesData = null;
/**
* @var \Magento\Sales\Helper\Admin
*/
private $adminHelper;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Sales\Helper\Data $salesData
* @param \Magento\Framework\Registry $registry
* @param \Magento\Sales\Helper\Admin $adminHelper
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Sales\Helper\Data $salesData,
\Magento\Framework\Registry $registry,
\Magento\Sales\Helper\Admin $adminHelper,
array $data = []
) {
$this->_coreRegistry = $registry;
$this->_salesData = $salesData;
parent::__construct($context, $data);
$this->adminHelper = $adminHelper;
}
/**
* Preparing global layout
*
* @return $this
*/
protected function _prepareLayout()
{
$onclick = "submitAndReloadArea($('order_history_block').parentNode, '" . $this->getSubmitUrl() . "')";
$button = $this->getLayout()->createBlock(
\Magento\Backend\Block\Widget\Button::class
)->setData(
['label' => __('Submit Comment'), 'class' => 'action-save action-secondary', 'onclick' => $onclick]
);
$this->setChild('submit_button', $button);
return parent::_prepareLayout();
}
/**
* Get stat uses
*
* @return array
*/
public function getStatuses()
{
$state = $this->getOrder()->getState();
$statuses = $this->getOrder()->getConfig()->getStateStatuses($state);
return $statuses;
}
/**
* Check allow to send order comment email
*
* @return bool
*/
public function canSendCommentEmail()
{
return $this->_salesData->canSendOrderCommentEmail($this->getOrder()->getStore()->getId())
&& $this->_authorization->isAllowed('Magento_Sales::email');
}
/**
* Retrieve order model
*
* @return \Magento\Sales\Model\Order
*/
public function getOrder()
{
return $this->_coreRegistry->registry('sales_order');
}
/**
* Check allow to add comment
*
* @return bool
*/
public function canAddComment()
{
return $this->_authorization->isAllowed('Magento_Sales::comment') && $this->getOrder()->canComment();
}
/**
* Submit URL getter
*
* @return string
*/
public function getSubmitUrl()
{
return $this->getUrl('sales/*/addComment', ['order_id' => $this->getOrder()->getId()]);
}
/**
* Customer Notification Applicable check method
*
* @param \Magento\Sales\Model\Order\Status\History $history
* @return bool
*/
public function isCustomerNotificationNotApplicable(\Magento\Sales\Model\Order\Status\History $history)
{
return $history->isCustomerNotificationNotApplicable();
}
/**
* Replace links in string
*
* @param array|string $data
* @param null|array $allowedTags
* @return string
*/
public function escapeHtml($data, $allowedTags = null)
{
return $this->adminHelper->escapeHtmlWithLinks($data, $allowedTags);
}
}