jenkins-bot has submitted this change and it was merged.

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(-)

Approvals:
  Mwalker: Looks good to me, approved
  jenkins-bot: Verified



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: merged
Gerrit-Change-Id: Ibce208cc73824960abed81ac457562717a3d277f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator/bundler
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
Gerrit-Reviewer: Mwalker <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to