mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-11-28 01:10:04 +00:00
Merge "Change the PopupsVisibility state to visible to match anon experience"
This commit is contained in:
commit
4c397700d1
|
@ -43,6 +43,9 @@
|
||||||
],
|
],
|
||||||
"MakeGlobalVariablesScript": [
|
"MakeGlobalVariablesScript": [
|
||||||
"Popups\\PopupsHooks::onMakeGlobalVariablesScript"
|
"Popups\\PopupsHooks::onMakeGlobalVariablesScript"
|
||||||
|
],
|
||||||
|
"LocalUserCreated": [
|
||||||
|
"Popups\\PopupsHooks::onLocalUserCreated"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"MessagesDirs": {
|
"MessagesDirs": {
|
||||||
|
@ -59,8 +62,10 @@
|
||||||
"PopupsVirtualPageViews": false,
|
"PopupsVirtualPageViews": false,
|
||||||
"@PopupsHideOptInOnPreferencesPage": "@var bool: Whether the option to enable/disable Page Previews should be hidden on Preferences page. False by default",
|
"@PopupsHideOptInOnPreferencesPage": "@var bool: Whether the option to enable/disable Page Previews should be hidden on Preferences page. False by default",
|
||||||
"PopupsHideOptInOnPreferencesPage": false,
|
"PopupsHideOptInOnPreferencesPage": false,
|
||||||
"@PopupsOptInDefaultState": "@var string:['1'|'0'] Default Page Previews visibility. Has to be a string as a compatibility with beta feature settings",
|
"@PopupsOptInDefaultState": "@var string:['1'|'0'] Default Page Previews visibility for old accounts. Has to be a string as a compatibility with beta feature settings. For more info see @T191888",
|
||||||
"PopupsOptInDefaultState": "0",
|
"PopupsOptInDefaultState": "0",
|
||||||
|
"@PopupsOptInStateForNewAccounts": "@var string:['1'|'0'] Default Page Previews visibility for newly created accounts (from Q2 2018). For more info see @T191888",
|
||||||
|
"PopupsOptInStateForNewAccounts": "0",
|
||||||
"@PopupsConflictingNavPopupsGadgetName": "@var string: Navigation popups gadget name",
|
"@PopupsConflictingNavPopupsGadgetName": "@var string: Navigation popups gadget name",
|
||||||
"PopupsConflictingNavPopupsGadgetName": "Navigation_popups",
|
"PopupsConflictingNavPopupsGadgetName": "Navigation_popups",
|
||||||
"@PopupsGateway": "Which gateway to use for fetching Popups data. Available options: [mwApiPlain|restbasePlain|restbaseHTML]. Full and always up to date list is available in src/gateway/index.js",
|
"@PopupsGateway": "Which gateway to use for fetching Popups data. Available options: [mwApiPlain|restbasePlain|restbaseHTML]. Full and always up to date list is available in src/gateway/index.js",
|
||||||
|
|
|
@ -95,16 +95,6 @@ class PopupsContext {
|
||||||
return $this->gadgetsIntegration->conflictsWithNavPopupsGadget( $user );
|
return $this->gadgetsIntegration->conflictsWithNavPopupsGadget( $user );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get default Page previews state
|
|
||||||
*
|
|
||||||
* @see PopupsContext::PREVIEWS_ENABLED
|
|
||||||
* @see PopupsContext::PREVIEWS_DISABLED
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getDefaultIsEnabledState() {
|
|
||||||
return $this->config->get( 'PopupsOptInDefaultState' );
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Are Page previews visible on User Preferences Page
|
* Are Page previews visible on User Preferences Page
|
||||||
*
|
*
|
||||||
|
|
|
@ -139,9 +139,25 @@ class PopupsHooks {
|
||||||
* @param array &$wgDefaultUserOptions Reference to default options array
|
* @param array &$wgDefaultUserOptions Reference to default options array
|
||||||
*/
|
*/
|
||||||
public static function onUserGetDefaultOptions( &$wgDefaultUserOptions ) {
|
public static function onUserGetDefaultOptions( &$wgDefaultUserOptions ) {
|
||||||
$context = MediaWikiServices::getInstance()->getService( 'Popups.Context' );
|
$config = MediaWikiServices::getInstance()->getService( 'Popups.Config' );
|
||||||
|
|
||||||
$wgDefaultUserOptions[ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] =
|
$wgDefaultUserOptions[ PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] =
|
||||||
$context->getDefaultIsEnabledState();
|
$config->get( 'PopupsOptInDefaultState' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the default PagePreviews visibility state for newly created accounts
|
||||||
|
*
|
||||||
|
* @param User $user Newly created user object
|
||||||
|
* @param bool $autocreated Is user autocreated
|
||||||
|
*/
|
||||||
|
public static function onLocalUserCreated( User $user, $autocreated ) {
|
||||||
|
if ( !$autocreated ) {
|
||||||
|
$config = MediaWikiServices::getInstance()->getService( 'Popups.Config' );
|
||||||
|
|
||||||
|
$user->setOption( PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME,
|
||||||
|
$config->get( 'PopupsOptInStateForNewAccounts' ) );
|
||||||
|
$user->saveSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,20 +258,6 @@ class PopupsContextTest extends MediaWikiTestCase {
|
||||||
'The title is blacklisted.' );
|
'The title is blacklisted.' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers ::getDefaultIsEnabledState
|
|
||||||
*/
|
|
||||||
public function testGetDefaultIsEnabledState() {
|
|
||||||
$this->setMwGlobals( [
|
|
||||||
// Intentionally use a reserved value to verify it's returned.
|
|
||||||
'wgPopupsOptInDefaultState' => '2'
|
|
||||||
] );
|
|
||||||
$context = $this->getContext();
|
|
||||||
$this->assertEquals( '2',
|
|
||||||
$context->getDefaultIsEnabledState(),
|
|
||||||
'The value of PopupsOptInDefaultState is returned.' );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers ::conflictsWithNavPopupsGadget
|
* @covers ::conflictsWithNavPopupsGadget
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -186,31 +186,6 @@ class PopupsHooksTest extends MediaWikiTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers ::onUserGetDefaultOptions
|
|
||||||
*/
|
|
||||||
public function testOnUserGetDefaultOptions() {
|
|
||||||
$userOptions = [
|
|
||||||
'test' => 'not_empty'
|
|
||||||
];
|
|
||||||
$contextMock = $this->getMockBuilder( PopupsContext::class )
|
|
||||||
->setMethods( [ 'getDefaultIsEnabledState' ] )
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$contextMock->expects( $this->once() )
|
|
||||||
->method( 'getDefaultIsEnabledState' )
|
|
||||||
->willReturn( true );
|
|
||||||
|
|
||||||
$this->setService( 'Popups.Context', $contextMock );
|
|
||||||
|
|
||||||
PopupsHooks::onUserGetDefaultOptions( $userOptions );
|
|
||||||
$this->assertCount( 2, $userOptions, 'A user option is retrieved.' );
|
|
||||||
$this->assertEquals( true,
|
|
||||||
$userOptions[ \Popups\PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ],
|
|
||||||
'The opt-in preference is set.' );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers ::onBeforePageDisplay
|
* @covers ::onBeforePageDisplay
|
||||||
*/
|
*/
|
||||||
|
@ -335,4 +310,65 @@ class PopupsHooksTest extends MediaWikiTestCase {
|
||||||
$this->assertFalse( $vars[ 'wgPopupsConflictsWithNavPopupGadget' ],
|
$this->assertFalse( $vars[ 'wgPopupsConflictsWithNavPopupGadget' ],
|
||||||
'The PopupsConflictsWithNavPopupGadget global is present and false.' );
|
'The PopupsConflictsWithNavPopupGadget global is present and false.' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers ::onUserGetDefaultOptions
|
||||||
|
*/
|
||||||
|
public function testOnUserGetDefaultOptions() {
|
||||||
|
$userOptions = [
|
||||||
|
'test' => 'not_empty'
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->setMwGlobals( [
|
||||||
|
'wgPopupsOptInDefaultState' => "1"
|
||||||
|
] );
|
||||||
|
|
||||||
|
PopupsHooks::onUserGetDefaultOptions( $userOptions );
|
||||||
|
$this->assertCount( 2, $userOptions );
|
||||||
|
$this->assertEquals( "1",
|
||||||
|
$userOptions[ \Popups\PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers ::onUserGetDefaultOptions
|
||||||
|
*/
|
||||||
|
public function testOnLocalUserCreatedForAutoCreatedUser() {
|
||||||
|
$userMock =
|
||||||
|
$this->getMockBuilder( User::class )
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->setMethods( [ 'setOption', 'saveSettings' ] )
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$userMock->expects( $this->never() )->method( 'setOption' );
|
||||||
|
$userMock->expects( $this->never() )->method( 'saveSettings' );
|
||||||
|
|
||||||
|
PopupsHooks::onLocalUserCreated( $userMock, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers ::onUserGetDefaultOptions
|
||||||
|
*/
|
||||||
|
public function testOnLocalUserCreatedForNewlyCreatedUser() {
|
||||||
|
$expectedState = '1';
|
||||||
|
|
||||||
|
$userMock = $this->getMockBuilder( User::class )
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->setMethods( [ 'setOption', 'saveSettings' ] )
|
||||||
|
->getMock();
|
||||||
|
$userMock->expects( $this->once() )
|
||||||
|
->method( 'setOption' )
|
||||||
|
->with(
|
||||||
|
$this->equalTo( PopupsContext::PREVIEWS_OPTIN_PREFERENCE_NAME ),
|
||||||
|
$this->equalTo( $expectedState )
|
||||||
|
);
|
||||||
|
|
||||||
|
$userMock->expects( $this->once() )
|
||||||
|
->method( 'saveSettings' );
|
||||||
|
|
||||||
|
$this->setMwGlobals( [
|
||||||
|
'wgPopupsOptInStateForNewAccounts' => $expectedState
|
||||||
|
] );
|
||||||
|
PopupsHooks::onLocalUserCreated( $userMock, false );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue