http://www.mediawiki.org/wiki/Special:Code/MediaWiki/95999

Revision: 95999
Author:   krinkle
Date:     2011-09-01 15:28:28 +0000 (Thu, 01 Sep 2011)
Log Message:
-----------
Fix bad escaping in mw.message for inexistent messages (bug 30684)

mw.message('some-inexistent-message').escaped() should be 
&lt;some-inexistent-message&gt; instead of <some-inexistent-message>. 

Modified Paths:
--------------
    trunk/phase3/RELEASE-NOTES-1.19
    trunk/phase3/resources/mediawiki/mediawiki.js
    trunk/phase3/tests/qunit/suites/resources/mediawiki/mediawiki.test.js

Modified: trunk/phase3/RELEASE-NOTES-1.19
===================================================================
--- trunk/phase3/RELEASE-NOTES-1.19     2011-09-01 15:22:37 UTC (rev 95998)
+++ trunk/phase3/RELEASE-NOTES-1.19     2011-09-01 15:28:28 UTC (rev 95999)
@@ -77,6 +77,7 @@
 * Show --batch-size option in help of maintenance scripts that support it
 * (bug 4381) Magic quotes cleaning is not comprehensive, key strings not
   unescaped
+* (bug 30684) Fix bad escaping in mw.message for inexistent messages (i.e. 
<key>)
 
 === API changes in 1.19 ===
 * (bug 19838) siprop=interwikimap can now use the interwiki cache.

Modified: trunk/phase3/resources/mediawiki/mediawiki.js
===================================================================
--- trunk/phase3/resources/mediawiki/mediawiki.js       2011-09-01 15:22:37 UTC 
(rev 95998)
+++ trunk/phase3/resources/mediawiki/mediawiki.js       2011-09-01 15:28:28 UTC 
(rev 95999)
@@ -146,8 +146,13 @@
                 * @return string Message as a string in the current form or 
<key> if key does not exist.
                 */
                toString: function() {
+
                        if ( !this.map.exists( this.key ) ) {
-                               // Return <key> if key does not exist
+                               // Use <key> as text if key does not exist
+                               if ( this.format !== 'plain' ) {
+                                       // format 'escape' and 'parse' need to 
have the brackets and key html escaped
+                                       return mw.html.escape( '<' + this.key + 
'>' );
+                               }
                                return '<' + this.key + '>';
                        }
                        var     text = this.map.get( this.key ),

Modified: trunk/phase3/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
===================================================================
--- trunk/phase3/tests/qunit/suites/resources/mediawiki/mediawiki.test.js       
2011-09-01 15:22:37 UTC (rev 95998)
+++ trunk/phase3/tests/qunit/suites/resources/mediawiki/mediawiki.test.js       
2011-09-01 15:28:28 UTC (rev 95999)
@@ -80,7 +80,7 @@
 });
 
 test( 'mw.message & mw.messages', function() {
-       expect(16);
+       expect(17);
 
        ok( mw.messages, 'messages defined' );
        ok( mw.messages instanceof mw.Map, 'mw.messages instance of mw.Map' );
@@ -113,12 +113,16 @@
        var goodbye = mw.message( 'goodbye' );
        strictEqual( goodbye.exists(), false, 'Message.exists returns false for 
inexisting messages' );
 
-       equal( goodbye.toString(), '<goodbye>', 'Message.toString returns <key> 
if key does not exist' );
+       equal( goodbye.plain(), '<goodbye>', 'Message.toString returns plain 
<key> if format is "plain" and key does not exist' );
+       // bug 30684
+       equal( goodbye.escaped(), '&lt;goodbye&gt;', 'Message.toString returns 
properly escaped &lt;key&gt; if format is "escaped" and key does not exist' );
 });
 
 test( 'mw.msg', function() {
-       expect(2);
+       expect(3);
 
+       ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 
'mw.messages.set: Register' );
+
        equal( mw.msg( 'hello' ), 'Hello <b>awesome</b> world', 'Gets message 
with default options (existing message)' );
        equal( mw.msg( 'goodbye' ), '<goodbye>', 'Gets message with default 
options (inexisting message)' );
 });


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to