Nemo bis has uploaded a new change for review. https://gerrit.wikimedia.org/r/211100
Change subject: Allow to customise addHelpLink() target via system message ...................................................................... Allow to customise addHelpLink() target via system message Method similar to SpecialPage::outputHeader() to avoid registering tons of system messages and to have -summary and -helppage tidily listed together in Special:AllMessages by default. Bug: T45591 Change-Id: Ic849dde00be7379c1909a8486cf20f48c5aea5cf (cherry picked from commit e928d5bdd0fbc63a951ca373aaf68bb1e6bf715c) --- M RELEASE-NOTES-1.25 M includes/OutputPage.php M includes/actions/Action.php M includes/actions/DeleteAction.php M includes/page/Article.php M includes/page/CategoryPage.php M includes/specialpage/SpecialPage.php M includes/specials/SpecialAllMessages.php M includes/specials/SpecialBlock.php M includes/specials/SpecialDiff.php M includes/specials/SpecialEditTags.php M includes/specials/SpecialMergeHistory.php M includes/specials/SpecialMovepage.php M includes/specials/SpecialNewimages.php M includes/specials/SpecialNewpages.php M includes/specials/SpecialPreferences.php M includes/specials/SpecialRandomInCategory.php M includes/specials/SpecialRevisiondelete.php M includes/specials/SpecialSpecialpages.php M includes/specials/SpecialUndelete.php M includes/specials/SpecialUpload.php M includes/specials/SpecialUserrights.php 22 files changed, 86 insertions(+), 19 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/00/211100/1 diff --git a/RELEASE-NOTES-1.25 b/RELEASE-NOTES-1.25 index 3303f30..9bd281b 100644 --- a/RELEASE-NOTES-1.25 +++ b/RELEASE-NOTES-1.25 @@ -389,6 +389,10 @@ bugs and ensure better reading experience for different variants. === Other changes in 1.25 === +* (T45591) Links to MediaWiki.org translatable help were added to indicators, + mostly in special pages. Local custom target titles can be placed in the + relevant '(namespace-X|action name|special page name)-helppage' system + message. Extensions can use the addHelpLink() function to do the same. * The skin autodiscovery mechanism, deprecated in MediaWiki 1.23, has been removed. See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for migration guide for creators and users of custom skins that relied on it. diff --git a/includes/OutputPage.php b/includes/OutputPage.php index cac89f4..7e67187 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -1401,8 +1401,10 @@ /** * Adds help link with an icon via page indicators. - * @param string $to - * @param bool $overrideBaseUrl + * Link target can be overridden by a local message containing a wikilink: + * the message key is: lowercase action or special page name + '-helppage'. + * @param string $to Target MediaWiki.org page title or encoded URL. + * @param bool $overrideBaseUrl Whether $url is a full URL, to avoid MW.o. * @since 1.25 */ public function addHelpLink( $to, $overrideBaseUrl = false ) { @@ -1415,6 +1417,7 @@ $toUrlencoded = wfUrlencode( str_replace( ' ', '_', $to ) ); $helpUrl = "//www.mediawiki.org/wiki/Special:MyLanguage/$toUrlencoded"; } + $link = Html::rawElement( 'a', array( diff --git a/includes/actions/Action.php b/includes/actions/Action.php index aca4363..fa75e08 100644 --- a/includes/actions/Action.php +++ b/includes/actions/Action.php @@ -377,6 +377,25 @@ } /** + * Adds help link with an icon via page indicators. + * Link target can be overridden by a local message containing a wikilink: + * the message key is: lowercase action name + '-helppage'. + * @param string $to Target MediaWiki.org page title or encoded URL. + * @param bool $overrideBaseUrl Whether $url is a full URL, to avoid MW.o. + * @since 1.25 + */ + public function addHelpLink( $to, $overrideBaseUrl = false ) { + $msg = wfMessage( $wgContLang->lc( $this->getActionName() ) . '-helppage' ); + + if ( !$msg->isDisabled() ) { + $helpUrl = Skin::makeUrl( $msg->plain() ); + $this->getOutput()->addHelpLink( $helpUrl, true ); + } else { + $this->getOutput()->addHelpLink( $to, $overrideBaseUrl ); + } + } + + /** * The main action entry point. Do all output for display and send it to the context * output. Do not use globals $wgOut, $wgRequest, etc, in implementations; use * $this->getOutput(), etc. diff --git a/includes/actions/DeleteAction.php b/includes/actions/DeleteAction.php index 82424eb..be21a6f 100644 --- a/includes/actions/DeleteAction.php +++ b/includes/actions/DeleteAction.php @@ -48,7 +48,7 @@ 'mediawiki.ui.checkbox', ) ); } - $out->addHelpLink( 'Help:Sysop deleting and undeleting' ); + $this->addHelpLink( 'Help:Sysop deleting and undeleting' ); $this->page->delete(); } } diff --git a/includes/page/Article.php b/includes/page/Article.php index 91e9971..f271820 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -1506,6 +1506,27 @@ } /** + * Adds help link with an icon via page indicators. + * Link target can be overridden by a local message containing a wikilink: + * the message key is: 'namespace-' + namespace number + '-helppage'. + * @param string $to Target MediaWiki.org page title or encoded URL. + * @param bool $overrideBaseUrl Whether $url is a full URL, to avoid MW.o. + * @since 1.25 + */ + public function addHelpLink( $to, $overrideBaseUrl = false ) { + $msg = wfMessage( + 'namespace-' . $this->getTitle()->getNamespace() . '-helppage' + ); + + if ( !$msg->isDisabled() ) { + $helpUrl = Skin::makeUrl( $msg->plain() ); + $this->getOutput()->addHelpLink( $helpUrl, true ); + } else { + $this->getOutput()->addHelpLink( $to, $overrideBaseUrl ); + } + } + + /** * Handle action=render */ public function render() { diff --git a/includes/page/CategoryPage.php b/includes/page/CategoryPage.php index 2edf1af..caebcd7 100644 --- a/includes/page/CategoryPage.php +++ b/includes/page/CategoryPage.php @@ -115,6 +115,6 @@ ); $out = $this->getContext()->getOutput(); $out->addHTML( $viewer->getHTML() ); - $out->addHelpLink( 'Help:Categories' ); + $this->addHelpLink( 'Help:Categories' ); } } diff --git a/includes/specialpage/SpecialPage.php b/includes/specialpage/SpecialPage.php index f9d1e8a..a7a43b0 100644 --- a/includes/specialpage/SpecialPage.php +++ b/includes/specialpage/SpecialPage.php @@ -633,6 +633,26 @@ } /** + * Adds help link with an icon via page indicators. + * Link target can be overridden by a local message containing a wikilink: + * the message key is: lowercase special page name + '-helppage'. + * @param string $to Target MediaWiki.org page title or encoded URL. + * @param bool $overrideBaseUrl Whether $url is a full URL, to avoid MW.o. + * @since 1.25 + */ + public function addHelpLink( $to, $overrideBaseUrl = false ) { + global $wgContLang; + $msg = $this->msg( $wgContLang->lc( $this->getName() ) . '-helppage' ); + + if ( !$msg->isDisabled() ) { + $helpUrl = Skin::makeUrl( $msg->plain() ); + $this->getOutput()->addHelpLink( $helpUrl, true ); + } else { + $this->getOutput()->addHelpLink( $to, $overrideBaseUrl ); + } + } + + /** * Get the group that the special page belongs in on Special:SpecialPage * Use this method, instead of getGroupName to allow customization * of the group name from the wiki side diff --git a/includes/specials/SpecialAllMessages.php b/includes/specials/SpecialAllMessages.php index 5211e30..7b596bb 100644 --- a/includes/specials/SpecialAllMessages.php +++ b/includes/specials/SpecialAllMessages.php @@ -59,7 +59,7 @@ $this->outputHeader( 'allmessagestext' ); $out->addModuleStyles( 'mediawiki.special' ); - $out->addHelpLink( 'Help:System message' ); + $this->addHelpLink( 'Help:System message' ); $this->table = new AllmessagesTablePager( $this, diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index c237401..b80d921 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -103,7 +103,7 @@ $msg = $this->alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit'; $form->setSubmitTextMsg( $msg ); - $this->getOutput()->addHelpLink( 'Help:Blocking users' ); + $this->addHelpLink( 'Help:Blocking users' ); # Don't need to do anything if the form has been posted if ( !$this->getRequest()->wasPosted() && $this->preErrors ) { diff --git a/includes/specials/SpecialDiff.php b/includes/specials/SpecialDiff.php index 799e526..89c1c02 100644 --- a/includes/specials/SpecialDiff.php +++ b/includes/specials/SpecialDiff.php @@ -53,7 +53,7 @@ $this->mAddedRedirectParams['diff'] = $parts[1]; } else { // Wrong number of parameters, bail out - $this->getOutput()->addHelpLink( 'Help:Diff' ); + $this->addHelpLink( 'Help:Diff' ); throw new ErrorPageError( 'nopagetitle', 'nopagetext' ); } diff --git a/includes/specials/SpecialEditTags.php b/includes/specials/SpecialEditTags.php index bfd1717..f41a1f1 100644 --- a/includes/specials/SpecialEditTags.php +++ b/includes/specials/SpecialEditTags.php @@ -206,7 +206,7 @@ $this->targetObj->getPrefixedText() ) ); - $out->addHelpLink( 'Help:Tags' ); + $this->addHelpLink( 'Help:Tags' ); $out->addHTML( "<ul>" ); $numRevisions = 0; diff --git a/includes/specials/SpecialMergeHistory.php b/includes/specials/SpecialMergeHistory.php index b6cf8e4..1f0b6d4 100644 --- a/includes/specials/SpecialMergeHistory.php +++ b/includes/specials/SpecialMergeHistory.php @@ -187,7 +187,7 @@ '</form>' ); - $out->addHelpLink( 'Help:Merge history' ); + $this->addHelpLink( 'Help:Merge history' ); } private function showHistory() { diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php index a519bd0..ae1fefe 100644 --- a/includes/specials/SpecialMovepage.php +++ b/includes/specials/SpecialMovepage.php @@ -140,7 +140,7 @@ $out = $this->getOutput(); $out->setPageTitle( $this->msg( 'move-page', $this->oldTitle->getPrefixedText() ) ); $out->addModules( 'mediawiki.special.movePage' ); - $out->addHelpLink( 'Help:Moving a page' ); + $this->addHelpLink( 'Help:Moving a page' ); $newTitle = $this->newTitle; diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php index de19fa4..00c8e05 100644 --- a/includes/specials/SpecialNewimages.php +++ b/includes/specials/SpecialNewimages.php @@ -31,7 +31,7 @@ $this->outputHeader(); $out = $this->getOutput(); - $out->addHelpLink( 'Help:New images' ); + $this->addHelpLink( 'Help:New images' ); $pager = new NewFilesPager( $this->getContext(), $par ); diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php index 594628f..899c736 100644 --- a/includes/specials/SpecialNewpages.php +++ b/includes/specials/SpecialNewpages.php @@ -127,7 +127,7 @@ $this->showNavigation = !$this->including(); // Maybe changed in setup $this->setup( $par ); - $out->addHelpLink( 'Help:New pages' ); + $this->addHelpLink( 'Help:New pages' ); if ( !$this->including() ) { // Settings diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php index ef61f94..7371da7 100644 --- a/includes/specials/SpecialPreferences.php +++ b/includes/specials/SpecialPreferences.php @@ -55,7 +55,7 @@ ); } - $out->addHelpLink( 'Help:Preferences' ); + $this->addHelpLink( 'Help:Preferences' ); $htmlForm = Preferences::getFormObject( $this->getUser(), $this->getContext() ); $htmlForm->setSubmitCallback( array( 'Preferences', 'tryUISubmit' ) ); diff --git a/includes/specials/SpecialRandomInCategory.php b/includes/specials/SpecialRandomInCategory.php index b6f19ec..b5c9e19 100644 --- a/includes/specials/SpecialRandomInCategory.php +++ b/includes/specials/SpecialRandomInCategory.php @@ -68,7 +68,7 @@ } protected function getFormFields() { - $this->getOutput()->addHelpLink( 'Help:RandomInCategory' ); + $this->addHelpLink( 'Help:RandomInCategory' ); $form = array( 'category' => array( diff --git a/includes/specials/SpecialRevisiondelete.php b/includes/specials/SpecialRevisiondelete.php index bdfe911..9e2ca27 100644 --- a/includes/specials/SpecialRevisiondelete.php +++ b/includes/specials/SpecialRevisiondelete.php @@ -368,7 +368,7 @@ $out->wrapWikiMsg( "<strong>$1</strong>", array( $this->typeLabels['selected'], $this->getLanguage()->formatNum( count( $this->ids ) ), $this->targetObj->getPrefixedText() ) ); - $out->addHelpLink( 'Help:RevisionDelete' ); + $this->addHelpLink( 'Help:RevisionDelete' ); $out->addHTML( "<ul>" ); $numRevisions = 0; diff --git a/includes/specials/SpecialSpecialpages.php b/includes/specials/SpecialSpecialpages.php index ed3ad5b..eaa9007 100644 --- a/includes/specials/SpecialSpecialpages.php +++ b/includes/specials/SpecialSpecialpages.php @@ -45,7 +45,7 @@ return; } - $out->addHelpLink( 'Help:Special pages' ); + $this->addHelpLink( 'Help:Special pages' ); $this->outputPageList( $groups ); } diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index de2365e..f2362a1 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -791,7 +791,7 @@ return; } - $out->addHelpLink( 'Help:Undelete' ); + $this->addHelpLink( 'Help:Undelete' ); if ( $this->mAllowed ) { $out->setPageTitle( $this->msg( 'undeletepage' ) ); } else { diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php index 6f9254b..640562e 100644 --- a/includes/specials/SpecialUpload.php +++ b/includes/specials/SpecialUpload.php @@ -160,7 +160,7 @@ throw new ErrorPageError( 'uploaddisabled', 'uploaddisabledtext' ); } - $this->getOutput()->addHelpLink( 'Help:Managing files' ); + $this->addHelpLink( 'Help:Managing files' ); # Check permissions $user = $this->getUser(); diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php index 785a844..758e3c0 100644 --- a/includes/specials/SpecialUserrights.php +++ b/includes/specials/SpecialUserrights.php @@ -135,7 +135,7 @@ $out = $this->getOutput(); $out->addModuleStyles( 'mediawiki.special' ); - $out->addHelpLink( 'Help:Assigning permissions' ); + $this->addHelpLink( 'Help:Assigning permissions' ); // show the general form if ( count( $available['add'] ) || count( $available['remove'] ) ) { -- To view, visit https://gerrit.wikimedia.org/r/211100 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic849dde00be7379c1909a8486cf20f48c5aea5cf Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: REL1_25 Gerrit-Owner: Nemo bis <federicol...@tiscali.it> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits