From: Bartosz DziewoƄski Date: Wed, 4 Nov 2015 23:43:18 +0000 (+0100) Subject: mediawiki.jqueryMsg: Don't duplicate link contents if parse() is called multiple... X-Git-Tag: 1.31.0-rc.0~9094^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/recherche.php?a=commitdiff_plain;h=9f403afb0093c5a2dc881c31bb65625ce50a5b55;p=lhc%2Fweb%2Fwiklou.git mediawiki.jqueryMsg: Don't duplicate link contents if parse() is called multiple times mw.messages.set( 'foo', '[$1 Link]' ); var msg = mw.message( 'foo', $( '' ).attr( 'href', 'http://example.com/' ) ); msg.parse(); msg.parse(); msg.parse(); $( 'body ').append( msg.parse() ); // The link now says "LinkLinkLinkLink" Change-Id: Id170b328164527320326178f24f56c5077cd50ab --- diff --git a/resources/src/mediawiki/mediawiki.jqueryMsg.js b/resources/src/mediawiki/mediawiki.jqueryMsg.js index 2e89f6b4c6..bf0884b681 100644 --- a/resources/src/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/src/mediawiki/mediawiki.jqueryMsg.js @@ -1094,7 +1094,7 @@ $el.attr( 'href', textify( arg ) ); } } - return appendWithoutParsing( $el, contents ); + return appendWithoutParsing( $el.empty(), contents ); }, /** diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index 24528bbe90..f65ff169bf 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -1078,8 +1078,8 @@ assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' ); } ); - QUnit.test( 'Integration', 4, function ( assert ) { - var expected, logSpy; + QUnit.test( 'Integration', 5, function ( assert ) { + var expected, logSpy, msg; expected = 'Bold!'; mw.messages.set( 'integration-test', '[[Bold]]!' ); @@ -1105,6 +1105,18 @@ expected, 'jQuery plugin $.fn.msg() works correctly' ); + + mw.messages.set( 'integration-test-extlink', '[$1 Link]' ); + msg = mw.message( + 'integration-test-extlink', + $( '' ).attr( 'href', 'http://example.com/' ) + ); + msg.parse(); // Not a no-op + assert.equal( + msg.parse(), + 'Link', + 'Calling .parse() multiple times does not duplicate link contents' + ); } ); }( mediaWiki, jQuery ) );