jenkins-bot has submitted this change and it was merged.

Change subject: Fix MonolingualTextValues for real, again
......................................................................


Fix MonolingualTextValues for real, again

Change-Id: I50b0ebf381082bf825306ebeeccac2a5a10a664b
---
M RELEASE-NOTES.md
M lib/jquery.ui/jquery.ui.languagesuggester.js
M src/ExpertExtender/ExpertExtender.LanguageSelector.js
3 files changed, 30 insertions(+), 13 deletions(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 7ac75d4..5fcd31d 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,5 +1,9 @@
 # ValueView release notes
 
+## 0.15.9 (2016-02-03)
+
+* Correctly detect a changed language code when editing a 
`MonolingualTextValue`
+
 ## 0.15.8 (2016-01-27)
 
 * Added compatibility with DataValues JavaScript 0.8.0.
diff --git a/lib/jquery.ui/jquery.ui.languagesuggester.js 
b/lib/jquery.ui/jquery.ui.languagesuggester.js
index 45789f0..9f019df 100644
--- a/lib/jquery.ui/jquery.ui.languagesuggester.js
+++ b/lib/jquery.ui/jquery.ui.languagesuggester.js
@@ -17,7 +17,7 @@
         * @property {*}
         * @protected
         */
-       _selectedValue: null,
+       _selectedItem: null,
 
        /**
         * @inheritdoc
@@ -27,14 +27,21 @@
                var self = this,
                        retVal = PARENT.prototype._initMenu.apply( this, 
arguments );
 
-               this.element.on( 'languagesuggesterchange', function () {
-                       self._selectedValue = null;
+               this.element.on( 'languagesuggesterchange', function ( e, data 
) {
+                       var curVal = self.element.val();
+                       if ( data.item ) {
+                               self._selectedItem = data.item;
+                       } else if (
+                               self._selectedItem && curVal !== 
self._selectedItem.getLabel() &&
+                               curVal !== self._selectedItem.getValue()
+                       ) {
+                               self._selectedItem = null;
+                       }
                } );
 
                $( retVal )
                .on( 'selected.languagesuggester', function( event, item ) {
-                       self._trigger( 'change' );
-                       self._selectedValue = item.getValue();
+                       self._trigger( 'change', null, { item: item } );
                        self.element.val( item.getLabel() );
                } );
 
@@ -106,7 +113,16 @@
         * @return {*}
         */
        getSelectedValue: function() {
-               return this._selectedValue;
+               return this._selectedItem && this._selectedItem.getValue();
+       },
+
+       /**
+        * @param {string} value The language code
+        * @param {string} label The label
+        */
+       setSelectedValue: function( value, label ) {
+               this._selectedItem = this._createMenuItemFromSuggestion( { 
label: label, code: value } );
+               this.element.val( label );
        }
 } );
 
diff --git a/src/ExpertExtender/ExpertExtender.LanguageSelector.js 
b/src/ExpertExtender/ExpertExtender.LanguageSelector.js
index 8fe61e5..0f7afa3 100644
--- a/src/ExpertExtender/ExpertExtender.LanguageSelector.js
+++ b/src/ExpertExtender/ExpertExtender.LanguageSelector.js
@@ -108,7 +108,7 @@
                                        source: $.map( this._labels, function( 
label, code ) {
                                                return { code: code, label: 
label };
                                        } )
-                               } ).on( 'change', this._onValueChange );
+                               } ).on( 'languagesuggesterchange', 
this._onValueChange );
                        } else {
                                this.$selector.on( 'eachchange', 
this._onValueChange );
                        }
@@ -123,13 +123,10 @@
                onInitialShow: function() {
                        var value = this._getUpstreamValue();
                        if ( this._labels ) {
-                               // Necessary for mapping to the language code 
if the language is not changed.
-                               // 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.$selector.data( 'languagesuggester' 
).setSelectedValue( value, this._labels[ value ] || value );
+                       } else {
+                               this.$selector.val( value );
                        }
-                       this.$selector.val( value );
                },
 
                /**

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I50b0ebf381082bf825306ebeeccac2a5a10a664b
Gerrit-PatchSet: 4
Gerrit-Project: data-values/value-view
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Jonas Kress (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