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