Jonas Kress (WMDE) has uploaded a new change for review.
https://gerrit.wikimedia.org/r/266501
Change subject: Refactor more languages
......................................................................
Refactor more languages
Change-Id: I2bd6ed3d3395ab7b3b5653b9c0d5918e66e73aae
---
M
view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
1 file changed, 79 insertions(+), 39 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/01/266501/1
diff --git
a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
index 7a8df33..2b9e912 100644
---
a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
+++
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
@@ -71,6 +71,11 @@
_isInEditMode: false,
/**
+ * @type {Object}
+ */
+ _moreLanguagesItemsPerLanguage: {},
+
+ /**
* @see jQuery.ui.TemplatedWidget._create
*/
_create: function() {
@@ -216,56 +221,91 @@
* @private
*/
_createEntitytermsforlanguagelistviewMore: function() {
- var self = this,
- listview = this.$listview.data( 'listview' ),
- lia = listview.listItemAdapter(),
- languages = this._getAdditionalLanguages(),
- itemsPerLanguage = {};
+ var self = this;
- if ( $.isEmptyObject( languages ) ) {
+ if ( $.isEmptyObject( this._getAdditionalLanguages() ) ) {
return;
}
+ var moreLanguagesButton = $( '<a/>' ).attr( 'href', '#' )
+ .click( $.proxy( this._onMoreLanguagesButtonClicked,
this ) );
+
this.$entitytermsforlanguagelistviewMore = $( '<div/>' )
.addClass( 'wikibase-entitytermsforlanguagelistview-more' )
- .append(
- $( '<a/>' )
- .attr( 'href', '#' )
- .text( mw.msg(
'wikibase-entitytermsforlanguagelistview-more' ) )
- .click( function() {
- var $this = $( this ),
- expanded = $.isEmptyObject(
itemsPerLanguage ),
- lang;
+ .append( moreLanguagesButton );
- if ( expanded ) {
- for ( lang in languages ) {
- var $li = listview.addItem(
self._getValueForLanguage( lang ) );
- if ( self._isInEditMode ) {
- lia.liInstance( $li
).startEditing();
- }
- itemsPerLanguage[lang] = $li;
- }
- } else {
- var top = $this.offset().top;
- for ( lang in languages ) {
- listview.removeItem(
itemsPerLanguage[lang] );
- delete itemsPerLanguage[lang];
- }
- self._scrollUp( $this, top );
- }
-
- $this.text( mw.msg(
-
'wikibase-entitytermsforlanguagelistview-' + ( expanded ? 'less' : 'more' )
- ) );
-
- return false;
- } )
- );
-
+ this._toggleMoreLanguageButtonLabel();
this.element.after( this.$entitytermsforlanguagelistviewMore );
},
/**
+ * Click handler for more languages button
+ * @private
+ */
+ _onMoreLanguagesButtonClicked: function ( event) {
+ var $button = $( event.target );
+
+ if ( !this._isMoreLanguagesExpanded() ) {
+ this._addMoreLanguages();
+ } else {
+ this._removeMoreLanguages();
+ this._scrollUp( $button, $button.offset().top );
+ }
+
+ this._toggleMoreLanguageButtonLabel();
+ return false;
+ },
+
+ _isMoreLanguagesExpanded: function () {
+ return !$.isEmptyObject( this._moreLanguagesItemsPerLanguage );
+ },
+
+ /**
+ * Remove 'more' languages to listview
+ * @private
+ */
+ _removeMoreLanguages: function() {
+ var itemsPerLanguage = this._moreLanguagesItemsPerLanguage,
+ listview = this.$listview.data( 'listview' ),
+ languages = this._getAdditionalLanguages();
+
+ for ( var lang in languages ) {
+ listview.removeItem( itemsPerLanguage[lang] );
+ delete itemsPerLanguage[lang];
+ }
+ },
+
+ /**
+ * Add 'more' languages to listview
+ * @private
+ */
+ _addMoreLanguages: function() {
+ var languages = this._getAdditionalLanguages(),
+ listview = this.$listview.data( 'listview' ),
+ lia = listview.listItemAdapter();
+
+ for ( var lang in languages ) {
+ var $li = listview.addItem( this._getValueForLanguage(
lang ) );
+ if ( this._isInEditMode ) {
+ lia.liInstance( $li ).startEditing();
+ }
+ this._moreLanguagesItemsPerLanguage[lang] = $li;
+ }
+ },
+
+ /**
+ * Toggle more language button text ( more/less )
+ * @private
+ */
+ _toggleMoreLanguageButtonLabel: function() {
+ this.$entitytermsforlanguagelistviewMore
+ .find('a').text( mw.msg(
+ 'wikibase-entitytermsforlanguagelistview-'
+ + ( this._isMoreLanguagesExpanded() ?
'less' : 'more' )
+ ) );
+ },
+
+ /**
* @return {Object} Map of additional language codes in this
fingerprint.
* @private
*/
--
To view, visit https://gerrit.wikimedia.org/r/266501
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2bd6ed3d3395ab7b3b5653b9c0d5918e66e73aae
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Jonas Kress (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits