jenkins-bot has submitted this change and it was merged.

Change subject: labelview: inherit from EditableTemplatedWidget
......................................................................


labelview: inherit from EditableTemplatedWidget

Change-Id: I0f97b8bb067934613e7ed24c7e8fbc02b9b966ed
---
M lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
M lib/resources/jquery.wikibase/resources.php
2 files changed, 30 insertions(+), 96 deletions(-)

Approvals:
  Adrian Lang: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
index a4a09d4..bc8d473 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.labelview.js
@@ -5,12 +5,12 @@
 ( function( $, mw, wb ) {
        'use strict';
 
-       var PARENT = $.ui.TemplatedWidget;
+       var PARENT = $.ui.EditableTemplatedWidget;
 
 /**
  * Manages a label.
  * @since 0.5
- * @extends jQuery.ui.TemplatedWidget
+ * @extends jQuery.ui.EditableTemplatedWidget
  *
  * @option {wikibase.datamodel.Term} value
  *
@@ -47,14 +47,9 @@
        },
 
        /**
-        * @type {boolean}
-        */
-       _isInEditMode: false,
-
-       /**
         * @see jQuery.ui.TemplatedWidget._create
         *
-        * @throws {Error} if required parameters are not specified properly.
+        * @throws {Error} if a required option is not specified properly.
         */
        _create: function() {
                if(
@@ -62,7 +57,7 @@
                        || !this.options.entityId
                        || !this.options.labelsChanger
                ) {
-                       throw new Error( 'Required parameter(s) missing' );
+                       throw new Error( 'Required option not specified 
properly' );
                }
 
                var self = this;
@@ -87,7 +82,7 @@
                PARENT.prototype._create.call( this );
 
                if( this.$text.text() === '' ) {
-                       this._draw();
+                       this.draw();
                }
        },
 
@@ -95,7 +90,7 @@
         * @see jQuery.ui.TemplatedWidget.destroy
         */
        destroy: function() {
-               if( this._isInEditMode ) {
+               if( this.isInEditMode() ) {
                        var self = this;
 
                        this.element.one( this.widgetEventPrefix + 
'afterstopediting', function( event ) {
@@ -109,10 +104,11 @@
        },
 
        /**
-        * Main draw routine.
+        * @inheritdoc
         */
-       _draw: function() {
+       draw: function() {
                var self = this,
+                       deferred = $.Deferred(),
                        languageCode = this.options.value.getLanguageCode(),
                        labelText = this.options.value.getText();
 
@@ -120,7 +116,7 @@
                        labelText = null;
                }
 
-               if( this.options.showEntityId && !( this._isInEditMode && 
labelText ) ) {
+               if( this.options.showEntityId && !( this.isInEditMode() && 
labelText ) ) {
                        this.$entityId.text( mw.msg( 'parentheses', 
this.options.entityId ) );
                } else {
                        this.$entityId.empty();
@@ -128,9 +124,9 @@
 
                this.element[labelText ? 'removeClass' : 'addClass']( 
'wb-empty' );
 
-               if( !this._isInEditMode ) {
+               if( !this.isInEditMode() ) {
                        this.$text.text( labelText || mw.msg( 
'wikibase-label-empty' ) );
-                       return;
+                       return deferred.resolve().promise();
                }
 
                var $input = $( '<input />' );
@@ -157,84 +153,41 @@
                }
 
                this.$text.empty().append( $input );
+
+               return deferred.resolve().promise();
        },
 
        /**
-        * Starts the widget's edit mode.
+        * @inheritdoc
+        * @protected
         */
-       startEditing: function() {
-               if( this._isInEditMode ) {
-                       return;
-               }
-               this.element.addClass( 'wb-edit' );
-               this._isInEditMode = true;
-               this._draw();
-               this._trigger( 'afterstartediting' );
-       },
-
-       /**
-        * Stops the widget's edit mode.
-        *
-        * @param {boolean} dropValue
-        */
-       stopEditing: function( dropValue ) {
-               var self = this;
-
-               if( !this._isInEditMode ) {
-                       return;
-               } else if( ( !this.isValid() || this.isInitialValue() ) && 
!dropValue ) {
-                       return;
-               } else if( dropValue ) {
-                       this._afterStopEditing( dropValue );
-                       return;
-               }
-
-               this.disable();
-
-               this._trigger( 'stopediting', null, [dropValue] );
+       _save: function() {
+               var deferred = $.Deferred();
 
                this.options.labelsChanger.setLabel( this.value() )
                .done( function( label ) {
-                       self.enable();
-                       self._afterStopEditing( dropValue );
+                       deferred.resolve();
                } )
-               .fail( function( error ) {
-                       self.setError( error );
-                       self.enable();
-               } );
+               .fail( deferred.reject );
+
+               return deferred.promise();
        },
 
        /**
-        * Cancels the widget's edit mode.
-        */
-       cancelEditing: function() {
-               this.stopEditing( true );
-       },
-
-       /**
-        * Callback tearing down edit mode.
-        *
-        * @param {boolean} dropValue
+        * @inheritdoc
+        * @protected
         */
        _afterStopEditing: function( dropValue ) {
-               if( !dropValue ) {
-                       this.options.value = this.value();
-               } else if( this.options.value.getText() === '' ) {
+               if( dropValue && this.options.value.getText() === '' ) {
                        this.$text.children( 'input' ).val( '' );
                }
-
-               this.element.removeClass( 'wb-edit' );
-               this._isInEditMode = false;
-               this._draw();
-
-               this._trigger( 'afterstopediting', null, [dropValue] );
+               return PARENT.prototype._afterStopEditing.call( this, dropValue 
);
        },
 
        /**
         * @return {boolean}
         */
        isValid: function() {
-               // Function is required by edittoolbar definition.
                return true;
        },
 
@@ -243,25 +196,6 @@
         */
        isInitialValue: function() {
                return this.value().equals( this.options.value );
-       },
-
-       /**
-        * Toggles error state.
-        *
-        * @param {Error} error
-        */
-       setError: function( error ) {
-               if( error ) {
-                       this.element.addClass( 'wb-error' );
-                       this._trigger( 'toggleerror', null, [error] );
-               } else {
-                       this.removeError();
-                       this._trigger( 'toggleerror' );
-               }
-       },
-
-       removeError: function() {
-               this.element.removeClass( 'wb-error' );
        },
 
        /**
@@ -274,7 +208,7 @@
 
                var response = PARENT.prototype._setOption.call( this, key, 
value );
 
-               if( key === 'disabled' && this._isInEditMode ) {
+               if( key === 'disabled' && this.isInEditMode() ) {
                        this.$text.children( 'input' ).prop( 'disabled', value 
);
                }
 
@@ -293,7 +227,7 @@
                        return;
                }
 
-               if( !this._isInEditMode ) {
+               if( !this.isInEditMode() ) {
                        return this.option( 'value' );
                }
 
@@ -307,7 +241,7 @@
         * @see jQuery.ui.TemplatedWidget.focus
         */
        focus: function() {
-               if( this._isInEditMode ) {
+               if( this.isInEditMode() ) {
                        this.$text.children( 'input' ).focus();
                } else {
                        this.element.focus();
diff --git a/lib/resources/jquery.wikibase/resources.php 
b/lib/resources/jquery.wikibase/resources.php
index e17ae2d..d55b703 100644
--- a/lib/resources/jquery.wikibase/resources.php
+++ b/lib/resources/jquery.wikibase/resources.php
@@ -262,7 +262,7 @@
                                'themes/default/jquery.wikibase.labelview.css',
                        ),
                        'dependencies' => array(
-                               'jquery.ui.TemplatedWidget',
+                               'jquery.ui.EditableTemplatedWidget',
                                'jquery.util.getDirectionality',
                                'wikibase.datamodel.Term',
                                'wikibase.getLanguageNameByCode',

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I0f97b8bb067934613e7ed24c7e8fbc02b9b966ed
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Adrian Lang <adrian.he...@wikimedia.de>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to