Warn when DISPLAYTITLE is used more than once
Implement the same duplicate-warning logic for DISPLAYTITLE that DEFAULTSORT currently uses, to catch cases where a newer call overrides an older one. Bug: 50449 Change-Id: Ibce776d019aab07fb88fbb89afc5340300735405
This commit is contained in:
parent
30a82aae9c
commit
af66fecb2d
4 changed files with 28 additions and 6 deletions
|
|
@ -365,9 +365,15 @@ class CoreParserFunctions {
|
|||
* @param string $text Desired title text
|
||||
* @return string
|
||||
*/
|
||||
static function displaytitle( $parser, $text = '' ) {
|
||||
static function displaytitle( $parser, $text = '', $uarg = '' ) {
|
||||
global $wgRestrictDisplayTitle;
|
||||
|
||||
static $magicWords = null;
|
||||
if ( is_null( $magicWords ) ) {
|
||||
$magicWords = new MagicWordArray( array( 'displaytitle_noerror', 'displaytitle_noreplace' ) );
|
||||
}
|
||||
$arg = $magicWords->matchStartToEnd( $uarg );
|
||||
|
||||
// parse a limited subset of wiki markup (just the single quote items)
|
||||
$text = $parser->doQuotes( $text );
|
||||
|
||||
|
|
@ -413,13 +419,25 @@ class CoreParserFunctions {
|
|||
) );
|
||||
$title = Title::newFromText( Sanitizer::stripAllTags( $text ) );
|
||||
|
||||
if ( !$wgRestrictDisplayTitle ) {
|
||||
$parser->mOutput->setDisplayTitle( $text );
|
||||
} elseif ( $title instanceof Title
|
||||
if ( !$wgRestrictDisplayTitle ||
|
||||
( $title instanceof Title
|
||||
&& !$title->hasFragment()
|
||||
&& $title->equals( $parser->mTitle )
|
||||
&& $title->equals( $parser->mTitle ) )
|
||||
) {
|
||||
$parser->mOutput->setDisplayTitle( $text );
|
||||
$old = $parser->mOutput->getProperty( 'displaytitle' );
|
||||
if ( $old === false || $arg !== 'displaytitle_noreplace' ) {
|
||||
$parser->mOutput->setDisplayTitle( $text );
|
||||
}
|
||||
if ( $old !== false && $old !== $text && !$arg ) {
|
||||
$converter = $parser->getConverterLanguage()->getConverter();
|
||||
return '<span class="error">' .
|
||||
wfMessage( 'duplicate-displaytitle',
|
||||
// Message should be parsed, but these params should only be escaped.
|
||||
$converter->markNoConversion( wfEscapeWikiText( $old ) ),
|
||||
$converter->markNoConversion( wfEscapeWikiText( $text ) )
|
||||
)->inContentLanguage()->text() .
|
||||
'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
|
|
|
|||
|
|
@ -3214,6 +3214,7 @@
|
|||
"timezone-utc": "UTC",
|
||||
"unknown_extension_tag": "Unknown extension tag \"$1\"",
|
||||
"duplicate-defaultsort": "<strong>Warning:</strong> Default sort key \"$2\" overrides earlier default sort key \"$1\".",
|
||||
"duplicate-displaytitle": "<strong>Warning:</strong> Display title \"$2\" overrides earlier display title \"$1\".",
|
||||
"version": "Version",
|
||||
"version-summary": "",
|
||||
"version-extensions": "Installed extensions",
|
||||
|
|
|
|||
|
|
@ -3376,6 +3376,7 @@
|
|||
"timezone-utc": "{{optional}}",
|
||||
"unknown_extension_tag": "This is an error shown when you use an unknown extension tag name.\n\nThis feature allows tags like <code><nowiki><pre></nowiki></code> to be called with a parser like <code><nowiki>{{#tag:pre}}</nowiki></code>.\n\nParameters:\n* $1 - the unknown extension tag name",
|
||||
"duplicate-defaultsort": "See definition of [[w:Sorting|sort key]] on Wikipedia. Parameters:\n* $1 - old default sort key\n* $2 - new default sort key",
|
||||
"duplicate-displaytitle": "Warning shown when a page has its display title set multiple times. Parameters:\n* $1 - old display title\n* $2 - new display title",
|
||||
"version": "{{doc-special|Version}}\n{{Identical|Version}}",
|
||||
"version-summary": "{{doc-specialpagesummary|version}}",
|
||||
"version-extensions": "Header on [[Special:Version]].",
|
||||
|
|
|
|||
|
|
@ -365,6 +365,8 @@ $magicWords = array(
|
|||
'url_query' => array( 0, 'QUERY' ),
|
||||
'defaultsort_noerror' => array( 0, 'noerror' ),
|
||||
'defaultsort_noreplace' => array( 0, 'noreplace' ),
|
||||
'displaytitle_noerror' => array( 0, 'noerror' ),
|
||||
'displaytitle_noreplace' => array( 0, 'noreplace' ),
|
||||
'pagesincategory_all' => array( 0, 'all' ),
|
||||
'pagesincategory_pages' => array( 0, 'pages' ),
|
||||
'pagesincategory_subcats' => array( 0, 'subcats' ),
|
||||
|
|
|
|||
Loading…
Reference in a new issue