From 344f58fccc76e476a434147a0b8652f05c8d514b Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 2 Dec 2012 05:11:06 +0100 Subject: [PATCH] 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 --- resources/mediawiki/mediawiki.Uri.js | 8 +++++++- .../suites/resources/mediawiki/mediawiki.Uri.test.js | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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 ) { -- 2.20.1