Adrian Heine has uploaded a new change for review.
https://gerrit.wikimedia.org/r/291897
Change subject: Use Language{Name,Directionality}Lookup in SpecialNew*
......................................................................
Use Language{Name,Directionality}Lookup in SpecialNew*
Change-Id: Iad9a230aae813324a303573fc7802d28061816ca
---
M repo/includes/Specials/SpecialNewEntity.php
M repo/includes/WikibaseRepo.php
2 files changed, 65 insertions(+), 58 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/97/291897/1
diff --git a/repo/includes/Specials/SpecialNewEntity.php
b/repo/includes/Specials/SpecialNewEntity.php
index 4307685..00b8775 100644
--- a/repo/includes/Specials/SpecialNewEntity.php
+++ b/repo/includes/Specials/SpecialNewEntity.php
@@ -5,7 +5,6 @@
use Html;
use HTMLForm;
use InvalidArgumentException;
-use Language;
use Status;
use Wikibase\CopyrightMessageBuilder;
use Wikibase\DataModel\Entity\EntityDocument;
@@ -23,12 +22,13 @@
* @author Jens Ohlig
* @author John Erling Blad < [email protected] >
* @author Bene* < [email protected] >
+ * @author Adrian Heine <[email protected]>
*/
abstract class SpecialNewEntity extends SpecialWikibaseRepoPage {
/**
* Contains pieces of the sub-page name of this special page if a
subpage was called.
- * E.g. array( 'a', 'b' ) in case of 'Special:NewEntity/a/b'
+ * E.g. [ 'a', 'b' ] in case of 'Special:NewEntity/a/b'
* @var string[]|null
*/
protected $parts = null;
@@ -44,9 +44,14 @@
private $description;
/**
- * @var Language|null
+ * @var string[]
*/
- private $contentLanguage;
+ private $aliases = [];
+
+ /**
+ * @var string
+ */
+ private $contentLanguageCode;
/**
* @var string[]
@@ -54,19 +59,19 @@
private $languageCodes;
/**
- * @var string
+ * @var SpecialPageCopyrightView
*/
- private $rightsUrl;
+ private $copyrightView;
/**
- * @var string
+ * @var LanguageDirectionalityLookup
*/
- private $rightsText;
+ private $languageDirectionalityLookup;
/**
- * @var string[]
+ * @var LanguageNameLookup
*/
- private $aliases = array();
+ private $languageNameLookup;
/**
* @param string $name Name of the special page, as seen in links and
URLs.
@@ -76,16 +81,17 @@
*/
public function __construct( $name, $restriction = 'createpage' ) {
parent::__construct( $name, $restriction );
-
$wikibaseRepo = WikibaseRepo::getDefaultInstance();
- // TODO: find a way to inject these
- $this->summaryFormatter = $wikibaseRepo->getSummaryFormatter();
- $this->languageCodes =
$wikibaseRepo->getTermsLanguages()->getLanguages();
$settings = $wikibaseRepo->getSettings();
-
- $this->rightsUrl = $settings->getSetting( 'dataRightsUrl' );
- $this->rightsText = $settings->getSetting( 'dataRightsText' );
+ $this->copyrightView = new SpecialPageCopyrightView(
+ new CopyrightMessageBuilder(),
+ $settings->getSetting( 'dataRightsUrl' ),
+ $settings->getSetting( 'dataRightsText' )
+ );
+ $this->languageCodes =
$wikibaseRepo->getTermsLanguages()->getLanguages();
+ $this->languageDirectionalityLookup =
$wikibaseRepo->getLanguageDirectionalityLookup();
+ $this->languageNameLookup =
$wikibaseRepo->getLanguageNameLookup();
}
public function doesWrites() {
@@ -106,7 +112,7 @@
$this->checkBlocked();
$this->checkReadOnly();
- $this->parts = ( $subPage === '' ? array() : explode( '/',
$subPage ) );
+ $this->parts = ( $subPage === '' ? [] : explode( '/', $subPage
) );
$this->prepareArguments();
$out = $this->getOutput();
@@ -152,10 +158,10 @@
}
}
- $this->getOutput()->addModuleStyles( array( 'wikibase.special'
) );
+ $this->getOutput()->addModuleStyles( [ 'wikibase.special' ] );
foreach ( $this->getWarnings() as $warning ) {
- $out->addHTML( Html::element( 'div', array( 'class' =>
'warning' ), $warning ) );
+ $out->addHTML( Html::element( 'div', [ 'class' =>
'warning' ], $warning ) );
}
$this->createForm( $this->getLegend(),
$this->additionalFormElements() );
@@ -182,7 +188,7 @@
$this->description = $this->stringNormalizer->trimToNFC(
$description );
$aliases = $this->getRequest()->getVal( 'aliases' );
- $explodedAliases = $aliases === null ? array() : explode( '|',
$aliases );
+ $explodedAliases = $aliases === null ? [] : explode( '|',
$aliases );
foreach ( $explodedAliases as $alias ) {
$alias = $this->stringNormalizer->trimToNFC( $alias );
@@ -191,10 +197,7 @@
}
}
- $this->contentLanguage = Language::factory(
$this->getRequest()->getVal(
- 'lang',
- $this->getLanguage()->getCode()
- ) );
+ $this->contentLanguageCode = $this->getRequest()->getVal(
'lang', $this->getLanguage()->getCode() );
}
/**
@@ -207,7 +210,7 @@
protected function hasSufficientArguments() {
return $this->label !== ''
|| $this->description !== ''
- || $this->aliases !== array();
+ || $this->aliases !== [];
}
/**
@@ -233,7 +236,7 @@
}
$fingerprint = $entity->getFingerprint();
- $languageCode = $this->contentLanguage->getCode();
+ $languageCode = $this->contentLanguageCode;
$fingerprint->setLabel( $languageCode, $this->label );
$fingerprint->setDescription( $languageCode, $this->description
);
@@ -245,13 +248,12 @@
/**
* Get options for language selector
*
- * @return array
+ * @return string[]
*/
private function getLanguageOptions() {
- $names = Language::fetchLanguageNames( null, 'all' );
$languageOptions = [];
foreach ( $this->languageCodes as $code ) {
- $languageName = isset( $names[$code] ) ? $names[$code]
: $code;
+ $languageName = $this->languageNameLookup->getName(
$code );
$languageOptions["$languageName ($code)"] = $code;
}
return $languageOptions;
@@ -263,18 +265,18 @@
protected function additionalFormElements() {
$this->getOutput()->addModules(
'wikibase.special.languageLabelDescriptionAliases' );
- $langCode = $this->contentLanguage->getCode();
- $langDir = $this->contentLanguage->getDir();
- return array(
- 'lang' => array(
+ $langCode = $this->contentLanguageCode;
+ $langDir =
$this->languageDirectionalityLookup->getDirectionality(
$this->contentLanguageCode );
+ return [
+ 'lang' => [
'name' => 'lang',
'options' => $this->getLanguageOptions(),
'default' => $langCode,
'type' => 'combobox',
'id' => 'wb-newentity-language',
'label-message' => 'wikibase-newentity-language'
- ),
- 'label' => array(
+ ],
+ 'label' => [
'name' => 'label',
'default' => $this->label ?: '',
'type' => 'text',
@@ -285,8 +287,8 @@
'wikibase-label-edit-placeholder'
)->text(),
'label-message' => 'wikibase-newentity-label'
- ),
- 'description' => array(
+ ],
+ 'description' => [
'name' => 'description',
'default' => $this->description ?: '',
'type' => 'text',
@@ -297,8 +299,8 @@
'wikibase-description-edit-placeholder'
)->text(),
'label-message' =>
'wikibase-newentity-description'
- ),
- 'aliases' => array(
+ ],
+ 'aliases' => [
'name' => 'aliases',
'default' => $this->aliases ? implode( '|',
$this->aliases ) : '',
'type' => 'text',
@@ -309,8 +311,8 @@
'wikibase-aliases-edit-placeholder'
)->text(),
'label-message' => 'wikibase-newentity-aliases'
- )
- );
+ ]
+ ];
}
/**
@@ -319,7 +321,7 @@
* @param string|null $legend initial value for the label input box
* @param array[] $additionalFormElements initial value for the
description input box
*/
- private function createForm( $legend = null, array
$additionalFormElements = array() ) {
+ private function createForm( $legend = null, array
$additionalFormElements ) {
$this->addCopyrightText();
HTMLForm::factory( 'ooui', $additionalFormElements,
$this->getContext() )
@@ -336,13 +338,7 @@
* @todo could factor this out into a special page form builder and
renderer
*/
private function addCopyrightText() {
- $copyrightView = new SpecialPageCopyrightView(
- new CopyrightMessageBuilder(),
- $this->rightsUrl,
- $this->rightsText
- );
-
- $html = $copyrightView->getHtml( $this->getLanguage(),
'wikibase-newentity-submit' );
+ $html = $this->copyrightView->getHtml( $this->getLanguage(),
'wikibase-newentity-submit' );
$this->getOutput()->addHTML( $html );
}
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index b57164f..f11f5f4 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -385,15 +385,21 @@
* @return WikibaseValueFormatterBuilders
*/
private function newWikibaseValueFormatterBuilders() {
- global $wgLang;
-
return new WikibaseValueFormatterBuilders(
$this->getDefaultLanguage(),
new FormatterLabelDescriptionLookupFactory(
$this->getTermLookup() ),
- new LanguageNameLookup( $wgLang->getCode() ),
+ $this->getLanguageNameLookup(),
$this->getLocalEntityUriParser(),
$this->getEntityTitleLookup()
);
+ }
+
+ /**
+ * @return LanguageNameLookup
+ */
+ public function getLanguageNameLookup() {
+ global $wgLang;
+ return new LanguageNameLookup( $wgLang->getCode() );
}
/**
@@ -1555,11 +1561,9 @@
* @return EntityIdHtmlLinkFormatterFactory
*/
public function getEntityIdHtmlLinkFormatterFactory() {
- global $wgLang;
-
return new EntityIdHtmlLinkFormatterFactory(
$this->getEntityTitleLookup(),
- new LanguageNameLookup( $wgLang->getCode() )
+ $this->getLanguageNameLookup()
);
}
@@ -1613,8 +1617,8 @@
$this->getSiteStore(),
$this->getDataTypeFactory(),
TemplateFactory::getDefaultInstance(),
- new LanguageNameLookup( $wgLang->getCode() ),
- new MediaWikiLanguageDirectionalityLookup(),
+ $this->getLanguageNameLookup(),
+ $this->getLanguageDirectionalityLookup(),
new MediaWikiNumberLocalizer( $wgLang ),
$this->settings->getSetting( 'siteLinkGroups' ),
$this->settings->getSetting( 'specialSiteLinkGroups' ),
@@ -1624,6 +1628,13 @@
}
/**
+ * @return LanguageDirectionalityLookup
+ */
+ public function getLanguageDirectionalityLookup() {
+ return new MediaWikiLanguageDirectionalityLookup();
+ }
+
+ /**
* @return DataTypeValidatorFactory
*/
public function getDataTypeValidatorFactory() {
--
To view, visit https://gerrit.wikimedia.org/r/291897
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iad9a230aae813324a303573fc7802d28061816ca
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits