Jakob has submitted this change and it was merged.

Change subject: Use momentjs to display internationalized timestamps
......................................................................


Use momentjs to display internationalized timestamps

MediaWiki uses the momentJS module to display standard timestamps;
this means you can avoid calculating the user offset, but also, it
means that all timestamps are internationalized and translated, and
use the standard view that MW uses in its interfaces.

We can store the user's offset in a RevisionSlider variable so we can
refer to it in timestamp construction, as well as manipulate it in
tests without touching any global user options that may affect other
tests.

Bug: T136825
Change-Id: I67d9859b8f33ab8a217128822e246e7ab67f6511
---
M extension.json
M modules/ext.RevisionSlider.Revision.js
M modules/ext.RevisionSlider.init.js
M tests/RevisionSlider.Revision.test.js
4 files changed, 28 insertions(+), 34 deletions(-)

Approvals:
  Jakob: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 71420ff..672de7a 100644
--- a/extension.json
+++ b/extension.json
@@ -54,6 +54,9 @@
                "ext.RevisionSlider.Revision": {
                        "scripts": [
                                "modules/ext.RevisionSlider.Revision.js"
+                       ],
+                       "dependencies": [
+                               "moment"
                        ]
                },
                "ext.RevisionSlider.Pointer": {
diff --git a/modules/ext.RevisionSlider.Revision.js 
b/modules/ext.RevisionSlider.Revision.js
index 21ccc33..d1cab14 100644
--- a/modules/ext.RevisionSlider.Revision.js
+++ b/modules/ext.RevisionSlider.Revision.js
@@ -1,5 +1,5 @@
 ( function ( mw, $ ) {
-
+       /*global moment:false */
        var Revision = function ( data ) {
                this.id = data.revid;
                this.size = data.size;
@@ -76,16 +76,10 @@
                },
 
                formatDate: function ( rawDate ) {
-                       var MONTHS = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 
'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' ],
-                               offset = mw.user.options.values.timecorrection 
? mw.user.options.values.timecorrection.split( '|' )[ 1 ] : 
mw.config.values.extRevisionSliderTimeOffset,
-                               f = new Date( ( new Date( rawDate ) ).getTime() 
+ ( offset * 60 * 1000 ) ),
-                               fDate = f.getUTCDate(),
-                               fMonth = f.getUTCMonth(),
-                               fYear = f.getUTCFullYear(),
-                               fHours = ( '0' + f.getUTCHours() ).slice( -2 ),
-                               fMinutes = ( '0' + f.getUTCMinutes() ).slice( 
-2 );
-
-                       return fHours + ':' + fMinutes + ', ' + fDate + ' ' + 
MONTHS[ fMonth ] + ' ' + fYear;
+                       // Moment's offset works "backwards", as the number of 
minutes
+                       // behind UTC, so we need to make this number negative
+                       var offset = -mw.libs.revisionSlider.userOffset;
+                       return moment( rawDate ).zone( offset ).format( 'HH:mm, 
D MMM YYYY' );
                },
 
                getFormattedDate: function () {
diff --git a/modules/ext.RevisionSlider.init.js 
b/modules/ext.RevisionSlider.init.js
index 68b8361..ba7764d 100644
--- a/modules/ext.RevisionSlider.init.js
+++ b/modules/ext.RevisionSlider.init.js
@@ -1,5 +1,6 @@
 ( function ( mw, $ ) {
        mw.track( 'counter.MediaWiki.RevisionSlider.event.init' );
+       mw.libs.revisionSlider.userOffset = 
mw.user.options.values.timecorrection ? 
mw.user.options.values.timecorrection.split( '|' )[ 1 ] : 
mw.config.values.extRevisionSliderTimeOffset;
        mw.libs.revisionSlider.fetchRevisions( {
                pageName: mw.config.get( 'wgPageName' ),
                startId: mw.config.get( 'wgCurRevisionId' ),
diff --git a/tests/RevisionSlider.Revision.test.js 
b/tests/RevisionSlider.Revision.test.js
index 19c7a5b..707f08a 100644
--- a/tests/RevisionSlider.Revision.test.js
+++ b/tests/RevisionSlider.Revision.test.js
@@ -11,8 +11,7 @@
                        },
                        rev = new mw.libs.revisionSlider.Revision( data );
 
-               mw.config.values.extRevisionSliderTimeOffset = 0;
-               mw.user.options.values.timecorrection = 0;
+               mw.libs.revisionSlider.userOffset = 0;
 
                assert.equal( rev.getSize(), data.size );
                assert.equal( rev.getComment(), data.comment );
@@ -33,8 +32,7 @@
                        },
                        rev = new mw.libs.revisionSlider.Revision( data );
 
-               mw.config.values.extRevisionSliderTimeOffset = 0;
-               mw.user.options.values.timecorrection = 0;
+               mw.libs.revisionSlider.userOffset = 0;
 
                assert.equal( rev.getSize(), data.size );
                assert.equal( rev.getComment(), data.comment );
@@ -55,8 +53,7 @@
                        },
                        rev = new mw.libs.revisionSlider.Revision( data );
 
-               mw.config.values.extRevisionSliderTimeOffset = 0;
-               mw.user.options.values.timecorrection = 0;
+               mw.libs.revisionSlider.userOffset = 0;
 
                assert.equal( rev.getSize(), data.size );
                assert.equal( rev.getComment(), data.comment );
@@ -73,39 +70,38 @@
                assert.equal( rev.getRelativeSize(), size );
        } );
 
-       QUnit.test( 'getFormattedDate No user offset, 0 default offset', 
function ( assert ) {
+       QUnit.test( 'getFormattedDate, offset: 0', function ( assert ) {
                var rev = new mw.libs.revisionSlider.Revision( {
                                timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 
Apr 2016
                        } );
 
-               mw.user.options.values.timecorrection = undefined;
-               mw.config.values.extRevisionSliderTimeOffset = 0;
+               mw.libs.revisionSlider.userOffset = 0;
 
                assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' );
        } );
 
-       QUnit.test( 'getFormattedDate No user offset, 1 default offset', 
function ( assert ) {
+       QUnit.test( 'getFormattedDate, offset: 120 (treat as hours, +2h)', 
function ( assert ) {
                var rev = new mw.libs.revisionSlider.Revision( {
                                timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 
Apr 2016
                        } );
 
-               mw.user.options.values.timecorrection = undefined;
-               mw.config.values.extRevisionSliderTimeOffset = 60;
-
-               assert.equal( rev.getFormattedDate(), '11:27, 26 Apr 2016' );
-       } );
-
-       QUnit.test( 'getFormattedDate 2 user offset, 1 default offset', 
function ( assert ) {
-               var rev = new mw.libs.revisionSlider.Revision( {
-                               timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 
Apr 2016
-                       } );
-
-               mw.user.options.values.timecorrection = 'FOO|120|BAR';
-               mw.config.values.extRevisionSliderTimeOffset = 60;
+               // Berlin = 120
+               mw.libs.revisionSlider.userOffset = 120;
 
                assert.equal( rev.getFormattedDate(), '12:27, 26 Apr 2016' );
        } );
 
+       QUnit.test( 'getFormattedDate, negative offset: -420 (treat as hours, 
-7h)', function ( assert ) {
+               var rev = new mw.libs.revisionSlider.Revision( {
+                               timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 
Apr 2016
+                       } );
+
+               // San Francisco = -420
+               mw.libs.revisionSlider.userOffset = -420;
+
+               assert.equal( rev.getFormattedDate(), '03:27, 26 Apr 2016' );
+       } );
+
        QUnit.test( 'hasEmptyComment comment with whitespaces', function ( 
assert ) {
                var rev = new mw.libs.revisionSlider.Revision( {
                        comment: '   '

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I67d9859b8f33ab8a217128822e246e7ab67f6511
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: Mooeypoo <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Jakob <[email protected]>
Gerrit-Reviewer: Mooeypoo <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WMDE-Fisch <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to