static function ( MediaWikiServices $services ): Definitions { return new Definitions( $services->getSpecialPageFactory() ); }, 'Minerva.Menu.PageActionsDirector' => static function ( MediaWikiServices $services ): PageActionsDirector { /** * @var SkinOptions $skinOptions * @var SkinMinerva $skin * @var SkinUserPageHelper $userPageHelper */ $skinOptions = $services->getService( 'Minerva.SkinOptions' ); // FIXME: RequestContext should not be accessed in service container. $context = RequestContext::getMain(); $title = $context->getTitle(); if ( !$title ) { $title = SpecialPage::getTitleFor( 'Badtitle' ); } $user = $context->getUser(); $userPageHelper = $services->getService( 'Minerva.SkinUserPageHelper' ) ->setContext( $context ) ->setTitle( $title->inNamespace( NS_USER_TALK ) ? $context->getSkin()->getRelevantTitle()->getSubjectPage() : $title ); $languagesHelper = $services->getService( 'Minerva.LanguagesHelper' ); $permissions = $services->getService( 'Minerva.Permissions' ) ->setContext( $context ); $watchlistManager = $services->getWatchlistManager(); $toolbarBuilder = new ToolbarBuilder( $title, $user, $context, $permissions, $skinOptions, $userPageHelper, $languagesHelper, new ServiceOptions( ToolbarBuilder::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ), $watchlistManager ); if ( $skinOptions->get( SkinOptions::TOOLBAR_SUBMENU ) ) { $overflowBuilder = $userPageHelper->isUserPage() ? new UserNamespaceOverflowBuilder( $title, $context, $permissions, $languagesHelper ) : new DefaultOverflowBuilder( $title, $context, $permissions ); } else { $overflowBuilder = new EmptyOverflowBuilder(); } return new PageActionsDirector( $toolbarBuilder, $overflowBuilder, $context ); }, 'Minerva.SkinUserPageHelper' => static function ( MediaWikiServices $services ): SkinUserPageHelper { return new SkinUserPageHelper( $services->getUserFactory(), $services->getUserNameUtils() ); }, 'Minerva.LanguagesHelper' => static function ( MediaWikiServices $services ): LanguagesHelper { return new LanguagesHelper( $services->getLanguageConverterFactory() ); }, 'Minerva.SkinOptions' => static function ( MediaWikiServices $services ): SkinOptions { return new SkinOptions( $services->getHookContainer(), $services->getService( 'Minerva.SkinUserPageHelper' ) ); }, 'Minerva.Permissions' => static function ( MediaWikiServices $services ): IMinervaPagePermissions { return new MinervaPagePermissions( $services->getService( 'Minerva.SkinOptions' ), $services->getService( 'Minerva.LanguagesHelper' ), $services->getPermissionManager(), $services->getContentHandlerFactory(), $services->getUserFactory(), $services->getWatchlistManager() ); } ];