builder = $builder; $this->localizer = $localizer; } /** * Build the menu data array that can be passed to views/javascript * @param array $personalTools Personal tools list generated by BaseTemplate::getPersonalTools * @return string|null */ public function renderMenuData( array $personalTools ) { $entries = $this->builder->getGroup( $personalTools )->getEntries(); foreach ( $entries as &$entry ) { foreach ( $entry['components'] as &$component ) { $component['class'] .= ' toggle-list-item__anchor--menu'; } } $templateParser = new TemplateParser( __DIR__ . '/../../../components' ); return empty( $entries ) ? null : $templateParser->processTemplate( 'ToggleList', [ 'class' => 'minerva-user-menu', 'checkboxID' => 'minerva-user-menu-checkbox', 'toggleID' => 'minerva-user-menu-toggle', // See minerva.mustache too. 'toggleClass' => MinervaUI::iconClass( 'page-actions-overflow', 'element', 'wikimedia-ui-' . 'userAvatarOutline' . '-base20' ), 'listClass' => 'minerva-user-menu-list toggle-list__list--drop-down', // See ToggleList/*.less. 'text' => $this->localizer->msg( 'minerva-user-menu-button' )->escaped(), 'items' => $entries ] ); } }