messageLocalizer = $messageLocalizer; $this->permissions = $permissions; } /** * @inheritDoc */ public function getGroup( array $toolbox, array $actions ): Group { $group = new Group( 'p-tb' ); // watch icon appears in page actions rather than here. $combinedMenu = array_merge( $toolbox, $actions ); unset( $combinedMenu[ 'watch' ] ); unset( $combinedMenu[ 'unwatch' ] ); foreach ( $combinedMenu as $key => $definition ) { $icon = $definition['icon'] ?? null; // Only menu items with icons can be displayed here. if ( $icon ) { $group->insertEntry( $this->build( $key, $icon, $key, $combinedMenu ) ); } } return $group; } /** * Build the single menu entry * * @param string $name * @param string $icon WikimediaUI icon name. * @param string $toolboxIdx * @param array $toolbox An array of common toolbox items from the sidebar menu * @return IMenuEntry|null */ private function build( $name, $icon, $toolboxIdx, array $toolbox ) { $href = $toolbox[$toolboxIdx]['href'] ?? null; $minervaMsg = $this->messageLocalizer->msg( 'minerva-page-actions-' . $name ); $originalMsg = $toolbox[$toolboxIdx]['text'] ?? $this->messageLocalizer->msg( $toolboxIdx )->text(); return $href ? SingleMenuEntry::create( 'page-actions-overflow-' . $name, $originalMsg, $href )->setIcon( $icon, 'before' ) ->trackClicks( $name ) : null; } }