refactor(core): ♻️ use user-menu template data instead

This commit is contained in:
alistair3149 2022-10-05 14:04:16 -04:00
parent be18ec8f0d
commit 7b311db1a6
No known key found for this signature in database
4 changed files with 43 additions and 39 deletions

View file

@ -27,35 +27,18 @@ namespace MediaWiki\Skins\Citizen\Hooks;
use MediaWiki\Hook\BeforePageDisplayHook;
use MediaWiki\Skins\Hook\SkinPageReadyConfigHook;
use MediaWiki\Hook\SkinTemplateNavigation__UniversalHook;
use OutputPage;
use ResourceLoaderContext;
use Skin;
/**
* Hooks to run relating the skin
*/
class SkinHooks implements SkinPageReadyConfigHook, BeforePageDisplayHook {
/**
* SkinPageReadyConfig hook handler
*
* Replace searchModule provided by skin.
*
* @since 1.35
* @param ResourceLoaderContext $context
* @param mixed[] &$config Associative array of configurable options
* @return void This hook must not abort, it must return no value
*/
public function onSkinPageReadyConfig( ResourceLoaderContext $context, array &$config ): void {
// It's better to exit before any additional check
if ( $context->getSkin() !== 'citizen' ) {
return;
}
// Tell the `mediawiki.page.ready` module not to wire up search.
$config['search'] = false;
}
class SkinHooks implements
BeforePageDisplayHook,
SkinPageReadyConfigHook,
SkinTemplateNavigation__UniversalHook
{
/**
* Adds the inline theme switcher script to the page
*
@ -81,4 +64,38 @@ class SkinHooks implements SkinPageReadyConfigHook, BeforePageDisplayHook {
$out->addHeadItem( 'skin.citizen.inline', $script );
}
/**
* SkinPageReadyConfig hook handler
*
* Replace searchModule provided by skin.
*
* @since 1.35
* @param ResourceLoaderContext $context
* @param mixed[] &$config Associative array of configurable options
* @return void This hook must not abort, it must return no value
*/
public function onSkinPageReadyConfig( $context, array &$config ): void {
// It's better to exit before any additional check
if ( $context->getSkin() !== 'citizen' ) {
return;
}
// Tell the `mediawiki.page.ready` module not to wire up search.
$config['search'] = false;
}
/**
* Modify navigation links
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateNavigation::Universal
* @param SkinTemplate $sktemplate
* @param array &$links
*/
public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
// Remove userpage from user menu since it is used in user menu info
if ( $links['user-menu']['userpage'] ) {
unset( $links['user-menu']['userpage'] );
}
}
}

View file

@ -50,23 +50,9 @@ final class Header extends Partial {
);
$header = $this->getPersonalHeaderData( $personalTools );
// We need userpage for personal header
if ( isset( $personalTools['userpage'] ) ) {
unset( $personalTools['userpage'] );
}
// Move the Echo badges out of default list
// TODO: Remove notifications since MW 1.36 from buildPersonalUrls
if ( isset( $personalTools['notifications-alert'] ) ) {
unset( $personalTools['notifications-alert'] );
}
if ( isset( $personalTools['notifications-notice'] ) ) {
unset( $personalTools['notifications-notice'] );
}
return [
'data-personal-menu-header' => $header,
'data-personal-menu-list' => $skin->getPortletData( 'personal', $personalTools ),
];
}

View file

@ -69,8 +69,9 @@
}
},
"Hooks": {
"BeforePageDisplay": "SkinHooks",
"SkinPageReadyConfig": "SkinHooks",
"BeforePageDisplay": "SkinHooks"
"SkinTemplateNavigation::Universal": "SkinHooks"
},
"ResourceModules": {
"skins.citizen.styles": {

View file

@ -11,7 +11,7 @@
aria-haspopup="true">
<aside id="citizen-personalMenu__card" class="citizen-personalMenu__card mw-checkbox-hack-target">
{{#data-personal-menu-header}}{{>Menu}}{{/data-personal-menu-header}}
{{#data-personal-menu-list}}{{>Menu}}{{/data-personal-menu-list}}
{{#data-portlets.data-user-menu}}{{>Menu}}{{/data-portlets.data-user-menu}}
</aside>
<label
id="citizen-personalMenu__buttonCheckbox"