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 < [email protected] >
*/
-
-.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 < [email protected] >
*/
.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 < [email protected] >
*/
-.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 < [email protected] >
*/
-/* 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 < [email protected] >
- */
-$.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 < [email protected] >
- */
-$.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 < [email protected] >
- */
-$.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* < [email protected] >
+ * @author H. Snater < [email protected] >
*/
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. k. 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. k. 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 <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits