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

Reply via email to