Skin developers currently have to deal with high levels of complexity to ensure they integrate correctly with all extensions. This increases the risk of regressions during feature development on skins. The proposal is to reduce the amount of hooks that extensions can integrate with to reduce this risk.
From now it is proposed that all hooks will be run inside Skin.php.
Having less hooks will simplify how we construct menus.
https://www.mediawiki.org/wiki/User:Jdlrobson/Skins_for_extension_developers#Modifying_Menus
Acceptance criteria
- The SkinTemplateOutputPageBeforeExec has been deprecated (T60137)
- The SkinTemplatePreventOtherActiveTabs hook is deprecated (unused)
- The SkinTemplateTabAction hook is deprecated (unused)
Sign off steps
The 3 important hooks run inside SkinTemplate should be run inside Skin on the long term so subclasses of Skin can use them.
When we introduce a SkinMustache class ideally it would subclass Skin rather than SkinTemplate but if we want to keep things simple we can start with the latter.
- SkinAddFooterLinks is promoted from SkinTemplate.php to Skin.php (it already uses the skin) and currently only lives in that class for compatibility reasons.
- The SkinTemplateNavigation::Universal hook is modified to run with a Skin instance instead of a SkinTemplate.
- The PersonalUrls hook is modified to run with a Skin instance instead of a SkinTemplate.