Merge "Add contributions link to toolbar on User pages"

This commit is contained in:
jenkins-bot 2019-07-04 20:38:36 +00:00 committed by Gerrit Code Review
commit aacaa91f46
3 changed files with 48 additions and 2 deletions

View File

@ -58,7 +58,9 @@ return [
$context->getUser(), $context->getUser(),
$context, $context,
$services->getPermissionManager(), $services->getPermissionManager(),
$services->getService( 'Minerva.Permissions' ) $services->getService( 'Minerva.Permissions' ),
$skinOptions,
$services->get( 'Minerva.SkinUserPageHelper' )
); );
if ( $skinOptions->get( SkinOptions::OPTION_OVERFLOW_SUBMENU ) ) { if ( $skinOptions->get( SkinOptions::OPTION_OVERFLOW_SUBMENU ) ) {
$overflowBuilder = $userPageHelper->isUserPage() ? $overflowBuilder = $userPageHelper->isUserPage() ?

View File

@ -26,6 +26,8 @@ use MediaWiki\Minerva\Menu\Group;
use MediaWiki\Minerva\Menu\IMenuEntry; use MediaWiki\Minerva\Menu\IMenuEntry;
use MediaWiki\Minerva\Menu\LanguageSelectorEntry; use MediaWiki\Minerva\Menu\LanguageSelectorEntry;
use MediaWiki\Minerva\Permissions\IMinervaPagePermissions; use MediaWiki\Minerva\Permissions\IMinervaPagePermissions;
use MediaWiki\Minerva\SkinOptions;
use MediaWiki\Minerva\SkinUserPageHelper;
use MediaWiki\Permissions\PermissionManager; use MediaWiki\Permissions\PermissionManager;
use MessageLocalizer; use MessageLocalizer;
use MinervaUI; use MinervaUI;
@ -59,6 +61,16 @@ class ToolbarBuilder {
* @var PermissionManager * @var PermissionManager
*/ */
private $permissionsManager; private $permissionsManager;
/**
* @var SkinOptions
*/
private $skinOptions;
/**
* @var SkinUserPageHelper
*/
private $userPageHelper;
/** /**
* Build Group containing icons for toolbar * Build Group containing icons for toolbar
* @param Title $title Article title user is currently browsing * @param Title $title Article title user is currently browsing
@ -66,18 +78,25 @@ class ToolbarBuilder {
* @param MessageLocalizer $msgLocalizer Message localizer to generate localized texts * @param MessageLocalizer $msgLocalizer Message localizer to generate localized texts
* @param PermissionManager $permissionManager Mediawiki Permissions Manager * @param PermissionManager $permissionManager Mediawiki Permissions Manager
* @param IMinervaPagePermissions $permissions Minerva permissions system * @param IMinervaPagePermissions $permissions Minerva permissions system
* @param SkinOptions $skinOptions Skin options
* @param SkinUserPageHelper $userPageHelper User Page helper
*/ */
public function __construct( public function __construct(
Title $title, Title $title,
User $user, User $user,
MessageLocalizer $msgLocalizer, MessageLocalizer $msgLocalizer,
PermissionManager $permissionManager, PermissionManager $permissionManager,
IMinervaPagePermissions $permissions ) { IMinervaPagePermissions $permissions,
SkinOptions $skinOptions,
SkinUserPageHelper $userPageHelper
) {
$this->title = $title; $this->title = $title;
$this->user = $user; $this->user = $user;
$this->messageLocalizer = $msgLocalizer; $this->messageLocalizer = $msgLocalizer;
$this->permissionsManager = $permissionManager; $this->permissionsManager = $permissionManager;
$this->permissions = $permissions; $this->permissions = $permissions;
$this->skinOptions = $skinOptions;
$this->userPageHelper = $userPageHelper;
} }
/** /**
@ -103,6 +122,13 @@ class ToolbarBuilder {
$group->insertEntry( $this->getHistoryPageAction() ); $group->insertEntry( $this->getHistoryPageAction() );
} }
if ( $this->skinOptions->get( SkinOptions::OPTION_OVERFLOW_SUBMENU ) &&
$this->userPageHelper->isUserPage() ) {
// User links are hidden when Overflow menu is visible. We want to show Contributions
// link on toolbar only when overflow is visible
$group->insertEntry( $this->createContributionsPageAction() );
}
Hooks::run( 'MobileMenu', [ 'pageactions.toolbar', &$group ] ); Hooks::run( 'MobileMenu', [ 'pageactions.toolbar', &$group ] );
// We want the edit icon/action always to be the last element on the toolbar list // We want the edit icon/action always to be the last element on the toolbar list
@ -112,6 +138,23 @@ class ToolbarBuilder {
return $group; return $group;
} }
/**
* Create Contributions page action visible on user pages
*
* @return IMenuEntry
*/
protected function createContributionsPageAction(): IMenuEntry {
$pageUser = $this->userPageHelper->getPageUser();
$label = $this->messageLocalizer->msg( 'mobile-frontend-user-page-contributions' );
return PageActionMenuEntry::create(
'page-actions-contributions',
SpecialPage::getTitleFor( 'Contributions', $pageUser )->getLocalURL(),
MinervaUI::iconClass( 'contributions' ),
$label
)->setTitle( $label );
}
/** /**
* Creates the "edit" page action: the well-known pencil icon that, when tapped, will open an * Creates the "edit" page action: the well-known pencil icon that, when tapped, will open an
* editor with the lead section loaded. * editor with the lead section loaded.

View File

@ -925,6 +925,7 @@ class SkinMinerva extends SkinTemplate {
'mediawiki.ui.icon', 'mediawiki.ui.icon',
'mediawiki.ui.button', 'mediawiki.ui.button',
'skins.minerva.icons.images', 'skins.minerva.icons.images',
'skins.minerva.mainMenu.icons',
'wikimedia.ui' 'wikimedia.ui'
]; ];
if ( $title->isMainPage() ) { if ( $title->isMainPage() ) {