From: This, that and the other Date: Wed, 2 Nov 2016 03:31:08 +0000 (+1100) Subject: mediawiki.util: Fix replacement of $ signs in mw.util.getUrl X-Git-Tag: 1.31.0-rc.0~4982 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=5027942b6da8729fc3b21576dc754357e338ab65 mediawiki.util: Fix replacement of $ signs in mw.util.getUrl Bug: T149767 Change-Id: I91c1afa1f93966d1f01793d124fe8f2ae3dab0cf --- diff --git a/resources/src/mediawiki/mediawiki.util.js b/resources/src/mediawiki/mediawiki.util.js index 866f213bd9..654f232c3d 100644 --- a/resources/src/mediawiki/mediawiki.util.js +++ b/resources/src/mediawiki/mediawiki.util.js @@ -128,7 +128,8 @@ ? util.wikiScript() + '?title=' + util.wikiUrlencode( title ) + '&' + query : util.wikiScript() + '?' + query; } else { - url = mw.config.get( 'wgArticlePath' ).replace( '$1', util.wikiUrlencode( title ) ); + url = mw.config.get( 'wgArticlePath' ) + .replace( '$1', util.wikiUrlencode( title ).replace( /\$/g, '$$$$' ) ); } // Append the encoded fragment diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js index 4eac362038..6dd17f11e1 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js @@ -136,7 +136,7 @@ } ); } ); - QUnit.test( 'getUrl', 13, function ( assert ) { + QUnit.test( 'getUrl', 14, function ( assert ) { var href; mw.config.set( { wgScript: '/w/index.php', @@ -150,6 +150,10 @@ href = mw.util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' ); assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' ); + // T149767 + href = mw.util.getUrl( 'My$$test$$$$$title' ); + assert.equal( href, '/wiki/My$$test$$$$$title', 'title with multiple consecutive dollar signs' ); + href = mw.util.getUrl(); assert.equal( href, '/wiki/Foobar', 'default title' );