From aa524075ac734fbf584bb9ff69fa10ec2883df20 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Sat, 20 Dec 2014 01:17:17 +0100 Subject: [PATCH] jquery.tipsy: Unbreak the 'live' option for now It used jQuery.fn.live, which stopped existing when we removed jQuery Migrate (c393f874). This patch basically reimplements it. Both .context and .selector properties used here are deprecated and will be removed in the future, so we should come up with a better solution at some point (or intentionally disallow using this option, rather than breaking it by accident). For now, re-added the tracking and logging, like what jQuery Migrate provided. https://api.jquery.com/context/ https://api.jquery.com/selector/ Bug: T69989 Change-Id: Ib1a908dc60ca23c354fb05484d9b00cf54a05ebe --- resources/src/jquery.tipsy/jquery.tipsy.js | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/resources/src/jquery.tipsy/jquery.tipsy.js b/resources/src/jquery.tipsy/jquery.tipsy.js index 58a99a59e9..2a37fa86ce 100644 --- a/resources/src/jquery.tipsy/jquery.tipsy.js +++ b/resources/src/jquery.tipsy/jquery.tipsy.js @@ -6,7 +6,7 @@ // * This installation of tipsy includes several local modifications to both Javascript and CSS. // Please be careful when upgrading. -(function($) { +( function ( mw, $ ) { function maybeCall(thing, ctx) { return (typeof thing == 'function') ? (thing.call(ctx)) : thing; @@ -182,11 +182,22 @@ if (!options.live) this.each(function() { get(this); }); - if (options.trigger != 'manual') { - var binder = options.live ? 'live' : 'bind', - eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', + if ( options.trigger != 'manual' ) { + var eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; - this[binder](eventIn, enter)[binder](eventOut, leave); + if ( options.live ) { + mw.track( 'mw.deprecate', 'tipsy-live' ); + mw.log.warn( 'Use of the "live" option of jquery.tipsy is deprecated.' ); + // XXX: The official status of 'context' is deprecated, and the official status of + // 'selector' is removed, so this really needs to go. + $( this.context ) + .on( eventIn, this.selector, enter ) + .on( eventOut, this.selector, leave ); + } else { + this + .on( eventIn, enter ) + .on( eventOut, leave ); + } } return this; @@ -256,4 +267,4 @@ } }; -})(jQuery); +}( mediaWiki, jQuery ) ); -- 2.20.1