From ec77b3ab25bf5b194217b9cf66b7adbe27cb43b6 Mon Sep 17 00:00:00 2001 From: Piotr Miazga Date: Fri, 2 Aug 2019 17:02:28 +0200 Subject: [PATCH] Hygiene: remove deprecated calls from MinervaSkin and MinervaTemplate Changes: - Title::getTalkPage() is deprecated, use NamespaceInfo instead - Title::getSubjectPage() is deprecated, use NamespaceInfo instead Note: NamespaceInfo returns LinkTarget instance, but most of our logic is wrapped around Titles, that's why we need to call Title::newFromLinkTarget() to be sure that we got Title object. Change-Id: Ibf2237ea369b0cee67ab5f623bdddcd9058eec3e --- includes/skins/MinervaTemplate.php | 5 ++++- includes/skins/SkinMinerva.php | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/includes/skins/MinervaTemplate.php b/includes/skins/MinervaTemplate.php index d1f0f44..4e2d9dd 100644 --- a/includes/skins/MinervaTemplate.php +++ b/includes/skins/MinervaTemplate.php @@ -45,7 +45,10 @@ class MinervaTemplate extends BaseTemplate { $this->isSpecialMobileMenuPage = $this->isSpecialPage && $title->isSpecial( 'MobileMenu' ); $this->isMainPage = $title->isMainPage(); - $this->isMainPageTalk = $title->getSubjectPage()->isMainPage(); + $subjectPage = MediaWikiServices::getInstance()->getNamespaceInfo() + ->getSubjectPage( $title ); + + $this->isMainPageTalk = Title::newFromLinkTarget( $subjectPage )->isMainPage(); Hooks::run( 'MinervaPreRender', [ $this ] ); $this->render( $this->data ); } diff --git a/includes/skins/SkinMinerva.php b/includes/skins/SkinMinerva.php index b68c7b6..0e4e97b 100644 --- a/includes/skins/SkinMinerva.php +++ b/includes/skins/SkinMinerva.php @@ -190,6 +190,7 @@ class SkinMinerva extends SkinTemplate { * @param QuickTemplate $tpl */ protected function preparePageContent( QuickTemplate $tpl ) { + $services = MediaWikiServices::getInstance(); $title = $this->getTitle(); // If it's a talk page, add a link to the main namespace page @@ -210,8 +211,10 @@ class SkinMinerva extends SkinTemplate { default: // generic (all other NS) $msg = 'mobile-frontend-talk-back-to-page'; } + $subjectPage = $services->getNamespaceInfo()->getSubjectPage( $title ); + $tpl->set( 'subject-page', MediaWikiServices::getInstance()->getLinkRenderer()->makeLink( - $title->getSubjectPage(), + $subjectPage, $this->msg( $msg, $title->getText() )->text(), [ 'class' => 'return-link' ] ) ); @@ -722,15 +725,16 @@ class SkinMinerva extends SkinTemplate { * @return array */ protected function getSecondaryActions( BaseTemplate $tpl ) { + $services = MediaWikiServices::getInstance(); + $namespaceInfo = $services->getNamespaceInfo(); /** @var \MediaWiki\Minerva\LanguagesHelper $languagesHelper */ - $languagesHelper = MediaWikiServices::getInstance() - ->getService( 'Minerva.LanguagesHelper' ); + $languagesHelper = $services->getService( 'Minerva.LanguagesHelper' ); $buttons = []; // always add a button to link to the talk page // in beta it will be the entry point for the talk overlay feature, // in stable it will link to the wikitext talk page $title = $this->getTitle(); - $subjectPage = $title->getSubjectPage(); + $subjectPage = Title::newFromLinkTarget( $namespaceInfo->getSubjectPage( $title ) ); $talkAtBottom = !$this->skinOptions->get( SkinOptions::TALK_AT_TOP ) || $subjectPage->isMainPage(); $namespaces = $tpl->data['content_navigation']['namespaces']; @@ -743,7 +747,8 @@ class SkinMinerva extends SkinTemplate { if ( isset( $namespaces[$talkId] ) ) { $talkButton = $namespaces[$talkId]; - $talkTitle = $title->getTalkPage(); + $talkTitle = Title::newFromLinkTarget( $namespaceInfo->getTalkPage( $title ) ); + if ( $title->isTalkPage() ) { $talkButton['text'] = wfMessage( 'minerva-talk-add-topic' ); $buttons['talk'] = $this->getTalkButton( $title, $talkButton, true ); @@ -813,7 +818,8 @@ class SkinMinerva extends SkinTemplate { protected function isWikiTextTalkPage() { $title = $this->getTitle(); if ( !$title->isTalkPage() ) { - $title = $title->getTalkPage(); + $namespaceInfo = MediaWikiServices::getInstance()->getNamespaceInfo(); + $title = Title::newFromLinkTarget( $namespaceInfo->getTalkPage( $title ) ); } return $title->isWikitextPage(); } @@ -824,7 +830,6 @@ class SkinMinerva extends SkinTemplate { */ public function getContextSpecificModules() { $modules = []; - $user = $this->getUser(); $title = $this->getTitle(); if ( $this->getPermissions()->isAllowed( IMinervaPagePermissions::WATCH ) ) {