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

Change subject: Removed default event handler generation from toolbarcontroller
......................................................................


Removed default event handler generation from toolbarcontroller

Reducing toolbarcontroller's complexity by removing the automatic generation of
default event handlers which only were used for referenceview's "add" toolbar
anyway.

Change-Id: I9f96876397bd66700fc4d20c0e34f0e3fed5768d
---
M lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
M lib/resources/jquery.wikibase/toolbar/toolbarcontroller.definitions.js
M lib/resources/jquery.wikibase/toolbar/toolbarcontroller.js
3 files changed, 37 insertions(+), 57 deletions(-)

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



diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
index 3fee4cb..bc3f92c 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
@@ -583,8 +583,22 @@
        id: 'referenceview-snakview',
        selector: '.wb-statement-references .wb-referenceview',
        events: {
-               referenceviewstartediting: 'create',
-               referenceviewafterstopediting: 'destroy',
+               referenceviewstartediting: function( event ) {
+                       $( event.target ).addtoolbar( {
+                               customAction: function( event, $parent ) {
+                                       $parent.data( 'referenceview' 
).enterNewItem();
+                               },
+                               eventPrefix: 
$.wikibase.referenceview.prototype.widgetEventPrefix
+                       } );
+               },
+               referenceviewafterstopediting: function( event ) {
+                       var $node = $( event.target );
+                       if ( $node.data( 'addtoolbar' ) ) {
+                               $node.data( 'addtoolbar' ).destroy();
+                               $node.removeData( 'addtoolbar' );
+                               $node.children( '.' + 
$.wikibase.addtoolbar.prototype.widgetBaseClass ).remove();
+                       }
+               },
                referenceviewchange: function( event ) {
                        var $referenceview = $( event.target ).closest( 
':wikibase-referenceview' ),
                                referenceview = $referenceview.data( 
'referenceview' ),
@@ -603,12 +617,6 @@
                                addToolbar.toolbar.enable();
                        }
                }
-       },
-       options: {
-               customAction: function( event, $parent ) {
-                       $parent.data( 'referenceview' ).enterNewItem();
-               },
-               eventPrefix: 
$.wikibase.referenceview.prototype.widgetEventPrefix
        }
 } );
 
diff --git 
a/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.definitions.js 
b/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.definitions.js
index 5292b03..72f8cbe 100644
--- a/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.definitions.js
+++ b/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.definitions.js
@@ -83,18 +83,22 @@
         *        - events
         *          An object containing custom events to react on:
         *          {
-        *            <{string} unprefixed event name>: <{string|function} 
keyword or function>[,
+        *            <{string} unprefixed event name>: <{function} function>[,
         *            ...]
         *          }
-        *          Basically, keywords are placeholders for default functions: 
"create" will create the
-        *          toolbar, "destroy" will destroy it.
-        *          Event parameters:
-        *          (1) {jQuery.Event} Event
-        *          (2) {jQuery} Node the toolbar has be initialized on
         *          Example:
         *          {
-        *            startediting: 'create',
-        *            afterstopediting: 'destroy',
+        *            startediting: function( event ) {
+        *              $( event.taget ).addtoolbar( { ... } );
+        *            },
+        *            afterstopediting: function( event ) {
+        *              var $node = $( event.target );
+        *              if ( $node.data( 'addtoolbar' ) ) {
+        *                $node.data( 'addtoolbar' ).destroy();
+        *                $node.removeData( 'addtoolbar' );
+        *                $node.children( '.' + 
$.wikibase.addtoolbar.prototype.widgetBaseClass ).remove();
+        *              }
+        *            },
         *            change: function( event ) {
         *              var referenceView = $( event.target ).data( 
'referenceview' ),
         *              addToolbar = $( event.target ).data( 'addtoolbar' );
diff --git a/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.js 
b/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.js
index 376d2a2..2bf25c1 100644
--- a/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.js
+++ b/lib/resources/jquery.wikibase/toolbar/toolbarcontroller.js
@@ -1,7 +1,4 @@
 /**
- * @file
- * @ingroup WikibaseLib
- *
  * @licence GNU GPL v2+
  * @author H. Snater < mediaw...@snater.com >
  */
@@ -36,6 +33,10 @@
         *
         * @option removetoolbar {string[]} List of toolbar definition 
ids/widget names that are
         *         registered as "remove" toolbars and shall be initialized.
+        *         Default: []
+        *
+        * @option movetoolbar {string[]} List of toolbar definition ids/widget 
names that are
+        *         registered as "move" toolbars and shall be initialized.
         *         Default: []
         */
        $.widget( 'wikibase.toolbarcontroller', {
@@ -86,17 +87,13 @@
                                        var $initNode = self.element.find( 
def.selector || ':' + def.widget.fullName );
 
                                        if ( def.events ) {
-                                               // Get callbacks for "create" 
and "destroy" keywords as per toolbar
-                                               // definition:
-                                               var defaultCallbacks = 
createDefaultEventHandlers( type, options );
-
                                                // Detach all event handlers 
first in order to not end up with having the
                                                // handler attached multiple 
times. This cannot be done along with
                                                // re-attaching the handlers 
since multiple event handlers may be registered
                                                // for the same event.
                                                // The namespace needs to be 
very specific since instances of the the same
                                                // toolbar may listen to the 
same event(s) on the same node.
-                                               $.each( def.events, function( 
eventNames, callbackOrKeyword ) {
+                                               $.each( def.events, function( 
eventNames, callback ) {
                                                        var namespacedEvents = 
assignNamespaces(
                                                                eventNames, 
[self.widgetName, self.widgetName + type + id]
                                                        );
@@ -105,12 +102,10 @@
 
                                                // Attach event handlers for 
toolbars that shall be created upon certain
                                                // events:
-                                               $.each( def.events, function( 
eventNames, callbackOrKeyword ) {
-                                                       var callback =
-                                                               
defaultCallbacks[ callbackOrKeyword ] || callbackOrKeyword,
-                                                               
namespacedEvents = assignNamespaces(
-                                                                       
eventNames, [self.widgetName, self.widgetName + type + id]
-                                                               );
+                                               $.each( def.events, function( 
eventNames, callback ) {
+                                                       var namespacedEvents = 
assignNamespaces(
+                                                               eventNames, 
[self.widgetName, self.widgetName + type + id]
+                                                       );
 
                                                        if( !$.isFunction( 
callback ) ) {
                                                                throw new 
Error( 'No callback or known default action given for '
@@ -172,33 +167,6 @@
                }
 
        } );
-
-       /**
-        * Returns an object with fields named after the default toolbar 
definition event actions
-        * ("create" and "destroy"). Each field holds a callback for handling 
the related action.
-        * @since 0.4
-        *
-        * @param {string} type
-        * @param {Object} toolbarInitOptions
-        * @return {Object}
-        */
-       function createDefaultEventHandlers( type, toolbarInitOptions ) {
-               return {
-                       'create': function( event ) {
-                               $( event.target )[type]( toolbarInitOptions );
-                       },
-                       destroy: function( event ) {
-                               var $node = $( event.target );
-                               if ( $node.data( type ) ) {
-                                       $node.data( type ).destroy();
-                                       $node.removeData( type );
-                                       $node.children(
-                                               '.' + $.wikibase[ type 
].prototype.widgetBaseClass
-                                       ).remove();
-                               }
-                       }
-               };
-       }
 
        /**
         * Assigns namespaces to event names passed in as a string.

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I9f96876397bd66700fc4d20c0e34f0e3fed5768d
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
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