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