Cscott has uploaded a new change for review.
https://gerrit.wikimedia.org/r/150435
Change subject: Use siteinfo API query to get content license for each wiki.
......................................................................
Use siteinfo API query to get content license for each wiki.
Change-Id: Ibce208cc73824960abed81ac457562717a3d277f
---
M lib/attribution.js
1 file changed, 36 insertions(+), 15 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Collection/OfflineContentGenerator/bundler
refs/changes/35/150435/1
diff --git a/lib/attribution.js b/lib/attribution.js
index 00ac940..4108d46 100644
--- a/lib/attribution.js
+++ b/lib/attribution.js
@@ -162,27 +162,48 @@
var createLiElements = function(last, current) {
return last + '<li>' + current + '</li>\n';
};
- var wikitext = util.format(
- '{{int:Coll-attribution-page|%s|%s|%s}}',
- pages.reduce(createLiElements, '<ul>\n') + '</ul>\n',
- images.reduce(createLiElements, '<ul>\n') + '</ul>\n',
- mangle(metabook.mw_rights_text ||
metabook.mw_license_url || '')
- );
- // look for a wiki matching the preferred metabook.lang setting
- // so that the attributions are localized correctly. If we
can't
- // find a match, we'll use the first wiki (wiki id 0).
- var lang = metabook.lang || 'en';
- return Promise.reduce(metabook.wikis, function(found, w, index,
wikis) {
- if (found !== -1) { return found; /* stop looking! */ }
- return Siteinfo.fetch(wikis,
index).then(function(siteinfo) {
+ var wikitext;
+
+ // fetch all the siteinfo
+ return Promise.map(metabook.wikis, function(w, index, wikis) {
+ return Siteinfo.fetch(wikis, index);
+ }).then(function(siteinfos) {
+ // look for a wiki matching the preferred metabook.lang
setting
+ // so that the attributions are localized correctly.
If we can't
+ // find a match, we'll use the first wiki (wiki id 0).
+ var lang = metabook.lang || 'en';
+ var wiki = siteinfos.findIndex(function(siteinfo) {
var wikilang = siteinfo.general.lang || 'en';
- return (wikilang === lang) ? index : -1;
+ return (wikilang === lang);
});
- }, -1).then(function(wiki) {
if (wiki === -1) {
console.error("Can't find appropriate wiki for
language", lang);
wiki = 0;
}
+ // collect the wiki rights info
+ var rights = siteinfos.map(function(siteinfo) {
+ var r = siteinfo.rightsinfo || {};
+ if (r.url) {
+ return '[' + encodeURI(r.url) + ' ' +
mangle(r.text || '') + ']';
+ } else {
+ return mangle(r.text || '');
+ }
+ });
+ // filter out duplicate rights
+ var seen = new Set();
+ rights = rights.filter(function(s) {
+ if (seen.has(s)) { return false; }
+ seen.add(s);
+ return true;
+ });
+ // create a template invocation, for localization
+ wikitext = util.format(
+ '{{int:Coll-attribution-page|%s|%s|%s}}',
+ pages.reduce(createLiElements, '<ul>\n') +
'</ul>\n',
+ images.reduce(createLiElements, '<ul>\n') +
'</ul>\n',
+ rights.reduce(createLiElements, '<ul>\n') +
'</ul>\n'
+ );
+ // parse it!
return parsoid.parse(
wiki, wikitext,
'MediaWiki:Coll-attribution-page', status
);
--
To view, visit https://gerrit.wikimedia.org/r/150435
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibce208cc73824960abed81ac457562717a3d277f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator/bundler
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits