* ``` * * @see https://docs.typo3.org/permalink/t3viewhelper:typo3-backend-toolbar-attributes * @internal */ final class AttributesViewHelper extends AbstractViewHelper { public function initializeArguments(): void { $this->registerArgument('class', ToolbarItemInterface::class, 'Class being converted to a string for usage as id attribute', true); } public function render(): string { $additionalAttributes = [ 'class' => 'toolbar-item dropdown', ]; $toolbarItem = $this->arguments['class'] ?? null; if ($toolbarItem instanceof ToolbarItemInterface) { $additionalAttributes['class'] .= ' ' . ($toolbarItem->getAdditionalAttributes()['class'] ?? ''); $additionalAttributes['id'] = self::convertClassNameToIdAttribute(get_class($toolbarItem)); } return GeneralUtility::implodeAttributes($additionalAttributes); } private static function convertClassNameToIdAttribute(string $fullyQualifiedClassName): string { $className = GeneralUtility::underscoredToLowerCamelCase($fullyQualifiedClassName); $className = GeneralUtility::camelCaseToLowerCaseUnderscored($className); return str_replace(['_', '\\'], '-', $className); } }