Adrian Lang has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/249989

Change subject: Add remove toolbar to referenceview on new statement
......................................................................

Add remove toolbar to referenceview on new statement

Change-Id: Ifb348e321b122c96f5a098605deac1f1faf91200
---
M view/resources/jquery/wikibase/jquery.wikibase.statementview.js
M 
view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/referenceview.js
M view/resources/wikibase/view/ViewFactory.js
M view/tests/qunit/jquery/wikibase/jquery.wikibase.statementview.tests.js
M view/tests/qunit/wikibase/view/ViewFactory.tests.js
5 files changed, 42 insertions(+), 72 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/89/249989/1

diff --git a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
index 3479e2e..06fcf86 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
@@ -41,9 +41,6 @@
  *        Required to store the view's `Statement`.
  * @param {wikibase.entityIdFormatter.EntityIdPlainFormatter} 
options.entityIdPlainFormatter
  *        Required for dynamically rendering plain text references to 
`Entity`s.
- * @param {wikibase.entityChangers.ReferencesChanger} options.referencesChanger
- *        Required to store the `Reference`s gathered from the 
`referenceview`s aggregated by the
- *        `statementview`.
  * @param {Object} [options.predefined={ mainSnak: false }]
  *        Allows to predefine certain aspects of the `Statement` to be created 
from the view. If
  *        this option is omitted, an empty view is created. A common use-case 
is adding a value to a
@@ -98,7 +95,6 @@
                },
                value: null,
                claimsChanger: null,
-               referencesChanger: null,
                entityIdPlainFormatter: null,
                predefined: {
                        mainSnak: false
@@ -145,7 +141,6 @@
                if ( !this.options.buildReferenceListItemAdapter
                        || !this.options.buildSnakView
                        || !this.options.claimsChanger
-                       || !this.options.referencesChanger
                        || !this.options.entityIdPlainFormatter
                        || !this.options.guidGenerator
                        || !this.options.qualifiersListItemAdapter
@@ -312,6 +307,9 @@
                .on( 'listviewitemadded listviewitemremoved', function( event, 
value, $li ) {
                        if ( event.target === $listview[0] ) {
                                self._drawReferencesCounter();
+                       }
+                       if ( event.type === 'listviewitemremoved' ) {
+                               self._trigger( 'afterremove' );
                        }
                } )
                .on( 'listviewenternewitem', function( event, $newLi ) {
@@ -571,29 +569,6 @@
                } );
 
                return references;
-       },
-
-       /**
-        * Removes a `referenceview` from the view's list of `referenceview`s.
-        *
-        * @param {jQuery.wikibase.referenceview} referenceview
-        */
-       remove: function( referenceview ) {
-               var self = this;
-
-               referenceview.disable();
-
-               this.options.referencesChanger.removeReference(
-                       this.value().getClaim().getGuid(),
-                       referenceview.value()
-               )
-               .done( function() {
-                       self._referencesListview.removeItem( 
referenceview.element );
-                       self._trigger( 'afterremove' );
-               } ).fail( function( error ) {
-                       referenceview.enable();
-                       referenceview.setError( error );
-               } );
        },
 
        /**
diff --git 
a/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/referenceview.js
 
b/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/referenceview.js
index 5db561e..68d65e2 100644
--- 
a/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/referenceview.js
+++ 
b/view/resources/jquery/wikibase/toolbar/controller/definitions/edittoolbar/referenceview.js
@@ -1,4 +1,4 @@
-( function( $ ) {
+( function( $, mw ) {
        'use strict';
 
 /**
@@ -18,10 +18,6 @@
                                options = {},
                                $container = $referenceview.find( 
'.wikibase-toolbar-container' );
 
-                       if ( !referenceview.options.statementGuid ) {
-                               return;
-                       }
-
                        if ( !$container.length ) {
                                $container = $( '<div/>' ).appendTo(
                                        $referenceview.find( 
'.wikibase-referenceview-heading' )
@@ -30,13 +26,40 @@
 
                        options.$container = $container;
 
-                       if ( !!referenceview.value() ) {
+                       function removeFromListView() {
+                               var $statementview = $referenceview.closest( 
':wikibase-statementview' ),
+                                       statementview = $statementview.data( 
'statementview' );
+
+                               statementview._referencesListview.removeItem( 
$referenceview );
+                       }
+
+                       if ( !referenceview.options.statementGuid || 
!referenceview.value() ) {
+                               var $statementview = $referenceview.closest( 
':wikibase-statementview' ),
+                                       statementview = $statementview.data( 
'statementview' );
+                               if ( !statementview.isInEditMode() ) {
+                                       options.label = mw.msg( 
'wikibase-cancel' );
+                               }
+                               $referenceview.removetoolbar( options )
+                               .on( 'removetoolbarremove.removetoolbar', 
function( event ) {
+                                       removeFromListView();
+                               } );
+
+                               return;
+                       }
+
+                       if ( referenceview.value() && 
referenceview.options.statementGuid ) {
                                options.onRemove = function() {
-                                       var $statementview = 
$referenceview.closest( ':wikibase-statementview' ),
-                                               statementview = 
$statementview.data( 'statementview' );
-                                       if ( statementview ) {
-                                               statementview.remove( 
referenceview );
-                                       }
+                                       referenceview.disable();
+
+                                       
referenceview.options.referencesChanger.removeReference(
+                                               
referenceview.options.statementGuid,
+                                               referenceview.value()
+                                       )
+                                       .done( removeFromListView )
+                                       .fail( function( error ) {
+                                               referenceview.enable();
+                                               referenceview.setError( error );
+                                       } );
                                };
                        }
 
@@ -99,4 +122,4 @@
        }
 } );
 
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
diff --git a/view/resources/wikibase/view/ViewFactory.js 
b/view/resources/wikibase/view/ViewFactory.js
index 18ddf59..54a535e 100644
--- a/view/resources/wikibase/view/ViewFactory.js
+++ b/view/resources/wikibase/view/ViewFactory.js
@@ -310,8 +310,7 @@
                                        claimsChanger: 
this._entityChangersFactory.getClaimsChanger(),
                                        entityIdPlainFormatter: 
this._entityIdPlainFormatter,
                                        guidGenerator: new 
wb.utilities.ClaimGuidGenerator( entityId ),
-                                       qualifiersListItemAdapter: 
this.getListItemAdapterForSnakListView(),
-                                       referencesChanger: 
this._entityChangersFactory.getReferencesChanger()
+                                       qualifiersListItemAdapter: 
this.getListItemAdapterForSnakListView()
                                };
                        }, this )
                } );
diff --git 
a/view/tests/qunit/jquery/wikibase/jquery.wikibase.statementview.tests.js 
b/view/tests/qunit/jquery/wikibase/jquery.wikibase.statementview.tests.js
index 92a99a4..9028ebe 100644
--- a/view/tests/qunit/jquery/wikibase/jquery.wikibase.statementview.tests.js
+++ b/view/tests/qunit/jquery/wikibase/jquery.wikibase.statementview.tests.js
@@ -73,8 +73,7 @@
                                        return this.options.value;
                                };
                        }
-               ),
-               referencesChanger: 'I am a ReferencesChanger'
+               )
        }, options || {} );
 
        $node = $node || $( '<div/>' ).appendTo( 'body' );
@@ -146,29 +145,6 @@
                statementview = $statementview.data( 'statementview' );
 
        assert.ok( statementview.isValid() === false, 'isValid should return 
false' );
-} );
-
-QUnit.test( 'remove', function( assert ) {
-       var referencesChanger = {
-                       removeReference: sinon.spy( function() { return 
$.Deferred().resolve().promise(); } )
-               },
-               reference = new wb.datamodel.Reference(),
-               $statementview = createStatementview( {
-                       value: new wb.datamodel.Statement( new 
wb.datamodel.Claim(
-                                       new wb.datamodel.PropertyNoValueSnak( 
'P1' ),
-                                       null,
-                                       'guid'
-                               ),
-                               new wb.datamodel.ReferenceList( [ reference ] )
-                       ),
-                       referencesChanger: referencesChanger
-               } ),
-               statementview = $statementview.data( 'statementview' ),
-               referenceslistview = statementview._referencesListview,
-               referenceview = 
referenceslistview.listItemAdapter().liInstance( $( 
referenceslistview.items()[0] ) );
-
-       statementview.remove( referenceview );
-       sinon.assert.calledWith( referencesChanger.removeReference, 'guid', 
reference );
 } );
 
 QUnit.test( 'Using the generic tooltip for new claims', 1, function( assert ) {
diff --git a/view/tests/qunit/wikibase/view/ViewFactory.tests.js 
b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
index b909c9a..d558c0c 100644
--- a/view/tests/qunit/wikibase/view/ViewFactory.tests.js
+++ b/view/tests/qunit/wikibase/view/ViewFactory.tests.js
@@ -165,10 +165,8 @@
                var entityId = 'Q1',
                        value = null,
                        claimsChanger = {},
-                       referencesChanger = {},
                        entityChangersFactory = {
-                               getClaimsChanger: function() { return 
claimsChanger; },
-                               getReferencesChanger: function() { return 
referencesChanger; }
+                               getClaimsChanger: function() { return 
claimsChanger; }
                        },
                        entityIdPlainFormatter = {},
                        viewFactory = new ViewFactory( null, null, 
entityChangersFactory, null, entityIdPlainFormatter ),
@@ -206,8 +204,7 @@
                                claimsChanger: claimsChanger,
                                entityIdPlainFormatter: entityIdPlainFormatter,
                                guidGenerator: result.guidGenerator, // Hack
-                               qualifiersListItemAdapter: 
result.qualifiersListItemAdapter, // Hack
-                               referencesChanger: referencesChanger
+                               qualifiersListItemAdapter: 
result.qualifiersListItemAdapter // Hack
                        }
                );
 

-- 
To view, visit https://gerrit.wikimedia.org/r/249989
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb348e321b122c96f5a098605deac1f1faf91200
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to