Adrian Lang has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/257577

Change subject: Make the MonolingualTextValue expert support languages not in 
the given ContentLanguages object
......................................................................

Make the MonolingualTextValue expert support languages not in the given 
ContentLanguages object

Change-Id: Ic6f0d199528760c082ad64d6b460540c67b94dbc
---
M RELEASE-NOTES.md
M lib/jquery.ui/jquery.ui.languagesuggester.js
M src/ExpertExtender/ExpertExtender.LanguageSelector.js
M tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
4 files changed, 99 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/data-values/value-view 
refs/changes/77/257577/1

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 7d9ad1a..1b2f978 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,5 +1,10 @@
 # ValueView release notes
 
+## 0.15.7 (???)
+
+* Fixed `jQuery.ui.languagesuggester::getSelectedValue` to return `null` when 
the user changed the input's value and not yet selected a value.
+* Fixed `jQuery.valueview.ExpertExtender.LanguageSelector` to fall back on the 
language code when there's no label available.
+
 ## 0.15.6 (2015-11-04)
 
 * Introduced `toggle` and `isCollapsed` methods on `jQuery.ui.toggler`.
diff --git a/lib/jquery.ui/jquery.ui.languagesuggester.js 
b/lib/jquery.ui/jquery.ui.languagesuggester.js
index 5cb88d6..637d715 100644
--- a/lib/jquery.ui/jquery.ui.languagesuggester.js
+++ b/lib/jquery.ui/jquery.ui.languagesuggester.js
@@ -27,6 +27,10 @@
                var self = this,
                        retVal = PARENT.prototype._initMenu.apply( this, 
arguments );
 
+               this.element.on( 'languagesuggesterchange', function () {
+                       self._selectedValue = null;
+               } );
+
                $( retVal )
                .on( 'selected.languagesuggester', function( event, item ) {
                        self._selectedValue = item.getValue();
diff --git a/src/ExpertExtender/ExpertExtender.LanguageSelector.js 
b/src/ExpertExtender/ExpertExtender.LanguageSelector.js
index 20234ca..8fe61e5 100644
--- a/src/ExpertExtender/ExpertExtender.LanguageSelector.js
+++ b/src/ExpertExtender/ExpertExtender.LanguageSelector.js
@@ -107,9 +107,8 @@
                                this.$selector.languagesuggester( {
                                        source: $.map( this._labels, function( 
label, code ) {
                                                return { code: code, label: 
label };
-                                       } ),
-                                       change: this._onValueChange
-                               } );
+                                       } )
+                               } ).on( 'change', this._onValueChange );
                        } else {
                                this.$selector.on( 'eachchange', 
this._onValueChange );
                        }
@@ -128,7 +127,7 @@
                                // FIXME: This is obviously an access 
violation, and it's probably not a good idea
                                // to track this through the suggester given 
the current design.
                                this.$selector.data( 'languagesuggester' 
)._selectedValue = value;
-                               value = this._labels[ value ];
+                               value = this._labels[ value ] || value;
                        }
                        this.$selector.val( value );
                },
diff --git a/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js 
b/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
index 4bceed8..841dc00 100644
--- a/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
+++ b/tests/src/ExpertExtender/ExpertExtender.LanguageSelector.tests.js
@@ -76,7 +76,7 @@
                var languageSelector = new ExpertExtender.LanguageSelector(
                        {
                                getAll: function() { return [ 'en' ]; },
-                               getName: function( code ) { return code; }
+                               getName: function( code ) { return code === 
'en' ? code + ' label' : null; }
                        },
                        messageProvider,
                        function() {
@@ -96,6 +96,92 @@
                }
 
                assert.equal( languageSelector.getValue(), 'en' );
+               assert.equal( languageSelector.$selector.val(), 'en label en' );
+       } );
+
+       QUnit.test( 'returns correct value after changing it', function( assert 
) {
+               var languageSelector = new ExpertExtender.LanguageSelector(
+                       {
+                               getAll: function() { return [ 'en', 'fr' ]; },
+                               getName: function( code ) { return code === 
'en' || code ==='fr' ? code + ' label' : null; }
+                       },
+                       messageProvider,
+                       function() {
+                               return 'en';
+                       }
+               );
+               var $extender = $( '<div />' );
+
+               languageSelector.init( $extender );
+
+               if ( languageSelector.onInitialShow ) {
+                       languageSelector.onInitialShow();
+               }
+
+               if ( languageSelector.draw ) {
+                       languageSelector.draw();
+               }
+
+               languageSelector.$selector.val( 'fr' ).trigger( 'keydown' );
+
+               assert.equal( languageSelector.getValue(), 'fr' );
+               assert.equal( languageSelector.$selector.val(), 'fr' );
+       } );
+
+       QUnit.test( 'returns correct value after initialization for value not 
in ContentLanguages', function( assert ) {
+               var languageSelector = new ExpertExtender.LanguageSelector(
+                       {
+                               getAll: function() { return [ 'en' ]; },
+                               getName: function( code ) { return code === 
'en' ? 'label' : null; }
+                       },
+                       messageProvider,
+                       function() {
+                               return 'ar';
+                       }
+               );
+               var $extender = $( '<div />' );
+
+               languageSelector.init( $extender );
+
+               if ( languageSelector.onInitialShow ) {
+                       languageSelector.onInitialShow();
+               }
+
+               if ( languageSelector.draw ) {
+                       languageSelector.draw();
+               }
+
+               assert.equal( languageSelector.getValue(), 'ar' );
+               assert.equal( languageSelector.$selector.val(), 'ar' );
+       } );
+
+       QUnit.test( 'returns correct value after changing it to a value not in 
ContentLanguages', function( assert ) {
+               var languageSelector = new ExpertExtender.LanguageSelector(
+                       {
+                               getAll: function() { return [ 'en', 'ar' ]; },
+                               getName: function( code ) { return code === 
'en' || code === 'ar' ? code + ' label' : null; }
+                       },
+                       messageProvider,
+                       function() {
+                               return 'en';
+                       }
+               );
+               var $extender = $( '<div />' );
+
+               languageSelector.init( $extender );
+
+               if ( languageSelector.onInitialShow ) {
+                       languageSelector.onInitialShow();
+               }
+
+               if ( languageSelector.draw ) {
+                       languageSelector.draw();
+               }
+
+               languageSelector.$selector.val( 'fr' ).trigger( 'keydown' );
+
+               assert.equal( languageSelector.getValue(), 'fr' );
+               assert.equal( languageSelector.$selector.val(), 'fr' );
        } );
 
 } )(

-- 
To view, visit https://gerrit.wikimedia.org/r/257577
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic6f0d199528760c082ad64d6b460540c67b94dbc
Gerrit-PatchSet: 1
Gerrit-Project: data-values/value-view
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to