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 < mediaw...@snater.com > */ - ( 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 < mediaw...@snater.com > */ - -( 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 <henning.sna...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits