From 9f403afb0093c5a2dc881c31bb65625ce50a5b55 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Thu, 5 Nov 2015 00:43:18 +0100 Subject: [PATCH] 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 --- resources/src/mediawiki/mediawiki.jqueryMsg.js | 2 +- .../mediawiki/mediawiki.jqueryMsg.test.js | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) 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 ) ); -- 2.20.1