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