X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialMovepage.php;h=d30ff4329de63a30f20587fb33f17da0cde24b4c;hb=ccc1c08089b6596bc20f6d88db1909f57fab2498;hp=46d7cf7a87e5d5f962c7d23dd59a1e23260499cb;hpb=a8a5f03b3b6653136c4dc5925d6bb2b806010725;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php index 46d7cf7a87..d30ff4329d 100644 --- a/includes/specials/SpecialMovepage.php +++ b/includes/specials/SpecialMovepage.php @@ -235,18 +235,18 @@ class MovePageForm extends UnlistedSpecialPage { } if ( count( $err ) ) { - $out->addHTML( "
\n" ); $action_desc = $this->msg( 'action-move' )->plain(); - $out->addWikiMsg( 'permissionserrorstext-withaction', count( $err ), $action_desc ); + $errMsgHtml = $this->msg( 'permissionserrorstext-withaction', + count( $err ), $action_desc )->parseAsBlock(); if ( count( $err ) == 1 ) { $errMsg = $err[0]; $errMsgName = array_shift( $errMsg ); if ( $errMsgName == 'hookaborted' ) { - $out->addHTML( "

{$errMsg[0]}

\n" ); + $errMsgHtml .= "

{$errMsg[0]}

\n"; } else { - $out->addWikiMsgArray( $errMsgName, $errMsg ); + $errMsgHtml .= $this->msg( $errMsgName, $errMsg )->parseAsBlock(); } } else { $errStr = []; @@ -260,9 +260,9 @@ class MovePageForm extends UnlistedSpecialPage { } } - $out->addHTML( '\n" ); + $errMsgHtml .= '\n"; } - $out->addHTML( "
\n" ); + $out->addHTML( Html::errorBox( $errMsgHtml ) ); } if ( $this->oldTitle->isProtected( 'move' ) ) { @@ -287,8 +287,8 @@ class MovePageForm extends UnlistedSpecialPage { $out->addHTML( "\n" ); } - // Byte limit (not string length limit) for wpReason and wpNewTitleMain - // is enforced in the mediawiki.special.movePage module + // Length limit for wpReason and wpNewTitleMain is enforced in the + // mediawiki.special.movePage module $immovableNamespaces = []; foreach ( array_keys( $this->getLanguage()->getNamespaces() ) as $nsId ) { @@ -326,11 +326,16 @@ class MovePageForm extends UnlistedSpecialPage { ] ); + // HTML maxlength uses "UTF-16 code units", which means that characters outside BMP + // (e.g. emojis) count for two each. This limit is overridden in JS to instead count + // Unicode codepoints (or 255 UTF-8 bytes for old schema). + $conf = $this->getConfig(); + $oldCommentSchema = $conf->get( 'CommentTableSchemaMigrationStage' ) === MIGRATION_OLD; $fields[] = new OOUI\FieldLayout( new OOUI\TextInputWidget( [ 'name' => 'wpReason', 'id' => 'wpReason', - 'maxLength' => 200, + 'maxLength' => $oldCommentSchema ? 200 : CommentStore::COMMENT_CHARACTER_LIMIT, 'infusable' => true, 'value' => $this->reason, ] ),