messageLocalizer = $msgLocalizer; $this->pageUser = $userPageHelper->getPageUser(); } /** * @inheritDoc * @throws MWException */ public function getGroup( array $navUrls ) { $group = new Group(); $group->insertEntry( $this->buildEntry( 'uploads', 'upload', SpecialPage::getTitleFor( 'Uploads', $this->pageUser )->getLocalURL() ) ); $possibleEntries = array_filter( [ $this->buildEntryFromNav( 'user-rights', 'userAvatar', 'userrights', $navUrls ), $this->buildEntryFromNav( 'logs', 'listBullet', 'log', $navUrls ), $this->buildEntryFromNav( 'info', 'info', 'info', $navUrls ), $this->buildEntryFromNav( 'permalink', 'link', 'permalink', $navUrls ), $this->buildEntryFromNav( 'backlinks', 'articleRedirect', 'whatlinkshere', $navUrls ) ] ); foreach ( $possibleEntries as $menuEntry ) { $group->insertEntry( $menuEntry ); } Hooks::run( 'MobileMenu', [ 'pageactions.overflow', &$group ] ); return $group; } /** * @param string $name * @param string $icon Wikimedia UI icon name. * @param string $navUrlKey * @param array $navUrls A set of navigation urls build by SkinTemplate::buildNavUrls() * @return PageActionMenuEntry|null */ private function buildEntryFromNav( $name, $icon, $navUrlKey, array $navUrls ) { return $this->buildEntry( $name, $icon, $navUrls[$navUrlKey]['href'] ?? null ); } /** * @param string $name * @param string $icon Wikimedia UI icon name. * @param string|null $href * @return PageActionMenuEntry|null */ private function buildEntry( $name, $icon, $href ) { return $href ? new PageActionMenuEntry( 'page-actions-overflow-' . $name, $href, MinervaUI::iconClass( '', 'before', 'wikimedia-ui-' . $icon . '-base20' ), $this->messageLocalizer->msg( 'minerva-page-actions-' . $name ) ) : null; } }