From: Stephane Bisson Date: Wed, 13 Dec 2017 15:10:41 +0000 (-0500) Subject: RCFilters: Fix live update X-Git-Tag: 1.31.0-rc.0~1213^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/membres/fiche.php?a=commitdiff_plain;h=a01142f92caeb98d54aa6de738c33fcdae11427c;p=lhc%2Fweb%2Fwiklou.git RCFilters: Fix live update When Id55702ecbe6b96ee57453d4f86f20bd94a401d7c introduced the MainWrapperWidget, it changed the order on initialization, which prevents ChangesListViewModel from getting the initial value of the 'from' parameter and thus disables polling for new changes. This patch ensures ChangesListViewModel is given the initial form in its constructor so it can extract what it needs from it before the page DOM is being transformed. Bug: T182788 Change-Id: I1b72790194877ff0f200c87e4f40a942f1ccac3b --- diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js index 15fe334261..96b44100ea 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js @@ -4,17 +4,19 @@ * * @mixins OO.EventEmitter * + * @param {jQuery} $initialFieldset The initial server-generated legacy form content * @constructor */ - mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel() { + mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel( $initialFieldset ) { // Mixin constructor OO.EventEmitter.call( this ); this.valid = true; this.newChangesExist = false; - this.nextFrom = null; this.liveUpdate = false; this.unseenWatchedChanges = false; + + this.extractNextFrom( $initialFieldset ); }; /* Initialization */ @@ -74,7 +76,6 @@ * @param {jQuery|string} changesListContent * @param {jQuery} $fieldset * @param {string} noResultsDetails Type of no result error - * timeout. * @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements * @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed * @fires update @@ -114,7 +115,9 @@ */ mw.rcfilters.dm.ChangesListViewModel.prototype.extractNextFrom = function ( $fieldset ) { var data = $fieldset.find( '.rclistfrom > a, .wlinfo' ).data( 'params' ); - this.nextFrom = data ? data.from : null; + if ( data && data.from ) { + this.nextFrom = data.from; + } }; /** diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 582d25fa34..565ac0a8b8 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -11,11 +11,12 @@ var $topSection, mainWrapperWidget, conditionalViews = {}, + $initialFieldset = $( 'fieldset.cloptions' ), savedQueriesPreferenceName = mw.config.get( 'wgStructuredChangeFiltersSavedQueriesPreferenceName' ), daysPreferenceName = mw.config.get( 'wgStructuredChangeFiltersDaysPreferenceName' ), limitPreferenceName = mw.config.get( 'wgStructuredChangeFiltersLimitPreferenceName' ), filtersModel = new mw.rcfilters.dm.FiltersViewModel(), - changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), + changesListModel = new mw.rcfilters.dm.ChangesListViewModel( $initialFieldset ), savedQueriesModel = new mw.rcfilters.dm.SavedQueriesModel( filtersModel ), specialPage = mw.config.get( 'wgCanonicalSpecialPageName' ), controller = new mw.rcfilters.Controller( @@ -82,7 +83,7 @@ '.mw-changeslist-timeout', '.mw-changeslist-notargetpage' ].join( ', ' ) ), - $formContainer: $( 'fieldset.cloptions' ) + $formContainer: $initialFieldset } );