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-v5";
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:


/*
/*
* One request obtains category members, lead extracts,
* Follow API continuation so every page in Category:People
* page images and page URLs.
* can appear in the slideshow.
*/
*/
return api.get({
return loadPeoplePages(
action: "query",
api,
generator: "categorymembers",
{
gcmtitle: "Category:People",
action: "query",
gcmnamespace: 0,
generator: "categorymembers",
gcmtype: "page",
gcmtitle: "Category:People",
gcmlimit: "max",
gcmnamespace: 0,
prop: "extracts|pageimages|info",
gcmtype: "page",
exintro: 1,
gcmlimit: "max",
explaintext: 1,
prop: "extracts|pageimages|info",
exchars: 700,
exintro: 1,
piprop: "thumbnail|original",
explaintext: 1,
pithumbsize: 1000,
exchars: 700,
inprop: "url",
piprop: "thumbnail|original",
redirects: 1,
pithumbsize: 1000,
formatversion: 2
inprop: "url",
});
redirects: 1,
formatversion: 2
},
[]
);
},
},
function () {
function () {