Arlolra has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/377368 )

Change subject: [WIP] T159894: Add support for Cite's `responsive` parameter
......................................................................

[WIP] T159894: Add support for Cite's `responsive` parameter

 * Ports commit 04c3ad01 in core's Cite extension.

 * Until $wgCiteResponsiveReferences is exported, a number of wikis
   which have enabled this won't be getting the right default.
   
https://github.com/wikimedia/operations-mediawiki-config/blob/master/wmf-config/InitialiseSettings.php#L14945-L14970

   However, it looks like enwiki's {{reflist}} explicitly sets the
   parameter either way, so not a bad start.

 * The "ext.cite.styles" css resource is added from core's Cite
   extension 05cb5cc1, since that's where the responsive css lives.

 * FIXME: This needs tests!

Change-Id: I8f9277b3ecb253e0bee7ee55eef7af4935821527
---
M lib/config/WikiConfig.js
M lib/ext/Cite/index.js
M lib/html2wt/DOMHandlers.js
3 files changed, 41 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/68/377368/1

diff --git a/lib/config/WikiConfig.js b/lib/config/WikiConfig.js
index 2406346..6ecc370 100644
--- a/lib/config/WikiConfig.js
+++ b/lib/config/WikiConfig.js
@@ -210,6 +210,12 @@
        // Whether the Linter MediaWiki extension is installed
        this.linterEnabled = general.linter !== undefined;
 
+       // FIXME(arlolra): Export $wgCiteResponsiveReferences
+       this.responsiveReferences = {
+               enabled: true,
+               threshold: 10,
+       };
+
        // The interwikiMap maps prefixes to the corresponding information
        // gathered from the api query (prefix, language, url, local)
        this.interwikiMap = new Map();
diff --git a/lib/ext/Cite/index.js b/lib/ext/Cite/index.js
index 4225198..17cb230 100644
--- a/lib/ext/Cite/index.js
+++ b/lib/ext/Cite/index.js
@@ -18,7 +18,6 @@
 var KV = defines.KV;
 var SelfclosingTagTk = defines.SelfclosingTagTk;
 
-
 /**
  * Simple token transform version of the Ref extension tag
  *
@@ -338,6 +337,8 @@
                                dp.group = refsOpts.group;
                                ol.setAttribute('data-mw-group', 
refsOpts.group);
                        }
+                       // Pass along the `responsive` paramter
+                       dp.tmp.responsive = refsOpts.responsive;
                };
                cb({
                        async: false,
@@ -493,6 +494,8 @@
                        'attrs': {
                                // Dont emit empty keys
                                'group': group || undefined,
+                               // Rt the `responsive` parameter
+                               responsive: dp.tmp.responsive,
                        },
                };
 
@@ -523,6 +526,22 @@
 
        // Remove the group from refsData
        refsData.removeRefGroup(group);
+
+       // Support the `responsive` parameter
+       var rrOpts = refsData.env.conf.wiki.responsiveReferences;
+       var responsiveWrap = rrOpts.enabled;
+       if (dp.tmp.hasOwnProperty('responsive')) {
+               responsiveWrap = dp.tmp.responsive !== '0';
+       }
+       if (responsiveWrap) {
+               var div = refsNode.ownerDocument.createElement('div');
+               div.classList.add('mw-references-wrap');
+               if (refGroup.refs.length > rrOpts.threshold) {
+                       div.classList.add('mw-references-columns');
+               }
+               refsNode.parentNode.insertBefore(div, refsNode);
+               div.appendChild(refsNode);
+       }
 };
 
 // Process <ref>s left behind after the DOM is fully processed.
@@ -707,7 +726,10 @@
                                serialHandler: this.references.serialHandler,
                        },
                ],
-               styles: ['ext.cite.style'],
+               styles: [
+                       'ext.cite.style',
+                       'ext.cite.styles',
+               ],
        };
 };
 
diff --git a/lib/html2wt/DOMHandlers.js b/lib/html2wt/DOMHandlers.js
index 6964097..f7c9fe7 100644
--- a/lib/html2wt/DOMHandlers.js
+++ b/lib/html2wt/DOMHandlers.js
@@ -1368,6 +1368,17 @@
                        lastChild: id({ min: 0, max: 1 }),
                },
        },
+       div: {
+               handle: Promise.method(function(node, state, wrapperUnmodified) 
{
+                       if (/\bmw-references-wrap\b/.test(node.classList)) {
+                               // Just serialize the children
+                               return state.serializeChildren(node);
+                       } else {
+                               // Fall back to plain HTML serialization
+                               return _htmlElementHandler(node, state);
+                       }
+               }),
+       },
 });
 
 var parentMap = {

-- 
To view, visit https://gerrit.wikimedia.org/r/377368
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8f9277b3ecb253e0bee7ee55eef7af4935821527
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to