Addshore has uploaded a new change for review.

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

Change subject: WIP DNM add events to history
......................................................................

WIP DNM add events to history

This allows using browser back and forward buttons

Change-Id: I4cfe38f76eeb9e090f0a8a42e22e75cf84014d60
---
M modules/ext.RevisionSlider.Slider.js
M modules/ext.RevisionSlider.SliderView.js
2 files changed, 32 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/RevisionSlider 
refs/changes/67/288167/1

diff --git a/modules/ext.RevisionSlider.Slider.js 
b/modules/ext.RevisionSlider.Slider.js
index d79e1ff..dd54779 100644
--- a/modules/ext.RevisionSlider.Slider.js
+++ b/modules/ext.RevisionSlider.Slider.js
@@ -51,6 +51,10 @@
                        return this.getLastVisibleRevisionIndex() === 
this.revisions.getLength() - 2;
                },
 
+               setFirstVisibleRevisionIndex: function ( value ) {
+                       this.firstVisibleRevisionIndex = value;
+               },
+
                slide: function ( direction ) {
                        var highestPossibleFirstRev = 
this.revisions.getLength() - 1 - this.revisionsPerWindow;
 
diff --git a/modules/ext.RevisionSlider.SliderView.js 
b/modules/ext.RevisionSlider.SliderView.js
index c309fb3..f746f7e 100644
--- a/modules/ext.RevisionSlider.SliderView.js
+++ b/modules/ext.RevisionSlider.SliderView.js
@@ -73,16 +73,21 @@
                                stop: function () {
                                        var $p = $( this ),
                                                pointer = self.whichPointer( $p 
),
-                                               pos = parseInt( $p.css( 'left' 
), 10 );
-                                       mw.track( 
'counter.MediaWiki.RevisionSlider.event.pointerMove' );
-                                       pointer.setPosition( 
self.slider.getFirstVisibleRevisionIndex() + Math.floor( pos / 
self.revisionWidth ) );
-                                       diffPage.refresh(
-                                               $revisions
+                                               pos = parseInt( $p.css( 'left' 
), 10 ),
+                                               revId1 = $revisions
                                                        .find( 
'div.revision[data-pos=\'' + self.leftPointer.getPosition() + '\']' )
                                                        .attr( 'data-revid' ),
-                                               $revisions
+                                               revId2 = $revisions
                                                        .find( 
'div.revision[data-pos=\'' + self.rightPointer.getPosition() + '\']' )
-                                                       .attr( 'data-revid' )
+                                                       .attr( 'data-revid' );
+
+                                       mw.track( 
'counter.MediaWiki.RevisionSlider.event.pointerMove' );
+                                       pointer.setPosition( 
self.slider.getFirstVisibleRevisionIndex() + Math.floor( pos / 
self.revisionWidth ) );
+                                       diffPage.refresh( revId1, revId2 );
+                                       history.pushState(
+                                               { revid1: revId1, revid2: 
revId2, leftPos: self.leftPointer.getPosition(), rightPos: 
self.rightPointer.getPosition(), sliderPos: 
self.slider.getFirstVisibleRevisionIndex() },
+                                               $( document ).find( 'title' 
).text(),
+                                               mw.util.wikiScript( 'index' ) + 
'?diff=' + Math.max( revId1, revId2 ) + '&oldid=' + Math.min( revId1, revId2 )
                                        );
                                }
                        } );
@@ -97,6 +102,22 @@
                                $revisions
                        );
 
+                       history.pushState(
+                               { revid1: $container.attr( 'data-oldrev' ), 
revid2: $container.attr( 'data-newrev' ), leftPos: 
self.leftPointer.getPosition(), rightPos: self.rightPointer.getPosition(), 
sliderPos: self.slider.getFirstVisibleRevisionIndex() },
+                               $( document ).find( 'title' ).text(),
+                               mw.util.wikiScript( 'index' ) + '?diff=' + 
$container.attr( 'data-newrev' ) + '&oldid=' + $container.attr( 'data-oldrev' )
+                       );
+
+                       window.onpopstate = function ( event ) {
+                               if ( event.state === null ) {
+                                       return;
+                               }
+                               self.leftPointer.setPosition( 
event.state.leftPos );
+                               self.rightPointer.setPosition( 
event.state.rightPos );
+                               self.slider.setFirstVisibleRevisionIndex( 
event.state.sliderPos );
+                               self.slide( 0 );
+                               diffPage.refresh( event.state.revid1, 
event.state.revid2 );
+                       };
                },
 
                initializeSlider: function ( oldRevId, newRevId, $revisions ) {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4cfe38f76eeb9e090f0a8a42e22e75cf84014d60
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to