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

Change subject: Integrated fingerprintgroupview into entityview
......................................................................


Integrated fingerprintgroupview into entityview

Change-Id: I38cc93a9dbfae2ca9b2b04d2e12de58a0850acf0
---
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/resources/jquery.wikibase/resources.php
M repo/resources/Resources.php
D repo/resources/wikibase.initTermBox.js
M repo/resources/wikibase.ui.entityViewInit.js
5 files changed, 105 insertions(+), 117 deletions(-)

Approvals:
  Tobias Gritschacher: 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 2d9aa3c..f8c2ac1 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -17,6 +17,7 @@
  * @option {wikibase.store.EntityStore} entityStore
  * @option {wikibase.ValueViewBuilder} valueViewBuilder
  * @option {wikibase.AbstractedRepoApi} api
+ * @option {string[]} languages
  */
 $.widget( 'wikibase.entityview', PARENT, {
        /**
@@ -35,8 +36,14 @@
                value: null,
                entityStore: null,
                valueViewBuilder: null,
-               api: null
+               api: null,
+               languages: []
        },
+
+       /**
+        * @type {jQuery}
+        */
+       $toc: null,
 
        /**
         * @type {jQuery}
@@ -52,6 +59,11 @@
         * @type {jQuery}
         */
        $aliases: null,
+
+       /**
+        * @type {jQuery}
+        */
+       $fingerprints: null,
 
        /**
         * @type {jQuery}
@@ -72,9 +84,12 @@
                        throw new Error( 'Required option(s) missing' );
                }
 
+               this.$toc = $( '.toc', this.element );
+
                this._initLabel();
                this._initDescription();
                this._initAliases();
+               this._initFingerprints();
                this._initClaims();
                this._initSiteLinks();
 
@@ -93,7 +108,7 @@
                this.$label.labelview( {
                        value: {
                                language: mw.config.get( 'wgUserLanguage' ),
-                               label: $( '.wikibase-labelview' ).hasClass( 
'wb-empty' )
+                               label: this.$label.hasClass( 'wb-empty' )
                                        ? null
                                        // FIXME: entity object should not 
contain fallback strings
                                        : this.options.value.getLabel( 
mw.config.get( 'wgUserLanguage' ) )
@@ -117,7 +132,7 @@
                this.$description.descriptionview( {
                        value: {
                                language: mw.config.get( 'wgUserLanguage' ),
-                               description: $( '.wikibase-descriptionview', 
this.element ).hasClass( 'wb-empty' )
+                               description: this.$description.hasClass( 
'wb-empty' )
                                        ? null
                                        // FIXME: entity object should not 
contain fallback strings
                                        : this.options.value.getDescription( 
mw.config.get( 'wgUserLanguage' ) )
@@ -142,6 +157,45 @@
                                language:  mw.config.get( 'wgUserLanguage' ),
                                aliases: this.options.value.getAliases( 
mw.config.get( 'wgUserLanguage' ) )
                        },
+                       entityId: this.options.value.getId(),
+                       api: this.options.api
+               } );
+       },
+
+       _initFingerprints: function() {
+               if( !this.options.languages.length ) {
+                       return;
+               }
+
+               this.$fingerprints = $( '.wikibase-fingerprintgroupview' );
+
+               if( !this.$fingerprints.length ) {
+                       var $precedingNode = this.$toc;
+
+                       if( !$precedingNode.length ) {
+                               $precedingNode = $( '.wikibase-aliasesview' );
+                       } else {
+                               this._addTocItem(
+                                       '#wb-terms',
+                                       mw.msg( 'wikibase-terms' ),
+                                       this.$toc.find( 'li' ).first()
+                               );
+                       }
+
+                       this.$fingerprints = $( '<div/>' ).insertAfter( 
$precedingNode );
+               }
+
+               var value = [];
+               for( var i = 0; i < this.options.languages.length; i++ ) {
+                       value.push( {
+                               language: this.options.languages[i],
+                               label: this.options.value.getLabel( 
this.options.languages[i] ) || null,
+                               description: this.options.value.getDescription( 
this.options.languages[i] ) || null
+                       } );
+               }
+
+               this.$fingerprints.fingerprintgroupview( {
+                       value: value,
                        entityId: this.options.value.getId(),
                        api: this.options.api
                } );
@@ -380,6 +434,35 @@
                                ] );
                        }
                );
+       },
+
+       /**
+        * Adds an item to the table of contents.
+        *
+        * @param {string} href
+        * @param {string} text
+        * @param {jQuery} [$insertBefore] Omit to have the item inserted at 
the end
+        */
+       _addTocItem: function( href, text, $insertBefore ) {
+               if( !this.$toc.length ) {
+                       return;
+               }
+
+               var $li = $( '<li>' )
+                       .addClass( 'toclevel-1' )
+                       .append( $( '<a>' ).attr( 'href', href ).text( text ) );
+
+               if( $insertBefore ) {
+                       $li.insertBefore( $insertBefore );
+               } else {
+                       this.$toc.append( $li );
+               }
+
+               this.$toc.find( 'li' ).each( function( i, li ) {
+                       $( li )
+                       .removeClass( 'tocsection-' + i )
+                       .addClass( 'tocsection-' + ( i + 1 ) );
+               } );
        }
 } );
 
diff --git a/lib/resources/jquery.wikibase/resources.php 
b/lib/resources/jquery.wikibase/resources.php
index 931194e..327ab86 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -155,12 +155,16 @@
                                'jquery.wikibase.claimgrouplistview',
                                'jquery.wikibase.claimlistview',
                                'jquery.wikibase.descriptionview',
+                               'jquery.wikibase.fingerprintgroupview',
                                'jquery.wikibase.labelview',
                                'jquery.wikibase.toolbarcontroller',
                                'jquery.wikibase.statementview',
                                'wikibase',
                                'wikibase.templates',
                        ),
+                       'messages' => array(
+                               'wikibase-terms',
+                       ),
                ),
 
                'jquery.wikibase.labelview' => $moduleTemplate + array(
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index b52eb0f..16c9432 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -37,7 +37,6 @@
                                'wikibase.experts',
                                'wikibase.formatters.getStore',
                                'wikibase.EntityInitializer',
-                               'wikibase.initTermBox',
                                'wikibase.parsers.getStore',
                                'wikibase.RepoApi',
                                'wikibase.sites',
@@ -72,19 +71,6 @@
                                // implicitly required as dependency.
                                'wikibase.serialization.entities',
                        ),
-               ),
-
-               'wikibase.initTermBox' => $moduleTemplate + array(
-                       'scripts' => array(
-                               'wikibase.initTermBox.js',
-                       ),
-                       'dependencies' => array(
-                               'jquery.wikibase.fingerprintgroupview',
-                               'wikibase',
-                       ),
-                       'messages' => array(
-                               'wikibase-terms',
-                       )
                ),
 
                'wikibase.ui.entitysearch' => $moduleTemplate + array(
diff --git a/repo/resources/wikibase.initTermBox.js 
b/repo/resources/wikibase.initTermBox.js
deleted file mode 100644
index a7a060b..0000000
--- a/repo/resources/wikibase.initTermBox.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * @licence GNU GPL v2+
- *
- * @author: H. Snater < mediaw...@snater.com >
- */
-( function( $, mw, wb ) {
-'use strict';
-
-/**
- * Term box initialization.
- * The term box displays label and description in languages other than the 
user language.
- * @since 0.5
- *
- * @param {wikibase.datamodel.Entity} entity
- * @param {wikibase.AbstractedRepoApi} api
- */
-wb.initTermBox = function( entity, api ) {
-       mw.hook( 'wikibase.domready' ).add( function() {
-               var $fingerprintgroupview = $( '.wikibase-fingerprintgroupview' 
),
-                       userSpecifiedLanguages = mw.config.get( 
'wbUserSpecifiedLanguages' ),
-                       hasSpecifiedLanguages = userSpecifiedLanguages && 
userSpecifiedLanguages.length,
-                       isUlsDefined = mw.uls !== undefined
-                               && $.uls !== undefined
-                               && $.uls.data !== undefined,
-                       languageCodes = [];
-
-               // Skip if having no extra languages is what the user wants
-               if( !$fingerprintgroupview.length && !hasSpecifiedLanguages && 
isUlsDefined ) {
-                       // No term box present; Ask ULS to provide languages 
and generate plain HTML
-                       languageCodes = mw.uls.getFrequentLanguageList().slice( 
1, 4 );
-
-                       if( !languageCodes.length ) {
-                               return;
-                       }
-
-                       var $precedingNode = $( '#toc' );
-
-                       if( $precedingNode.length ) {
-                               updateToc( $precedingNode );
-                       } else {
-                               $precedingNode = $( '.wikibase-aliasesview' );
-                       }
-
-                       $fingerprintgroupview = $( '<div/>' ).insertAfter( 
$precedingNode );
-
-               } else {
-                       // Scrape language codes of existing DOM structure:
-                       // TODO: Find more sane way to figure out language code.
-                       $fingerprintgroupview.find( '.wikibase-fingerprintview' 
).each( function() {
-                               $.each( $( this ).attr( 'class' ).split( ' ' ), 
function( i, cssClass ) {
-                                       if( cssClass.indexOf( 
'wikibase-fingerprintview-' ) === 0 ) {
-                                               languageCodes.push( 
cssClass.replace( /wikibase-fingerprintview-/, '' ) );
-                                               return false;
-                                       }
-                               } );
-                       } );
-               }
-
-               var value = [];
-               for( var i = 0; i < languageCodes.length; i++ ) {
-                       value.push( {
-                               language: languageCodes[i],
-                               label: entity.getLabel( languageCodes[i] ) || 
null,
-                               description: entity.getDescription( 
languageCodes[i] ) || null
-                       } );
-               }
-
-               $fingerprintgroupview.fingerprintgroupview( {
-                       value: value,
-                       entityId: entity.getId(),
-                       api: api
-               } );
-       } );
-};
-
-/**
- * @param {jQuery} $toc
- */
-function updateToc( $toc ) {
-       $toc
-       .children( 'ul' ).prepend(
-               $( '<li>' )
-               .addClass( 'toclevel-1' )
-               .append(
-                       $( '<a>' )
-                       .attr( 'href', '#wb-terms' )
-                       .text( mw.msg( 'wikibase-terms' ) )
-               )
-       )
-       .find( 'li' ).each( function( i, li ) {
-               $( li )
-               .removeClass( 'tocsection-' + i )
-               .addClass( 'tocsection-' + ( i + 1 ) );
-       } );
-}
-
-} )( jQuery, mediaWiki, wikibase );
diff --git a/repo/resources/wikibase.ui.entityViewInit.js 
b/repo/resources/wikibase.ui.entityViewInit.js
index dd5bfd3..11d2faa 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -209,6 +209,19 @@
                var entityStore = new wb.store.EntityStore( abstractedRepoApi );
                wb.compileEntityStoreFromMwConfig( entityStore );
 
+               var userLanguages = mw.config.get( 'wbUserSpecifiedLanguages' ),
+                       isUlsDefined = mw.uls !== undefined
+                               && $.uls !== undefined
+                               && $.uls.data !== undefined,
+                       languages = [];
+
+               if( !userLanguages.length && isUlsDefined ) {
+                       languages = mw.uls.getFrequentLanguageList().slice( 1, 
4 );
+               } else {
+                       languages = $.merge( [], userLanguages );
+                       languages.splice( $.inArray( mw.config.get( 
'wgUserLanguage' ), userLanguages ), 1 );
+               }
+
                $entityview
                .entityview( {
                        value: entity,
@@ -219,7 +232,8 @@
                                getParserStore( abstractedRepoApi ),
                                mw
                        ),
-                       api: abstractedRepoApi
+                       api: abstractedRepoApi,
+                       languages: languages
                } )
                .on( 'labelviewchange labelviewafterstopediting', function( 
event ) {
                        var $labelview = $( event.target ),
@@ -244,8 +258,6 @@
                                );
                        }
                } );
-
-               wb.initTermBox( entity, abstractedRepoApi );
        }
 
        function registerEditRestrictionHandlers() {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I38cc93a9dbfae2ca9b2b04d2e12de58a0850acf0
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to