From 3e21765d4b9a589053c5c8c86aeabc217ebb69d9 Mon Sep 17 00:00:00 2001 From: Siddharth VP Date: Thu, 31 Oct 2019 00:07:12 +0530 Subject: [PATCH] xfd: avoid client clock for RFD log page determination The curtimestamp parameter is added to the API request while finding the target of the redirect, so that the server time is available while determining the log page. --- modules/twinklexfd.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/twinklexfd.js b/modules/twinklexfd.js index 67fd0cc9f..adc2d46a4 100644 --- a/modules/twinklexfd.js +++ b/modules/twinklexfd.js @@ -1232,7 +1232,8 @@ Twinkle.xfd.callbacks = { var query = { 'action': 'query', 'titles': mw.config.get('wgPageName'), - 'redirects': true + 'redirects': true, + 'curtimestamp': true }; var wikipedia_api = new Morebits.wiki.api('Finding target of redirect', query, Twinkle.xfd.callbacks.rfd.findTargetCallback(callback)); wikipedia_api.params = params; @@ -1242,20 +1243,22 @@ Twinkle.xfd.callbacks = { // This is a closure for the callback from the above API request, which gets the target of the redirect findTargetCallback: function(callback) { return function(apiobj) { - var xmlDoc = apiobj.responseXML; - var target = $(xmlDoc).find('redirects r').first().attr('to'); + var $xmlDoc = $(apiobj.responseXML); + var curtimestamp = $xmlDoc.find('api').attr('curtimestamp'); + var target = $xmlDoc.find('redirects r').first().attr('to'); if (!target) { apiobj.statelem.error('This page is currently not a redirect, aborting'); return; } + var section = $xmlDoc.find('redirects r').first().attr('tofragment'); + apiobj.params.curtimestamp = curtimestamp; apiobj.params.target = target; - var section = $(xmlDoc).find('redirects r').first().attr('tofragment'); apiobj.params.section = section; callback(apiobj.params); }; }, main: function(params) { - var date = new Date(); + var date = new Date(params.curtimestamp); params.logpage = 'Wikipedia:Redirects for discussion/Log/' + date.getUTCFullYear() + ' ' + date.getUTCMonthName() + ' ' + date.getUTCDate(); params.discussionpage = params.logpage + '#' + Morebits.pageNameNorm;