Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ButtonList.php
Go to the documentation of this file.
1 <?php
8 
14 {
18  protected $itemFactory;
19 
23  public function __construct(ItemFactory $itemFactory)
24  {
25  $this->itemFactory = $itemFactory;
26  }
27 
31  protected $_buttons = [-1 => [], 0 => [], 1 => []];
32 
44  public function add($buttonId, $data, $level = 0, $sortOrder = 0, $region = 'toolbar')
45  {
46  if (!isset($this->_buttons[$level])) {
47  $this->_buttons[$level] = [];
48  }
49 
50  $data['id'] = empty($data['id']) ? $buttonId : $data['id'];
51  $data['button_key'] = $data['id'] . '_button';
52  $data['region'] = empty($data['region']) ? $region : $data['region'];
53  $data['level'] = $level;
54  $sortOrder = $sortOrder ?: (count($this->_buttons[$level]) + 1) * 10;
55  $data['sort_order'] = empty($data['sort_order']) ? $sortOrder : $data['sort_order'];
56  $this->_buttons[$level][$buttonId] = $this->itemFactory->create(['data' => $data]);
57  }
58 
65  public function remove($buttonId)
66  {
67  foreach ($this->_buttons as $level => $buttons) {
68  if (isset($buttons[$buttonId])) {
70  $item = $buttons[$buttonId];
71  $item->isDeleted(true);
72  unset($this->_buttons[$level][$buttonId]);
73  }
74  }
75  }
76 
85  public function update($buttonId, $key, $data)
86  {
87  foreach ($this->_buttons as $level => $buttons) {
88  if (isset($buttons[$buttonId])) {
89  if (!empty($key)) {
90  if ('level' == $key) {
91  $this->_buttons[$data][$buttonId] = $this->_buttons[$level][$buttonId];
92  unset($this->_buttons[$level][$buttonId]);
93  } else {
95  $item = $this->_buttons[$level][$buttonId];
96  $item->setData($key, $data);
97  }
98  } else {
100  $item = $this->_buttons[$level][$buttonId];
101  $item->setData($data);
102  }
103  break;
104  }
105  }
106  }
107 
113  public function getItems()
114  {
115  array_walk($this->_buttons, function (&$item) {
116  uasort($item, [$this, 'sortButtons']);
117  });
118  return $this->_buttons;
119  }
120 
128  public function sortButtons(Item $itemA, Item $itemB)
129  {
130  $sortOrderA = (int) $itemA->getSortOrder();
131  $sortOrderB = (int) $itemB->getSortOrder();
132 
133  if ($sortOrderA == $sortOrderB) {
134  return 0;
135  }
136  return ($sortOrderA < $sortOrderB) ? -1 : 1;
137  }
138 }
add($buttonId, $data, $level=0, $sortOrder=0, $region='toolbar')
Definition: ButtonList.php:44