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

Reply via email to