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

Reply via email to