Option for DateInputWidget to display full month and day names
authorGeoffrey Mon <geofbot@gmail.com>
Tue, 31 Jan 2017 14:18:03 +0000 (09:18 -0500)
committerSn1per <geofbot@gmail.com>
Tue, 31 Jan 2017 14:20:02 +0000 (14:20 +0000)
Add a "longDisplayFormat" config option to DateInputWidget to show
full month and day names when using the default locale-specific
display format.

Bug: T120733
Change-Id: I2db6892720abf86dfc9655291b1070aa7f7bf77b

includes/widget/DateInputWidget.php
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js

index f011f0b..507dab6 100644 (file)
@@ -19,6 +19,7 @@ class DateInputWidget extends \OOUI\TextInputWidget {
 
        protected $inputFormat = null;
        protected $displayFormat = null;
+       protected $longDisplayFormat = null;
        protected $placeholderLabel = null;
        protected $placeholderDateFormat = null;
        protected $precision = null;
@@ -36,6 +37,9 @@ class DateInputWidget extends \OOUI\TextInputWidget {
         *   while the widget is inactive. Should be as unambiguous as possible (for example, prefer
         *   to spell out the month, rather than rely on the order), even if that makes it longer.
         *   Applicable only if the widget is infused. (default: language-specific)
+        * @param string $config['longDisplayFormat'] If a custom displayFormat is not specified, use
+        *   unabbreviated day of the week and month names in the default language-specific
+        *   displayFormat. (default: false)
         * @param string $config['placeholderLabel'] Placeholder text shown when the widget is not
         *   selected. Applicable only if the widget is infused. (default: taken from message
         *   `mw-widgets-dateinput-no-date`)
@@ -58,6 +62,7 @@ class DateInputWidget extends \OOUI\TextInputWidget {
                $config = array_merge( [
                        // Default config values
                        'precision' => 'day',
+                       'longDisplayFormat' => false,
                ], $config );
 
                // Properties
@@ -79,6 +84,9 @@ class DateInputWidget extends \OOUI\TextInputWidget {
                if ( isset( $config['displayFormat'] ) ) {
                        $this->displayFormat = $config['displayFormat'];
                }
+               if ( isset( $config['longDisplayFormat'] ) ) {
+                       $this->longDisplayFormat = $config['longDisplayFormat'];
+               }
                if ( isset( $config['placeholderLabel'] ) ) {
                        $this->placeholderLabel = $config['placeholderLabel'];
                }
@@ -134,6 +142,9 @@ class DateInputWidget extends \OOUI\TextInputWidget {
                if ( $this->displayFormat !== null ) {
                        $config['displayFormat'] = $this->displayFormat;
                }
+               if ( $this->longDisplayFormat !== null ) {
+                       $config['longDisplayFormat'] = $this->longDisplayFormat;
+               }
                if ( $this->placeholderLabel !== null ) {
                        $config['placeholderLabel'] = $this->placeholderLabel;
                }
index 7f5e608..0ec6a4c 100644 (file)
@@ -72,6 +72,8 @@
         *     while the widget is inactive. Should be as unambiguous as possible (for example, prefer to
         *     spell out the month, rather than rely on the order), even if that makes it longer. When not
         *     given, the default is language-specific.
+        * @cfg {boolean} [longDisplayFormat=false] If a custom displayFormat is not specified, use
+        *     unabbreviated day of the week and month names in the default language-specific displayFormat.
         * @cfg {string} [placeholderLabel=No date selected] Placeholder text shown when the widget is not
         *     selected. Default text taken from message `mw-widgets-dateinput-no-date`.
         * @cfg {string} [placeholderDateFormat] User-visible date format string displayed in the textual input
@@ -92,6 +94,7 @@
                // Config initialization
                config = $.extend( {
                        precision: 'day',
+                       longDisplayFormat: false,
                        required: false,
                        placeholderLabel: mw.msg( 'mw-widgets-dateinput-no-date' )
                }, config );
                this.inTextInput = 0;
                this.inputFormat = config.inputFormat;
                this.displayFormat = config.displayFormat;
+               this.longDisplayFormat = config.longDisplayFormat;
                this.required = config.required;
                this.placeholderLabel = config.placeholderLabel;
 
                        ll = localeData.longDateFormat( 'll' );
                        format = llll.replace( lll.replace( ll, '' ), '' );
 
+                       if ( this.longDisplayFormat ) {
+                               format = format.replace( 'MMM', 'MMMM' ).replace( 'ddd', 'dddd' );
+                       }
+
                        return format;
                }
        };