Henning Snater has uploaded a new change for review.

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

Change subject: Rearranged entity view header
......................................................................

Rearranged entity view header

This change is the first step in rearranging the entity view's header according 
to the new UI
layout.
Major aspects:
- Editable entity terms (as well as entity terms in additional languages) are 
displayed in a
  table below the entity header containing the entity terms in the UI language. 
By default,
  the table is hidden on page load.
- Added user setting to show entity terms on page load.
- Removed dedicated labelview, descriptionview, aliasesview for altering the 
entity terms in
  the UI language from the static header section.
- Instead of the entity terms in the additional languages only, the entity 
terms of the UI
  language are wrapped in entitytermsview as well.
- Removed TermBoxView.php as the logic is merged with the one 
FingerprintView.php and the need
  to render certain components (label-/description-/aliasesview) twice is 
removed.
- Added updated CSS definitions to parent widgets removing definitions too 
specific from
  labelview and descriptionview in particular.
- Removed "wikibase-firstHeading" template cloning native "firstHeading" DOM 
element.
- Removed table of content item pointing to the entity terms since the entity 
terms are
  integrated into the header section.
- Removed obsolete toolbar definitions for label-, description- and aliasesview.
Refers to ->75656, ->75657.

Change-Id: I21c7d4a466b8da7006b1a9215f85b7b5924ba71e
---
M lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
M lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
M 
lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguageview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entitytermsview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
M lib/resources/jquery.wikibase/resources.php
M lib/resources/jquery.wikibase/themes/default/jquery.wikibase.aliasesview.css
M 
lib/resources/jquery.wikibase/themes/default/jquery.wikibase.descriptionview.css
M 
lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguagelistview.css
M 
lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguageview.css
M 
lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsview.css
M lib/resources/jquery.wikibase/themes/default/jquery.wikibase.labelview.css
D 
lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/aliasesview.js
D 
lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/descriptionview.js
M 
lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
D 
lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/labelview.js
M lib/resources/jquery.wikibase/toolbar/controller/resources.php
M lib/resources/wikibase.css
M repo/Wikibase.hooks.php
M repo/i18n/en.json
M repo/i18n/qqq.json
M repo/includes/View/EntityView.php
M repo/includes/View/EntityViewPlaceholderExpander.php
M repo/includes/View/FingerprintView.php
D repo/includes/View/TermBoxView.php
M repo/resources/Resources.php
M repo/resources/templates.php
M repo/resources/wikibase.ui.entityViewInit.js
M repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
M repo/tests/phpunit/includes/View/EntityViewTest.php
M repo/tests/phpunit/includes/View/FingerprintViewTest.php
D repo/tests/phpunit/includes/View/TermBoxViewTest.php
34 files changed, 701 insertions(+), 1,267 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/98/183498/1

diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
index 4decdff..a3270e7 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
@@ -27,13 +27,11 @@
                template: 'wikibase-aliasesview',
                templateParams: [
                        '', // additional class
-                       mw.msg( 'wikibase-aliases-label' ), // label
                        '', // list items
                        '' // toolbar
                ],
                templateShortCuts: {
-                       '$label': '.wikibase-aliasesview-label',
-                       '$list': 'ul'
+                       $list: 'ul'
                },
                value: null,
                helpMessage: mw.msg( 'wikibase-aliases-input-help-message' ),
@@ -54,7 +52,6 @@
                PARENT.prototype._create.call( this );
 
                this.element.removeClass( 'wb-empty' );
-               this.$label.text( mw.msg( 'wikibase-aliases-label' ) );
 
                if( this.$list.children( 'li' ).length !== 
this.options.value.getTexts().length ) {
                        this.draw();
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
index 564a913..90e92db 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.descriptionview.js
@@ -141,6 +141,10 @@
                        $input.val( descriptionText );
                }
 
+               if( $.fn.inputautoexpand ) {
+                       $input.inputautoexpand();
+               }
+
                this.$text.empty().append( $input );
        },
 
diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
 
b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
index 4373afc..cf3af83 100644
--- 
a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
+++ 
b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguagelistview.js
@@ -50,9 +50,23 @@
        options: {
                template: 'wikibase-entitytermsforlanguagelistview',
                templateParams: [
-                       '' // tbodys
+                       function() {
+                               return mw.msg( 
'wikibase-entitytermsforlanguagelistview-language' );
+                       },
+                       function() {
+                               return mw.msg( 
'wikibase-entitytermsforlanguagelistview-label' );
+                       },
+                       function() {
+                               return mw.msg( 
'wikibase-entitytermsforlanguagelistview-aliases' );
+                       },
+                       function() {
+                               return mw.msg( 
'wikibase-entitytermsforlanguagelistview-description' );
+                       },
+                       '' // entitytermsforlanguageview
                ],
-               templateShortCuts: {},
+               templateShortCuts: {
+                       $listview: 
'.wikibase-entitytermsforlanguagelistview-listview'
+               },
                value: [],
                entityId: null,
                entityChangersFactory: null
@@ -87,7 +101,7 @@
         */
        destroy: function() {
                // When destroying a widget not initialized properly, listview 
will not have been created.
-               var listview = this.element.data( 'listview' );
+               var listview = this.$listview.data( 'listview' );
 
                if( listview ) {
                        listview.destroy();
@@ -128,7 +142,7 @@
                        }
                );
 
-               this.element
+               this.$listview
                .listview( {
                        listItemAdapter: new 
$.wikibase.listview.ListItemAdapter( {
                                listItemWidget: listItemWidget,
@@ -144,8 +158,7 @@
                                        };
                                }
                        } ),
-                       value: self.options.value || null,
-                       listItemNodeName: 'TBODY'
+                       value: self.options.value || null
                } );
        },
 
@@ -153,7 +166,7 @@
         * @return {boolean}
         */
        isValid: function() {
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter(),
                        isValid = true;
 
@@ -169,7 +182,7 @@
         * @return {boolean}
         */
        isInitialValue: function() {
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter(),
                        currentValue = [];
 
@@ -205,13 +218,15 @@
                this._isInEditMode = true;
                this.element.addClass( 'wb-edit' );
 
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter();
 
                listview.items().each( function() {
                        var entitytermsforlanguageview = lia.liInstance( $( 
this ) );
                        entitytermsforlanguageview.startEditing();
                } );
+
+               this.updateInputSize();
 
                this._trigger( 'afterstartediting' );
        },
@@ -232,7 +247,7 @@
 
                this.disable();
 
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter();
 
                // TODO: This widget should not need to queue the requests of 
its encapsulated widgets.
@@ -285,7 +300,7 @@
        _resetEditMode: function() {
                this.enable();
 
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter();
 
                listview.items().each( function() {
@@ -311,10 +326,45 @@
        },
 
        /**
+        * Updates the size of the input boxes by triggering the 
inputautoexpand plugin's `expand()`
+        * function.
+        */
+       updateInputSize: function() {
+               var listview = this.$listview.data( 'listview' ),
+                       lia = listview.listItemAdapter();
+
+               listview.items().each( function() {
+                       var entitytermsforlanguageview = lia.liInstance( $( 
this ) );
+
+                       $.each( ['label', 'description'], function() {
+                               var $view = entitytermsforlanguageview['$' + 
this + 'view'],
+                                       autoExpandInput =  $view.find( 'input' 
).data( 'inputautoexpand' );
+
+                               if( autoExpandInput ) {
+                                       autoExpandInput.options( {
+                                               maxWidth: $view.width()
+                                       } );
+                                       autoExpandInput.expand( true );
+                               }
+                       } );
+
+                       var $aliasesview = 
entitytermsforlanguageview.$aliasesview;
+
+                       $aliasesview.find( 'input' ).each( function() {
+                               var autoExpandInput = $( this ).data( 
'inputautoexpand' );
+                               autoExpandInput.options( {
+                                       maxWidth: $aliasesview.width()
+                               } );
+                               autoExpandInput.expand( true );
+                       } );
+               } );
+       },
+
+       /**
         * @see jQuery.ui.TemplatedWidget.focus
         */
        focus: function() {
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        $items = listview.items();
 
                if( $items.length ) {
@@ -342,7 +392,7 @@
        removeError: function() {
                this.element.removeClass( 'wb-error' );
 
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter();
 
                listview.items().each( function() {
@@ -359,7 +409,7 @@
                        return this.option( 'value', value );
                }
 
-               var listview = this.element.data( 'listview' ),
+               var listview = this.$listview.data( 'listview' ),
                        lia = listview.listItemAdapter();
 
                value = [];
@@ -383,7 +433,7 @@
                var response = PARENT.prototype._setOption.apply( this, 
arguments );
 
                if( key === 'disabled' ) {
-                       this.element.data( 'listview' ).option( key, value );
+                       this.$listview.data( 'listview' ).option( key, value );
                }
 
                return response;
diff --git 
a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguageview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguageview.js
index a3e48ec..764183e 100644
--- 
a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguageview.js
+++ 
b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsforlanguageview.js
@@ -59,14 +59,15 @@
                                        mw.config.get( 'wgTitle' ),
                                        mw.config.get( 'wgNamespaceNumber' )
                                );
-                               return title.getUrl( { setlang: 
this.options.value.language } );
-                       },
-                       function() {
-                               return wb.getLanguageNameByCode( 
this.options.value.language );
+                               return mw.wbTemplate( 
'wikibase-entitytermsforlanguageview-language',
+                                       title.getUrl( { setlang: 
this.options.value.language } ),
+                                       wb.getLanguageNameByCode( 
this.options.value.language )
+                               );
                        },
                        '', // label
+                       '', // aliases
                        '', // description
-                       '' // aliases
+                       '' // toolbar placeholder
                ],
                templateShortCuts: {
                        $language: 
'.wikibase-entitytermsforlanguageview-language',
@@ -194,9 +195,9 @@
 
                        if( widgetName === 'aliasesview' ) {
                                options.aliasesChanger = 
self.options.entityChangersFactory.getAliasesChanger();
-                       } else if ( widgetName === 'descriptionview' ) {
+                       } else if( widgetName === 'descriptionview' ) {
                                options.descriptionsChanger = 
self.options.entityChangersFactory.getDescriptionsChanger();
-                       } else if ( widgetName === 'labelview' ) {
+                       } else if( widgetName === 'labelview' ) {
                                options.labelsChanger = 
self.options.entityChangersFactory.getLabelsChanger();
                                options.entityId = self.options.entityId;
                        }
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsview.js
index fd24fd4..0d39a6c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entitytermsview.js
@@ -53,14 +53,22 @@
        options: {
                template: 'wikibase-entitytermsview',
                templateParams: [
-                       function() {
-                               return mw.msg( 'wikibase-terms' );
-                       },
+                       '', // label class
+                       '', // labelview
+                       '', // aliases class
+                       '', // aliasesview
+                       '', // description class
+                       '', // descriptionview
                        '', // entitytermsforlanguagelistview
-                       '' // edit section
+                       '', // additional entitytermsforlanguagelistview 
container class(es)
+                       '' // toolbar placeholder
                ],
                templateShortCuts: {
-                       $h: 'h2'
+                       $headingLabel: 
'.wikibase-entitytermsview-heading-label',
+                       $headingAliases: 
'.wikibase-entitytermsview-heading-aliases',
+                       $headingDescription: 
'.wikibase-entitytermsview-heading-description',
+                       $entitytermsforlanguagelistviewContainer:
+                               
'.wikibase-entitytermsview-entitytermsforlanguagelistview'
                },
                value: [],
                entityId: null,
@@ -98,10 +106,41 @@
                        = this.element.find( 
'.wikibase-entitytermsforlanguagelistview' );
 
                if( !this.$entitytermsforlanguagelistview.length ) {
-                       this.$entitytermsforlanguagelistview = $( '<table/>' 
).appendTo( this.element );
+                       this.$entitytermsforlanguagelistview = $( '<div/>' )
+                               .appendTo( 
this.$entitytermsforlanguagelistviewContainer );
                }
 
                this._createEntitytermsforlanguagelistview();
+
+               var self = this;
+
+               this.element
+               .on(
+                       this.widgetEventPrefix + 'change.' + this.widgetName
+                               + ' ' + this.widgetEventPrefix + 
'afterstopediting.' + this.widgetName,
+                       function() {
+                               $.each( self.value(), function() {
+                                       if( this.language === mw.config.get( 
'wgUserLanguage' ) ) {
+                                               var $labelChildren = 
self.$headingLabel.children();
+                                               self.$headingLabel.text( 
this.label.getText() ).append( $labelChildren );
+                                               self.$headingDescription.text( 
this.description.getText() );
+
+                                               var aliasesTexts = 
this.aliases.getTexts(),
+                                                       $ul = 
self.$headingAliases.children( 'ul' ).empty();
+
+                                               for( var i = 0; i < 
aliasesTexts.length; i++ ) {
+                                                       $ul.append(
+                                                               mw.wbTemplate( 
'wikibase-entitytermsview-aliases-alias',
+                                                                       
aliasesTexts[i]
+                                                               )
+                                                       );
+                                               }
+
+                                               return false;
+                                       }
+                               } );
+                       }
+               );
        },
 
        /**
@@ -120,6 +159,7 @@
                        this.$entitytermsforlanguagelistview.remove();
                }
 
+               this.element.off( '.' + this.widgetName );
                this.element.removeClass( 'wikibase-entitytermsview' );
                PARENT.prototype.destroy.call( this );
        },
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index 69b8918..47b8107 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -62,19 +62,16 @@
                        '', // main content
                        '' // sidebar
                ],
-               templateShortCuts: {},
+               templateShortCuts: {
+                       $main: '.wikibase-entityview-main',
+                       $side: '.wikibase-entityview-side'
+               },
                value: null,
                languages: null,
                entityStore: null,
                valueViewBuilder: null,
                dataTypeStore: null
        },
-
-       /**
-        * @property {jQuery}
-        * @protected
-        */
-       $toc: null,
 
        /**
         * @property {jQuery}
@@ -98,7 +95,7 @@
         * @property {jQuery|null}
         * @protected
         */
-       $fingerprints: null,
+       $entityTerms: null,
 
        /**
         * @inheritdoc
@@ -133,12 +130,7 @@
 
                this.element.data( $.wikibase.entityview.prototype.widgetName, 
this );
 
-               this.$toc = $( '.toc', this.element );
-
-               this._initLabel();
-               this._initDescription();
-               this._initAliases();
-               this._initFingerprints();
+               this._initEntityTerms();
 
                this._attachEventHandlers();
        },
@@ -146,120 +138,55 @@
        /**
         * @protected
         */
-       _initLabel: function() {
-               this.$label = $( '.wb-firstHeading .wikibase-labelview', 
this.element ).first();
-               if( !this.$label.length ) {
-                       this.$label = $( '<div/>' );
-                       mw.wbTemplate( 'wikibase-firstHeading',
-                               this.options.value.getId(),
-                               this.$label
-                       ).appendTo( this.element );
-               }
+       _initEntityTerms: function() {
+               var i;
 
-               // FIXME: entity object should not contain fallback strings
-               var label = this.options.value.getFingerprint().getLabelFor( 
this.options.languages[0] )
-                       || new wb.datamodel.Term( this.options.languages[0], '' 
);
+               this.$entityTerms = $( '.wikibase-entitytermsview', 
this.element );
 
-               this.$label.labelview( {
-                       value: label,
-                       helpMessage: mw.msg(
-                               'wikibase-description-input-help-message',
-                               wb.getLanguageNameByCode( 
this.options.languages[0] )
-                       ),
-                       entityId: this.options.value.getId(),
-                       labelsChanger: 
this.options.entityChangersFactory.getLabelsChanger(),
-                       showEntityId: true
-               } );
-       },
+               if( !this.$entityTerms.length ) {
+                       this.$entityTerms = $( '<div/>' ).prepend( this.$main );
+               } else {
+                       var $entitytermsforlanguageview = this.$entityTerms
+                               .find( '.wikibase-entitytermsforlanguageview' );
 
-       /**
-        * @protected
-        */
-       _initDescription: function() {
-               this.$description = $( '.wikibase-descriptionview', 
this.element ).first();
-               if( !this.$description.length ) {
-                       this.$description = $( '<div/>' ).appendTo( 
this.element );
-               }
-
-               // FIXME: entity object should not contain fallback strings
-               var description = 
this.options.value.getFingerprint().getDescriptionFor(
-                       this.options.languages[0]
-               ) || new wb.datamodel.Term( this.options.languages[0], '' );
-
-               this.$description.descriptionview( {
-                       value: description,
-                       helpMessage: mw.msg(
-                               'wikibase-description-input-help-message',
-                               wb.getLanguageNameByCode( 
this.options.languages[0] )
-                       ),
-                       descriptionsChanger: 
this.options.entityChangersFactory.getDescriptionsChanger()
-               } );
-       },
-
-       /**
-        * @protected
-        */
-       _initAliases: function() {
-               this.$aliases = $( '.wikibase-aliasesview', this.element 
).first();
-               if( !this.$aliases.length ) {
-                       this.$aliases = $( '<div/>' ).appendTo( this.element );
-               }
-
-               var aliases = 
this.options.value.getFingerprint().getAliasesFor( this.options.languages[0] )
-                       || new wb.datamodel.MultiTerm( 
this.options.languages[0], [] );
-
-               this.$aliases.aliasesview( {
-                       value: aliases,
-                       aliasesChanger: 
this.options.entityChangersFactory.getAliasesChanger()
-               } );
-       },
-
-       /**
-        * @protected
-        */
-       _initFingerprints: function() {
-               var self = this;
-
-               if( this.options.languages.length === 1 ) {
-                       return;
-               }
-
-               this.$fingerprints = $( '.wikibase-entitytermsview', 
this.element );
-
-               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()
-                               );
+                       // Scrape languages from static HTML:
+                       var scrapedLanguages = [];
+                       if( $entitytermsforlanguageview.length > 0 ) {
+                               $entitytermsforlanguageview.each( function() {
+                                       $.each( $( this ).attr( 'class' 
).split( ' ' ), function() {
+                                               if( this.indexOf( 
'wikibase-entitytermsforlanguageview-' ) === 0 ) {
+                                                       scrapedLanguages.push(
+                                                               this.split( 
'wikibase-entitytermsforlanguageview-' )[1]
+                                                       );
+                                                       return false;
+                                               }
+                                       } );
+                               } );
                        }
 
-                       this.$fingerprints = $( '<div/>' ).insertAfter( 
$precedingNode );
-               } else {
-                       // Scrape languages from static HTML:
-                       // FIXME: Currently, this simply overrules the 
languages options.
-                       self.options.languages = [];
-                       this.$fingerprints.find( 
'.wikibase-entitytermsforlanguageview' ).each( function() {
-                               $.each( $( this ).attr( 'class' ).split( ' ' ), 
function() {
-                                       if( this.indexOf( 
'wikibase-entitytermsforlanguageview-' ) === 0 ) {
-                                               self.options.languages.push(
-                                                       this.split( 
'wikibase-entitytermsforlanguageview-' )[1]
-                                               );
-                                               return false;
+                       var mismatch = scrapedLanguages.length !== 
this.options.languages.length;
+
+                       if( !mismatch ) {
+                               for( i = 0; i < scrapedLanguages.length; i++ ) {
+                                       if( scrapedLanguages[i] !== 
this.options.languages[i] ) {
+                                               mismatch = true;
+                                               break;
                                        }
-                               } );
-                       } );
+                               }
+                       }
+
+                       if( mismatch ) {
+                               // TODO: While this triggers rebuilding the 
whole DOM structure, the user interface
+                               // language is always rendered statically and 
would not need to be re-rendered.
+                               // However, that requires additional logic in 
respective widgets.
+                               $entitytermsforlanguageview.remove();
+                       }
                }
 
                var fingerprint = this.options.value.getFingerprint(),
                        value = [];
 
-               for( var i = 1; i < this.options.languages.length; i++ ) {
+               for( i = 0; i < this.options.languages.length; i++ ) {
                        value.push( {
                                language: this.options.languages[i],
                                label: fingerprint.getLabelFor( 
this.options.languages[i] )
@@ -271,7 +198,7 @@
                        } );
                }
 
-               this.$fingerprints.entitytermsview( {
+               this.$entityTerms.entitytermsview( {
                        value: value,
                        entityId: this.options.value.getId(),
                        entityChangersFactory: 
this.options.entityChangersFactory,
@@ -340,39 +267,9 @@
                this.$label.data( 'labelview' )[state]();
                this.$description.data( 'descriptionview' )[state]();
                this.$aliases.data( 'aliasesview' )[state]();
-               if( this.$fingerprints ) {
-                       this.$fingerprints.data( 'entitytermsview' )[state]();
+               if( this.$entityTerms ) {
+                       this.$entityTerms.data( 'entitytermsview' )[state]();
                }
-       },
-
-       /**
-        * Adds an item to the table of contents.
-        * @protected
-        *
-        * @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/jquery.wikibase.labelview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
index aa6c774..4e2ab8e 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
@@ -72,8 +72,6 @@
 
                var self = this;
 
-               this.element.attr( 'id', 'wb-firstHeading-' + 
this.options.entityId );
-
                this.element
                .on(
                        'labelviewafterstartediting.' + this.widgetName
@@ -156,6 +154,10 @@
                        $input.val( labelText );
                }
 
+               if( $.fn.inputautoexpand ) {
+                       $input.inputautoexpand();
+               }
+
                this.$text.empty().append( $input );
        },
 
diff --git a/lib/resources/jquery.wikibase/resources.php 
b/lib/resources/jquery.wikibase/resources.php
index f6f91c1..2df0616 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -31,7 +31,6 @@
                                'wikibase.datamodel.MultiTerm',
                        ),
                        'messages' => array(
-                               'wikibase-aliases-label',
                                'wikibase-aliases-input-help-message',
                                'wikibase-alias-edit-placeholder',
                        ),
@@ -169,6 +168,7 @@
                        'dependencies' => array(
                                'jquery.ui.TemplatedWidget',
                                
'jquery.wikibase.entitytermsforlanguagelistview',
+                               'mediawiki.user',
                        ),
                        'messages' => array(
                                'wikibase-terms',
@@ -188,6 +188,10 @@
                                'wikibase.getLanguageNameByCode',
                        ),
                        'messages' => array(
+                               
'wikibase-entitytermsforlanguagelistview-aliases',
+                               
'wikibase-entitytermsforlanguagelistview-description',
+                               'wikibase-entitytermsforlanguagelistview-label',
+                               
'wikibase-entitytermsforlanguagelistview-language',
                                'wikibase-fingerprintview-input-help-message',
                        ),
                ),
@@ -205,6 +209,7 @@
                                'jquery.wikibase.labelview',
                                'mediawiki.Title',
                                'wikibase.getLanguageNameByCode',
+                               'wikibase.templates',
                        ),
                        'messages' => array(
                                'wikibase-fingerprintview-input-help-message',
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.aliasesview.css 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.aliasesview.css
index 83d96e9..12cf1cc 100644
--- 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.aliasesview.css
+++ 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.aliasesview.css
@@ -16,7 +16,6 @@
 }
 
 .wikibase-aliasesview-label {
-       font-size: 84%; /* using #contentSub font-size */
        float: left;
        font-weight: bold;
        margin-right: 1em;
@@ -45,7 +44,6 @@
 }
 
 .wikibase-aliasesview li {
-       font-size: 84%;
        float: left;
        margin: 0.2em 12px 0.2em 0;
        display: inline;
@@ -67,11 +65,6 @@
 .wikibase-aliasesview .tagadata-choice input {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
-}
-
-.wikibase-aliasesview.wb-edit {
-       background-color: #D6F3FF;
-       white-space: normal; /* required by FF for not(!) wrapping toolbar when 
there is only one line of aliases */
 }
 
 .wikibase-aliasesview.wb-edit ul {
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.descriptionview.css
 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.descriptionview.css
index c1b7f2d..c3e2bbd 100644
--- 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.descriptionview.css
+++ 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.descriptionview.css
@@ -2,48 +2,11 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-
-.wikibase-descriptionview {
-       float: left;
-       margin-top: -2px; /* move to top decreasing space between label and 
description */
-       width: 100%;
-}
-
-div.wikibase-descriptionview.wb-edit {
-       background-color: #D6F3FF;
-}
-div.wikibase-descriptionview.wb-empty {
+.wikibase-descriptionview.wb-empty {
        background-color: inherit;
 }
 
-.wikibase-descriptionview .wikibase-descriptionview-container {
-       padding-left: 10px;
-       position: relative;
-}
-
-.wikibase-descriptionview.wb-edit .wikibase-descriptionview-container {
-       padding-left: 7px;
-}
-
-.wikibase-descriptionview .wikibase-descriptionview-text {
-       display: block;
-       padding: 0.1em 19em 0.1em 0;
-       line-height: 2; /* force height to be able to align toolbar */
-}
-
-.wikibase-descriptionview .wikibase-descriptionview-text > div {
-       display: inline;
-}
-
 .wikibase-descriptionview input {
-       width: 100%;
-       padding: 0 2px;
-       font-size: 1em; /* prevent IE from automatically resizing the font 
within the input box */
-}
-
-.wikibase-descriptionview .wikibase-edittoolbar-container {
-       line-height: 2;
-       position: absolute;
-       right: 0;
-       top: 0;
+       font-family: inherit;
+       font-size: inherit;
 }
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguagelistview.css
 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguagelistview.css
index d4d84cb..38d32c7 100644
--- 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguagelistview.css
+++ 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguagelistview.css
@@ -3,21 +3,132 @@
  * @author H. Snater < mediaw...@snater.com >
  */
 .wikibase-entitytermsforlanguagelistview {
+       border: 1px solid #C9C9C9;
+       display: table;
+       padding-bottom: 1em;
+       table-layout: fixed;
+       width: 100%;
+       word-wrap: break-word;
+}
+.wikibase-entitytermsforlanguagelistview.wb-edit {
+       border-color: #2779AA;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header {
+       display: table-header-group;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row {
+       display: table-row;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-cell {
+       background-color: #E8E8E8;
+       border-right: 1px solid white;
+       display: table-cell;
+       padding-left: 0.4em;
+       vertical-align: top;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-cell:last-child {
+       border-right: 0;
+}
+.wikibase-entitytermsforlanguagelistview.wb-edit 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-cell {
+       background: #D6F3FF;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-language {
+       width: 15%;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-label {
+       width: 25%;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-aliases {
+       width: 25%;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-header 
.wikibase-entitytermsforlanguagelistview-header-row 
.wikibase-entitytermsforlanguagelistview-description {
+       width: 35%;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview {
+       display: table-row-group;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview {
+       display: table-row;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-language,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview .wikibase-entitytermsforlanguageview-label,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-description {
+       display: table-cell;
+       line-height: 136%;
+       overflow: hidden;
+       padding-left: 0.4em;
+       padding-top: 0.8em;
+       text-overflow: ellipsis;
+       vertical-align: top;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-language {
+       width: 4%;
+       word-wrap: normal;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview .wikibase-entitytermsforlanguageview-label 
.wikibase-labelview .wikibase-labelview-container,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases .wikibase-aliasesview 
.wikibase-aliasesview-list-item,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-description .wikibase-descriptionview 
.wikibase-descriptionview-container {
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview .wikibase-entitytermsforlanguageview-label 
input,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-description input {
+       border: 0;
        border-bottom: 1px solid #C9C9C9;
-       border-right: 1px solid #C9C9C9;
-       border-spacing: 0;
+       outline: none;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview .wikibase-entitytermsforlanguageview-label 
input:focus,
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-description input:focus {
+       border-color: #0b0080;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases li {
+       background: none;
+       border: 0;
        clear: both;
+       margin: 0;
+       padding: 0;
        width: 100%;
 }
 
-.wikibase-entitytermsforlanguagelistview tr td {
-       background: #F8F8F8;
+.wikibase-entitytermsview 
.wikibase-entitytermsview-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-language {
+       word-wrap: normal;
 }
 
-.wikibase-entitytermsforlanguagelistview tbody:nth-child(even) td {
-       background: #F0F0F0;
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases .wikibase-aliasesview-list {
+       padding: 0;
 }
 
-.wikibase-entitytermsforlanguagelistview .wb-edit tr td {
-       background: #D6F3FF;
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases .tagadata-label-text {
+       padding: 0;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases .tagadata-close {
+       display: none;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases .ui-state-default {
+       color: #000000;
+}
+
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases input {
+       border-bottom: 1px solid #C9C9C9;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases input:focus {
+       border-color: #0b0080;
+}
+.wikibase-entitytermsforlanguagelistview 
.wikibase-entitytermsforlanguagelistview-listview 
.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-aliases li.tagadata-choice-modified 
.tagadata-label-text {
+       font-style: italic;
 }
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguageview.css
 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguageview.css
index ffce513..c2a181a 100644
--- 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguageview.css
+++ 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsforlanguageview.css
@@ -2,81 +2,8 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-.wikibase-entitytermsforlanguageview-language {
-       width: 25%;
-       word-wrap: break-word;
-       padding-left: 10px;
-       border-left: 1px solid #C9C9C9;
-}
-
-.wikibase-entitytermsforlanguageview-label,
-.wikibase-entitytermsforlanguageview-description,
-.wikibase-entitytermsforlanguageview-aliases {
-       width: 75%;
-       word-wrap: break-word;
-       padding-left: 10px;
-}
-
-.wikibase-entitytermsforlanguageview tr td:first-child + td + td {
-       width: 25%;
-}
-
-.wikibase-entitytermsforlanguageview td {
-       border-top: 1px solid #C9C9C9;
-}
-
-.wikibase-entitytermsforlanguageview td:last-child {
-       padding-left: 10px;
-}
-
-.wikibase-entitytermsforlanguageview-label {
-       padding: 10px;
-}
-
-.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-label input,
-.wikibase-entitytermsforlanguageview 
.wikibase-entitytermsforlanguageview-description input {
-       font-family: inherit;
-       width: 100%;
-}
-
-.wikibase-entitytermsforlanguageview .wikibase-descriptionview 
.wikibase-descriptionview-container {
-       padding-left: 0;
-}
-
-.wikibase-entitytermsforlanguageview .wikibase-descriptionview 
.wikibase-descriptionview-text {
-       line-height: 1.4;
-       padding-right: 0;
-}
-
-.wikibase-entitytermsforlanguageview .wikibase-labelview,
-.wikibase-entitytermsforlanguageview .wikibase-descriptionview,
-.wikibase-entitytermsforlanguageview .wikibase-aliasesview {
-       display: block;
-       float: none;
-       margin-top: 0;
-       padding: 10px;
-       width: auto;
-}
-
-.wikibase-entitytermsforlanguageview .wikibase-aliasesview 
.wikibase-aliasesview-container {
-       display: inline-block !important;
-       padding-left: 0;
-       padding-right: 0;
-       width: 100%;
-}
-
-.wikibase-entitytermsforlanguageview.wb-edit .wikibase-aliasesview-list {
-       font-size: 84%;
-}
-
-.wikibase-entitytermsforlanguageview.wb-edit .wikibase-aliasesview-list * {
-       font-size: 100%;
-}
-
-.wikibase-entitytermsforlanguageview.wb-edit .wikibase-labelview,
-.wikibase-entitytermsforlanguageview.wb-edit .wikibase-descriptionview,
-.wikibase-entitytermsforlanguageview.wb-edit .wikibase-aliasesview {
-       padding: 9px 8px 9px 7px;
+.wikibase-entitytermsforlanguageview input {
+       background-color: transparent;
 }
 
 .wikibase-entitytermsforlanguageview .wb-error {
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsview.css
 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsview.css
index 30e7168..fd9c89e 100644
--- 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsview.css
+++ 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.entitytermsview.css
@@ -4,11 +4,60 @@
  */
 .wikibase-entitytermsview {
        float: left;
+       margin-bottom: 1em;
+       position: relative;
        width: 100%;
 }
 
-.wikibase-entitytermsview h2 {
-       width: auto;
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-label 
.wikibase-entitytermsview-heading-label-id {
+       color: grey;
+       font-size: 0.6em;
+       margin-left: 0.4em;
+}
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-label 
.wikibase-entitytermsview-heading-label-id:before {
+       /* Prevent id being hidden in ellipsis on very long labels: */
+       content: ' ';
+}
+
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-aliases ul {
+       color: grey;
+       overflow: hidden;
+       margin: 0;
+       text-overflow: ellipsis;
+}
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-aliases li {
+       display: inline;
+}
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-aliases li::before,
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-aliases li:before {
+       content: '|';
+       padding: 0 0.4em;
+}
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-aliases li:first-child:before {
+       content: '';
+       padding: 0;
+}
+
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-label {
+       max-width: 25em;
+}
+
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-label,
+.wikibase-entitytermsview .wikibase-entitytermsview-heading 
.wikibase-entitytermsview-heading-description {
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.wikibase-entitytermsview 
.wikibase-entitytermsview-entitytermsforlanguagelistview {
+       margin-top: 2em;
+}
+.wikibase-entitytermsview 
.wikibase-entitytermsview-entitytermsforlanguagelistview-collapsed {
+       display: none;
+}
+
+
+.wikibase-entitytermsview > .wikibase-toolbar-container {
+       line-height: 3;
 }
 
 .wikibase-entitytermsview .wikibase-toolbar-container 
.wikibase-toolbar-container  {
diff --git 
a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.labelview.css 
b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.labelview.css
index ba4d6c0..3842cea 100644
--- a/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.labelview.css
+++ b/lib/resources/jquery.wikibase/themes/default/jquery.wikibase.labelview.css
@@ -2,106 +2,11 @@
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
-/* TODO: Re-evaluate all styles and clean-up */
-/* TODO: Move firstHeading specific styles out of here */
-
-.wikibase-labelview {
-       float: left;
-       position: relative;
-       width: 100%;
-}
-
-.wb-firstHeading .wikibase-labelview.wb-edit:not(.wb-empty) {
-       background-color: #D6F3FF;
-}
-
-.wb-firstHeading .wikibase-labelview-container {
-       margin: .3em .3em .13em 0;
-       padding-right: 19em;
-}
-
-.wb-firstHeading .wikibase-labelview .wikibase-labelview-container {
-       margin-left: 10px;
-       word-wrap: break-word;
-}
-
-.wb-firstHeading .wikibase-labelview.wb-edit .wikibase-labelview-container {
-       margin-left: 7px;
-}
-
-.wb-firstHeading .wikibase-labelview-text {
-       font-size: 188%;
-       line-height: 1.2;
-}
-
-.wikibase-labelview .wikibase-labelview-entityid {
-       color: #A1A1A1;
-}
-
-#content .wb-firstHeading {
-       font-size: 100%; /* required since Gerrit 
Ic5ba836364d04b2c3814777b69b5f47fce25292a */
-}
-
-.wb-firstHeading {
-       border-bottom: 0;
-       margin-bottom: 0; /* FIXME: Should be removed if the Typography refresh 
is stable */
-       padding-top: 0; /* FIXME: Should be removed if the Typography refresh 
is stable */
-       clear: both; /* so success bar after new item created won't float 
heading */
-}
-
-.wb-firstHeading span {
-       line-height: 100%;
-}
-
-.wikibase-labelview .wikibase-labelview-entityid {
-       /* In RTL UI, if the last word of the label is LTR,
-        * the supplement will get jumbled without isolation */
-       unicode-bidi: -moz-isolate;
-       unicode-bidi: -webkit-isolate;
-       unicode-bidi: isolate;
+.wikibase-labelview.wb-empty {
+       background-color: inherit;
 }
 
 .wikibase-labelview input {
-       width: 100%;
        font-family: inherit;
        font-size: inherit;
-       height: 1.2em;
-}
-
-.wb-firstHeading .wikibase-toolbar {
-       font-size: 100%;
-       line-height: 1.2; /* adjust to height of value */
-       padding-top: 1px; /* even out border of input box */
-}
-
-.wb-firstHeading .wikibase-labelview .wikibase-toolbar-wrapper {
-       position: absolute;
-       margin-top: .3em; /* see .wikibase-labelview-container */
-       right: 0;
-       top: 0;
-       width: 18em;
-}
-
-.wb-firstHeading .wikibase-labelview .wikibase-toolbar-wrapper > 
.wikibase-toolbar-container {
-       font-size: 188%;
-       position: static;
-       width: auto;
-}
-
-.wb-firstHeading .wikibase-labelview .wikibase-toolbar-wrapper > 
.wikibase-toolbar-container > * {
-       font-family: sans-serif;
-       font-size: 53%;
-}
-
-/* The wait message displayed when saving the label has to be customized due 
to diverging font
-sizes and line heights within the heading */
-.wikibase-labelview .wb-actionmsg {
-       display: inline-block;
-       font-size: 188%;
-       line-height: 1.2;
-       padding-top: 1px;
-       margin: 0;
-}
-.wikibase-labelview .wb-actionmsg span {
-       font-size: 53%;
 }
diff --git 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/aliasesview.js
 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/aliasesview.js
deleted file mode 100644
index ba920c4..0000000
--- 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/aliasesview.js
+++ /dev/null
@@ -1,86 +0,0 @@
-( function( $ ) {
-       'use strict';
-
-/**
- * @ignore
- *
- * @licence GNU GPL v2+
- * @author H. Snater < mediaw...@snater.com >
- */
-$.wikibase.toolbarcontroller.definition( 'edittoolbar', {
-       id: 'aliasesview',
-       events: {
-               aliasesviewcreate: function( event, toolbarcontroller ) {
-                       var $aliasesview = $( event.target ),
-                               aliasesview = $aliasesview.data( 'aliasesview' 
),
-                               $container = $aliasesview.find( 'ul' ).next( 
'span' );
-
-                       if( !$container.length ) {
-                               $container = $( '<span/>' ).insertAfter( 
$aliasesview.find( 'ul' ) );
-                       }
-
-                       $aliasesview.edittoolbar( {
-                               $container: $container,
-                               interactionWidget: aliasesview
-                       } );
-
-                       $aliasesview.on( 'keyup', function( event ) {
-                               if( aliasesview.option( 'disabled' ) ) {
-                                       return;
-                               }
-                               if( event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       aliasesview.stopEditing( true );
-                               } else if( event.keyCode === $.ui.keyCode.ENTER 
) {
-                                       aliasesview.stopEditing( false );
-                               }
-                       } );
-
-                       $aliasesview.one( 'edittoolbaredit', function() {
-                               toolbarcontroller.registerEventHandler(
-                                       event.data.toolbar.type,
-                                       event.data.toolbar.id,
-                                       aliasesview.widgetEventPrefix + 
'change',
-                                       function( event ) {
-                                               var $aliasesview = $( 
event.target ),
-                                                       aliasesview = 
$aliasesview.data( 'aliasesview' ),
-                                                       edittoolbar = 
$aliasesview.data( 'edittoolbar' ),
-                                                       btnSave = 
edittoolbar.getButton( 'save' ),
-                                                       enable = 
aliasesview.isValid() && !aliasesview.isInitialValue();
-
-                                               btnSave[enable ? 'enable' : 
'disable']();
-                                       }
-                               );
-                       } );
-               },
-               aliasesviewdisable: function( event ) {
-                       var $aliasesview = $( event.target ),
-                               aliasesview = $aliasesview.data( 'aliasesview' 
),
-                               edittoolbar = $aliasesview.data( 'edittoolbar' 
),
-                               btnSave = edittoolbar.getButton( 'save' ),
-                               enable = aliasesview.isValid() && 
!aliasesview.isInitialValue(),
-                               currentAliases = aliasesview.value();
-
-                       btnSave[enable ? 'enable' : 'disable']();
-
-                       if( aliasesview.option( 'disabled' ) || currentAliases 
&& currentAliases.length ) {
-                               return;
-                       }
-
-                       if( !currentAliases ) {
-                               edittoolbar.disable();
-                       }
-               },
-               edittoolbaredit: function( event, toolbarcontroller ) {
-                       var $aliasesview = $( event.target ),
-                               aliasesview = $aliasesview.data( 'aliasesview' 
);
-
-                       if( !aliasesview ) {
-                               return;
-                       }
-
-                       aliasesview.focus();
-               }
-       }
-} );
-
-}( jQuery ) );
diff --git 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/descriptionview.js
 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/descriptionview.js
deleted file mode 100644
index 3824915..0000000
--- 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/descriptionview.js
+++ /dev/null
@@ -1,122 +0,0 @@
-( function( $ ) {
-       'use strict';
-
-/**
- * @ignore
- *
- * @licence GNU GPL v2+
- * @author H. Snater < mediaw...@snater.com >
- */
-$.wikibase.toolbarcontroller.definition( 'edittoolbar', {
-       id: 'descriptionview',
-       selector: '.wikibase-descriptionview:not(.wb-terms-description)',
-       events: {
-               descriptionviewcreate: function( event, toolbarcontroller ) {
-                       var $descriptionview = $( event.target ),
-                               descriptionview = $descriptionview.data( 
'descriptionview' ),
-                               $container = $descriptionview.find( 
'.wikibase-toolbar-container' );
-
-                       if( !$container.length ) {
-                               $container = $( '<span/>' ).appendTo(
-                                       $descriptionview.find( 
'.wikibase-descriptionview-container' )
-                               );
-                       }
-
-                       $descriptionview.edittoolbar( {
-                               $container: $container,
-                               interactionWidget: descriptionview
-                       } );
-
-                       $descriptionview.on( 'keyup', function( event ) {
-                               if( descriptionview.option( 'disabled' ) ) {
-                                       return;
-                               }
-                               if( event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       descriptionview.stopEditing( true );
-                               } else if( event.keyCode === $.ui.keyCode.ENTER 
) {
-                                       descriptionview.stopEditing( false );
-                               }
-                       } );
-
-                       if( descriptionview.value().getText() === '' ) {
-                               descriptionview.toEditMode();
-                               $descriptionview.data( 'edittoolbar' 
).toEditMode();
-                               $descriptionview.data( 'edittoolbar' 
).disable();
-                       }
-
-                       $descriptionview
-                       .off( 'descriptionviewafterstopediting.edittoolbar' )
-                       .on( 'descriptionviewafterstopediting.edittoolbar', 
function( event ) {
-                               var edittoolbar = $( event.target ).data( 
'edittoolbar' );
-                               if( descriptionview.value().getText() !== '' ) {
-                                       edittoolbar.toNonEditMode();
-                                       edittoolbar.enable();
-                                       edittoolbar.toggleActionMessage( 
function() {
-                                               edittoolbar.getButton( 'edit' 
).focus();
-                                       } );
-                               } else {
-                                       descriptionview.toEditMode();
-                                       edittoolbar.toEditMode();
-                                       edittoolbar.toggleActionMessage( 
function() {
-                                               descriptionview.focus();
-                                       } );
-                                       edittoolbar.disable();
-                               }
-                       } );
-               },
-               'descriptionviewchange descriptionviewafterstartediting 
descriptionviewafterstopediting': function( event ) {
-                       var $descriptionview = $( event.target ),
-                               descriptionview = $descriptionview.data( 
'descriptionview' ),
-                               edittoolbar = $descriptionview.data( 
'edittoolbar' ),
-                               btnSave = edittoolbar.getButton( 'save' ),
-                               enableSave = descriptionview.isValid() && 
!descriptionview.isInitialValue(),
-                               btnCancel = edittoolbar.getButton( 'cancel' ),
-                               currentDescription = 
descriptionview.value().getText(),
-                               disableCancel = currentDescription === '' && 
descriptionview.isInitialValue();
-
-                       btnSave[enableSave ? 'enable' : 'disable']();
-                       btnCancel[disableCancel ? 'disable' : 'enable']();
-
-                       if( event.type === 'descriptionviewchange' ) {
-                               if( !descriptionview.isInitialValue() ) {
-                                       descriptionview.startEditing();
-                               } else if(
-                                       descriptionview.isInitialValue()
-                                       && descriptionview.value().getText() 
=== ''
-                               ) {
-                                       descriptionview.cancelEditing();
-                               }
-                       }
-               },
-               descriptionviewdisable: function( event ) {
-                       var $descriptionview = $( event.target ),
-                               descriptionview = $descriptionview.data( 
'descriptionview' ),
-                               edittoolbar = $descriptionview.data( 
'edittoolbar' ),
-                               btnSave = edittoolbar.getButton( 'save' ),
-                               enable = descriptionview.isValid() && 
!descriptionview.isInitialValue(),
-                               currentDescription = 
descriptionview.value().getText();
-
-                       btnSave[enable ? 'enable' : 'disable']();
-
-                       if( descriptionview.option( 'disabled' ) || 
currentDescription !== '' ) {
-                               return;
-                       }
-
-                       if( currentDescription === '' ) {
-                               edittoolbar.disable();
-                       }
-               },
-               edittoolbaredit: function( event, toolbarcontroller ) {
-                       var $descriptionview = $( event.target ).closest( 
':wikibase-edittoolbar' ),
-                               descriptionview = $descriptionview.data( 
'descriptionview' );
-
-                       if( !descriptionview ) {
-                               return;
-                       }
-
-                       descriptionview.focus();
-               }
-       }
-} );
-
-}( jQuery ) );
diff --git 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
index 9661b53..bb59a69 100644
--- 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
+++ 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
@@ -1,4 +1,4 @@
-( function( $ ) {
+( function( $, mw ) {
        'use strict';
 
 /**
@@ -15,13 +15,10 @@
                entitytermsviewcreate: function( event, toolbarcontroller ) {
                        var $entitytermsview = $( event.target ),
                                entitytermsview = $entitytermsview.data( 
'entitytermsview' ),
-                               $headingContainer = $entitytermsview.find(
-                                       
'.wikibase-entitytermsview-heading-container'
-                               ),
-                               $container = $headingContainer.children( 
'.wikibase-toolbar-container' );
+                               $container = $entitytermsview.children( 
'.wikibase-toolbar-container' );
 
                        if( !$container.length ) {
-                               $container = $( '<div/>' ).appendTo( 
$headingContainer );
+                               $container = $( '<div/>' ).appendTo( $container 
);
                        }
 
                        $entitytermsview.edittoolbar( {
@@ -49,6 +46,17 @@
 
                        btnSave[enable ? 'enable' : 'disable']();
                },
+               entitytermsviewafterstopediting: function( event ) {
+                       var $entitytermsview = $( event.target ),
+                               entitytermsview = $entitytermsview.data( 
'entitytermsview' );
+
+                       if(
+                               
entitytermsview.$entitytermsforlanguagelistviewContainer.is( ':visible' )
+                               && !mw.user.options.get( 
'wikibase-entiytermsview-showEntitytermslistview' )
+                       ) {
+                               
entitytermsview.$entitytermsforlanguagelistviewContainer.slideUp( 'fast' );
+                       }
+               },
                entitytermsviewdisable: function( event ) {
                        var $entitytermsview = $( event.target ),
                                entitytermsview = $entitytermsview.data( 
'entitytermsview' ),
@@ -58,12 +66,22 @@
 
                        btnSave[enable ? 'enable' : 'disable']();
                },
-               toolbareditgroupedit: function( event, toolbarcontroller ) {
+               edittoolbaredit: function( event, toolbarcontroller ) {
                        var $entitytermsview = $( event.target ),
                                entitytermsview = $entitytermsview.data( 
'entitytermsview' );
 
                        if( !entitytermsview ) {
                                return;
+                       }
+
+                       if( 
!entitytermsview.$entitytermsforlanguagelistviewContainer.is( ':visible' ) ) {
+                               
entitytermsview.$entitytermsforlanguagelistviewContainer.slideDown( {
+                                       complete: function() {
+                                               
entitytermsview.$entitytermsforlanguagelistview
+                                                       .data( 
'entitytermsforlanguagelistview' ).updateInputSize();
+                                       },
+                                       duration: 'fast'
+                               } );
                        }
 
                        entitytermsview.focus();
@@ -72,4 +90,4 @@
 } );
 
 
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
diff --git 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/labelview.js
 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/labelview.js
deleted file mode 100644
index f04ee1d..0000000
--- 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/labelview.js
+++ /dev/null
@@ -1,122 +0,0 @@
-( function( $, mw ) {
-       'use strict';
-
-/**
- * @ignore
- *
- * @licence GNU GPL v2+
- * @author H. Snater < mediaw...@snater.com >
- */
-$.wikibase.toolbarcontroller.definition( 'edittoolbar', {
-       id: 'labelview',
-       selector: '.wikibase-labelview:not(.wb-terms-label)',
-       events: {
-               labelviewcreate: function( event, toolbarcontroller ) {
-                       var $labelview = $( event.target ),
-                               labelview = $labelview.data( 'labelview' ),
-                               $container = $labelview.find( 
'.wikibase-toolbar-container' );
-
-                       // TODO: Remove toolbar-wrapper that is firstHeading 
specific (required to reset font
-                       // size)
-                       if( !$container.length ) {
-                               $container = $( '<span/>' ).appendTo(
-                                       mw.wbTemplate( 
'wikibase-toolbar-wrapper', '' )
-                                       .appendTo( $labelview.find( 
'.wikibase-labelview-container' ) )
-                               );
-                       }
-
-                       $labelview.edittoolbar( {
-                               $container: $container,
-                               interactionWidget: labelview
-                       } );
-
-                       $labelview.on( 'keyup', function( event ) {
-                               if( labelview.option( 'disabled' ) ) {
-                                       return;
-                               }
-                               if( event.keyCode === $.ui.keyCode.ESCAPE ) {
-                                       labelview.stopEditing( true );
-                               } else if( event.keyCode === $.ui.keyCode.ENTER 
) {
-                                       labelview.stopEditing( false );
-                               }
-                       } );
-
-                       if( labelview.value().getText() === '' ) {
-                               labelview.toEditMode();
-                               $labelview.data( 'edittoolbar' ).toEditMode();
-                               $labelview.data( 'edittoolbar' ).disable();
-                       }
-
-                       $labelview
-                       .off( 'labelviewafterstopediting.edittoolbar' )
-                       .on( 'labelviewafterstopediting.edittoolbar', function( 
event ) {
-                               var edittoolbar = $( event.target ).data( 
'edittoolbar' );
-                               if( labelview.value().getText() !== '' ) {
-                                       edittoolbar.toNonEditMode();
-                                       edittoolbar.enable();
-                                       edittoolbar.toggleActionMessage( 
function() {
-                                               edittoolbar.getButton( 'edit' 
).focus();
-                                       } );
-                               } else {
-                                       labelview.toEditMode();
-                                       edittoolbar.toEditMode();
-                                       edittoolbar.toggleActionMessage( 
function() {
-                                               labelview.focus();
-                                       } );
-                                       edittoolbar.disable();
-                               }
-                       } );
-               },
-               'labelviewchange labelviewafterstartediting 
labelviewafterstopediting': function( event ) {
-                       var $labelview = $( event.target ),
-                               labelview = $labelview.data( 'labelview' ),
-                               edittoolbar = $labelview.data( 'edittoolbar' ),
-                               btnSave = edittoolbar.getButton( 'save' ),
-                               enableSave = labelview.isValid() && 
!labelview.isInitialValue(),
-                               btnCancel = edittoolbar.getButton( 'cancel' ),
-                               currentLabel = labelview.value().getText(),
-                               disableCancel = currentLabel === '' && 
labelview.isInitialValue();
-
-                       btnSave[enableSave ? 'enable' : 'disable']();
-                       btnCancel[disableCancel ? 'disable' : 'enable']();
-
-                       if( event.type === 'labelviewchange' ) {
-                               if( !labelview.isInitialValue() ) {
-                                       labelview.startEditing();
-                               } else if( labelview.isInitialValue() && 
labelview.value().getText() === '' ) {
-                                       labelview.cancelEditing();
-                               }
-                       }
-               },
-               labelviewdisable: function( event ) {
-                       var $labelview = $( event.target ),
-                               labelview = $labelview.data( 'labelview' ),
-                               edittoolbar = $labelview.data( 'edittoolbar' ),
-                               btnSave = edittoolbar.getButton( 'save' ),
-                               enable = labelview.isValid() && 
!labelview.isInitialValue(),
-                               currentLabel = labelview.value().getText();
-
-                       btnSave[enable ? 'enable' : 'disable']();
-
-                       if( labelview.option( 'disabled' ) || currentLabel !== 
'' ) {
-                               return;
-                       }
-
-                       if( currentLabel === '' ) {
-                               edittoolbar.disable();
-                       }
-               },
-               edittoolbaredit: function( event, toolbarcontroller ) {
-                       var $labelview = $( event.target ),
-                               labelview = $labelview.data( 'labelview' );
-
-                       if( !labelview ) {
-                               return;
-                       }
-
-                       labelview.focus();
-               }
-       }
-} );
-
-}( jQuery, mediaWiki ) );
diff --git a/lib/resources/jquery.wikibase/toolbar/controller/resources.php 
b/lib/resources/jquery.wikibase/toolbar/controller/resources.php
index 65e7da9..02071f4 100644
--- a/lib/resources/jquery.wikibase/toolbar/controller/resources.php
+++ b/lib/resources/jquery.wikibase/toolbar/controller/resources.php
@@ -79,28 +79,6 @@
                ),
 
 
-               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.aliasesview' => 
$moduleTemplate + array(
-                       'scripts' => array(
-                               'definitions/edittoolbar/aliasesview.js',
-                       ),
-                       'dependencies' => array(
-                               'jquery.wikibase.aliasesview',
-                               'jquery.wikibase.edittoolbar',
-                               'jquery.wikibase.toolbarcontroller',
-                       ),
-               ),
-
-               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.descriptionview' => 
$moduleTemplate + array(
-                       'scripts' => array(
-                               'definitions/edittoolbar/descriptionview.js',
-                       ),
-                       'dependencies' => array(
-                               'jquery.wikibase.descriptionview',
-                               'jquery.wikibase.edittoolbar',
-                               'jquery.wikibase.toolbarcontroller',
-                       ),
-               ),
-
                
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.entitytermsview' => 
$moduleTemplate + array(
                        'scripts' => array(
                                'definitions/edittoolbar/entitytermsview.js',
@@ -109,18 +87,7 @@
                                'jquery.wikibase.entitytermsview',
                                'jquery.wikibase.edittoolbar',
                                'jquery.wikibase.toolbarcontroller',
-                       ),
-               ),
-
-               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.labelview' => 
$moduleTemplate + array(
-                       'scripts' => array(
-                               'definitions/edittoolbar/labelview.js',
-                       ),
-                       'dependencies' => array(
-                               'jquery.wikibase.edittoolbar',
-                               'jquery.wikibase.labelview',
-                               'jquery.wikibase.toolbarcontroller',
-                               'wikibase.templates',
+                               'mediawiki.user',
                        ),
                ),
 
diff --git a/lib/resources/wikibase.css b/lib/resources/wikibase.css
index ed1d39e..8abc1ca 100644
--- a/lib/resources/wikibase.css
+++ b/lib/resources/wikibase.css
@@ -85,7 +85,6 @@
 
 .wikibase-entityview input {
        /* prevent browsers from applying their default styles */
-       padding: 0 2px;
        border: 1px solid #AAA;
        border-radius: 0;
        box-sizing: border-box;
@@ -148,51 +147,7 @@
        font-style: italic;
 }
 
-.wikibase-entityview .wikibase-movetoolbar-container {
-       right: 10px;
-       width: auto;
-}
-
-ul.tagadata {
-       padding: 0;
-}
-
-li.tagadata-choice-modified .tagadata-label-text {
-       /* highlight new tags since initialization */
-       text-decoration: underline;
-}
-
 /********** /BASIC LAYOUT **********/
-
-
-/********** TERMS **********/
-
-h2.wb-terms-heading {
-    float: left;
-    width: 100%;
-    margin-top: 0.6em;
-    margin-bottom: 0.2em;
-    padding-left: 10px;
-    border-bottom: none;
-}
-
-table.wb-terms {
-    border-spacing: 0;
-    width: 100%;
-    border-bottom: 1px solid #C9C9C9;
-    clear: both;
-    border-right: 1px solid #C9C9C9;
-}
-
-.wb-terms tr td {
-       background: #F8F8F8;
-}
-
-.wb-terms tbody:nth-child(even) td {
-       background: #F0F0F0;
-}
-
-/********** /TERMS **********/
 
 
 /********** CLAIMS **********/
diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index 1e18ad0..fe0ccf3 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -426,6 +426,19 @@
                        'type' => 'api'
                );
 
+               if( class_exists( 'Babel' ) ) {
+                       
$preferences['wikibase-entiytermsview-showEntitytermslistview'] = array(
+                               'type' => 'toggle',
+                               'label-message' => 
'wikibase-setting-entitytermsview-showEntitytermslistview',
+                               'help-message' => 
'wikibase-setting-entitytermsview-showEntitytermslistview-help',
+                               'section' => 'rendering/advancedrendering',
+                       );
+               } else if( $user->getBoolOption( 
'wikibase-entiytermsview-showEntitytermslistview' ) ) {
+                       // Clear setting after uninstalling Babel extension.
+                       unset( 
$user->mOptions['wikibase-entiytermsview-showEntitytermslistview'] );
+                       $user->saveSettings();
+               }
+
                wfProfileOut( __METHOD__ );
                return true;
        }
diff --git a/repo/i18n/en.json b/repo/i18n/en.json
index 290455d..d5ae5ab 100644
--- a/repo/i18n/en.json
+++ b/repo/i18n/en.json
@@ -25,6 +25,12 @@
        "wikibase-addreference": "add reference",
        "wikibase-save-inprogress": "Saving…",
        "wikibase-remove-inprogress": "Removing…",
+       "wikibase-setting-entitytermsview-showEntitytermslistview": "Show 
labels, aliases and descriptions in all my languages on page load",
+       "wikibase-setting-entitytermsview-showEntitytermslistview-help": 
"Personal languages additional to the user interface language may be set using 
the [[mw:Extension:Babel|Babel extension]] syntax on the user page.",
+       "wikibase-entitytermsforlanguagelistview-aliases": "Also known as",
+       "wikibase-entitytermsforlanguagelistview-description": "Description",
+       "wikibase-entitytermsforlanguagelistview-label": "Label",
+       "wikibase-entitytermsforlanguagelistview-language": "Language",
        "wikibase-label-empty": "No label defined yet",
        "wikibase-label-edit-placeholder": "enter a label",
        "wikibase-label-edit-placeholder-language-aware": "enter a label in $1",
diff --git a/repo/i18n/qqq.json b/repo/i18n/qqq.json
index d7a572e..188e7fb 100644
--- a/repo/i18n/qqq.json
+++ b/repo/i18n/qqq.json
@@ -51,6 +51,12 @@
        "wikibase-addreference": "Label of the link to add a reference (see 
[[d:Wikidata:Glossary]]) to a statement.",
        "wikibase-save-inprogress": "[[File:Screenshot WikidataRepo 2012-05-25 
L.png|right|350px]]\n[[File:Screenshot WikidataRepo 2012-05-25 
J.png|right|350px]]\n[[File:Screenshot WikidataRepo 2012-05-25 
K.png|right|350px]]\nThis is a generic placeholder message used while a save is 
in progress, and replaces the save and cancel links.\n{{Identical|Saving}}",
        "wikibase-remove-inprogress": "[[File:Screenshot WikidataRepo 
2012-05-25 L.png|right|350px]]\n[[File:Screenshot WikidataRepo 2012-05-25 
M.png|right|350px]]\nThis is a generic placeholder message used while a remove 
is in progress, and replaces the edit and remove.",
+       "wikibase-setting-entitytermsview-showEntitytermslistview": "Label for 
the user setting that allows showing labels, aliases and descriptions in all of 
the user's languages on page load. The settings is available only if the 
[[mw:Extension:Babel|Babel extension]] is installed.",
+       "wikibase-setting-entitytermsview-showEntitytermslistview-help": "Help 
message for the user setting that allows showing labels, aliases and 
descriptions in all of the user's languages on page load. The settings is 
available only if the [[mw:Extension:Babel|Babel extension]] is installed. 
Hence, the help message may contain advice on how to activate languages 
additional to the user interface language.",
+       "wikibase-entitytermsforlanguagelistview-aliases": "List of labels, 
aliases and descriptions in one or more languages: Heading of the \"aliases\" 
column. (see [[d:Wikidata:Glossary]])",
+       "wikibase-entitytermsforlanguagelistview-description": "List of labels, 
aliases and descriptions in one or more languages: Heading of the 
\"description\" column. (see [[d:Wikidata:Glossary]])",
+       "wikibase-entitytermsforlanguagelistview-label": "List of labels, 
aliases and descriptions in one or more languages: Heading of the \"label\" 
column. (see [[d:Wikidata:Glossary]])",
+       "wikibase-entitytermsforlanguagelistview-language": "List of labels, 
aliases and descriptions in one or more languages: Heading of the \"language\" 
column. (see [[d:Wikidata:Glossary]])",
        "wikibase-label-empty": "Placeholder message displayed instead of the 
item's label in case no label has been specified yet. This message is displayed 
only when the user has JavaScript disabled. (When JavaScript is enabled, an 
input box will be displayed instead.)",
        "wikibase-label-edit-placeholder": "[[File:Screenshot WikidataRepo 
2012-05-13 G.png|right|0x150px]]\nThis is a generic text used as a placeholder 
while editing a new label. See also Wikidatas glossary on 
[[d:Wikidata:Glossary#languageattribute-label|label]].",
        "wikibase-label-edit-placeholder-language-aware": "Like 
{{msg-mw|Wikibase-label-edit-placeholder}}, but language aware. $1 is the 
autonym of the language.",
diff --git a/repo/includes/View/EntityView.php 
b/repo/includes/View/EntityView.php
index 6d8b1cb..4c16959 100644
--- a/repo/includes/View/EntityView.php
+++ b/repo/includes/View/EntityView.php
@@ -159,9 +159,11 @@
 
                $entity = $entityRevision->getEntity();
 
-               $html = $this->getHtmlForFingerprint( $entity );
+               $html = $this->getHtmlForFingerprint(
+                       $entity,
+                       $this->getHtmlForTermBox( $entityRevision )
+               );
                $html .= $this->getHtmlForToc();
-               $html .= $this->getHtmlForTermBox( $entityRevision );
 
                wfProfileOut( __METHOD__ );
                return $html;
@@ -182,11 +184,18 @@
         * Builds and returns the HTML for the entity's fingerprint.
         *
         * @param Entity $entity
+        * @param string $termBoxHtml
         *
         * @return string
         */
-       private function getHtmlForFingerprint( Entity $entity ) {
-               return $this->fingerprintView->getHtml( 
$entity->getFingerprint(), $entity->getId(), $this->editable );
+       private function getHtmlForFingerprint( Entity $entity, $termBoxHtml ) {
+               return $this->fingerprintView->getHtml(
+                       $entity->getFingerprint(),
+                       $entity->getId(),
+                       $termBoxHtml,
+                       $this->textInjector,
+                       $this->editable
+               );
        }
 
        /**
@@ -197,18 +206,14 @@
        private function getHtmlForToc() {
                $tocSections = $this->getTocSections();
 
-               if ( count( $tocSections ) < 2 ) {
-                       // Including the marker for the termbox toc entry, 
there is fewer
-                       // 3 sections. MediaWiki core doesn't show a TOC unless 
there are
-                       // at least 3 sections, so we shouldn't either.
+               if ( count( $tocSections ) < 3 ) {
+                       // MediaWiki core doesn't show a TOC unless there are 
at least 3 sections, so we
+                       //shouldn't either.
                        return '';
                }
 
-               // Placeholder for the TOC entry for the term box (which may or 
may not be used for a given user).
-               // EntityViewPlaceholderExpander must know about the 
'termbox-toc' name.
-               $tocContent = $this->textInjector->newMarker( 'termbox-toc' );
-
-               $i = 1;
+               $tocContent = '';
+               $i = 0;
 
                foreach ( $tocSections as $id => $message ) {
                        $tocContent .= $this->templateFactory->render( 
'wb-entity-toc-section',
diff --git a/repo/includes/View/EntityViewPlaceholderExpander.php 
b/repo/includes/View/EntityViewPlaceholderExpander.php
index a087942..b22c98b 100644
--- a/repo/includes/View/EntityViewPlaceholderExpander.php
+++ b/repo/includes/View/EntityViewPlaceholderExpander.php
@@ -191,35 +191,14 @@
                                        $entityId,
                                        isset( $args[1] ) ? intval( $args[1] ) 
: 0
                                );
-
-                       case 'termbox-toc':
-                               return $this->renderTermBoxTocEntry();
+                       case 
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class':
+                               return $this->user->getOption( 
'wikibase-entiytermsview-showEntitytermslistview' )
+                                       ? '' : 
'wikibase-entitytermsview-entitytermsforlanguagelistview-collapsed';
 
                        default:
                                wfWarn( "Unknown placeholder: $name" );
                                return '(((' . htmlspecialchars( $name ) . 
')))';
                }
-       }
-
-       /**
-        * Generates HTML to be injected into the TOC as a link to the term box.
-        *
-        * @return string HTML
-        */
-       public function renderTermBoxTocEntry() {
-               $languages = $this->getExtraUserLanguages();
-
-               if ( !$languages ) {
-                       return '';
-               }
-
-               $html = $this->templateFactory->render( 'wb-entity-toc-section',
-                       0, // section number, not really used, it seems
-                       'wb-terms',
-                       wfMessage( 'wikibase-terms' )->inLanguage( 
$this->uiLanguage )->text()
-               );
-
-               return $html;
        }
 
        /**
@@ -232,11 +211,10 @@
         * @return string HTML
         */
        public function renderTermBox( EntityId $entityId, $revisionId ) {
-               $languages = $this->getExtraUserLanguages();
-
-               if ( !$languages ) {
-                       return '';
-               }
+               $languages = array_merge(
+                       array( $this->uiLanguage->getCode() ),
+                       $this->getExtraUserLanguages()
+               );
 
                try {
                        // we may want to cache this...
@@ -251,8 +229,17 @@
                        return '';
                }
 
-               $termBoxView = new TermBoxView( $this->templateFactory, 
$this->uiLanguage );
-               $html = $termBoxView->renderTermBox( $this->targetPage, 
$entity->getFingerprint(), $languages );
+               $fingerprintView = new FingerprintView(
+                       $this->templateFactory,
+                       null,
+                       $this->uiLanguage->getCode()
+               );
+               $html = $fingerprintView->getEntityTermsForLanguageListView(
+                       $entity->getFingerprint(),
+                       $languages,
+                       $this->targetPage,
+                       $this->user->getOption( 
'wikibase-entiytermsview-showEntitytermslistview' )
+               );
 
                return $html;
        }
diff --git a/repo/includes/View/FingerprintView.php 
b/repo/includes/View/FingerprintView.php
index 2de3a84..8902e01 100644
--- a/repo/includes/View/FingerprintView.php
+++ b/repo/includes/View/FingerprintView.php
@@ -2,11 +2,14 @@
 
 namespace Wikibase\Repo\View;
 
+use Message;
+use Title;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Term\AliasGroupList;
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\DataModel\Term\TermList;
 use Wikibase\Template\TemplateFactory;
+use Wikibase\Utils;
 
 /**
  * Generates HTML to display the fingerprint of an entity
@@ -17,6 +20,7 @@
  *
  * @author Thiemo Mättig
  * @author Bene* < benestar.wikime...@gmail.com >
+ * @author H. Snater < mediaw...@snater.com >
  */
 class FingerprintView {
 
@@ -26,7 +30,7 @@
        private $templateFactory;
 
        /**
-        * @var SectionEditLinkGenerator
+        * @var SectionEditLinkGenerator|null
         */
        private $sectionEditLinkGenerator;
 
@@ -37,12 +41,12 @@
 
        /**
         * @param TemplateFactory $templateFactory
-        * @param SectionEditLinkGenerator $sectionEditLinkGenerator
+        * @param SectionEditLinkGenerator|null $sectionEditLinkGenerator
         * @param string $languageCode
         */
        public function __construct(
                TemplateFactory $templateFactory,
-               SectionEditLinkGenerator $sectionEditLinkGenerator,
+               SectionEditLinkGenerator $sectionEditLinkGenerator = null,
                $languageCode
        ) {
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
@@ -53,108 +57,203 @@
        /**
         * @param Fingerprint $fingerprint the fingerprint to render
         * @param EntityId|null $entityId the id of the fingerprint's entity
+        * @param string $termBoxHtml
+        * @param TextInjector $textInjector
         * @param bool $editable whether editing is allowed (enabled edit links)
         *
         * @return string
         */
-       public function getHtml( Fingerprint $fingerprint, EntityId $entityId = 
null, $editable = true ) {
+       public function getHtml(
+               Fingerprint $fingerprint,
+               EntityId $entityId = null,
+               $termBoxHtml,
+               TextInjector $textInjector,
+               $editable = true
+       ) {
                $labels = $fingerprint->getLabels();
                $descriptions = $fingerprint->getDescriptions();
                $aliasGroups = $fingerprint->getAliasGroups();
 
-               $html = '';
-
-               $html .= $this->getHtmlForLabel( $labels, $entityId, $editable 
);
-               $html .= $this->getHtmlForDescription( $descriptions, 
$entityId, $editable );
-               $html .= $this->templateFactory->render( 
'wb-entity-header-separator' );
-               $html .= $this->getHtmlForAliases( $aliasGroups, $entityId, 
$editable );
-
-               return $html;
+               return $this->templateFactory->render( 
'wikibase-entitytermsview',
+                       $labels->hasTermForLanguage( $this->languageCode ) ? '' 
: 'wb-empty',
+                       $this->getHtmlForLabel( $labels, $entityId ),
+                       $aliasGroups->hasGroupForLanguage( $this->languageCode 
) ? '' : 'wb-empty',
+                       $this->getHtmlForAliases( $aliasGroups ),
+                       $descriptions->hasTermForLanguage( $this->languageCode 
) ? '' : 'wb-empty',
+                       $this->getDescriptionText( $descriptions ),
+                       $termBoxHtml,
+                       $textInjector->newMarker(
+                               
'entityViewPlaceholder-entitytermsview-entitytermsforlanguagelistview-class'
+                       ),
+                       $this->getHtmlForEditSection( 'SetLabel', $entityId, 
$editable )
+               );
        }
 
        /**
         * @param TermList $labels the list of labels to render
         * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
         *
         * @return string
         */
-       private function getHtmlForLabel( TermList $labels, EntityId $entityId 
= null, $editable ) {
-               $hasLabel = $labels->hasTermForLanguage( $this->languageCode );
+       private function getHtmlForLabel( TermList $labels, EntityId $entityId 
= null ) {
                $id = 'new';
                $idInParentheses = '';
-               $editSection = $this->templateFactory->render( 
'wikibase-toolbar-wrapper',
-                       $this->getHtmlForEditSection( 'SetLabel', $entityId, 
$editable )
-               );
 
-               if ( $entityId !== null ) {
+               if( !is_null( $entityId ) ) {
                        $id = $entityId->getSerialization();
                        $idInParentheses = wfMessage( 'parentheses', $id 
)->text();
                }
 
-               if ( $hasLabel ) {
-                       return $this->templateFactory->render( 
'wikibase-firstHeading',
-                               $id,
-                               $this->templateFactory->render( 
'wikibase-labelview',
-                                       '',
-                                       htmlspecialchars( 
$labels->getByLanguage( $this->languageCode )->getText() ),
-                                       $idInParentheses,
-                                       $editSection
-                               )
-                       );
-               } else {
-                       return $this->templateFactory->render( 
'wikibase-firstHeading',
-                               $id,
-                               $this->templateFactory->render( 
'wikibase-labelview',
-                                       'wb-empty',
-                                       wfMessage( 'wikibase-label-empty' 
)->escaped(),
-                                       $idInParentheses,
-                                       $editSection
-                               )
-                       );
-               }
+               return $this->templateFactory->render( 
'wikibase-entitytermsview-heading-label',
+                       $labels->hasTermForLanguage( $this->languageCode )
+                               ? htmlspecialchars( $labels->getByLanguage( 
$this->languageCode )->getText() )
+                               : wfMessage( 'wikibase-label-empty' 
)->escaped(),
+                       $idInParentheses
+               );
        }
 
        /**
         * @param TermList $descriptions the list of descriptions to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
         *
         * @return string
         */
-       private function getHtmlForDescription( TermList $descriptions, 
EntityId $entityId = null, $editable ) {
-               $hasDescription = $descriptions->hasTermForLanguage( 
$this->languageCode );
-               $editSection = $this->getHtmlForEditSection( 'SetDescription', 
$entityId, $editable );
-
-               if ( $hasDescription ) {
-                       return $this->templateFactory->render( 
'wikibase-descriptionview',
-                               '',
-                               htmlspecialchars( $descriptions->getByLanguage( 
$this->languageCode )->getText() ),
-                               $editSection
-                       );
+       private function getDescriptionText( TermList $descriptions ) {
+               if ( $descriptions->hasTermForLanguage( $this->languageCode ) ) 
{
+                       $text = $descriptions->getByLanguage( 
$this->languageCode )->getText();
+                       return htmlspecialchars( $text );
                } else {
-                       return $this->templateFactory->render( 
'wikibase-descriptionview',
-                               'wb-empty',
-                               wfMessage( 'wikibase-description-empty' 
)->escaped(),
-                               $editSection
-                       );
+                       return wfMessage( 'wikibase-description-empty' 
)->escaped();
                }
        }
 
        /**
         * @param AliasGroupList $aliasGroups the list of alias groups to render
-        * @param EntityId|null $entityId the id of the fingerprint's entity
-        * @param bool $editable whether editing is allowed (enabled edit links)
         *
         * @return string
         */
-       private function getHtmlForAliases( AliasGroupList $aliasGroups, 
EntityId $entityId = null, $editable ) {
-               $hasAliases = $aliasGroups->hasGroupForLanguage( 
$this->languageCode );
-               $editSection = $this->getHtmlForEditSection( 'SetAliases', 
$entityId, $editable, 'edit' );
-
-               if ( $hasAliases ) {
+       private function getHtmlForAliases( AliasGroupList $aliasGroups ) {
+               if ( $aliasGroups->hasGroupForLanguage( $this->languageCode ) ) 
{
                        $aliasesHtml = '';
                        $aliases = $aliasGroups->getByLanguage( 
$this->languageCode )->getAliases();
+                       foreach ( $aliases as $alias ) {
+                               $aliasesHtml .= $this->templateFactory->render(
+                                       
'wikibase-entitytermsview-aliases-alias',
+                                       htmlspecialchars( $alias )
+                               );
+                       }
+
+                       return $this->templateFactory->render( 
'wikibase-entitytermsview-aliases', $aliasesHtml );
+               } else {
+                       return $this->templateFactory->render( 
'wikibase-entitytermsview-aliases',
+                               wfMessage( 'wikibase-aliases-empty' )->escaped()
+                       );
+               }
+       }
+
+       /**
+        * @param Fingerprint $fingerprint
+        * @param string[] $languageCodes
+        * @param Title|null $title
+        * @param boolean $showEntitytermslistview
+        *
+        * @return string
+        */
+       public function getEntityTermsForLanguageListView(
+               Fingerprint $fingerprint,
+               $languageCodes,
+               Title $title = null,
+               $showEntitytermslistview = false
+       ) {
+               wfProfileIn( __METHOD__ );
+
+               $entityTermsForLanguageViewsHtml = '';
+
+               foreach( $languageCodes as $languageCode ) {
+                       $entityTermsForLanguageViewsHtml .= 
$this->getEntityTermsForLanguageView(
+                               $fingerprint,
+                               $languageCode,
+                               $title
+                       );
+               }
+
+               $html = $this->templateFactory->render( 
'wikibase-entitytermsforlanguagelistview',
+                       $this->msg( 
'wikibase-entitytermsforlanguagelistview-language' ),
+                       $this->msg( 
'wikibase-entitytermsforlanguagelistview-label' ),
+                       $this->msg( 
'wikibase-entitytermsforlanguagelistview-aliases' ),
+                       $this->msg( 
'wikibase-entitytermsforlanguagelistview-description' ),
+                       $entityTermsForLanguageViewsHtml
+               );
+
+               wfProfileOut( __METHOD__ );
+               return $html;
+       }
+
+       /**
+        * @param Fingerprint $fingerprint
+        * @param string $languageCode
+        * @param Title|null $title
+        *
+        * @return string
+        */
+       private function getEntityTermsForLanguageView(
+               Fingerprint $fingerprint,
+               $languageCode,
+               Title $title = null
+       ) {
+               $labels = $fingerprint->getLabels();
+               $descriptions = $fingerprint->getDescriptions();
+               $aliasGroups = $fingerprint->getAliasGroups();
+
+               $hasLabel = $labels->hasTermForLanguage( $languageCode );
+               $hasDescription = $descriptions->hasTermForLanguage( 
$languageCode );
+
+               return $this->templateFactory->render( 
'wikibase-entitytermsforlanguageview',
+                       $languageCode,
+                       $this->templateFactory->render( 
'wikibase-entitytermsforlanguageview-language',
+                               is_null( $title )
+                                       ? '#'
+                                       : $title->getLocalURL( array( 'setlang' 
=> $languageCode ) ),
+                               htmlspecialchars( Utils::fetchLanguageName( 
$languageCode ) )
+                       ),
+                       $this->templateFactory->render( 'wikibase-labelview',
+                               $hasLabel ? '' : 'wb-empty',
+                               htmlspecialchars( $hasLabel
+                                       ? $labels->getByLanguage( $languageCode 
)->getText()
+                                       : $this->msg( 'wikibase-label-empty' 
)->text()
+                               ),
+                               '',
+                               ''
+                       ),
+                       $this->getAliasesView( $aliasGroups, $languageCode ),
+                       $this->templateFactory->render( 
'wikibase-descriptionview',
+                               $hasDescription ? '' : 'wb-empty',
+                               htmlspecialchars( $hasDescription
+                                       ? $descriptions->getByLanguage( 
$languageCode )->getText()
+                                       : $this->msg( 
'wikibase-description-empty' )->text()
+                               ),
+                               '',
+                               ''
+                       ),
+                       ''
+               );
+       }
+
+       /**
+        * @param AliasGroupList $aliasGroups
+        * @param string $languageCode
+        *
+        * @return string
+        */
+       private function getAliasesView( AliasGroupList $aliasGroups, 
$languageCode ) {
+               if ( !$aliasGroups->hasGroupForLanguage( $languageCode ) ) {
+                       return $this->templateFactory->render( 
'wikibase-aliasesview',
+                               'wb-empty',
+                               '',
+                               ''
+                       );
+               } else {
+                       $aliasesHtml = '';
+                       $aliases = $aliasGroups->getByLanguage( $languageCode 
)->getAliases();
                        foreach ( $aliases as $alias ) {
                                $aliasesHtml .= $this->templateFactory->render(
                                        'wikibase-aliasesview-list-item',
@@ -164,16 +263,8 @@
 
                        return $this->templateFactory->render( 
'wikibase-aliasesview',
                                '',
-                               wfMessage( 'wikibase-aliases-label' 
)->escaped(),
                                $aliasesHtml,
-                               $editSection
-                       );
-               } else {
-                       return $this->templateFactory->render( 
'wikibase-aliasesview',
-                               'wb-empty',
-                               wfMessage( 'wikibase-aliases-empty' 
)->escaped(),
-                               '',
-                               $editSection
+                               ''
                        );
                }
        }
@@ -186,8 +277,13 @@
         *
         * @return string
         */
-       private function getHtmlForEditSection( $specialPageName, EntityId 
$entityId = null, $editable, $action = 'edit' ) {
-               if ( $entityId === null || !$editable ) {
+       private function getHtmlForEditSection(
+               $specialPageName,
+               EntityId $entityId = null,
+               $editable,
+               $action = 'edit'
+       ) {
+               if ( $entityId === null || !$editable || is_null( 
$this->sectionEditLinkGenerator ) ) {
                        return '';
                }
 
@@ -199,4 +295,12 @@
                );
        }
 
+       /**
+        * @param $key
+        *
+        * @return Message
+        */
+       private function msg( $key ) {
+               return wfMessage( $key )->inLanguage( $this->languageCode );
+       }
 }
diff --git a/repo/includes/View/TermBoxView.php 
b/repo/includes/View/TermBoxView.php
deleted file mode 100644
index c270714..0000000
--- a/repo/includes/View/TermBoxView.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-namespace Wikibase\Repo\View;
-
-use Language;
-use Message;
-use Title;
-use Wikibase\DataModel\Term\AliasGroupList;
-use Wikibase\DataModel\Term\Fingerprint;
-use Wikibase\Template\TemplateFactory;
-use Wikibase\Utils;
-
-/**
- * Generates HTML for displaying the term box, that is, the box
- * of labels and descriptions for additional languages a user understands.
- *
- * @since 0.5
- * @licence GNU GPL v2+
- *
- * @author Daniel Kinzler
- * @author Denny Vrandecic
- */
-class TermBoxView {
-
-       /**
-        * @var TemplateFactory
-        */
-       private $templateFactory;
-
-       /**
-        * @var SectionEditLinkGenerator
-        */
-       private $sectionEditLinkGenerator;
-
-       /**
-        * @var Language
-        */
-       private $language;
-
-       public function __construct( TemplateFactory $templateFactory, Language 
$language ) {
-               $this->language = $language;
-               $this->templateFactory = $templateFactory;
-               $this->sectionEditLinkGenerator = new SectionEditLinkGenerator( 
$templateFactory );
-       }
-
-       /**
-        * @param $key
-        *
-        * @return Message
-        */
-       private function msg( $key ) {
-               return wfMessage( $key )->inLanguage( $this->language );
-       }
-
-       /**
-        * Builds and returns the HTML representing a WikibaseEntity's 
collection of terms.
-        *
-        * @since 0.4
-        *
-        * @param Title $title The title of the page the term box is to be 
shown on
-        * @param Fingerprint $fingerprint the Fingerprint to render
-        * @param string[] $languageCodes list of language codes to show terms 
for
-        * @param bool $editable whether editing is allowed (enabled edit links)
-        *
-        * @return string
-        */
-       public function renderTermBox( Title $title, Fingerprint $fingerprint, 
array $languageCodes, $editable = true ) {
-               if ( empty( $languageCodes ) ) {
-                       return '';
-               }
-
-               wfProfileIn( __METHOD__ );
-
-               $labels = $fingerprint->getLabels();
-               $descriptions = $fingerprint->getDescriptions();
-               $aliasGroups = $fingerprint->getAliasGroups();
-
-               $tbody = '';
-
-               foreach ( $languageCodes as $languageCode ) {
-                       $hasLabel = $labels->hasTermForLanguage( $languageCode 
);
-                       $hasDescription = $descriptions->hasTermForLanguage( 
$languageCode );
-
-                       $tbody .= $this->templateFactory->render( 
'wikibase-entitytermsforlanguageview',
-                               $languageCode,
-                               $title->getLocalURL( array( 'setlang' => 
$languageCode ) ),
-                               htmlspecialchars( Utils::fetchLanguageName( 
$languageCode ) ),
-                               $this->templateFactory->render( 
'wikibase-labelview',
-                                       $hasLabel ? '' : 'wb-empty',
-                                       htmlspecialchars( $hasLabel
-                                               ? $labels->getByLanguage( 
$languageCode )->getText()
-                                               : $this->msg( 
'wikibase-label-empty' )->text()
-                                       ),
-                                       '',
-                                       ''
-                               ),
-                               $this->templateFactory->render( 
'wikibase-descriptionview',
-                                       $hasDescription ? '' : 'wb-empty',
-                                       htmlspecialchars( $hasDescription
-                                               ? $descriptions->getByLanguage( 
$languageCode )->getText()
-                                               : $this->msg( 
'wikibase-description-empty' )->text()
-                                       ),
-                                       '',
-                                       ''
-                               ),
-                               $this->getHtmlForAliases( $aliasGroups, 
$languageCode )
-                       );
-               }
-
-               $html = $this->templateFactory->render( 
'wikibase-entitytermsview',
-                       $this->msg( 'wikibase-terms' )->text(),
-                       $this->templateFactory->render( 
'wikibase-entitytermsforlanguagelistview', $tbody ),
-                       $this->sectionEditLinkGenerator->getHtmlForEditSection(
-                               'SpecialPages',
-                               array(),
-                               'edit',
-                               $this->msg( 'wikibase-edit' ),
-                               $editable
-                       )
-               );
-
-               wfProfileOut( __METHOD__ );
-               return $html;
-       }
-
-       /**
-        * @param AliasGroupList $aliasGroups
-        * @param string $languageCode
-        *
-        * @return string
-        */
-       private function getHtmlForAliases( AliasGroupList $aliasGroups, 
$languageCode ) {
-               if ( !$aliasGroups->hasGroupForLanguage( $languageCode ) ) {
-                       return $this->templateFactory->render( 
'wikibase-aliasesview',
-                               'wb-empty',
-                               wfMessage( 'wikibase-aliases-empty' 
)->escaped(),
-                               '',
-                               ''
-                       );
-               } else {
-                       $aliasesHtml = '';
-                       $aliases = $aliasGroups->getByLanguage( $languageCode 
)->getAliases();
-                       foreach ( $aliases as $alias ) {
-                               $aliasesHtml .= $this->templateFactory->render(
-                                       'wikibase-aliasesview-list-item',
-                                       htmlspecialchars( $alias )
-                               );
-                       }
-
-                       return $this->templateFactory->render( 
'wikibase-aliasesview',
-                               '',
-                               wfMessage( 'wikibase-aliases-label' 
)->escaped(),
-                               $aliasesHtml,
-                               ''
-                       );
-               }
-       }
-}
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index 6464cbd..3f8bfc4 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -156,10 +156,7 @@
                                
'jquery.wikibase.toolbarcontroller.definitions.addtoolbar.referenceview-snakview',
                                
'jquery.wikibase.toolbarcontroller.definitions.addtoolbar.statementview-referenceview',
                                
'jquery.wikibase.toolbarcontroller.definitions.addtoolbar.statementview-snakview',
-                               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.aliasesview',
-                               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.descriptionview',
                                
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.entitytermsview',
-                               
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.labelview',
                                
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.referenceview',
                                
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.sitelinkgroupview',
                                
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.statementview',
diff --git a/repo/resources/templates.php b/repo/resources/templates.php
index a47b1a1..d84b7a1 100644
--- a/repo/resources/templates.php
+++ b/repo/resources/templates.php
@@ -142,18 +142,6 @@
 </div>
 HTML;
 
-       $templates['wikibase-firstHeading'] =
-// add an h1 for displaying the entity's label; the actual firstHeading is 
being hidden by
-// css since the original MediaWiki DOM does not represent a Wikidata entity's 
structure
-// where the combination of label and description is the unique "title" of an 
entity which
-// should not be semantically disconnected by having elements in between, like 
siteSub,
-// contentSub and jump-to-nav
-<<<HTML
-<h1 id="wb-firstHeading-$1" class="wb-firstHeading">
-       <!-- wikibase-labelview -->$2
-</h1>
-HTML;
-
        $templates['wikibase-labelview'] =
 <<<HTML
 <div class="wikibase-labelview $1" dir="auto">
@@ -178,11 +166,8 @@
        $templates['wikibase-aliasesview'] =
 <<<HTML
 <div class="wikibase-aliasesview $1">
-       <div class="wikibase-aliasesview-container">
-               <span class="wikibase-aliasesview-label">$2</span>
-               <ul class="wikibase-aliasesview-list">$3</ul>
-               <!-- wb-toolbar -->$4
-       </div>
+       <ul class="wikibase-aliasesview-list">$2</ul>
+       <!-- wikibase-toolbar -->$3
 </div>
 HTML;
 
@@ -194,39 +179,60 @@
        $templates['wikibase-entitytermsview'] =
 <<<HTML
 <div class="wikibase-entitytermsview">
-       <div class="wikibase-entitytermsview-heading-container">
-               <h2 id="wb-terms" class="wb-section-heading 
wikibase-entitytermsview-heading">$1</h2>
-               <!-- wikibase-toolbar -->$3
+       <div class="wikibase-entitytermsview-heading">
+               <h1 class="wikibase-entitytermsview-heading-label $1"><!-- 
wikibase-entitytermsview-label -->$2</h1>
+               <div class="wikibase-entitytermsview-heading-aliases $3"><!-- 
wikibase-entitytermsview-aliases -->$4</div>
+               <div class="wikibase-entitytermsview-heading-description 
$5">$6</div>
        </div>
-       <!-- wikibase-entitytermsforlanguagelistview -->$2
+       <!-- ? wikibase-toolbar -->$9
+       <div class="wikibase-entitytermsview-entitytermsforlanguagelistview 
$8"><!-- wikibase-entitytermsforlanguagelistview -->$7</div>
 </div>
+HTML;
+
+       $templates['wikibase-entitytermsview-heading-label'] =
+<<<HTML
+$1<span class="wikibase-entitytermsview-heading-label-id">$2</span>
+HTML;
+
+       $templates['wikibase-entitytermsview-aliases'] =
+<<<HTML
+<ul class="wikibase-entitytermsview-aliases"><!-- 
wikibase-entitytermsview-aliases-alias -->$1</ul>
+HTML;
+
+       $templates['wikibase-entitytermsview-aliases-alias'] =
+<<<HTML
+<li class="wikibase-entitytermsview-aliases-alias">$1</li>
 HTML;
 
        $templates['wikibase-entitytermsforlanguagelistview'] =
 <<<HTML
-<table class="wikibase-entitytermsforlanguagelistview">
-       <colgroup>
-               <col class="wikibase-entitytermsforlanguagelistview-language" />
-               <col class="wikibase-entitytermsforlanguagelistview-label 
wikibase-entitytermsforlanguagelistview-description 
wikibase-entitytermsforlanguagelistview-aliases" />
-       </colgroup>
-       <!-- [0,*] wikibase-entitytermsforlanguageview -->$1
-</table>
+<div class="wikibase-entitytermsforlanguagelistview">
+       <div class="wikibase-entitytermsforlanguagelistview-header">
+               <div class="wikibase-entitytermsforlanguagelistview-header-row">
+                       <div 
class="wikibase-entitytermsforlanguagelistview-cell 
wikibase-entitytermsforlanguagelistview-language">$1</div>
+                       <div 
class="wikibase-entitytermsforlanguagelistview-cell 
wikibase-entitytermsforlanguagelistview-label">$2</div>
+                       <div 
class="wikibase-entitytermsforlanguagelistview-cell 
wikibase-entitytermsforlanguagelistview-aliases">$3</div>
+                       <div 
class="wikibase-entitytermsforlanguagelistview-cell 
wikibase-entitytermsforlanguagelistview-description">$4</div>
+               </div>
+       </div>
+       <div class="wikibase-entitytermsforlanguagelistview-listview"><!-- 
[0,*] wikibase-entitytermsforlanguageview -->$5</div>
+</div>
 HTML;
 
        $templates['wikibase-entitytermsforlanguageview'] =
 <<<HTML
-<tbody class="wikibase-entitytermsforlanguageview 
wikibase-entitytermsforlanguageview-$1" >
-       <tr>
-               <td class="wikibase-entitytermsforlanguageview-language" 
rowspan="3"><a href="$2">$3</a></td>
-               <td class="wikibase-entitytermsforlanguageview-label">$4</td>
-       </tr>
-       <tr>
-               <td 
class="wikibase-entitytermsforlanguageview-description">$5</td>
-       </tr>
-       <tr>
-               <td class="wikibase-entitytermsforlanguageview-aliases">$6</td>
-       </tr>
-</tbody>
+<div class="wikibase-entitytermsforlanguageview 
wikibase-entitytermsforlanguageview-$1" >
+       <div class="wikibase-entitytermsforlanguageview-language"><!-- 
wikibase-entitytermsforlanguageview-language -->$2</div>
+       <div class="wikibase-entitytermsforlanguageview-label">$3</div>
+       <div class="wikibase-entitytermsforlanguageview-aliases">$4</div>
+       <div class="wikibase-entitytermsforlanguageview-description">$5</div>
+       <!-- ? wikibase-toolbar -->$6
+</div>
+HTML;
+
+       $templates['wikibase-entitytermsforlanguageview-language'] =
+<<<HTML
+<a href="$1">$2</a>
 HTML;
 
        $templates['wikibase-sitelinkgrouplistview'] =
diff --git a/repo/resources/wikibase.ui.entityViewInit.js 
b/repo/resources/wikibase.ui.entityViewInit.js
index 9cd2f4d..4c5adf5 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -41,10 +41,7 @@
                                'referenceview-snakview'
                        ],
                        edittoolbar: [
-                               'aliasesview',
                                'statementview',
-                               'descriptionview',
-                               'labelview',
                                'entitytermsview',
                                'referenceview',
                                'sitelinkgroupview'
@@ -62,13 +59,10 @@
                        var $target = $( event.target ),
                                gravity = 'sw';
 
-                       if(
-                               $target.data( 'labelview' )
-                               || $target.data( 'descriptionview' )
-                               || $target.data( 'aliasesview' )
-                               || $target.data( 'sitelinkgroupview' )
-                       ) {
+                       if( $target.data( 'sitelinkgroupview' ) ) {
                                gravity = 'nw';
+                       } else if( $target.data( 'entitytermsview' ) ) {
+                               gravity = 'w';
                        }
 
                        showCopyrightTooltip( $entityview, $( event.target ), 
gravity );
@@ -137,14 +131,21 @@
                        ),
                        dataTypeStore: dataTypeStore
                } )
-               .on( 'labelviewchange labelviewafterstopediting', function( 
event ) {
-                       var $labelview = $( event.target ),
-                               labelview = $labelview.data( 'labelview' ),
-                               label = labelview.value().getText();
+               .on( 'entitytermsviewchange entitytermsviewafterstopediting', 
function( event ) {
+                       var $entitytermsview = $( event.target ),
+                               entitytermsview = $entitytermsview.data( 
'entitytermsview' );
 
-                       $( 'title' ).text(
-                               mw.msg( 'pagetitle', label !== '' ? label : 
mw.config.get( 'wgTitle' ) )
-                       );
+                       $.each( entitytermsview.value(), function() {
+                               if( this.language === mw.config.get( 
'wgUserLanguage' ) ) {
+                                       var label = this.label.getText();
+
+                                       $( 'title' ).text(
+                                               mw.msg( 'pagetitle', label !== 
'' ? label : mw.config.get( 'wgTitle' ) )
+                                       );
+
+                                       return false;
+                               }
+                       } );
                } )
                .on( 'entityviewafterstartediting', function() {
                        triggerAnonymousEditWarning( entity.getType() );
diff --git 
a/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php 
b/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
index 60d5269..3ac62bd 100644
--- a/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
+++ b/repo/tests/phpunit/includes/View/EntityViewPlaceholderExpanderTest.php
@@ -127,23 +127,8 @@
                $entityRevisionLookup = $this->getEntityRevisionLookup( $item );
                $expander = $this->newExpander( $this->newUser( false ), 
$entityRevisionLookup, $item->getId() );
 
-               $html = $expander->getHtmlForPlaceholder( 'termbox-toc' );
-               $this->assertInternalType( 'string', $html );
-
                $html = $expander->getHtmlForPlaceholder( 'termbox', 'Q23' );
                $this->assertInternalType( 'string', $html );
-       }
-
-       public function testRenderTermBoxTocEntry() {
-               $item = $this->getItem();
-               $entityRevisionLookup = $this->getEntityRevisionLookup( $item );
-               $expander = $this->newExpander( $this->newUser( false ), 
$entityRevisionLookup, $item->getId() );
-
-               // According to the mock objects, this should generate a term 
box for
-               // 'de' and 'ru', since 'en' is already covered by the 
interface language.
-               $html = $expander->renderTermBoxTocEntry( new ItemId( 'Q23' ) );
-               $this->assertNotNull( $html );
-               $this->assertRegExp( '/#wb-terms/', $html );
        }
 
        public function renderTermBox() {
diff --git a/repo/tests/phpunit/includes/View/EntityViewTest.php 
b/repo/tests/phpunit/includes/View/EntityViewTest.php
index e72a1a6..db0689d 100644
--- a/repo/tests/phpunit/includes/View/EntityViewTest.php
+++ b/repo/tests/phpunit/includes/View/EntityViewTest.php
@@ -67,6 +67,9 @@
        ) {
                $output = $view->getHtml( $entityRevision, $entityInfo, 
$editable );
                $this->assertRegexp( $regexp, $output );
+
+               $entityId = 
$entityRevision->getEntity()->getId()->getSerialization();
+               $this->assertRegExp( '/id="wb-[a-z]+-' . $entityId . '"/', 
$output );
        }
 
        public abstract function provideTestGetHtml();
diff --git a/repo/tests/phpunit/includes/View/FingerprintViewTest.php 
b/repo/tests/phpunit/includes/View/FingerprintViewTest.php
index de4ed25..5567fb7 100644
--- a/repo/tests/phpunit/includes/View/FingerprintViewTest.php
+++ b/repo/tests/phpunit/includes/View/FingerprintViewTest.php
@@ -7,6 +7,7 @@
 use Wikibase\DataModel\Term\Fingerprint;
 use Wikibase\Repo\View\FingerprintView;
 use Wikibase\Repo\View\SectionEditLinkGenerator;
+use Wikibase\Repo\View\TextInjector;
 use Wikibase\Template\TemplateFactory;
 use Wikibase\Template\TemplateRegistry;
 
@@ -32,9 +33,6 @@
                $msgCache->replace( 'Wikibase-label-empty', '<strong 
class="test">No label</strong>' );
                $msgCache->replace( 'Wikibase-description-empty', '<strong 
class="test">No description</strong>' );
                $msgCache->replace( 'Wikibase-aliases-empty', '<strong 
class="test">No aliases</strong>' );
-
-               // Mock for the only other message in the class
-               $msgCache->replace( 'Wikibase-aliases-label', '<strong 
class="test">A.&thinsp;k.&thinsp;a.:</strong>' );
        }
 
        protected function tearDown() {
@@ -71,7 +69,7 @@
        public function testGetHtml_containsTermsAndAliases() {
                $fingerprintView = $this->getFingerprintView();
                $fingerprint = $this->getFingerprint();
-               $html = $fingerprintView->getHtml( $fingerprint );
+               $html = $fingerprintView->getHtml( $fingerprint, null, '', new 
TextInjector() );
 
                $this->assertContains( htmlspecialchars( 
$fingerprint->getLabel( 'en' )->getText() ), $html );
                $this->assertContains( htmlspecialchars( 
$fingerprint->getDescription( 'en' )->getText() ), $html );
@@ -95,12 +93,10 @@
         */
        public function testGetHtml_isEditable( Fingerprint $fingerprint, 
ItemId $entityId, $languageCode ) {
                $fingerprintView = $this->getFingerprintView( $languageCode );
-               $html = $fingerprintView->getHtml( $fingerprint, $entityId );
+               $html = $fingerprintView->getHtml( $fingerprint, $entityId, '', 
new TextInjector() );
                $idString = $entityId->getSerialization();
 
                $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetLabel/' . 
$idString . '/' . $languageCode . '"@', $html );
-               $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetDescription/' 
. $idString . '/' . $languageCode . '"@', $html );
-               $this->assertRegExp( '@<a href="[^"]*\bSpecial:SetAliases/' . 
$idString . '/' . $languageCode . '"@', $html );
        }
 
        /**
@@ -108,7 +104,7 @@
         */
        public function testGetHtml_isNotEditable( Fingerprint $fingerprint, 
ItemId $entityId, $languageCode ) {
                $fingerprintView = $this->getFingerprintView( $languageCode );
-               $html = $fingerprintView->getHtml( $fingerprint, $entityId, 
false );
+               $html = $fingerprintView->getHtml( $fingerprint, $entityId, '', 
new TextInjector(), false );
 
                $this->assertNotContains( '<a ', $html );
        }
@@ -119,7 +115,7 @@
                $fingerprint->setLabel( 'en', '<a href="#">evil html</a>' );
                $fingerprint->setDescription( 'en', '<script>alert( "xss" 
);</script>' );
                $fingerprint->setAliasGroup( 'en', array( '<b>bold</b>', 
'<i>italic</i>' ) );
-               $html = $fingerprintView->getHtml( $fingerprint );
+               $html = $fingerprintView->getHtml( $fingerprint, null, '', new 
TextInjector() );
 
                $this->assertContains( 'evil html', $html, 'make sure it works' 
);
                $this->assertNotContains( 'href="#"', $html );
@@ -151,14 +147,14 @@
         */
        public function testGetHtml_isMarkedAsEmptyValue( Fingerprint 
$fingerprint ) {
                $fingerprintView = $this->getFingerprintView();
-               $html = $fingerprintView->getHtml( $fingerprint );
+               $html = $fingerprintView->getHtml( $fingerprint, null, '', new 
TextInjector() );
 
                $this->assertContains( 'wb-empty', $html );
        }
 
        public function testGetHtml_isNotMarkedAsEmpty() {
                $fingerprintView = $this->getFingerprintView();
-               $html = $fingerprintView->getHtml( $this->getFingerprint() );
+               $html = $fingerprintView->getHtml( $this->getFingerprint(), 
null, '', new TextInjector() );
 
                $this->assertNotContains( 'wb-empty', $html );
        }
@@ -168,32 +164,19 @@
         */
        public function testGetHtml_withEntityId( Fingerprint $fingerprint, 
ItemId $entityId, $languageCode ) {
                $fingerprintView = $this->getFingerprintView( $languageCode );
-               $html = $fingerprintView->getHtml( $fingerprint, $entityId );
+               $html = $fingerprintView->getHtml( $fingerprint, $entityId, '', 
new TextInjector() );
                $idString = $entityId->getSerialization();
 
-               $this->assertNotContains( 'id="wb-firstHeading-new"', $html );
-               $this->assertContains( 'id="wb-firstHeading-' . $idString . 
'"', $html );
                $this->assertContains( '(' . $idString . ')', $html );
                $this->assertContains( '<a ', $html );
        }
 
        public function testGetHtml_withoutEntityId() {
                $fingerprintView = $this->getFingerprintView();
-               $html = $fingerprintView->getHtml( Fingerprint::newEmpty() );
+               $html = $fingerprintView->getHtml( Fingerprint::newEmpty(), 
null, '', new TextInjector() );
 
-               $this->assertContains( 'id="wb-firstHeading-new"', $html );
-               $this->assertNotContains( 'id="wb-firstHeading-Q', $html );
                $this->assertNotContains( '(new)', $html );
                $this->assertNotContains( '<a ', $html );
-       }
-
-       public function testGetHtml_containsAliasesLabel() {
-               $fingerprintView = $this->getFingerprintView();
-               $html = $fingerprintView->getHtml( $this->getFingerprint() );
-
-               $this->assertContains( 'A.&thinsp;k.&thinsp;a.:', $html );
-               $this->assertContains( 'strong', $html, 'make sure the setUp 
works' );
-               $this->assertNotContains( '<strong class="test">', $html );
        }
 
        /**
@@ -201,7 +184,7 @@
         */
        public function testGetHtml_containsIsEmptyPlaceholders( Fingerprint 
$fingerprint, $message ) {
                $fingerprintView = $this->getFingerprintView();
-               $html = $fingerprintView->getHtml( $fingerprint );
+               $html = $fingerprintView->getHtml( $fingerprint, null, '', new 
TextInjector() );
 
                $this->assertContains( $message, $html );
                $this->assertContains( 'strong', $html, 'make sure the setUp 
works' );
diff --git a/repo/tests/phpunit/includes/View/TermBoxViewTest.php 
b/repo/tests/phpunit/includes/View/TermBoxViewTest.php
deleted file mode 100644
index 0ea9e1c..0000000
--- a/repo/tests/phpunit/includes/View/TermBoxViewTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Wikibase\Test;
-
-use Language;
-use Title;
-use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\Entity\ItemId;
-use Wikibase\Repo\View\TermBoxView;
-use Wikibase\Template\TemplateFactory;
-use Wikibase\Template\TemplateRegistry;
-
-/**
- * @covers Wikibase\Repo\View\TermBoxView
- *
- * @group Wikibase
- * @group WikibaseRepo
- * @group EntityView
- *
- * @licence GNU GPL v2+
- * @author Daniel Kinzler
- */
-class TermBoxViewTest extends \PHPUnit_Framework_TestCase {
-
-       public function testRenderTermBox() {
-               $language = Language::factory( 'qqx' ); // so we can look for 
message keys in the output
-               $templateFactory = new TemplateFactory( 
TemplateRegistry::getDefaultInstance() );
-               $view = new TermBoxView( $templateFactory, $language );
-
-               $title = $this->getMockBuilder( 'Title' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $entity = Item::newEmpty();
-               $entity->setId( new ItemId( 'Q23' ) );
-
-               $fingerprint = $entity->getFingerprint();
-               $fingerprint->setLabel( 'en', 'Moskow' );
-               $fingerprint->setLabel( 'de', 'Moskau' );
-
-               $fingerprint->setDescription( 'de', 'Hauptstadt Russlands' );
-
-               $entity->setFingerprint( $fingerprint );
-
-               $languages = array( 'de', 'ru' );
-
-               $html = $view->renderTermBox( $title, 
$entity->getFingerprint(), $languages );
-
-               $this->assertNotRegExp( '/Moskow/', $html, 'unexpected English 
label, should not be there' );
-
-               $this->assertRegExp( '/Moskau/', $html, 'expected German label' 
);
-               $this->assertRegExp( '/Hauptstadt/', $html, 'expected German 
description' );
-
-               $this->assertRegExp( '/wikibase-label-empty/', $html, 'expected 
label-empty message for "ru"' );
-               $this->assertRegExp( '!<h2 
id="wb-terms".*?>\(wikibase-terms\)</h2>!', $html, 'expected h2 header' );
-       }
-
-}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I21c7d4a466b8da7006b1a9215f85b7b5924ba71e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@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