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