Henning Snater has uploaded a new change for review.

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


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, 32 insertions(+), 56 deletions(-)


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

diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
index 95ab7d2..c9006bd 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.referenceview.js
@@ -536,8 +536,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' ),
@@ -556,12 +570,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..0901348 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 < [email protected] >
  */
@@ -86,10 +83,6 @@
                                        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
@@ -105,12 +98,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 +163,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: newchange
Gerrit-Change-Id: I9f96876397bd66700fc4d20c0e34f0e3fed5768d
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

Reply via email to