Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/171860
Change subject: Use wb.datamodel.Term in labelview
......................................................................
Use wb.datamodel.Term in labelview
Change-Id: Idd48d792d84b84c4a5f5bf82e5c2f6943b910b0c
---
M lib/resources/entityChangers/LabelsChanger.js
M lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
M lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
M lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
M lib/resources/jquery.wikibase/resources.php
M lib/tests/qunit/entityChangers/AliasesChanger.tests.js
M lib/tests/qunit/entityChangers/LabelsChanger.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
M lib/tests/qunit/jquery.wikibase/resources.php
M repo/resources/wikibase.ui.entityViewInit.js
16 files changed, 136 insertions(+), 180 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/60/171860/1
diff --git a/lib/resources/entityChangers/LabelsChanger.js
b/lib/resources/entityChangers/LabelsChanger.js
index 311c64e..8da2865 100644
--- a/lib/resources/entityChangers/LabelsChanger.js
+++ b/lib/resources/entityChangers/LabelsChanger.js
@@ -34,22 +34,22 @@
_api: null,
/**
- * @param {string} label
- * @param {string} language
+ * @param {wikibase.datamodel.Term} label
* @return {jQuery.Promise}
* Resolved parameters:
* - {string} The saved label
* Rejected parameters:
* - {wikibase.RepoApiError}
*/
- setLabel: function( label, language ) {
+ setLabel: function( label ) {
var self = this,
- deferred = $.Deferred();
+ deferred = $.Deferred(),
+ language = label.getLanguageCode();
this._api.setLabel(
this._entity.getId(),
this._revisionStore.getLabelRevision(),
- label,
+ label.getText(),
language
)
.done( function( result ) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
index b18fb4e..5b63b7c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.aliasesview.js
@@ -52,7 +52,7 @@
*/
_create: function() {
if(
- !( this.options.value instanceof
wikibase.datamodel.MultiTerm )
+ !( this.options.value instanceof wb.datamodel.MultiTerm
)
|| !this.options.aliasesChanger
) {
throw new Error( 'Required option(s) missing' );
@@ -63,8 +63,7 @@
this.element.removeClass( 'wb-empty' );
this.$label.text( mw.msg( 'wikibase-aliases-label' ) );
- var multiTerm = this.options.value;
- if( multiTerm && this.$list.children( 'li' ).length !==
multiTerm.getTexts().length ) {
+ if( this.$list.children( 'li' ).length !==
this.options.value.getTexts().length ) {
this._draw();
}
},
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
index 07bc577..180a651 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityview.js
@@ -125,17 +125,13 @@
).appendTo( this.element );
}
+ // FIXME: entity object should not contain fallback strings
var label = this.options.value.getFingerprint().getLabelFor(
mw.config.get( 'wgUserLanguage' )
- );
+ ) || new wb.datamodel.Term( mw.config.get( 'wgUserLanguage' ),
'' );
+
this.$label.labelview( {
- value: {
- language: mw.config.get( 'wgUserLanguage' ),
- label: this.$label.hasClass( 'wb-empty' )
- ? null
- // FIXME: entity object should not
contain fallback strings
- : ( label && label.getText() )
- },
+ value: label,
helpMessage: mw.msg(
'wikibase-description-input-help-message',
wb.getLanguageNameByCode( mw.config.get(
'wgUserLanguage' ) )
@@ -216,11 +212,12 @@
for( var i = 0; i < this.options.languages.length; i++ ) {
nextValue = {
language: this.options.languages[i],
- label: fingerprint.getLabelFor(
this.options.languages[i] ),
+ label: fingerprint.getLabelFor(
this.options.languages[i] )
+ || new wb.datamodel.Term(
this.options.languages[i], '' ),
description: fingerprint.getDescriptionFor(
this.options.languages[i] ),
aliases: fingerprint.getAliasesFor(
this.options.languages[i] )
+ || new wb.datamodel.MultiTerm(
this.options.languages[i], [] )
};
- nextValue.label = nextValue.label ?
nextValue.label.getText() : null;
nextValue.description = nextValue.description ?
nextValue.description.getText() : null;
value.push( nextValue );
}
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
index 70f0e5b..f8ad851 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintgroupview.js
@@ -17,7 +17,7 @@
* Structure: [
* {
* language: <{string]>,
- * label: <{string|null}>,
+ * label: <{wikibase.datamodel.Term}>,
* description: <{string|null}>
* aliases: <{wikibase.datamodel.MultiTerm}>
* }[, ...]
diff --git
a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
index 2a94a50..6971644 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintlistview.js
@@ -17,7 +17,7 @@
* Structure: [
* {
* language: <{string]>,
- * label: <{string|null}>,
+ * label: <{wikibase.datamodel.Term}>,
* description: <{string|null}>,
* aliases: <{wikibase.datamodel.MultiTerm}>
* }[, ...]
@@ -186,7 +186,7 @@
for( var i = 0; i < currentValue.length; i++ ) {
if(
currentValue[i].language !==
this.options.value[i].language
- || currentValue[i].label !==
this.options.value[i].label
+ || !currentValue[i].label.equals(
this.options.value[i].label )
|| currentValue[i].description !==
this.options.value[i].description
|| !currentValue[i].aliases.equals(
this.options.value[i].aliases )
) {
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
index f7823b4..9beb6a6 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.fingerprintview.js
@@ -16,7 +16,7 @@
* Object representing the widget's value.
* Structure: {
* language: <{string}>,
- * label: <{string|null}>,
+ * label: <{wikibase.datamodel.Term}>,
* description: <{string|null>,
* aliases: <{wikibase.datamodel.MultiTerm}>
* }
@@ -194,13 +194,11 @@
if( widgetName === 'aliasesview' ) {
options.aliasesChanger =
self.options.entityChangersFactory.getAliasesChanger();
- options.value = self.options.value.aliases ||
new wb.datamodel.MultiTerm(
- self.options.value.language,
- []
- );
+ options.value = self.options.value.aliases;
} else if ( widgetName === 'descriptionview' ) {
options.descriptionsChanger =
self.options.entityChangersFactory.getDescriptionsChanger();
} else if ( widgetName === 'labelview' ) {
+ options.value = self.options.value.label;
options.labelsChanger =
self.options.entityChangersFactory.getLabelsChanger();
options.entityId = self.options.entityId;
}
@@ -355,7 +353,7 @@
return {
language: this.options.value.language,
- label: this.$labelview.data( 'labelview'
).value().label,
+ label: this.$labelview.data( 'labelview' ).value(),
description: this.$descriptionview.data(
'descriptionview' ).value().description,
aliases: this.$aliasesview.data( 'aliasesview' ).value()
};
@@ -374,10 +372,7 @@
throw new Error( 'Cannot alter language' );
}
- this.$labelview.data( 'labelview' ).option( 'value', {
- language: value.language,
- label: value.label
- } );
+ this.$labelview.data( 'labelview' ).option( 'value',
value.label );
this.$descriptionview.data( 'descriptionview' ).option(
'value', {
language: value.language,
@@ -412,15 +407,15 @@
}
if( !value.label ) {
- value.label = null;
+ throw new Error( 'label needs to be a wb.datamodel.Term
instance' );
}
if( !value.description ) {
value.description = null;
}
- if( !( value.aliases instanceof wb.datamodel.MultiTerm ) ) {
- value.aliases = new wb.datamodel.MultiTerm(
value.language, [] );
+ if( !value.aliases ) {
+ throw new Error( 'aliases need to be a
wb.datamodel.MultiTerm instance' );
}
return value;
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
index 0e4825f..ec8a734 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
@@ -12,9 +12,7 @@
* @since 0.5
* @extends jQuery.ui.TemplatedWidget
*
- * @option {Object|null} value
- * Object representing the widget's value.
- * Structure: { language: <{string}>, label: <{string|null}> }
+ * @option {wikibase.datamodel.Term} value
*
* @option {string} [helpMessage]
* Default: mw.msg( 'wikibase-label-input-help-message' )
@@ -64,14 +62,15 @@
* @throws {Error} if required parameters are not specified properly.
*/
_create: function() {
- if( !this.options.entityId || !this.options.labelsChanger ) {
+ if(
+ !( this.options.value instanceof wb.datamodel.Term )
+ || !this.options.entityId
+ || !this.options.labelsChanger
+ ) {
throw new Error( 'Required parameter(s) missing' );
}
- this.options.value = this._checkValue( this.options.value );
-
- var self = this,
- value = this.options.value;
+ var self = this;
this.element.attr( 'id', 'wb-firstHeading-' +
this.options.entityId );
@@ -94,7 +93,7 @@
PARENT.prototype._create.call( this );
- if( value && value.label !== '' && this.$text.text() === '' ) {
+ if( this.options.value.getText() !== '' && this.$text.text()
=== '' ) {
this._draw();
}
},
@@ -120,32 +119,36 @@
* Main draw routine.
*/
_draw: function() {
- if( this.options.showEntityId && !( this._isInEditMode &&
this.options.value.label ) ) {
+ var self = this,
+ languageCode = this.options.value.getLanguageCode(),
+ labelText = this.options.value.getText();
+
+ if( labelText === '' ) {
+ labelText = null;
+ }
+
+ if( this.options.showEntityId && !( this._isInEditMode &&
labelText ) ) {
this.$entityId.text( mw.msg( 'parentheses',
this.options.entityId ) );
} else {
this.$entityId.empty();
}
- this.element[this.options.value.label ? 'removeClass' :
'addClass']( 'wb-empty' );
+ this.element[labelText ? 'removeClass' : 'addClass'](
'wb-empty' );
if( !this._isInEditMode ) {
- this.$text.text( this.options.value.label || mw.msg(
'wikibase-label-empty' ) );
+ this.$text.text( labelText || mw.msg(
'wikibase-label-empty' ) );
return;
}
- var self = this;
-
- var langCode = this.options.value.language;
-
var dir = ( $.uls && $.uls.data ) ?
- $.uls.data.getDir( langCode ) :
+ $.uls.data.getDir( languageCode ) :
$( 'html' ).prop( 'dir' );
var $input = $( '<input />', {
// TODO: Inject correct placeholder via options
placeholder: mw.msg(
'wikibase-label-edit-placeholder-language-aware',
- wb.getNativeLanguageNameByCode( langCode )
+ wb.getNativeLanguageNameByCode( languageCode )
),
dir: dir
} )
@@ -153,8 +156,8 @@
self._trigger( 'change' );
} );
- if( this.options.value.label ) {
- $input.val( this.options.value.label );
+ if( labelText ) {
+ $input.val( labelText );
}
this.$text.empty().append( $input );
@@ -208,10 +211,7 @@
this._trigger( 'stopediting', null, [dropValue] );
- this.options.labelsChanger.setLabel(
- this.value().label || '',
- this.options.value.language
- )
+ this.options.labelsChanger.setLabel( this.value() )
.done( function( label ) {
self.enable();
self._afterStopEditing( dropValue );
@@ -237,7 +237,7 @@
_afterStopEditing: function( dropValue ) {
if( !dropValue ) {
this.options.value = this.value();
- } else if( !this.options.value.label ) {
+ } else if( this.options.value.getText() === '' ) {
this.$text.children( 'input' ).val( '' );
}
@@ -261,11 +261,7 @@
* @return {boolean}
*/
isInitialValue: function() {
- var initialValue = this.options.value,
- currentValue = this.value();
-
- return currentValue.language === initialValue.language
- && currentValue.label === initialValue.label;
+ return this.value().equals( this.options.value );
},
/**
@@ -291,8 +287,8 @@
* @see jQuery.ui.TemplatedWidget._setOption
*/
_setOption: function( key, value ) {
- if( key === 'value' ) {
- value = this._checkValue( value );
+ if( key === 'value' && !( value instanceof wb.datamodel.Term )
) {
+ throw new Error( 'Value needs to be a wb.datamodel.Term
instance' );
}
var response = PARENT.prototype._setOption.call( this, key,
value );
@@ -305,30 +301,10 @@
},
/**
- * @param {*} value
- * @return {Object}
- *
- * @throws {Error} if value is not defined properly.
- */
- _checkValue: function( value ) {
- if( !$.isPlainObject( value ) ) {
- throw new Error( 'Value needs to be an object' );
- } else if( !value.language ) {
- throw new Error( 'Value needs language to be specified'
);
- }
-
- if( !value.label ) {
- value.label = null;
- }
-
- return value;
- },
-
- /**
* Gets/Sets the widget's value.
*
- * @param {Object} [value]
- * @return {Object|undefined}
+ * @param {wikibase.datamodel.Term} [value]
+ * @return {wikibase.datamodel.Term|undefined}
*/
value: function( value ) {
if( value !== undefined ) {
@@ -340,12 +316,10 @@
return this.option( 'value' );
}
- var text = $.trim( this.$text.children( 'input' ).val() );
-
- return {
- language: this.options.value.language,
- label: text !== '' ? text : null
- };
+ return new wb.datamodel.Term(
+ this.options.value.getLanguageCode(),
+ $.trim( this.$text.children( 'input' ).val() )
+ );
},
/**
@@ -393,7 +367,7 @@
}
} );
- if( !labelview.value().label ) {
+ if( labelview.value().getText() === '' ) {
labelview.toEditMode();
$labelview.data( 'edittoolbar' ).toEditMode();
$labelview.data( 'edittoolbar' ).disable();
@@ -403,7 +377,7 @@
.off( 'labelviewafterstopediting.edittoolbar' )
.on( 'labelviewafterstopediting.edittoolbar', function(
event ) {
var edittoolbar = $( event.target ).data(
'edittoolbar' );
- if( labelview.value().label ) {
+ if( labelview.value().getText() !== '' ) {
edittoolbar.toNonEditMode();
edittoolbar.enable();
edittoolbar.toggleActionMessage(
function() {
@@ -426,8 +400,8 @@
btnSave = edittoolbar.getButton( 'save' ),
enableSave = labelview.isValid() &&
!labelview.isInitialValue(),
btnCancel = edittoolbar.getButton( 'cancel' ),
- currentLabel = labelview.value().label,
- disableCancel = !currentLabel &&
labelview.isInitialValue();
+ currentLabel = labelview.value().getText(),
+ disableCancel = currentLabel === '' &&
labelview.isInitialValue();
btnSave[enableSave ? 'enable' : 'disable']();
btnCancel[disableCancel ? 'disable' : 'enable']();
@@ -435,7 +409,7 @@
if( event.type === 'labelviewchange' ) {
if( !labelview.isInitialValue() ) {
labelview.startEditing();
- } else if( labelview.isInitialValue() &&
!labelview.value().label ) {
+ } else if( labelview.isInitialValue() &&
labelview.value().getText() === '' ) {
labelview.cancelEditing();
}
}
@@ -446,15 +420,15 @@
edittoolbar = $labelview.data( 'edittoolbar' ),
btnSave = edittoolbar.getButton( 'save' ),
enable = labelview.isValid() &&
!labelview.isInitialValue(),
- currentLabel = labelview.value().label;
+ currentLabel = labelview.value().getText();
btnSave[enable ? 'enable' : 'disable']();
- if( labelview.option( 'disabled' ) || currentLabel ) {
+ if( labelview.option( 'disabled' ) || currentLabel !==
'' ) {
return;
}
- if( !currentLabel ) {
+ if( currentLabel === '' ) {
edittoolbar.disable();
}
},
diff --git a/lib/resources/jquery.wikibase/resources.php
b/lib/resources/jquery.wikibase/resources.php
index 7779999..2810e9a 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -180,33 +180,12 @@
'jquery.wikibase.statementview',
'wikibase',
'wikibase.datamodel.MultiTerm',
+ 'wikibase.datamodel.Term',
'wikibase.templates',
),
'messages' => array(
'wikibase-fingerprintgroupview-input-help-message',
'wikibase-terms',
- ),
- ),
-
- 'jquery.wikibase.labelview' => $moduleTemplate + array(
- 'scripts' => array(
- 'jquery.wikibase.labelview.js'
- ),
- 'styles' => array(
- 'themes/default/jquery.wikibase.labelview.css',
- ),
- 'dependencies' => array(
- 'jquery.ui.TemplatedWidget',
- 'jquery.wikibase.edittoolbar',
- 'jquery.wikibase.toolbarcontroller',
- 'wikibase',
- ),
- 'messages' => array(
- 'parentheses',
- 'wikibase-label-edit-placeholder',
-
'wikibase-label-edit-placeholder-language-aware',
- 'wikibase-label-empty',
- 'wikibase-label-input-help-message',
),
),
@@ -258,13 +237,35 @@
'jquery.wikibase.toolbarcontroller',
'mediawiki.Title',
'wikibase',
- 'wikibase.datamodel.MultiTerm',
),
'messages' => array(
'wikibase-fingerprintview-input-help-message',
),
),
+ 'jquery.wikibase.labelview' => $moduleTemplate + array(
+ 'scripts' => array(
+ 'jquery.wikibase.labelview.js'
+ ),
+ 'styles' => array(
+ 'themes/default/jquery.wikibase.labelview.css',
+ ),
+ 'dependencies' => array(
+ 'jquery.ui.TemplatedWidget',
+ 'jquery.wikibase.edittoolbar',
+ 'jquery.wikibase.toolbarcontroller',
+ 'wikibase',
+ 'wikibase.datamodel.Term',
+ ),
+ 'messages' => array(
+ 'parentheses',
+ 'wikibase-label-edit-placeholder',
+
'wikibase-label-edit-placeholder-language-aware',
+ 'wikibase-label-empty',
+ 'wikibase-label-input-help-message',
+ ),
+ ),
+
'jquery.wikibase.listview' => $moduleTemplate + array(
'scripts' => array(
'jquery.wikibase.listview.js',
diff --git a/lib/tests/qunit/entityChangers/AliasesChanger.tests.js
b/lib/tests/qunit/entityChangers/AliasesChanger.tests.js
index 7622899..37a6799 100644
--- a/lib/tests/qunit/entityChangers/AliasesChanger.tests.js
+++ b/lib/tests/qunit/entityChangers/AliasesChanger.tests.js
@@ -33,7 +33,7 @@
new wb.datamodel.Item( 'Q1' )
);
- aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'langauge', [] ) );
+ aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'language', [] ) );
assert.ok( api.setAliases.calledOnce );
} );
@@ -57,7 +57,7 @@
QUnit.stop();
- aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'langauge', [] ) )
+ aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'language', [] ) )
.done( function( savedAliases ) {
QUnit.start();
assert.ok( true, 'setAliases succeeded' );
@@ -86,7 +86,7 @@
QUnit.stop();
- aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'langauge', [] ) )
+ aliasesChanger.setAliases( new wb.datamodel.MultiTerm(
'language', [] ) )
.done( function( savedAliases ) {
assert.ok( false, 'setAliases succeeded' );
} )
diff --git a/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
b/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
index eca8024..8484f0d 100644
--- a/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
+++ b/lib/tests/qunit/entityChangers/LabelsChanger.tests.js
@@ -25,7 +25,7 @@
var api = {
setLabel: sinon.spy( function() {
return $.Deferred().promise();
- } ),
+ } )
};
var labelsChanger = new SUBJECT(
api,
@@ -33,7 +33,7 @@
new wb.datamodel.Item( 'Q1' )
);
- labelsChanger.setLabel( 'label', 'language' );
+ labelsChanger.setLabel( new wb.datamodel.Term( 'language',
'label' ) );
assert.ok( api.setLabel.calledOnce );
} );
@@ -51,7 +51,7 @@
}
}
} ).promise();
- } ),
+ } )
};
var labelsChanger = new SUBJECT(
api,
@@ -61,7 +61,7 @@
QUnit.stop();
- labelsChanger.setLabel( 'label', 'language' )
+ labelsChanger.setLabel( new wb.datamodel.Term( 'language',
'label' ) )
.done( function( savedLabel ) {
QUnit.start();
assert.equal( savedLabel, 'label' );
@@ -75,7 +75,7 @@
var api = {
setLabel: sinon.spy( function() {
return $.Deferred().reject( 'errorCode', {
error: { code: 'errorCode' } } ).promise();
- } ),
+ } )
};
var labelsChanger = new SUBJECT(
api,
@@ -85,7 +85,7 @@
QUnit.stop();
- labelsChanger.setLabel( 'label', 'language' )
+ labelsChanger.setLabel( new wb.datamodel.Term( 'language',
'label' ) )
.done( function( savedLabel ) {
assert.ok( false, 'setLabel should have failed' );
} )
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
index d9b2f0f..485fabd 100644
---
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
+++
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintgroupview.tests.js
@@ -14,12 +14,12 @@
value: [
{
language: 'de',
- label: 'de-label',
+ label: new wb.datamodel.Term( 'de', 'de-label'
),
description: 'de-description',
aliases: new wb.datamodel.MultiTerm( 'de', [] )
}, {
language: 'en',
- label: 'en-label',
+ label: new wb.datamodel.Term( 'en', 'en-label'
),
description: 'en-description',
aliases: new wb.datamodel.MultiTerm( 'en', [] )
}
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
index 4aab2d0..0a25d27 100644
---
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
+++
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintlistview.tests.js
@@ -20,12 +20,12 @@
value: [
{
language: 'de',
- label: 'de-label',
+ label: new wb.datamodel.Term( 'de', 'de-label'
),
description: 'de-description',
aliases: new wb.datamodel.MultiTerm( 'de', [] )
}, {
language: 'en',
- label: 'en-label',
+ label: new wb.datamodel.Term( 'en', 'en-label'
),
description: 'en-description',
aliases: new wb.datamodel.MultiTerm( 'en', [] )
}
@@ -90,7 +90,7 @@
var $item = $fingerprintlistview.data( 'listview' ).addItem( {
language: 'fa',
- label: 'fa-label',
+ label: new wb.datamodel.Term( 'fa', 'fa-label' ),
description: 'fa-description',
aliases: new wb.datamodel.MultiTerm( 'fa', [] )
} );
diff --git
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
index 6922132..0976a7b 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.fingerprintview.tests.js
@@ -2,7 +2,6 @@
* @licence GNU GPL v2+
* @author H. Snater < [email protected] >
*/
-
( function( $, wb, QUnit ) {
'use strict';
@@ -29,7 +28,7 @@
},
value: {
language: 'en',
- label: 'test label',
+ label: new wb.datamodel.Term( 'en', 'test label' ),
description: 'test description',
aliases: new wb.datamodel.MultiTerm( 'en', ['alias1',
'alias2'] )
}
@@ -247,6 +246,7 @@
QUnit.test( 'value()', function( assert ) {
var $fingerprintview = createFingerprintview(),
fingerprintview = $fingerprintview.data( 'fingerprintview' ),
+ label = new wb.datamodel.Term( 'en', 'changed label' ),
aliases = new wb.datamodel.MultiTerm( 'en', ['alias1',
'alias2'] );
assert.throws(
@@ -258,21 +258,14 @@
fingerprintview.value( {
language: 'en',
- label: 'changed label',
+ label: label,
description: 'test description',
aliases: aliases
} );
assert.ok(
- fingerprintview.value().label,
- 'changed label',
+ fingerprintview.value().label.equals( label ),
'Set new label.'
- );
-
- assert.equal(
- fingerprintview.value().language,
- 'en',
- 'Did not change language.'
);
assert.equal(
@@ -281,16 +274,17 @@
'Did not change description.'
);
+ label = new wb.datamodel.Term( 'en', 'test label' );
+
fingerprintview.value( {
language: 'en',
- label: 'test label',
+ label: label,
description: null,
aliases: aliases
} );
- assert.equal(
- fingerprintview.value().label,
- 'test label',
+ assert.ok(
+ fingerprintview.value().label.equals( label ),
'Reset label.'
);
@@ -304,7 +298,7 @@
fingerprintview.value( {
language: 'en',
- label: 'test label',
+ label: label,
description: null,
aliases: aliases
} );
@@ -318,7 +312,7 @@
fingerprintview.value( {
language: 'en',
- label: 'test label',
+ label: label,
description: null,
aliases: aliases
} );
@@ -332,7 +326,7 @@
function() {
fingerprintview.value( {
language: 'de',
- label: 'test label',
+ label: label,
description: null,
aliases: aliases
} );
diff --git a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
index c153a7b..455641f 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.labelview.tests.js
@@ -2,8 +2,7 @@
* @licence GNU GPL v2+
* @author H. Snater < [email protected] >
*/
-
-( function( $, QUnit ) {
+( function( $, wb, QUnit ) {
'use strict';
/**
@@ -15,10 +14,7 @@
options = $.extend( {
entityId: 'i am an EntityId',
labelsChanger: 'i am a LabelsChanger',
- value: {
- language: 'en',
- label: 'test label'
- }
+ value: new wb.datamodel.Term( 'en', 'test label' )
}, options || {} );
$node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -160,36 +156,33 @@
QUnit.test( 'value()', function( assert ) {
var $labelview = createLabelview(),
- labelview = $labelview.data( 'labelview' );
+ labelview = $labelview.data( 'labelview' ),
+ newValue = null;
assert.throws(
function() {
- labelview.value( null );
+ labelview.value( newValue );
},
'Trying to set no value fails.'
);
- labelview.value( {
- language: 'de',
- label: 'changed label'
- } );
+ newValue = new wb.datamodel.Term( 'de', 'changed label' );
+
+ labelview.value( newValue );
assert.ok(
- labelview.value().language === 'de'
- && labelview.value().label === 'changed label',
+ labelview.value().equals( newValue ),
'Set new value.'
);
- labelview.value( {
- language: 'en',
- label: null
- } );
+ newValue = new wb.datamodel.Term( 'en', '' );
+
+ labelview.value( newValue );
assert.ok(
- labelview.value().language === 'en'
- && labelview.value().label === null,
+ labelview.value().equals( newValue ),
'Set another value.'
);
} );
-}( jQuery, QUnit ) );
+}( jQuery, wikibase, QUnit ) );
diff --git a/lib/tests/qunit/jquery.wikibase/resources.php
b/lib/tests/qunit/jquery.wikibase/resources.php
index 81591ef..7889923 100644
--- a/lib/tests/qunit/jquery.wikibase/resources.php
+++ b/lib/tests/qunit/jquery.wikibase/resources.php
@@ -110,6 +110,7 @@
'dependencies' => array(
'jquery.wikibase.fingerprintgroupview',
'wikibase.datamodel.MultiTerm',
+ 'wikibase.datamodel.Term',
),
),
@@ -120,6 +121,7 @@
'dependencies' => array(
'jquery.wikibase.fingerprintlistview',
'wikibase.datamodel.MultiTerm',
+ 'wikibase.datamodel.Term',
),
),
@@ -138,6 +140,7 @@
),
'dependencies' => array(
'jquery.wikibase.labelview',
+ 'wikibase.datamodel.Term',
),
),
diff --git a/repo/resources/wikibase.ui.entityViewInit.js
b/repo/resources/wikibase.ui.entityViewInit.js
index 89aa5d2..5a9159c 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -138,10 +138,10 @@
.on( 'labelviewchange labelviewafterstopediting', function(
event ) {
var $labelview = $( event.target ),
labelview = $labelview.data( 'labelview' ),
- label = labelview.value().label;
+ label = labelview.value().getText();
$( 'title' ).text(
- mw.msg( 'pagetitle', label && label !== '' ?
label : mw.config.get( 'wgTitle' ) )
+ mw.msg( 'pagetitle', label !== '' ? label :
mw.config.get( 'wgTitle' ) )
);
} )
.on( 'entityviewafterstartediting', function() {
--
To view, visit https://gerrit.wikimedia.org/r/171860
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idd48d792d84b84c4a5f5bf82e5c2f6943b910b0c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits