Henning Snater has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/67404


Change subject: Implemented TimeInput expert default messages
......................................................................

Implemented TimeInput expert default messages

Default messages will be used when the mediaWiki JavaScript object is not 
available.

Change-Id: I36a93e481600b2b4dd056958a04bbf0da7ff0d52
---
M ValueView/resources/jquery.valueview/valueview.Expert.js
M ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
2 files changed, 69 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/DataValues 
refs/changes/04/67404/1

diff --git a/ValueView/resources/jquery.valueview/valueview.Expert.js 
b/ValueView/resources/jquery.valueview/valueview.Expert.js
index 18bc156..dfb4df6 100644
--- a/ValueView/resources/jquery.valueview/valueview.Expert.js
+++ b/ValueView/resources/jquery.valueview/valueview.Expert.js
@@ -101,7 +101,7 @@
                this.$viewPort = $( viewPortNode );
                this.$viewPort.addClass( this.uiBaseClass );
 
-               this._options = $.extend( {}, options || {} );
+               this._options = $.extend( ( !this._options ) ? {} : 
this._options, options || {} );
 
                this._init();
        };
@@ -304,6 +304,28 @@
                draw: dv.util.abstractMember,
 
                /**
+                * Tries to get a message via mediaWiki (if set in the options) 
or from the default options.
+                * @since 0.1
+                *
+                * @param {string} key
+                * @param {string[]} [params] Message parameters (forwarded to 
mediaWiki messages only).
+                * @return {string|null}
+                */
+               _getMessage: function( key, params ) {
+                       params = params || [];
+
+                       if( this._options.mediaWiki ) {
+                               return this._options.mediaWiki.msg( key, params 
);
+                       }
+
+                       if( this._options && this._options.messages && 
this._options.messages[key] ) {
+                               return this._options.messages[key];
+                       }
+
+                       return null;
+               },
+
+               /**
                 * Will set the focus if there is some focusable input elements.
                 *
                 * @since 0.1
diff --git 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
index fc23a57..cc48b11 100644
--- 
a/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
+++ 
b/ValueView/resources/jquery.valueview/valueview.experts/experts.TimeInput.js
@@ -20,8 +20,25 @@
         *
         * @constructor
         * @extends jQuery.valueview.Expert
+        *
+        * @option {Object} messages Default messages used by the widget. The 
keys correspond to
+        *         mediaWiki message keys since these will be picked when in 
MediaWiki environment and
+        *         the mediaWiki JavaScript object has been passed to the 
expert constructor.
         */
        vv.experts.TimeInput = vv.expert( 'timeinput', PARENT, {
+
+               /**
+                * Default options
+                * @type {Object}
+                */
+               _options: {
+                       messages: {
+                               'valueview-expert-timeinput-precision': 
'Precision',
+                               'valueview-expert-timeinput-calendar': 
'Calendar',
+                               'valueview-expert-advancedadjustments': 
'advanced adjustments'
+                       }
+               },
+
                /**
                 * The the input element's node.
                 * @type {jQuery}
@@ -82,12 +99,7 @@
                        this.$precisionContainer = $( '<div/>' )
                        .addClass( this.uiBaseClass + '-precisioncontainer' )
                        .append(
-                               $( '<div/>' ).text(
-                                       ( this._options.mediaWiki )
-                                               ? this._options.mediaWiki.msg( 
'valueview-expert-timeinput-precision' )
-                                               // TODO: Use default messages
-                                               : ''
-                               )
+                               $( '<div/>' ).text( this._getMessage( 
'valueview-expert-timeinput-precision' ) )
                        );
 
                        var precisionValues = [];
@@ -122,11 +134,7 @@
                        this.$calendarContainer = $( '<div/>' )
                        .addClass( this.uiBaseClass + '-calendarcontainer' )
                        .append(
-                               $( '<div/>' ).text(
-                                       ( this._options.mediaWiki )
-                                               ? this._options.mediaWiki.msg( 
'valueview-expert-timeinput-calendar' )
-                                               : ''
-                               )
+                               $( '<div/>' ).text( this._getMessage( 
'valueview-expert-timeinput-calendar' ) )
                        );
 
                        var calendarValues = [];
@@ -155,11 +163,7 @@
 
                        var $toggler = $( '<a/>' )
                        .addClass( this.uiBaseClass + '-advancedtoggler' )
-                       .text(
-                               ( this._options.mediaWiki )
-                                       ? this._options.mediaWiki.msg( 
'valueview-expert-advancedadjustments' )
-                                       : ''
-                       );
+                       .text( this._getMessage( 
'valueview-expert-advancedadjustments' ) );
 
                        this.$calendarhint = $( '<div/>' )
                        .addClass( this.uiBaseClass + '-calendarhint' )
@@ -168,7 +172,8 @@
                                $( '<a/>' )
                                .addClass( this.uiBaseClass + 
'-calendarhint-switch ui-state-default' )
                                .attr( 'href', 'javascript:void(0);' )
-                       );
+                       )
+                       .hide();
 
                        this.$input = $( '<input/>', {
                                type: 'text',
@@ -289,6 +294,15 @@
                 * @param {time.Time} [value] Message will get hidden when 
omitted.
                 */
                _updateCalendarHint: function( value ) {
+                       var msg = this._getMessage(
+                               'valueview-expert-timeinput-calendarhint',
+                               value.calendarText()
+                       );
+
+                       if( !msg ) {
+                               return;
+                       }
+
                        if( value && value.year() > 1581 && value.year() < 1930 
&& value.precision() > 10 ) {
                                var self = this;
 
@@ -296,25 +310,23 @@
                                        ? timeSettings.calendarnames[1][0]
                                        : timeSettings.calendarnames[0][0];
 
-                               if( this._options.mediaWiki ) {
-                                       this.$calendarhint.children( '.' + 
this.uiBaseClass + '-calendarhint-message' )
-                                       .text( this._options.mediaWiki.msg(
-                                               
'valueview-expert-timeinput-calendarhint',
-                                               value.calendarText()
-                                       ) );
-                               }
+                               this.$calendarhint.children( '.' + 
this.uiBaseClass + '-calendarhint-message' )
+                               .text( msg );
 
-                               this.$calendarhint.children( '.' + 
this.uiBaseClass + '-calendarhint-switch' )
-                               .off( 'click.' + this.uiBaseClass )
-                               .on( 'click.' + this.uiBaseClass, function( 
event ) {
-                                       self.$calendar.data( 'listrotator' 
).rotate( otherCalendar, function() {
-                                               self._updateValue();
-                                       } );
-                               } )
-                               .html( ( this._options.mediaWiki )
-                                       ? this._options.mediaWiki.msg( 
'valueview-expert-timeinput-calendarhint-switch', otherCalendar )
-                                       : ''
+                               msg = this._getMessage(
+                                       
'valueview-expert-timeinput-calendarhint-switch',
+                                       otherCalendar
                                );
+                               if( msg ) {
+                                       this.$calendarhint.children( '.' + 
this.uiBaseClass + '-calendarhint-switch' )
+                                       .off( 'click.' + this.uiBaseClass )
+                                       .on( 'click.' + this.uiBaseClass, 
function( event ) {
+                                               self.$calendar.data( 
'listrotator' ).rotate( otherCalendar, function() {
+                                                       self._updateValue();
+                                               } );
+                                       } )
+                                       .html( msg );
+                               }
 
                                this.$calendarhint.show();
                        } else {

-- 
To view, visit https://gerrit.wikimedia.org/r/67404
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I36a93e481600b2b4dd056958a04bbf0da7ff0d52
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/DataValues
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to