Feature: #65767 - System Information Dropdown¶
See forge#65767
Description¶
A new, extensible flyout menu item is introduced that contains information about the system TYPO3 is installed on.
Impact¶
In a default installation. the new flyout item will be placed between the "help" and the "user" flyout items and is accessible by administrators only.
Items¶
It is possible to add own system information items by creating a slot. The slot must be registered in an extension's ext_localconf.php
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::class,
'getSystemInformation',
\Vendor\Extension\SystemInformation\Item::class,
'getItem'
);
This requires the class Item
and its method getItem()
in EXT:extensionClassesSystemInformationItem.php:
class Item {
public function getItem() {
return array(array(
'title' => 'The title shown on hover',
'value' => 'Description shown in the list',
'status' => SystemInformationHookInterface::STATUS_OK,
'count' => 4,
'icon' => \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('extensions-example-information-icon')
));
}
}
Due to the SignalSlot internals, the data array must be encapsulated with another array! If there is no data to return, return NULL
.
The icon extensions-example-information-icon
must be registered in ext_localconf.php:
\TYPO3\CMS\Backend\Sprite\SpriteManager::addSingleIcons(
array(
'information-icon' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Images/Icons/information-icon.png'
),
$_EXTKEY
);
"extensions-" is a hardcoded prefix, combined with $_EXTKEY
(e.g. "example") creates the prefix "extensions-example-" to
be used with every icon being registered. Since the first parameter of SpriteManager::addSingleIcons()
is an array, multiple icons
can be registered at once.
Messages¶
Messages are shown at the bottom og the dropdown. An extension can provide its own slot to fill the messages:
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
$signalSlotDispatcher->connect(
\TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem::class,
'loadMessages',
\Vendor\Extension\SystemInformation\Message::class,
'getMessage'
);
This requires the class Message
and its method getMessage()
in EXT:extensionClassesSystemInformationMessage.php:
class Message {
public function getMessage() {
return array(array(
'status' => SystemInformationHookInterface::STATUS_OK,
'text' => 'Something went somewhere terribly wrong. Take a look at the reports module.'
));
}
}
Due to the SignalSlot internals, the data array must be encapsulated with another array! If there is no data to return, return NULL
.