Skip to content

Commit

Permalink
fix(core): 馃悰 use runOnSkinTemplateNavigationHooks instead
Browse files Browse the repository at this point in the history
This should somewhat ensure Citizen gets to run its hook after all the extensions.
Hopefully it will resolve various issues regarding hook load orders.

Closes: #812
  • Loading branch information
alistair3149 committed Apr 24, 2024
1 parent e50320c commit ff3acf3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
19 changes: 10 additions & 9 deletions includes/Hooks/SkinHooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
use MediaWiki\Hook\SidebarBeforeOutputHook;
use MediaWiki\Hook\SkinBuildSidebarHook;
use MediaWiki\Hook\SkinEditSectionLinksHook;
use MediaWiki\Hook\SkinTemplateNavigation__UniversalHook;
use MediaWiki\ResourceLoader as RL;
use MediaWiki\Skins\Citizen\GetConfigTrait;
use MediaWiki\Skins\Hook\SkinPageReadyConfigHook;
Expand All @@ -49,8 +48,7 @@ class SkinHooks implements
SidebarBeforeOutputHook,
SkinBuildSidebarHook,
SkinEditSectionLinksHook,
SkinPageReadyConfigHook,
SkinTemplateNavigation__UniversalHook
SkinPageReadyConfigHook
{
use GetConfigTrait;

Expand Down Expand Up @@ -214,11 +212,12 @@ public function onSkinPageReadyConfig( $context, array &$config ): void {
/**
* Modify navigation links
*
* TODO: Update to a proper hook when T287622 is resolved
* @see https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateNavigation::Universal
* @param SkinTemplate $sktemplate
* @param array &$links
*/
public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
public static function onSkinTemplateNavigation( $sktemplate, &$links ): void {
// Be extra safe because it might be active on other skins with caching
if ( $sktemplate->getSkinName() !== 'citizen' ) {
return;
Expand Down Expand Up @@ -248,6 +247,7 @@ public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): voi
/**
* Update actions menu items
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param array &$links
*/
private static function updateActionsMenu( &$links ) {
Expand All @@ -269,6 +269,7 @@ private static function updateActionsMenu( &$links ) {
/**
* Update associated pages menu items
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param array &$links
*/
private static function updateAssociatedPagesMenu( &$links ) {
Expand All @@ -293,11 +294,8 @@ private static function updateAssociatedPagesMenu( &$links ) {

/**
* Update toolbox menu items
* This is not guaranteed to run after extensions hook
*
* WORKAROUND: Load the skin after all extensions
* FIXME: Revisit when T287622 is resolved
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param array &$links
*/
private static function updateToolboxMenu( &$links ) {
Expand Down Expand Up @@ -331,7 +329,8 @@ private static function updateToolboxMenu( &$links ) {

/**
* Update user menu
*
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param SkinTemplate $sktemplate
* @param array &$links
*/
Expand Down Expand Up @@ -363,6 +362,7 @@ private static function updateUserMenu( $sktemplate, &$links ) {
/**
* Update user interface preferences menu
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param SkinTemplate $sktemplate
* @param array &$links
*/
Expand All @@ -373,6 +373,7 @@ private static function updateUserInterfacePreferencesMenu( $sktemplate, &$links
/**
* Update views menu items
*
* @internal used inside Hooks\SkinHooks::onSkinTemplateNavigation
* @param array &$links
*/
private static function updateViewsMenu( &$links ) {
Expand Down
9 changes: 9 additions & 0 deletions includes/SkinCitizen.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
use MediaWiki\Skins\Citizen\Partials\Tagline;
use MediaWiki\Skins\Citizen\Partials\Theme;
use SkinMustache;
use SkinTemplate;

/**
* Skin subclass for Citizen
Expand All @@ -56,6 +57,14 @@ public function __construct( $options = [] ) {
parent::__construct( $options );
}

/**
* @inheritDoc
*/
protected function runOnSkinTemplateNavigationHooks( SkinTemplate $skin, &$content_navigation ) {
parent::runOnSkinTemplateNavigationHooks( $skin, $content_navigation );
Hooks\SkinHooks::onSkinTemplateNavigation( $skin, $content_navigation );
}

/**
* @inheritDoc
*/
Expand Down
3 changes: 1 addition & 2 deletions skin.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,7 @@
"SidebarBeforeOutput": "SkinHooks",
"SkinBuildSidebar": "SkinHooks",
"SkinEditSectionLinks": "SkinHooks",
"SkinPageReadyConfig": "SkinHooks",
"SkinTemplateNavigation::Universal": "SkinHooks"
"SkinPageReadyConfig": "SkinHooks"
},
"ResourceModules": {
"skins.citizen.styles": {
Expand Down

0 comments on commit ff3acf3

Please sign in to comment.