2 declare(strict_types = 1);
32 ItemProviders\PageProvider::class,
33 ItemProviders\RecordProvider::class
42 public function getItems(
string $table,
string $identifier,
string $context =
''): array
48 foreach ($itemsProviders as $provider) {
49 $items = $provider->addItems($items);
62 $providers = array_merge($this->itemProviders,
$GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'ContextMenu'][
'ItemProviders'] ?? []);
63 $availableProviders = [];
64 foreach ($providers as $providerClass) {
65 $provider = GeneralUtility::makeInstance($providerClass, $table, $identifier, $context);
66 if ($provider->canHandle()) {
67 $priority = $provider->getPriority();
68 $availableProviders[$priority] = $provider;
71 krsort($availableProviders);
72 return $availableProviders;
85 $prevItemWasDivider =
false;
86 foreach ($items as $key => $item) {
87 if ($item[
'type'] ===
'item') {
89 $prevItemWasDivider =
false;
92 if ($item[
'type'] ===
'divider') {
93 if ($prevItemWasDivider ===
true) {
96 $prevItemWasDivider =
true;
100 if ($item[
'type'] ===
'submenu') {
101 $childItems = $this->
cleanItems($item[
'childItems']);
102 if (empty($childItems)) {
105 $items[$key][
'childItems'] = $childItems;
107 $prevItemWasDivider =
false;
113 $fistItem = reset($items);
114 if ($fistItem[
'type'] ===
'divider') {
118 $lastItem = end($items);
119 if ($lastItem[
'type'] ===
'divider') {