Main Page: Difference between revisions
Fix people slider to include all people category pages |
Load all people pages in main page slider |
||
| Line 1,269: | Line 1,269: | ||
var fallbackImage = "/wiki/Special:Redirect/file/Vu-logo.png"; | var fallbackImage = "/wiki/Special:Redirect/file/Vu-logo.png"; | ||
var cacheKey = "vu-main-people-slides- | var cacheKey = "vu-main-people-slides-v6"; | ||
var cacheLifetime = 6 * 60 * 60 * 1000; | var cacheLifetime = 6 * 60 * 60 * 1000; | ||
var slideInterval = 9000; | var slideInterval = 9000; | ||
| Line 1,539: | Line 1,539: | ||
} | } | ||
}); | }); | ||
function copyParams(params) { | |||
var copied = {}; | |||
Object.keys(params).forEach(function (key) { | |||
copied[key] = params[key]; | |||
}); | |||
return copied; | |||
} | |||
function loadPeoplePages(api, params, collectedPages) { | |||
return api.get(params).then(function (data) { | |||
var nextPages = | |||
data && | |||
data.query && | |||
Array.isArray(data.query.pages) | |||
? data.query.pages | |||
: []; | |||
var allPages = collectedPages.concat(nextPages); | |||
if (data && data.continue) { | |||
var nextParams = copyParams(params); | |||
Object.keys(data.continue).forEach(function (key) { | |||
nextParams[key] = data.continue[key]; | |||
}); | |||
return loadPeoplePages(api, nextParams, allPages); | |||
} | |||
return { | |||
query: { | |||
pages: allPages | |||
} | |||
}; | |||
}); | |||
} | |||
var cachedPeople = readCache(); | var cachedPeople = readCache(); | ||
| Line 1,557: | Line 1,595: | ||
/* | /* | ||
* | * Follow API continuation so every page in Category:People | ||
* | * can appear in the slideshow. | ||
*/ | */ | ||
return api | return loadPeoplePages( | ||
api, | |||
{ | |||
action: "query", | |||
generator: "categorymembers", | |||
gcmtitle: "Category:People", | |||
gcmnamespace: 0, | |||
gcmtype: "page", | |||
gcmlimit: "max", | |||
prop: "extracts|pageimages|info", | |||
exintro: 1, | |||
explaintext: 1, | |||
exchars: 700, | |||
piprop: "thumbnail|original", | |||
pithumbsize: 1000, | |||
inprop: "url", | |||
redirects: 1, | |||
formatversion: 2 | |||
}, | |||
[] | |||
); | |||
}, | }, | ||
function () { | function () { | ||