mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-09-24 10:48:29 +00:00
Merge "Ensure suppressed user pages look like unregistered users when viewed without proper permissions."
This commit is contained in:
commit
0474d8ab18
|
@ -137,10 +137,10 @@ class ToolbarBuilder {
|
|||
public function getGroup(): Group {
|
||||
$group = new Group( 'p-views' );
|
||||
$permissions = $this->permissions;
|
||||
$userPageOrUserTalkPageWithOveflowMode = $this->skinOptions->get( SkinOptions::TOOLBAR_SUBMENU )
|
||||
$userPageOrUserTalkPageWithOverflowMode = $this->skinOptions->get( SkinOptions::TOOLBAR_SUBMENU )
|
||||
&& $this->relevantUserPageHelper->isUserPage();
|
||||
|
||||
if ( !$userPageOrUserTalkPageWithOveflowMode && $permissions->isAllowed(
|
||||
if ( !$userPageOrUserTalkPageWithOverflowMode && $permissions->isAllowed(
|
||||
IMinervaPagePermissions::SWITCH_LANGUAGE ) ) {
|
||||
$group->insertEntry( new LanguageSelectorEntry(
|
||||
$this->title,
|
||||
|
@ -160,7 +160,9 @@ class ToolbarBuilder {
|
|||
$group->insertEntry( $this->getHistoryPageAction() );
|
||||
}
|
||||
|
||||
if ( $this->relevantUserPageHelper->isUserPage() ) {
|
||||
$isUserPage = $this->relevantUserPageHelper->isUserPage();
|
||||
$isUserPageAccessible = $this->relevantUserPageHelper->isUserPageAccessibleToCurrentUser();
|
||||
if ( $isUserPage && $isUserPageAccessible ) {
|
||||
// T235681: Contributions icon should be added to toolbar on user pages
|
||||
// and user talk pages for all users
|
||||
$user = $this->relevantUserPageHelper->getPageUser();
|
||||
|
|
|
@ -227,9 +227,13 @@ class MinervaHooks {
|
|||
// SkinUserPageHelper is being instantiated instead.
|
||||
$relevantUserPageHelper = new SkinUserPageHelper(
|
||||
$services->getUserNameUtils(),
|
||||
$title->inNamespace( NS_USER_TALK ) ? $title->getSubjectPage() : $title
|
||||
$title->inNamespace( NS_USER_TALK ) ? $title->getSubjectPage() : $title,
|
||||
$mobileContext
|
||||
);
|
||||
$isUserPageOrUserTalkPage = $relevantUserPageHelper->isUserPage();
|
||||
|
||||
$isUserPage = $relevantUserPageHelper->isUserPage();
|
||||
$isUserPageAccessible = $relevantUserPageHelper->isUserPageAccessibleToCurrentUser();
|
||||
$isUserPageOrUserTalkPage = $isUserPage && $isUserPageAccessible;
|
||||
} else {
|
||||
// If no title this must be false
|
||||
$isUserPageOrUserTalkPage = false;
|
||||
|
|
|
@ -89,7 +89,8 @@ return [
|
|||
$relevantUserPageHelper = $title->inNamespace( NS_USER_TALK ) ?
|
||||
new SkinUserPageHelper(
|
||||
$services->getUserNameUtils(),
|
||||
$context->getSkin()->getRelevantTitle()->getSubjectPage()
|
||||
$context->getSkin()->getRelevantTitle()->getSubjectPage(),
|
||||
$context
|
||||
) :
|
||||
$userPageHelper;
|
||||
|
||||
|
@ -132,7 +133,8 @@ return [
|
|||
'Minerva.SkinUserPageHelper' => static function ( MediaWikiServices $services ): SkinUserPageHelper {
|
||||
return new SkinUserPageHelper(
|
||||
$services->getUserNameUtils(),
|
||||
RequestContext::getMain()->getSkin()->getRelevantTitle()
|
||||
RequestContext::getMain()->getSkin()->getRelevantTitle(),
|
||||
RequestContext::getMain()
|
||||
);
|
||||
},
|
||||
'Minerva.LanguagesHelper' => static function (): LanguagesHelper {
|
||||
|
|
|
@ -431,7 +431,8 @@ class SkinMinerva extends SkinMustache {
|
|||
if ( $this->getUserPageHelper()->isUserPage() ) {
|
||||
$pageUser = $this->getUserPageHelper()->getPageUser();
|
||||
$fromDate = $pageUser->getRegistration();
|
||||
if ( is_string( $fromDate ) ) {
|
||||
|
||||
if ( $this->getUserPageHelper()->isUserPageAccessibleToCurrentUser() && is_string( $fromDate ) ) {
|
||||
$fromDateTs = wfTimestamp( TS_UNIX, $fromDate );
|
||||
|
||||
// This is shown when js is disabled. js enhancement made due to caching
|
||||
|
@ -461,7 +462,9 @@ class SkinMinerva extends SkinMustache {
|
|||
* @return string HTML for header
|
||||
*/
|
||||
protected function getHeadingHtml() {
|
||||
if ( $this->getUserPageHelper()->isUserPage() ) {
|
||||
$isUserPage = $this->getUserPageHelper()->isUserPage();
|
||||
$isUserPageAccessible = $this->getUserPageHelper()->isUserPageAccessibleToCurrentUser();
|
||||
if ( $isUserPage && $isUserPageAccessible ) {
|
||||
// The heading is just the username without namespace
|
||||
$heading = $this->getUserPageHelper()->getPageUser()->getName();
|
||||
} else {
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
namespace MediaWiki\Minerva\Skins;
|
||||
|
||||
use IContextSource;
|
||||
use MediaWiki\User\UserNameUtils;
|
||||
use Title;
|
||||
use User;
|
||||
|
@ -29,10 +30,12 @@ class SkinUserPageHelper {
|
|||
* @var UserNameUtils
|
||||
*/
|
||||
private $userNameUtils;
|
||||
|
||||
/**
|
||||
* @var Title|null
|
||||
*/
|
||||
private $title;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
|
@ -43,13 +46,20 @@ class SkinUserPageHelper {
|
|||
*/
|
||||
private $pageUser;
|
||||
|
||||
/**
|
||||
* @var IContextSource|null
|
||||
*/
|
||||
private $context;
|
||||
|
||||
/**
|
||||
* @param UserNameUtils $userNameUtils
|
||||
* @param Title|null $title
|
||||
* @param IContextSource|null $context
|
||||
*/
|
||||
public function __construct( UserNameUtils $userNameUtils, Title $title = null ) {
|
||||
public function __construct( UserNameUtils $userNameUtils, Title $title = null, IContextSource $context = null ) {
|
||||
$this->userNameUtils = $userNameUtils;
|
||||
$this->title = $title;
|
||||
$this->context = $context;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -100,4 +110,14 @@ class SkinUserPageHelper {
|
|||
public function isUserPage() {
|
||||
return $this->fetchData() !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isUserPageAccessibleToCurrentUser() {
|
||||
$pageUser = $this->fetchData();
|
||||
$isHidden = $pageUser && $pageUser->isHidden();
|
||||
$canViewHidden = $this->context && $this->context->getAuthority()->isAllowed( 'hideuser' );
|
||||
return !$isHidden || $canViewHidden;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue