Henning Snater has uploaded a new change for review.
https://gerrit.wikimedia.org/r/170038
Change subject: Added snakview.variations.Value.start/stopEditing()
......................................................................
Added snakview.variations.Value.start/stopEditing()
startEditing() and stopEditing() should be triggered immediately instead of
deferring those calls
to inside the draw() function. In draw(), there is no way to determine the
dropValue parameter to
be submitted to $.valueview.stopEditing(). 70337.
Change-Id: I066a53910ff899e535478a6ab1713eaf39151971
---
M lib/resources/jquery.wikibase/snakview/snakview.js
M lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
M lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
3 files changed, 52 insertions(+), 10 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/38/170038/1
diff --git a/lib/resources/jquery.wikibase/snakview/snakview.js
b/lib/resources/jquery.wikibase/snakview/snakview.js
index 180db6c..0c5e0ae 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.js
@@ -304,6 +304,10 @@
this._isInEditMode = true;
this.draw();
+ if( this._variation ) {
+ this._variation.startEditing();
+ }
+
// attach keyboard input events
this.element.on( 'keydown.' + this.widgetName,
function( event ) {
if ( self.options.disabled ) {
@@ -382,6 +386,10 @@
natively: function( e, dropValue, newSnak ) {
this._isInEditMode = false;
this._initialSnak = null;
+
+ if( this._variation ) {
+ this._variation.stopEditing( dropValue );
+ }
// update view; will remove edit interfaces and
represent value statically
this._setValue( newSnak !== null ? newSnak.toMap() : {}
); // triggers this.draw()
@@ -833,9 +841,15 @@
drawVariation: function() {
// property ID will be null if not in edit mode and no Snak set
or if in edit mode and user
// didn't choose property yet.
- var propertyId = this._propertyId;
+ var propertyId = this._propertyId,
+ self = this;
if( propertyId && this._variation ) {
+ $( this._variation ).one( 'afterdraw', function() {
+ if( self.isInEditMode() ) {
+ self.variation().startEditing();
+ }
+ } );
this.variation().draw();
} else {
// remove any remains from previous rendering or
initial template (e.g. '$4')
diff --git
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
index 7b593c9..e538e73 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
@@ -87,16 +87,8 @@
// _setValue().
self._newDataValue = false;
- // Switch to edit/non-edit view
depending on snakview:
- self._valueView[
- (
self._viewState.isInEditMode() ? 'start' : 'stop' ) + 'Editing'
- ]();
-
- if( self._viewState.isInEditMode() ) {
- self._attachEventHandlers();
- } else {
+ if( !self._viewState.isInEditMode() ) {
self.$viewPort.css( 'height',
'auto' );
- self._removeEventHandlers();
}
// Set state
@@ -216,6 +208,30 @@
},
/**
+ * @see
jQuery.wikibase.snakview.variations.Variation.startEditing
+ */
+ startEditing: function() {
+ if( !this._valueView || this._valueView.isInEditMode()
) {
+ return;
+ }
+ this._valueView.startEditing();
+ this._attachEventHandlers();
+ this.draw();
+ },
+
+ /**
+ * @see
jQuery.wikibase.snakview.variations.Variation.stopEditing
+ */
+ stopEditing: function( dropValue ) {
+ if( !this._valueView || !this._valueView.isInEditMode()
) {
+ return;
+ }
+ this._valueView.stopEditing( dropValue );
+ this._removeEventHandlers();
+ this.draw();
+ },
+
+ /**
* Attaches event handlers to the value view widget's element.
*/
_attachEventHandlers: function() {
diff --git
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
index 8932990..0a021f8 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Variation.js
@@ -179,6 +179,18 @@
draw: util.abstractMember,
/**
+ * Start the variation's edit mode.
+ */
+ startEditing: function() {},
+
+ /**
+ * Stops the variation's edit mode.
+ *
+ * @param {boolean} dropValue
+ */
+ stopEditing: function( dropValue ) {},
+
+ /**
* Will set the focus if there is some focusable input object.
*
* @since 0.4
--
To view, visit https://gerrit.wikimedia.org/r/170038
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I066a53910ff899e535478a6ab1713eaf39151971
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits