mw.action.edit: Fix byte limit for the edit summary field
authorBartosz Dziewoński <matma.rex@gmail.com>
Mon, 19 Jun 2017 19:40:27 +0000 (21:40 +0200)
committerBartosz Dziewoński <matma.rex@gmail.com>
Mon, 19 Jun 2017 20:09:08 +0000 (20:09 +0000)
In OOUI mode, the `.byteLimit( 255 )` call must be after
the edit summary widget is infused. Otherwise, infusing
"reverts" the 'maxlength' attribute of the input field
back to the original value of 200, as set by the PHP code.
(The byte limit was still applied, but in most cases the
'maxlength' applied first.)

Bug: T168194
Change-Id: If0117a7af5bb6975c8355b42fdbc8501c6a02919

resources/src/mediawiki.action/mediawiki.action.edit.js

index 7e2ee5e..49e64b5 100644 (file)
        $( function () {
                var editBox, scrollTop, $editForm;
 
-               // Make sure edit summary does not exceed byte limit
-               // TODO: Replace with this when $wgOOUIEditPage is removed:
-               // OO.ui.infuse( 'wpSummary' ).$input.byteLimit( 255 );
-               $( '#wpSummary' ).byteLimit( 255 );
-
-               // Show a byte-counter to users with how many bytes are left for their edit summary.
-               // TODO: This looks a bit weird, as there is no unit in the UI, just numbers; showing
-               // 'bytes' confused users in testing, and showing 'chars' would be a lie. See T42035.
                if ( $( '#editform' ).hasClass( 'mw-editform-ooui' ) ) {
                        mw.loader.using( 'oojs-ui-core' ).then( function () {
                                var wpSummary = OO.ui.infuse( $( '#wpSummaryWidget' ) );
 
+                               // Make sure edit summary does not exceed byte limit
+                               wpSummary.$input.byteLimit( 255 );
+
+                               // Show a byte-counter to users with how many bytes are left for their edit summary.
+                               // TODO: This looks a bit weird, as there is no unit in the UI, just numbers; showing
+                               // 'bytes' confused users in testing, and showing 'chars' would be a lie. See T42035.
                                function updateSummaryLabelCount() {
                                        wpSummary.setLabel( String( 255 - $.byteLength( wpSummary.getValue() ) ) );
                                }
-
                                wpSummary.on( 'change', updateSummaryLabelCount );
                                // Initialise value
                                updateSummaryLabelCount();
                        } );
+               } else {
+                       // Make sure edit summary does not exceed byte limit
+                       $( '#wpSummary' ).byteLimit( 255 );
                }
 
                // Restore the edit box scroll state following a preview operation,