toolbarBuilder = $toolbarBuilder; $this->overflowBuilder = $overflowBuilder; $this->messageLocalizer = $messageLocalizer; } /** * Build the menu data array that can be passed to views/javascript * @param array $toolbox An array of common toolbox items from the sidebar menu * @param array $actions An array of actions usually bucketed under the more menu * @return array * @throws MWException */ public function buildMenu( array $toolbox, array $actions ): array { $toolbar = $this->toolbarBuilder->getGroup(); $overflowMenu = $this->overflowBuilder->getGroup( $toolbox, $actions ); $menu = [ 'toolbar' => $toolbar->getEntries() ]; if ( $overflowMenu->hasEntries() ) { // See includes/Skins/ToggleList. $menu[ 'overflowMenu' ] = [ 'item-id' => 'page-actions-overflow', 'checkboxID' => 'page-actions-overflow-checkbox', 'toggleID' => 'page-actions-overflow-toggle', 'listID' => $overflowMenu->getId(), 'toggleClass' => MinervaUI::iconClass( 'ellipsis', 'element', 'mw-ui-icon-with-label-desktop' ), 'listClass' => 'page-actions-overflow-list toggle-list__list--drop-down', 'text' => $this->messageLocalizer->msg( 'minerva-page-actions-overflow' ), 'analyticsEventName' => 'ui.overflowmenu', 'items' => $overflowMenu->getEntries() ]; } return $menu; } }