Merge "Add contributions link to toolbar on User pages"
This commit is contained in:
commit
aacaa91f46
|
@ -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() ?
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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() ) {
|
||||||
|
|
Loading…
Reference in New Issue