jenkins-bot has submitted this change and it was merged.
Change subject: Switch entitytermsview to ControllerViewFactory
......................................................................
Switch entitytermsview to ControllerViewFactory
Bug: T127056
Change-Id: Ib2cb19f786320743a184a913b68460e4ef38d796
---
M repo/resources/Resources.php
M repo/resources/wikibase.ui.entityViewInit.js
M view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
D
view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
M view/resources/jquery/wikibase/toolbar/controller/resources.php
M view/resources/wikibase/view/ControllerViewFactory.js
M view/resources/wikibase/view/ViewFactory.js
M view/tests/qunit/jquery/wikibase/jquery.wikibase.entitytermsview.tests.js
M view/tests/qunit/wikibase/view/ViewFactory.tests.js
9 files changed, 73 insertions(+), 192 deletions(-)
Approvals:
Jonas Kress (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index 4aef9be..05ca96d 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -84,7 +84,6 @@
'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.entitytermsview',
'jquery.wikibase.toolbarcontroller.definitions.removetoolbar.referenceview',
'jquery.wikibase.toolbarcontroller.definitions.removetoolbar.referenceview-snakview',
'jquery.wikibase.toolbarcontroller.definitions.removetoolbar.sitelinkgroupview-sitelinkview',
diff --git a/repo/resources/wikibase.ui.entityViewInit.js
b/repo/resources/wikibase.ui.entityViewInit.js
index 03e99b0..872b4df 100644
--- a/repo/resources/wikibase.ui.entityViewInit.js
+++ b/repo/resources/wikibase.ui.entityViewInit.js
@@ -23,7 +23,6 @@
'referenceview-snakview'
],
edittoolbar: [
- 'entitytermsview'
],
removetoolbar: [
'referenceview',
@@ -113,7 +112,6 @@
entityChangersFactory,
contentLanguages,
dataTypeStore,
- entityChangersFactory,
new
wb.entityIdFormatter.CachingEntityIdHtmlFormatter(
new
wb.entityIdFormatter.DataValueBasedEntityIdHtmlFormatter( entityIdParser,
htmlDataValueEntityIdFormatter )
),
@@ -328,7 +326,7 @@
*/
function attachCopyrightTooltip( $entityview ) {
$entityview.on(
- 'edittoolbarafterstartediting
sitelinkgroupviewafterstartediting statementviewafterstartediting',
+ 'entitytermsafterstartediting
sitelinkgroupviewafterstartediting statementviewafterstartediting',
function( event ) {
var $target = $( event.target ),
gravity = 'sw';
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
index 987221e..e8c2bf4 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
@@ -17,8 +17,6 @@
* @option {string[]} userLanguages
* A list of languages for which terms should be displayed initially.
*
- * @option {wikibase.entityChangers.EntityChangersFactory}
entityChangersFactory
- *
* @option {string} [helpMessage]
* Default: 'Edit label, description and aliases per
language.'
*
@@ -70,7 +68,6 @@
},
value: null,
userLanguages: [],
- entityChangersFactory: null,
helpMessage: 'Edit label, description and aliases per language.'
},
@@ -95,7 +92,6 @@
_create: function() {
if ( !( this.options.value instanceof wb.datamodel.Fingerprint )
|| !$.isArray( this.options.userLanguages )
- || !this.options.entityChangersFactory
) {
throw new Error( 'Required option(s) missing' );
}
@@ -146,8 +142,6 @@
}
}
);
-
- this._entityTermsChanger =
this.options.entityChangersFactory.getEntityTermsChanger();
this.draw();
},
@@ -340,8 +334,7 @@
)
.entitytermsforlanguagelistview( {
value: this.options.value,
- userLanguages: this.options.userLanguages,
- entityChangersFactory:
this.options.entityChangersFactory
+ userLanguages: this.options.userLanguages
} );
this.$entitytermsforlanguagelistview.data(
'entitytermsforlanguagelistview' )
@@ -378,8 +371,11 @@
/**
* @inheritdoc
*/
- _save: function() {
- return this._entityTermsChanger.save( this.value(),
this.options.value );
+ stopEditing: function( dropValue ) {
+ var deferred = $.Deferred();
+ this._trigger( 'stopediting', null, [dropValue] );
+ this._afterStopEditing( dropValue );
+ return deferred.resolve( dropValue ).promise();
},
/**
diff --git
a/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
b/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
deleted file mode 100644
index 2796225..0000000
---
a/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
+++ /dev/null
@@ -1,124 +0,0 @@
-( function( $, mw ) {
- 'use strict';
-
-/**
- * @ignore
- *
- * @license GPL-2.0+
- * @author H. Snater < [email protected] >
- */
-$.wikibase.toolbarcontroller.definition( 'edittoolbar', {
- id: 'entitytermsview',
- selector: ':' + $.wikibase.entitytermsview.prototype.namespace
- + '-' + $.wikibase.entitytermsview.prototype.widgetName,
- events: {
- entitytermsviewcreate: function( event, toolbarcontroller ) {
- var $entitytermsview = $( event.target ),
- entitytermsview = $entitytermsview.data(
'entitytermsview' ),
- $container = $entitytermsview.children(
'.wikibase-toolbar-container' );
-
- if ( !$container.length ) {
- $container = $( '<div/>' ).appendTo( $container
);
- }
-
- $entitytermsview.edittoolbar( {
- $container: $container,
- interactionWidget: entitytermsview
- } );
-
- $entitytermsview.data( 'edittoolbar' ).option(
'$container' )
- .sticknode( {
- $container:
entitytermsview.$entitytermsforlanguagelistview,
- autoWidth: true,
- zIndex: 2
- } )
- .on( 'sticknodeupdate', function( event ) {
- if ( !$( event.target ).data( 'sticknode'
).isFixed() ) {
- $entitytermsview.data( 'edittoolbar' )
- .option( '$container' ).css(
'width', 'auto' );
- }
- } );
-
- $entitytermsview.on( 'keyup.edittoolbar', function(
event ) {
- if ( entitytermsview.option( 'disabled' ) ) {
- return;
- }
- if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
- entitytermsview.stopEditing( true );
- } else if ( event.keyCode ===
$.ui.keyCode.ENTER ) {
- entitytermsview.stopEditing( false );
- }
- } );
- },
- 'entitytermsviewchange entitytermsviewafterstartediting':
function( event ) {
- var $entitytermsview = $( event.target ),
- entitytermsview = $entitytermsview.data(
'entitytermsview' ),
- edittoolbar = $entitytermsview.data(
'edittoolbar' ),
- btnSave = edittoolbar.getButton( 'save' ),
- enable = entitytermsview.isValid() &&
!entitytermsview.isInitialValue();
-
- btnSave[enable ? 'enable' : 'disable']();
-
- $entitytermsview.data( 'edittoolbar' )
- .option( '$container' ).data( 'sticknode'
).refresh();
- },
- entitytermsviewafterstopediting: function( event ) {
- var $entitytermsview = $( event.target ),
- entitytermsview = $entitytermsview.data(
'entitytermsview' ),
- showEntitytermslistviewValue = mw.user.isAnon()
- ? $.cookie(
'wikibase-entitytermsview-showEntitytermslistview' )
- : mw.user.options.get(
'wikibase-entitytermsview-showEntitytermslistview' ),
- showEntitytermslistview = (
showEntitytermslistviewValue === 'true'
- || showEntitytermslistviewValue === '1'
- || showEntitytermslistviewValue ===
null );
-
- if (
entitytermsview.$entitytermsforlanguagelistviewContainer.is( ':visible' )
- && !showEntitytermslistview
- ) {
-
entitytermsview.$entitytermsforlanguagelistviewContainer.slideUp( {
- complete: function() {
-
entitytermsview.$entitytermsforlanguagelistviewToggler.data( 'toggler' )
- .refresh();
- },
- duration: 'fast'
- } );
- }
-
- $entitytermsview.data( 'edittoolbar' )
- .option( '$container' ).data( 'sticknode'
).refresh();
- },
- entitytermsviewdisable: function( event ) {
- var $entitytermsview = $( event.target ),
- entitytermsview = $entitytermsview.data(
'entitytermsview' ),
- edittoolbar = $entitytermsview.data(
'edittoolbar' ),
- btnSave = edittoolbar.getButton( 'save' ),
- enable = entitytermsview.isValid() &&
!entitytermsview.isInitialValue();
-
- btnSave[enable ? 'enable' : 'disable']();
- },
- 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();
-
entitytermsview.$entitytermsforlanguagelistviewToggler.data( 'toggler' )
- .refresh();
- },
- duration: 'fast'
- } );
- }
-
- entitytermsview.focus();
- }
- }
-} );
-
-}( jQuery, mediaWiki ) );
diff --git a/view/resources/jquery/wikibase/toolbar/controller/resources.php
b/view/resources/jquery/wikibase/toolbar/controller/resources.php
index e8cca61..76bb7f2 100644
--- a/view/resources/jquery/wikibase/toolbar/controller/resources.php
+++ b/view/resources/jquery/wikibase/toolbar/controller/resources.php
@@ -81,19 +81,6 @@
),
),
-
'jquery.wikibase.toolbarcontroller.definitions.edittoolbar.entitytermsview' =>
$moduleTemplate + array(
- 'scripts' => array(
- 'definitions/edittoolbar/entitytermsview.js',
- ),
- 'dependencies' => array(
- 'jquery.sticknode',
- 'jquery.wikibase.entitytermsview',
- 'jquery.wikibase.edittoolbar',
- 'jquery.wikibase.toolbarcontroller',
- 'mediawiki.user',
- ),
- ),
-
'jquery.wikibase.toolbarcontroller.definitions.removetoolbar.referenceview' =>
$moduleTemplate + array(
'scripts' => array(
'definitions/removetoolbar/referenceview.js',
diff --git a/view/resources/wikibase/view/ControllerViewFactory.js
b/view/resources/wikibase/view/ControllerViewFactory.js
index e7cd63c..8de5505 100644
--- a/view/resources/wikibase/view/ControllerViewFactory.js
+++ b/view/resources/wikibase/view/ControllerViewFactory.js
@@ -12,6 +12,65 @@
}
);
+SELF.prototype.getEntityTermsView = function( value, $entitytermsview ) {
+ var view = PARENT.prototype.getEntityTermsView.apply( this, arguments );
+ var $container = this._toolbarFactory.getToolbarContainer( view.element
);
+ $container.sticknode( {
+ $container: view.$entitytermsforlanguagelistview,
+ autoWidth: true,
+ zIndex: 2
+ } )
+ .on( 'sticknodeupdate', function( event ) {
+ if ( !$( event.target ).data( 'sticknode' ).isFixed() ) {
+ $container.css( 'width', 'auto' );
+ }
+ } );
+
+ view.element.on( 'entitytermsviewchange', function() {
+ $container.data( 'sticknode' ).refresh();
+ } );
+
+ view.element.on( 'entitytermsviewafterstartediting', function() {
+ if ( !view.$entitytermsforlanguagelistviewContainer.is(
':visible' ) ) {
+
view.$entitytermsforlanguagelistviewContainer.slideDown( {
+ complete: function() {
+ view.$entitytermsforlanguagelistview
+ .data(
'entitytermsforlanguagelistview' ).updateInputSize();
+
view.$entitytermsforlanguagelistviewToggler.data( 'toggler' )
+ .refresh();
+ },
+ duration: 'fast'
+ } );
+ }
+
+ view.focus();
+ } );
+
+ view.element.on( 'entitytermsviewafterstopediting', function() {
+ var showEntitytermslistviewValue = mw.user.isAnon()
+ ? $.cookie(
'wikibase-entitytermsview-showEntitytermslistview' )
+ : mw.user.options.get(
'wikibase-entitytermsview-showEntitytermslistview' );
+ var showEntitytermslistview = ( showEntitytermslistviewValue
=== 'true'
+ || showEntitytermslistviewValue === '1'
+ || showEntitytermslistviewValue === null );
+
+ if ( view.$entitytermsforlanguagelistviewContainer.is(
':visible' ) && !showEntitytermslistview ) {
+ view.$entitytermsforlanguagelistviewContainer.slideUp( {
+ complete: function() {
+
view.$entitytermsforlanguagelistviewToggler.data( 'toggler' ).refresh();
+ },
+ duration: 'fast'
+ } );
+ }
+
+ $container.data( 'sticknode' ).refresh();
+ } );
+
+ var entityTermsChanger =
this._entityChangersFactory.getEntityTermsChanger();
+ this._getController( $container, view, entityTermsChanger, null, value
);
+ return view;
+};
+
SELF.prototype.getStatementView = function( entityId, propertyId, value, $dom
) {
var controller;
var statementview = PARENT.prototype.getStatementView.apply( this,
arguments );
diff --git a/view/resources/wikibase/view/ViewFactory.js
b/view/resources/wikibase/view/ViewFactory.js
index edcf5d2..f482b01 100644
--- a/view/resources/wikibase/view/ViewFactory.js
+++ b/view/resources/wikibase/view/ViewFactory.js
@@ -19,8 +19,6 @@
* @param {dataTypes.DataTypeStore} dataTypeStore
* Required by the `snakview` for retrieving and evaluating a
proper `dataTypes.DataType`
* object when interacting on a "value" `Variation`.
- * @param {wikibase.entityChangers.EntityChangersFactory}
entityChangersFactory
- * Required to store changed data.
* @param {wikibase.entityIdFormatter.EntityIdHtmlFormatter}
entityIdHtmlFormatter
* Required by several views for rendering links to entities.
* @param {wikibase.entityIdFormatter.EntityIdPlainFormatter}
entityIdPlainFormatter
@@ -43,7 +41,6 @@
var SELF = MODULE.ViewFactory = function ViewFactory(
contentLanguages,
dataTypeStore,
- entityChangersFactory,
entityIdHtmlFormatter,
entityIdPlainFormatter,
entityStore,
@@ -56,7 +53,6 @@
) {
this._contentLanguages = contentLanguages;
this._dataTypeStore = dataTypeStore;
- this._entityChangersFactory = entityChangersFactory;
this._entityIdHtmlFormatter = entityIdHtmlFormatter;
this._entityIdPlainFormatter = entityIdPlainFormatter;
this._entityStore = entityStore;
@@ -81,12 +77,6 @@
* @private
**/
SELF.prototype._dataTypeStore = null;
-
- /**
- * @property {wikibase.entityChangers.EntityChangersFactory}
- * @private
- **/
- SELF.prototype._entityChangersFactory = null;
/**
* @property {wikibase.entityIdFormatter.EntityIdHtmlFormatter}
@@ -184,7 +174,6 @@
{
value: fingerprint,
userLanguages: this._userLanguages,
- entityChangersFactory:
this._entityChangersFactory,
helpMessage: this._messageProvider.getMessage(
'wikibase-entitytermsview-input-help-message' )
}
);
diff --git
a/view/tests/qunit/jquery/wikibase/jquery.wikibase.entitytermsview.tests.js
b/view/tests/qunit/jquery/wikibase/jquery.wikibase.entitytermsview.tests.js
index 9159b0a..2106299 100644
--- a/view/tests/qunit/jquery/wikibase/jquery.wikibase.entitytermsview.tests.js
+++ b/view/tests/qunit/jquery/wikibase/jquery.wikibase.entitytermsview.tests.js
@@ -35,10 +35,7 @@
function createEntitytermsview( options ) {
options = $.extend( {
value: createFingerprint(),
- userLanguages: [ 'de', 'en' ],
- entityChangersFactory: {
- getEntityTermsChanger: function() { return 'I am an
EntityTermsChanger'; }
- }
+ userLanguages: [ 'de', 'en' ]
}, options || {} );
return $( '<div/>' )
diff --git a/view/tests/qunit/wikibase/view/ViewFactory.tests.js
b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
index c9f4841..4b4be5f 100644
--- a/view/tests/qunit/wikibase/view/ViewFactory.tests.js
+++ b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
@@ -19,7 +19,7 @@
QUnit.test( 'getEntityView constructs correct views', function( assert
) {
assert.expect( 2 );
var entityStore = new wb.store.EntityStore(),
- viewFactory = new ViewFactory( null, null, null, null,
null, entityStore ),
+ viewFactory = new ViewFactory( null, null, null, null,
entityStore ),
fooView = {},
$dom = $( '<div/>' ),
FooView = $dom.fooview = $.wikibase.fooview =
sinon.spy();
@@ -34,7 +34,7 @@
QUnit.test( 'getEntityView throws on incorrect views', function( assert
) {
assert.expect( 1 );
var entityStore = new wb.store.EntityStore(),
- viewFactory = new ViewFactory( null, null, null, null,
null, entityStore );
+ viewFactory = new ViewFactory( null, null, null, null,
entityStore );
assert.throws(
function() {
@@ -140,7 +140,7 @@
assert.expect( 3 );
var entityId = 'Q1',
entityIdHtmlFormatter = {},
- viewFactory = new ViewFactory( null, null, null,
entityIdHtmlFormatter ),
+ viewFactory = new ViewFactory( null, null,
entityIdHtmlFormatter ),
ListItemAdapter = sinon.spy( $.wikibase.listview,
'ListItemAdapter' ),
value = new wb.datamodel.StatementGroup( 'P1' );
@@ -232,7 +232,6 @@
null,
null,
null,
- null,
entityIdPlainFormatter
),
ListItemAdapter = sinon.stub( $.wikibase.listview,
'ListItemAdapter' ),
@@ -287,14 +286,7 @@
var entityId = 'Q1',
propertyId = 'propertyId',
value = null,
- entityChangersFactory = {
- getStatementsChanger: function() { return {}; }
- },
- viewFactory = new ViewFactory(
- null,
- null,
- entityChangersFactory
- ),
+ viewFactory = new ViewFactory(),
ListItemAdapter = sinon.spy( $.wikibase.listview,
'ListItemAdapter' ),
dom = {};
@@ -322,14 +314,7 @@
assert.expect( 1 );
var propertyId = 'P1',
value = new wb.datamodel.Statement( new
wb.datamodel.Claim( new wb.datamodel.PropertyNoValueSnak( propertyId ) ) ),
- entityChangersFactory = {
- getStatementsChanger: function() { return {}; }
- },
- viewFactory = new ViewFactory(
- null,
- null,
- entityChangersFactory
- ),
+ viewFactory = new ViewFactory(),
ListItemAdapter = sinon.spy( $.wikibase.listview,
'ListItemAdapter' ),
dom = {};
@@ -381,7 +366,7 @@
assert.ok( result.listItemAdapter instanceof
$.wikibase.listview.ListItemAdapter );
- $.wikibase.listview.ListItemAdapter.restore();
+ ListItemAdapter.restore();
} );
QUnit.test( 'getListItemAdapterForSnakListView passes correct options
to ListItemAdapter', function( assert ) {
@@ -432,7 +417,6 @@
viewFactory = new ViewFactory(
contentLanguages,
dataTypeStore,
- null,
entityIdHtmlFormatter,
entityIdPlainFormatter,
entityStore,
@@ -507,7 +491,6 @@
viewFactory = new ViewFactory(
contentLanguages,
dataTypeStore,
- null,
entityIdHtmlFormatter,
entityIdPlainFormatter,
entityStore,
@@ -559,14 +542,12 @@
assert.expect( 1 );
var contentLanguages = [],
fingerprint = new wb.datamodel.Fingerprint(),
- entityChangersFactory = { getEntityTermsChanger:
function() {} },
message = 'message',
messageProvider = { getMessage: function() { return
message; } },
userLanguages = [],
viewFactory = new ViewFactory(
contentLanguages,
null,
- entityChangersFactory,
null,
null,
null,
@@ -586,7 +567,6 @@
sinon.assert.calledWith( $.wikibase.entitytermsview,
sinon.match( {
value: fingerprint,
userLanguages: userLanguages,
- entityChangersFactory: entityChangersFactory,
helpMessage: message
} ) );
--
To view, visit https://gerrit.wikimedia.org/r/298753
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib2cb19f786320743a184a913b68460e4ef38d796
Gerrit-PatchSet: 12
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits