* Strip the whitespace interwiki links produce, see T10897
*/
$s = rtrim( $s . $prefix );
- $s .= rtrim( $trail, "\n" );
+ // Special case: strip newlines when only thing between
+ // this link and next are newlines
+ $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
continue;
}
* Strip the whitespace Category links produce, see T2087
*/
$s = rtrim( $s . $prefix ); # T2087, T87753
- $s .= rtrim( $trail, "\n" );
+ // Special case: strip newlines when only thing between
+ // this link and next are newlines
+ $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
if ( $wasblank ) {
$sortkey = $this->getDefaultSort();
) ) );
break;
case 'talkpagename':
- if ( $this->mTitle->canTalk() ) {
+ if ( $this->mTitle->canHaveTalkPage() ) {
$talkPage = $this->mTitle->getTalkPage();
$value = wfEscapeWikiText( $talkPage->getPrefixedText() );
} else {
}
break;
case 'talkpagenamee':
- if ( $this->mTitle->canTalk() ) {
+ if ( $this->mTitle->canHaveTalkPage() ) {
$talkPage = $this->mTitle->getTalkPage();
$value = wfEscapeWikiText( $talkPage->getPrefixedURL() );
} else {
$value = $this->mTitle->getNamespace();
break;
case 'talkspace':
- $value = $this->mTitle->canTalk()
+ $value = $this->mTitle->canHaveTalkPage()
? str_replace( '_', ' ', $this->mTitle->getTalkNsText() )
: '';
break;
case 'talkspacee':
- $value = $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
+ $value = $this->mTitle->canHaveTalkPage() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
break;
case 'subjectspace':
$value = str_replace( '_', ' ', $this->mTitle->getSubjectNsText() );
. wfMessage( 'parser-template-loop-warning', $titleText )->inContentLanguage()->text()
. '</span>';
$this->addTrackingCategory( 'template-loop-category' );
+ $this->mOutput->addWarning( wfMessage( 'template-loop-warning',
+ wfEscapeWikiText( $titleText ) )->text() );
wfDebug( __METHOD__ . ": template loop broken at '$titleText'\n" );
}
}
# Save headline for section edit hint before it's escaped
$headlineHint = $safeHeadline;
+ # Decode HTML entities
+ $safeHeadline = Sanitizer::decodeCharReferences( $safeHeadline );
$fallbackHeadline = Sanitizer::escapeIdForAttribute( $safeHeadline, Sanitizer::ID_FALLBACK );
$linkAnchor = Sanitizer::escapeIdForLink( $safeHeadline );
$safeHeadline = Sanitizer::escapeIdForAttribute( $safeHeadline, Sanitizer::ID_PRIMARY );
# Strip out wikitext links(they break the anchor)
$text = $this->stripSectionName( $text );
$text = Sanitizer::normalizeSectionNameWhitespace( $text );
+ $text = Sanitizer::decodeCharReferences( $text );
return '#' . Sanitizer::escapeIdForLink( $text );
}
# Strip out wikitext links(they break the anchor)
$text = $this->stripSectionName( $text );
$text = Sanitizer::normalizeSectionNameWhitespace( $text );
+ $text = Sanitizer::decodeCharReferences( $text );
if ( isset( $wgFragmentMode[1] ) && $wgFragmentMode[1] === 'legacy' ) {
// ForAttribute() and ForLink() are the same for legacy encoding