Merge "Convert Special:Undelete search form to use OOUI"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 12 Jul 2017 15:51:17 +0000 (15:51 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 12 Jul 2017 15:51:17 +0000 (15:51 +0000)
includes/Sanitizer.php
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki/mediawiki.feedback.js
tests/phpunit/includes/SanitizerTest.php

index dd4a314..b08bc69 100644 (file)
@@ -339,8 +339,8 @@ class Sanitizer {
         */
        static function getAttribsRegex() {
                if ( self::$attribsRegex === null ) {
-                       $attribFirst = '[:A-Z_a-z0-9]';
-                       $attrib = '[:A-Z_a-z-.0-9]';
+                       $attribFirst = "[:_\p{L}\p{N}]";
+                       $attrib = "[:_\.\-\p{L}\p{N}]";
                        $space = '[\x09\x0a\x0c\x0d\x20]';
                        self::$attribsRegex =
                                "/(?:^|$space)({$attribFirst}{$attrib}*)
@@ -351,7 +351,7 @@ class Sanitizer {
                                                | '([^']*)(?:'|\$)
                                                | (((?!$space|>).)*)
                                        )
-                               )?(?=$space|\$)/sx";
+                               )?(?=$space|\$)/sxu";
                }
                return self::$attribsRegex;
        }
index 694f86a..7e9ad7f 100644 (file)
                                        break;
 
                                case 'text':
-                                       widget = new OO.ui.TextInputWidget( {
-                                               multiline: true,
+                                       widget = new OO.ui.MultilineTextInputWidget( {
                                                required: Util.apiBool( pi.required )
                                        } );
                                        widget.paramInfo = pi;
                                        new OO.ui.MenuOptionWidget( {
                                                label: Util.parseMsg( 'apisandbox-request-format-json-label' ),
                                                data: new OO.ui.FieldLayout(
-                                                       jsonInput = new OO.ui.TextInputWidget( {
+                                                       jsonInput = new OO.ui.MultilineTextInputWidget( {
                                                                classes: [ 'mw-apisandbox-textInputCode' ],
                                                                readOnly: true,
-                                                               multiline: true,
                                                                autosize: true,
                                                                maxRows: 6,
                                                                value: JSON.stringify( displayParams, null, '\t' )
index 6abdf83..f0e13b4 100644 (file)
                        classes: [ 'mw-feedbackDialog-welcome-message' ]
                } );
                this.feedbackSubjectInput = new OO.ui.TextInputWidget( {
-                       indicator: 'required',
-                       multiline: false
+                       indicator: 'required'
                } );
-               this.feedbackMessageInput = new OO.ui.TextInputWidget( {
-                       autosize: true,
-                       multiline: true
+               this.feedbackMessageInput = new OO.ui.MultilineTextInputWidget( {
+                       autosize: true
                } );
                feedbackSubjectFieldLayout = new OO.ui.FieldLayout( this.feedbackSubjectInput, {
                        label: mw.msg( 'feedback-subject' )
index c237c50..abcf1d4 100644 (file)
@@ -178,6 +178,10 @@ class SanitizerTest extends MediaWikiTestCase {
        public static function provideTagAttributesToDecode() {
                return [
                        [ [ 'foo' => 'bar' ], 'foo=bar', 'Unquoted attribute' ],
+                       [ [ 'עברית' => 'bar' ], 'עברית=bar', 'Non-Latin attribute' ],
+                       [ [ '६' => 'bar' ], '६=bar', 'Devanagari number' ],
+                       [ [ '搭𨋢' => 'bar' ], '搭𨋢=bar', 'Non-BMP character' ],
+                       [ [], 'ńgh=bar', 'Combining accent is not allowed' ],
                        [ [ 'foo' => 'bar' ], '    foo   =   bar    ', 'Spaced attribute' ],
                        [ [ 'foo' => 'bar' ], 'foo="bar"', 'Double-quoted attribute' ],
                        [ [ 'foo' => 'bar' ], 'foo=\'bar\'', 'Single-quoted attribute' ],