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