From: Bartosz DziewoƄski Date: Sat, 20 Dec 2014 00:17:17 +0000 (+0100) Subject: jquery.tipsy: Unbreak the 'live' option for now X-Git-Tag: 1.31.0-rc.0~12890^2 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/%7B%7B%20url_for%28%27vote%27%2C%20idvote=vote.voteid%29%20%7D%7D?a=commitdiff_plain;h=aa524075ac734fbf584bb9ff69fa10ec2883df20;p=lhc%2Fweb%2Fwiklou.git 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 --- 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 ) );