*/
public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
$lang = $this->getTitle()->getPageLanguage();
+ $out = $this->getContext()->getOutput();
if ( $appendSubtitle ) {
- $out = $this->getContext()->getOutput();
$out->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
}
+ $out->addModuleStyles( 'mediawiki.action.view.redirectPage' );
return static::getRedirectHeaderHtml( $lang, $target, $forceKnown );
}
* @return string Containing HTML with redirect link
*/
public static function getRedirectHeaderHtml( Language $lang, $target, $forceKnown = false ) {
- global $wgStylePath;
-
if ( !is_array( $target ) ) {
$target = array( $target );
}
- $imageDir = $lang->getDir();
-
- // the loop prepends the arrow image before the link, so the first case needs to be outside
-
- /** @var $title Title */
- $title = array_shift( $target );
-
- if ( $forceKnown ) {
- $link = Linker::linkKnown( $title, htmlspecialchars( $title->getFullText() ) );
- } else {
- $link = Linker::link( $title, htmlspecialchars( $title->getFullText() ) );
- }
-
- $nextRedirect = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png';
- $alt = $lang->isRTL() ? '←' : '→';
-
- // Automatically append redirect=no to each link, since most of them are
- // redirect pages themselves.
- /** @var Title $rt */
- foreach ( $target as $rt ) {
- $link .= Html::element( 'img', array( 'src' => $nextRedirect, 'alt' => $alt ) );
- if ( $forceKnown ) {
- $link .= Linker::linkKnown(
- $rt,
- htmlspecialchars( $rt->getFullText(),
- array(),
- array( 'redirect' => 'no' )
- )
- );
- } else {
- $link .= Linker::link(
- $rt,
- htmlspecialchars( $rt->getFullText() ),
- array(),
- array( 'redirect' => 'no' )
- );
- }
+ $html = '<ul class="redirectText">';
+ /** @var Title $title */
+ foreach ( $target as $title ) {
+ $html .= '<li>' . Linker::link(
+ $title,
+ htmlspecialchars( $title->getFullText() ),
+ array(),
+ // Automatically append redirect=no to each link, since most of them are
+ // redirect pages themselves.
+ array( 'redirect' => 'no' ),
+ ( $forceKnown ? array( 'known', 'noclasses' ) : array() )
+ ) . '</li>';
}
$redirectToText = wfMessage( 'redirectto' )->inLanguage( $lang )->text();
- $imageUrl = $wgStylePath . '/common/images/redirect' . $imageDir . '.png';
return '<div class="redirectMsg">' .
- Html::element( 'img', array( 'src' => $imageUrl, 'alt' => $redirectToText ) ) .
- '<span class="redirectText">' . $link . '</span></div>';
+ '<p>' . $redirectToText . '</p>' .
+ $html .
+ '</div>';
}
/**
--- /dev/null
+/*!
+ * Display neat icons on redirect pages.
+ */
+
+/* Hide, but keep accessible for screen-readers. */
+.redirectTo {
+ overflow: hidden;
+ height: 0;
+ zoom: 1;
+}
+
+.redirectText {
+ list-style: none none;
+ display: inline;
+ /* shared.css has some very weird directionality-specific rules for 'ul' we need to override,
+ search for "Correct directionality when page dir is different from site/user dir" */
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+/* @noflip */
+.mw-content-ltr .redirectText li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ padding-left: 42px;
+ /* @embed */
+ background: url(images/nextredirect-ltr.png) bottom left no-repeat;
+}
+
+/* @noflip */
+.mw-content-ltr .redirectText li:first-child {
+ padding-left: 47px;
+ /* @embed */
+ background: url(images/redirect-ltr.png) bottom left no-repeat;
+}
+
+/* @noflip */
+.mw-content-rtl .redirectText li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ padding-right: 42px;
+ /* @embed */
+ background: url(images/nextredirect-rtl.png) bottom right no-repeat;
+}
+
+/* @noflip */
+.mw-content-rtl .redirectText li:first-child {
+ padding-right: 47px;
+ /* @embed */
+ background: url(images/redirect-rtl.png) bottom right no-repeat;
+}