Merge "Add language Doteli (dty)"
[lhc/web/wiklou.git] / resources / src / mediawiki / mediawiki.htmlform.js
index fd76c80..7fdaa6e 100644 (file)
        } );
 
        function enhance( $root ) {
-               var $matrixTooltips, $autocomplete;
+               var $matrixTooltips, $autocomplete,
+                       // cache the separator to avoid object creation on each keypress
+                       colonSeparator = mw.message( 'colon-separator' ).text();
 
                /**
                 * @ignore
                                handleSelectOrOther.call( this, true );
                        } );
 
+               // Add a dynamic max length to the reason field of SelectAndOther
+               // This checks the length together with the value from the select field
+               // When the reason list is changed and the bytelimit is longer than the allowed,
+               // nothing is done
+               $root
+                       .find( '.mw-htmlform-select-and-other-field' )
+                       .each( function () {
+                               var $this = $( this ),
+                                       // find the reason list
+                                       $reasonList = $root.find( '#' + $this.data( 'id-select' ) ),
+                                       // cache the current selection to avoid expensive lookup
+                                       currentValReasonList = $reasonList.val();
+
+                               $reasonList.change( function () {
+                                       currentValReasonList = $reasonList.val();
+                               } );
+
+                               $this.byteLimit( function ( input ) {
+                                       // Should be built the same as in HTMLSelectAndOtherField::loadDataFromRequest
+                                       var comment = currentValReasonList;
+                                       if ( comment === 'other' ) {
+                                               comment = input;
+                                       } else if ( input !== '' ) {
+                                               // Entry from drop down menu + additional comment
+                                               comment += colonSeparator + input;
+                                       }
+                                       return comment;
+                               } );
+                       } );
+
                // Set up hide-if elements
                $root.find( '.mw-htmlform-hide-if' ).each( function () {
                        var v, $fields, test, func,
                        $ul = $( this ).prev( 'ul.mw-htmlform-cloner-ul' );
 
                        html = $ul.data( 'template' ).replace(
-                               new RegExp( $.escapeRE( $ul.data( 'uniqueId' ) ), 'g' ),
+                               new RegExp( mw.RegExp.escape( $ul.data( 'uniqueId' ) ), 'g' ),
                                'clone' + ( ++cloneCounter )
                        );