44 public function add($buttonId,
$data, $level = 0, $sortOrder = 0, $region =
'toolbar')
46 if (!isset($this->_buttons[$level])) {
47 $this->_buttons[$level] = [];
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]);
65 public function remove($buttonId)
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]);
85 public function update($buttonId, $key,
$data)
87 foreach ($this->_buttons as $level => $buttons) {
88 if (isset($buttons[$buttonId])) {
90 if (
'level' == $key) {
91 $this->_buttons[
$data][$buttonId] = $this->_buttons[$level][$buttonId];
92 unset($this->_buttons[$level][$buttonId]);
95 $item = $this->_buttons[$level][$buttonId];
100 $item = $this->_buttons[$level][$buttonId];
115 array_walk($this->_buttons,
function (&
$item) {
116 uasort(
$item, [$this,
'sortButtons']);
130 $sortOrderA = (int) $itemA->getSortOrder();
131 $sortOrderB = (int) $itemB->getSortOrder();
133 if ($sortOrderA == $sortOrderB) {
136 return ($sortOrderA < $sortOrderB) ? -1 : 1;