From 12d7b7a4d73cbf42a9e04c05d04a35dd1c14a1d5 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Tue, 26 Jul 2016 12:48:03 -0400 Subject: [PATCH] ApiHelp: Add directionality to various things that are likely English-like This follows up I28e8e0cb with the other things identified during review of that patch. Added dir="ltr" to: * Module names in the linktrail * Non-internationalized extension names * SPDX license tags * Help URLs * Parameter names * Module names in the list of values for a submodule-type parameter * Value names when using message-per-value documentation * Example URLs Added dir="auto" to: * List of values for enumerated-type parameters * Default value for parameters Change-Id: Ie3c08ec604e1796629912fa16e6db4ae3fdce72e --- includes/api/ApiHelp.php | 43 +++++++++++++---------- includes/api/ApiHelpParamValueMessage.php | 3 +- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/includes/api/ApiHelp.php b/includes/api/ApiHelp.php index a3bb6a2a50..02efd7b5c9 100644 --- a/includes/api/ApiHelp.php +++ b/includes/api/ApiHelp.php @@ -311,11 +311,11 @@ class ApiHelp extends ApiBase { if ( count( $modules ) === 1 && $m === $modules[0] && !( !empty( $options['submodules'] ) && $m->getModuleManager() ) ) { - $link = Html::element( 'b', null, $name ); + $link = Html::element( 'b', [ 'dir' => 'ltr', 'lang' => 'en' ], $name ); } else { $link = SpecialPage::getTitleFor( 'ApiHelp', $m->getModulePath() )->getLocalURL(); $link = Html::element( 'a', - [ 'href' => $link, 'class' => 'apihelp-linktrail' ], + [ 'href' => $link, 'class' => 'apihelp-linktrail', 'dir' => 'ltr', 'lang' => 'en' ], $name ); $any = true; @@ -350,7 +350,8 @@ class ApiHelp extends ApiBase { if ( isset( $sourceInfo['namemsg'] ) ) { $extname = $context->msg( $sourceInfo['namemsg'] )->text(); } else { - $extname = $sourceInfo['name']; + // Probably English, so wrap it. + $extname = Html::element( 'span', [ 'dir' => 'ltr', 'lang' => 'en' ], $sourceInfo['name'] ); } $help['flags'] .= Html::rawElement( 'li', null, self::wrap( @@ -361,7 +362,9 @@ class ApiHelp extends ApiBase { $link = SpecialPage::getTitleFor( 'Version', 'License/' . $sourceInfo['name'] ); if ( isset( $sourceInfo['license-name'] ) ) { - $msg = $context->msg( 'api-help-license', $link, $sourceInfo['license-name'] ); + $msg = $context->msg( 'api-help-license', $link, + Html::element( 'span', [ 'dir' => 'ltr', 'lang' => 'en' ], $sourceInfo['license-name'] ) + ); } elseif ( SpecialVersion::getExtLicenseFileName( dirname( $sourceInfo['path'] ) ) ) { $msg = $context->msg( 'api-help-license-noname', $link ); } else { @@ -403,7 +406,7 @@ class ApiHelp extends ApiBase { $help['help-urls'] .= Html::openElement( 'ul' ); foreach ( $urls as $url ) { $help['help-urls'] .= Html::rawElement( 'li', null, - Html::element( 'a', [ 'href' => $url ], $url ) + Html::element( 'a', [ 'href' => $url, 'dir' => 'ltr' ], $url ) ); } $help['help-urls'] .= Html::closeElement( 'ul' ); @@ -432,8 +435,9 @@ class ApiHelp extends ApiBase { $settings = [ ApiBase::PARAM_DFLT => $settings ]; } - $help['parameters'] .= Html::element( 'dt', null, - $module->encodeParamName( $name ) ); + $help['parameters'] .= Html::rawElement( 'dt', null, + Html::element( 'span', [ 'dir' => 'ltr', 'lang' => 'en' ], $module->encodeParamName( $name ) ) + ); // Add description $description = []; @@ -488,8 +492,9 @@ class ApiHelp extends ApiBase { $links = isset( $settings[ApiBase::PARAM_VALUE_LINKS] ) ? $settings[ApiBase::PARAM_VALUE_LINKS] : []; - $type = array_map( function ( $v ) use ( $links ) { - $ret = wfEscapeWikiText( $v ); + $values = array_map( function ( $v ) use ( $links ) { + // We can't know whether this contains LTR or RTL text. + $ret = $v === '' ? $v : Html::element( 'span', [ 'dir' => 'auto' ], $v ); if ( isset( $links[$v] ) ) { $ret = "[[{$links[$v]}|$ret]]"; } @@ -497,17 +502,17 @@ class ApiHelp extends ApiBase { }, $type ); $i = array_search( '', $type, true ); if ( $i === false ) { - $type = $context->getLanguage()->commaList( $type ); + $values = $context->getLanguage()->commaList( $values ); } else { - unset( $type[$i] ); - $type = $context->msg( 'api-help-param-list-can-be-empty' ) - ->numParams( count( $type ) ) - ->params( $context->getLanguage()->commaList( $type ) ) + unset( $values[$i] ); + $values = $context->msg( 'api-help-param-list-can-be-empty' ) + ->numParams( count( $values ) ) + ->params( $context->getLanguage()->commaList( $values ) ) ->parse(); } $info[] = $context->msg( 'api-help-param-list' ) ->params( $multi ? 2 : 1 ) - ->params( $type ) + ->params( $values ) ->parse(); $hintPipeSeparated = false; } else { @@ -527,7 +532,8 @@ class ApiHelp extends ApiBase { $prefix = $module->isMain() ? '' : ( $module->getModulePath() . '+' ); $submodules = array_map( function ( $name ) use ( $prefix ) { - return "[[Special:ApiHelp/{$prefix}{$name}|{$name}]]"; + $text = Html::element( 'span', [ 'dir' => 'ltr', 'lang' => 'en' ], $name ); + return "[[Special:ApiHelp/{$prefix}{$name}|{$text}]]"; }, $submodules ); } $count = count( $submodules ); @@ -650,8 +656,9 @@ class ApiHelp extends ApiBase { $info[] = $context->msg( 'api-help-param-default-empty' ) ->parse(); } elseif ( $default !== null && $default !== false ) { + // We can't know whether this contains LTR or RTL text. $info[] = $context->msg( 'api-help-param-default' ) - ->params( wfEscapeWikiText( $default ) ) + ->params( Html::element( 'span', [ 'dir' => 'auto' ], $default ) ) ->parse(); } @@ -723,7 +730,7 @@ class ApiHelp extends ApiBase { $sandbox = SpecialPage::getTitleFor( 'ApiSandbox' )->getLocalURL() . '#' . $qs; $help['examples'] .= Html::rawElement( 'dt', null, $msg->parse() ); $help['examples'] .= Html::rawElement( 'dd', null, - Html::element( 'a', [ 'href' => $link ], "api.php?$qs" ) . ' ' . + Html::element( 'a', [ 'href' => $link, 'dir' => 'ltr' ], "api.php?$qs" ) . ' ' . Html::rawElement( 'a', [ 'href' => $sandbox ], $context->msg( 'api-help-open-in-apisandbox' )->parse() ) ); diff --git a/includes/api/ApiHelpParamValueMessage.php b/includes/api/ApiHelpParamValueMessage.php index 573524a82e..45378eec1e 100644 --- a/includes/api/ApiHelpParamValueMessage.php +++ b/includes/api/ApiHelpParamValueMessage.php @@ -64,7 +64,8 @@ class ApiHelpParamValueMessage extends Message { */ public function fetchMessage() { if ( $this->message === null ) { - $this->message = ";{$this->paramValue}:" . parent::fetchMessage(); + $this->message = ";{$this->paramValue}:" + . parent::fetchMessage(); } return $this->message; } -- 2.20.1