From: Timo Tijhof Date: Sun, 2 Dec 2012 04:11:06 +0000 (+0100) Subject: mediawiki.Uri: Don't raw encode the 'title' query parameter. X-Git-Tag: 1.31.0-rc.0~21414^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/journal.php?a=commitdiff_plain;h=344f58fccc76e476a434147a0b8652f05c8d514b;p=lhc%2Fweb%2Fwiklou.git mediawiki.Uri: Don't raw encode the 'title' query parameter. Previously: Input: http://alpha.wiki.krinkle.dev/w/index.php?title=Sandbox/2&oldid=611&veaction=edit Action: remove query.veaction Output: http://alpha.wiki.krinkle.dev/w/index.php?title=Sandbox%2F2&oldid=611 Now the title parameter stays the same. Change-Id: Ieb9eee450ea8ae3cc97bab12de935c6e7b103842 --- diff --git a/resources/mediawiki/mediawiki.Uri.js b/resources/mediawiki/mediawiki.Uri.js index f85dec824a..2cb4c3abf5 100644 --- a/resources/mediawiki/mediawiki.Uri.js +++ b/resources/mediawiki/mediawiki.Uri.js @@ -274,7 +274,13 @@ var k = Uri.encode( key ), vals = $.isArray( val ) ? val : [ val ]; $.each( vals, function ( i, v ) { - args.push( k + ( v === null ? '' : '=' + Uri.encode( v ) ) ); + if ( v === null ) { + args.push( k ); + } else if ( k === 'title' ) { + args.push( k + '=' + mw.util.wikiUrlencode( v ) ); + } else { + args.push( k + '=' + Uri.encode( v ) ); + } } ); } ); return args.join( '&' ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js index f9927f0fe9..aba6a0c5b6 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js @@ -88,7 +88,7 @@ ); } ); - QUnit.test( 'Parse a uri with simple querystring', 1, function ( assert ) { + QUnit.test( '.getQueryString()', 2, function ( assert ) { var uri = new mw.Uri( 'http://www.google.com/?q=uri' ); assert.deepEqual( @@ -112,6 +112,14 @@ }, 'basic object properties' ); + + uri = new mw.Uri( 'https://example.org/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' ); + assert.equal( + uri.getQueryString(), + 'title=Sandbox/7&other=Sandbox%2F7&foo', + 'title parameter is escaped the wiki-way' + ); + } ); QUnit.test( 'Handle multiple query parameter (overrideKeys on)', 5, function ( assert ) {