38 protected $_template =
'Magento_Backend::widget/grid/massaction.phtml';
50 $this->_jsonEncoder = $jsonEncoder;
51 parent::__construct($context,
$data);
61 $this->setErrorText($this->
escapeHtml(
__(
'An item needs to be selected. Select and try again.')));
63 if (
null !== $this->getOptions()) {
90 if (is_array(
$item)) {
95 $item->setId($itemId);
97 $this->_items[$itemId] =
$item;
112 $checker =
$item->getData(
'visible');
113 return (!$checker instanceof VisibilityChecker) || $checker->isVisible();
124 if (isset($this->_items[$itemId])) {
125 return $this->_items[$itemId];
153 return $this->_jsonEncoder->encode(
$result);
173 return $this->
getCount() > 0 && $this->getMassactionIdField();
183 return $this->
getData(
'form_field_name') ? $this->
getData(
'form_field_name') :
'massaction';
224 $selected = explode(
',', $selected);
225 return join(
',', $selected);
238 $selected = explode(
',', $selected);
259 return " {$this->getJsObjectName()} = new varienGridMassaction('{$this->getHtmlId()}', " .
260 "{$this->getGridJsObjectName()}, '{$this->getSelectedJson()}'" .
261 ", '{$this->getFormFieldNameInternal()}', '{$this->getFormFieldName()}');" .
262 "{$this->getJsObjectName()}.setItems({$this->getItemsJson()}); " .
263 "{$this->getJsObjectName()}.setGridIds('{$this->getGridIdsJson()}');" .
264 ($this->getUseAjax() ?
"{$this->getJsObjectName()}.setUseAjax(true);" :
'') .
265 ($this->
getUseSelectAll() ?
"{$this->getJsObjectName()}.setUseSelectAll(true);" :
'') .
266 "{$this->getJsObjectName()}.errorText = '{$this->getErrorText()}';" .
"\n" .
267 "window.{$this->getJsObjectName()} = {$this->getJsObjectName()};";
273 public function getGridIdsJson()
279 $allIdsCollection = clone $this->
getParentBlock()->getCollection();
281 if ($this->getMassactionIdField()) {
282 $massActionIdField = $this->getMassactionIdField();
284 $massActionIdField = $this->
getParentBlock()->getMassactionIdField();
287 $gridIds = $allIdsCollection->setPageSize(0)->getColumnValues($massActionIdField);
288 if (!empty($gridIds)) {
289 return join(
",", $gridIds);
310 if (isset($this->_items[$itemId])) {
311 unset($this->_items[$itemId]);
325 return $this->
_getData(
'use_select_all') ===
null || $this->
_getData(
'use_select_all');
336 $this->
setData(
'use_select_all', (
bool)$flag);
345 public function prepareMassactionColumn()
347 $columnId =
'massaction';
348 $massactionColumn = $this->
getLayout()->createBlock(
352 'index' => $this->getMassactionIdField(),
353 'filter_index' => $this->getMassactionIdFilter(),
354 'type' =>
'massaction',
357 'header_css_class' =>
'col-select',
358 'column_css_class' =>
'col-select',
362 if ($this->getNoFilterMassactionColumn()) {
363 $massactionColumn->setData(
'filter',
false);
367 $massactionColumn->setSelected($this->
getSelected())->setGrid($gridBlock)->setId($columnId);
370 $columnSetBlock = $gridBlock->getColumnSet();
371 $childNames = $columnSetBlock->getChildNames();
372 $siblingElement = count($childNames) ? current($childNames) : 0;
373 $columnSetBlock->insert($massactionColumn, $siblingElement,
false, $columnId);
getData($key='', $index=null)
escapeHtml($data, $allowedTags=null)
getUrl($route='', $params=[])
setData($key, $value=null)