jenkins-bot has submitted this change and it was merged.
Change subject: Moved accessing mw config variable out of entityview
......................................................................
Moved accessing mw config variable out of entityview
Change-Id: I4a7f50bf708866e71dbca29a32db841102112921
---
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.itemview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.propertyview.tests.js
M repo/resources/wikibase.ui.entityViewInit.js
5 files changed, 53 insertions(+), 22 deletions(-)
Approvals:
Adrian Lang: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index 65f4b81..3eb7252 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -16,6 +16,10 @@
*
* @param {Object} options
* @param {wikibase.datamodel.Entity} options.value
+ * @param {string[]|string} languages
+ * Language codes of the languages to display
label-/description-/aliasesview in. Other
+ * components of the entityview will use the first language code for
rendering. May just be a
+ * single language code.
* @param {wikibase.entityChangers.EntityChangersFactory}
options.entityChangersFactory
* Required to be able to store changes applied to the entity.
* @param {wikibase.store.EntityStore} options.entityStore
@@ -27,9 +31,6 @@
* @param {dataTypes.DataTypeStore} options.dataTypeStore
* Required by the `snakview` for retrieving and evaluating a proper
`dataTypes.DataType`
* object when interacting on a "value" `Variation`.
- * @param {string[]} [languages=[]]
- * Language codes of the languages to display
label-/description-/aliasesview in addition to
- * the "base" language.
*
* @throws {Error} when called.
*/
@@ -63,10 +64,10 @@
],
templateShortCuts: {},
value: null,
+ languages: null,
entityStore: null,
valueViewBuilder: null,
- dataTypeStore: null,
- languages: []
+ dataTypeStore: null
},
/**
@@ -118,12 +119,15 @@
_initEntityview: function() {
if(
!this.options.value
+ || !this.options.languages
|| !this.options.entityStore
|| !this.options.valueViewBuilder
|| !this.options.entityChangersFactory
) {
throw new Error( 'Required option(s) missing' );
}
+
+ this.option( 'languages', this.options.languages );
PARENT.prototype._create.call( this );
@@ -153,15 +157,14 @@
}
// FIXME: entity object should not contain fallback strings
- var label = this.options.value.getFingerprint().getLabelFor(
- mw.config.get( 'wgUserLanguage' )
- ) || new wb.datamodel.Term( mw.config.get( 'wgUserLanguage' ),
'' );
+ var label = this.options.value.getFingerprint().getLabelFor(
this.options.languages[0] )
+ || new wb.datamodel.Term( this.options.languages[0], ''
);
this.$label.labelview( {
value: label,
helpMessage: mw.msg(
'wikibase-description-input-help-message',
- wb.getLanguageNameByCode( mw.config.get(
'wgUserLanguage' ) )
+ wb.getLanguageNameByCode(
this.options.languages[0] )
),
entityId: this.options.value.getId(),
labelsChanger:
this.options.entityChangersFactory.getLabelsChanger(),
@@ -180,14 +183,14 @@
// FIXME: entity object should not contain fallback strings
var description =
this.options.value.getFingerprint().getDescriptionFor(
- mw.config.get( 'wgUserLanguage' )
- ) || new wb.datamodel.Term( mw.config.get( 'wgUserLanguage' ),
'' );
+ this.options.languages[0]
+ ) || new wb.datamodel.Term( this.options.languages[0], '' );
this.$description.descriptionview( {
value: description,
helpMessage: mw.msg(
'wikibase-description-input-help-message',
- wb.getLanguageNameByCode( mw.config.get(
'wgUserLanguage' ) )
+ wb.getLanguageNameByCode(
this.options.languages[0] )
),
descriptionsChanger:
this.options.entityChangersFactory.getDescriptionsChanger()
} );
@@ -202,9 +205,8 @@
this.$aliases = $( '<div/>' ).appendTo( this.element );
}
- var aliases = this.options.value.getFingerprint().getAliasesFor(
- mw.config.get( 'wgUserLanguage' )
- ) || new wb.datamodel.MultiTerm( mw.config.get(
'wgUserLanguage' ), [] );
+ var aliases =
this.options.value.getFingerprint().getAliasesFor( this.options.languages[0] )
+ || new wb.datamodel.MultiTerm(
this.options.languages[0], [] );
this.$aliases.aliasesview( {
value: aliases,
@@ -218,7 +220,7 @@
_initFingerprints: function() {
var self = this;
- if( !this.options.languages.length ) {
+ if( this.options.languages.length === 1 ) {
return;
}
@@ -257,7 +259,7 @@
var fingerprint = this.options.value.getFingerprint(),
value = [];
- for( var i = 0; i < this.options.languages.length; i++ ) {
+ for( var i = 1; i < this.options.languages.length; i++ ) {
value.push( {
language: this.options.languages[i],
label: fingerprint.getLabelFor(
this.options.languages[i] )
@@ -308,8 +310,18 @@
/**
* @inheritdoc
+ *
+ * @throws {Error} when trying to set an option to an improper value.
*/
_setOption: function( key, value ) {
+ if( key === 'languages' ) {
+ if( typeof this.options.languages === 'string' ) {
+ this.options.languages =
[this.options.languages];
+ } else if( !$.isArray( this.options.languages ) ) {
+ throw new Error( 'languages need to be supplied
as string or array' );
+ }
+ }
+
var response = PARENT.prototype._setOption.apply( this,
arguments );
if( key === 'disabled' ) {
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js
index 021c512..5a24100 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.entityview.tests.js
@@ -19,7 +19,8 @@
},
api: 'I am an Api',
valueViewBuilder: 'I am a valueview builder',
- value: new wb.datamodel.Property( 'P1',
'someDataType' )
+ value: new wb.datamodel.Property( 'P1',
'someDataType' ),
+ languages: 'en'
} ) );
},
'Throwing error when trying to initialize widget directly.'
diff --git a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.itemview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.itemview.tests.js
index 97f53f7..4a4becb 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.itemview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.itemview.tests.js
@@ -21,7 +21,8 @@
},
api: 'I am an Api',
valueViewBuilder: 'I am a valueview builder',
- value: new wb.datamodel.Item( 'Q1' )
+ value: new wb.datamodel.Item( 'Q1' ),
+ languages: 'en'
}, options || {} );
$node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -64,6 +65,13 @@
'Throwing error when trying to initialize widget without a
value.'
);
+ assert.throws(
+ function() {
+ createItemview( { languages: null } );
+ },
+ 'Throwing error when trying to initialize widget without a
language.'
+ );
+
var $itemview = createItemview(),
itemview = $itemview.data( 'itemview' );
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.propertyview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.propertyview.tests.js
index 82db234..4ad1e7a 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.propertyview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.propertyview.tests.js
@@ -20,7 +20,8 @@
},
api: 'I am an Api',
valueViewBuilder: 'I am a valueview builder',
- value: new wb.datamodel.Property( 'P1', 'someDataType' )
+ value: new wb.datamodel.Property( 'P1', 'someDataType' ),
+ languages: 'en'
}, options || {} );
$node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -63,6 +64,13 @@
'Throwing error when trying to initialize widget without a
value.'
);
+ assert.throws(
+ function() {
+ createPropertyview( { languages: null } );
+ },
+ 'Throwing error when trying to initialize widget without a
language.'
+ );
+
var $propertyview = createPropertyview(),
propertyview = $propertyview.data( 'propertyview' );
diff --git a/repo/resources/wikibase.ui.entityViewInit.js
b/repo/resources/wikibase.ui.entityViewInit.js
index 2aa0f75..c2d42c1 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -131,6 +131,7 @@
$entityview[entity.getType() + 'view']( {
value: entity,
+ languages: getUserLanguages(),
entityChangersFactory: entityChangersFactory,
entityStore: entityStore,
valueViewBuilder: new wb.ValueViewBuilder(
@@ -140,8 +141,7 @@
mw.config.get( 'wgUserLanguage' ),
mw
),
- dataTypeStore: dataTypeStore,
- languages: getUserLanguages()
+ dataTypeStore: dataTypeStore
} )
.on( 'labelviewchange labelviewafterstopediting', function(
event ) {
var $labelview = $( event.target ),
@@ -175,6 +175,8 @@
languages.splice( $.inArray( mw.config.get(
'wgUserLanguage' ), userLanguages ), 1 );
}
+ languages.unshift( mw.config.get( 'wgUserLanguage' ) );
+
return languages;
}
--
To view, visit https://gerrit.wikimedia.org/r/177209
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4a7f50bf708866e71dbca29a32db841102112921
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits