Jdlrobson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/271434
Change subject: WIP: Allow lazy loading of references
......................................................................
WIP: Allow lazy loading of references
TODO:
* Introduce a ReferencesGateway for accessing the references via
the API
* Translate the references "view list" substitute
* Wire up references drawer with API query result
Change-Id: I287608a8fdfa61fe2d9270ab7df4da9bca3aef4c
Depends-On: I81a965bcb47d17df18f1e415e3c25f88f6b48ffc
Bug: T125896
---
M extension.json
M includes/MobileFormatter.php
M resources/skins.minerva.content.styles/text.less
3 files changed, 50 insertions(+), 6 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend
refs/changes/34/271434/1
diff --git a/extension.json b/extension.json
index d048513..dd04832 100644
--- a/extension.json
+++ b/extension.json
@@ -2031,6 +2031,10 @@
"base": false,
"beta": false
},
+ "MFLazyLoadReferences": {
+ "base": false,
+ "beta": false
+ },
"MFNoMobileCategory": false,
"MFNoMobilePages": [],
"MFNearbyRange": 10000,
diff --git a/includes/MobileFormatter.php b/includes/MobileFormatter.php
index 714f47f..cf4b7e8 100644
--- a/includes/MobileFormatter.php
+++ b/includes/MobileFormatter.php
@@ -106,8 +106,9 @@
*/
public function filterContent( $removeDefaults = true ) {
$ctx = MobileContext::singleton();
- $mfRemovableClasses = $ctx->getMFConfig()
- ->get( 'MFRemovableClasses' );
+ $config = $ctx->getMFConfig();
+ $isBeta = $ctx->isBetaGroupMember();
+ $mfRemovableClasses = $config->get( 'MFRemovableClasses' );
if ( $removeDefaults ) {
$this->remove( $mfRemovableClasses['base'] );
@@ -116,15 +117,24 @@
}
}
+ $mfReferences = $config->get( 'MFLazyLoadReferences' );
+ if ( $mfReferences ) {
+ if (
+ $mfReferences['base'] ||
+ ( $isBeta && $mfReferences['beta'] )
+ ) {
+ $this->doRewriteReferencesForLazyLoading();
+ }
+ }
+
if ( $this->removeMedia ) {
$this->doRemoveImages();
} else {
- $mfLazyLoadImages = $ctx->getMFConfig()
- ->get( 'MFLazyLoadImages' );
+ $mfLazyLoadImages = $config->get( 'MFLazyLoadImages' );
if (
$mfLazyLoadImages['base'] ||
- ( $ctx->isBetaGroupMember() &&
$mfLazyLoadImages['beta'] )
+ ( $isBeta && $mfLazyLoadImages['beta'] )
) {
$this->doRewriteImagesForLazyLoading();
}
@@ -134,6 +144,28 @@
}
/**
+ * Replaces any references list with a link to Special:References
+ */
+ private function doRewriteReferencesForLazyLoading() {
+ $doc = $this->getDoc();
+ $listId = 0;
+ // Accessing by tag is cheaper than class
+ foreach ( $doc->getElementsByTagName( 'ol' ) as $list ) {
+ // Use class to decide it is a list of references
+ if ( strpos( $list->getAttribute( 'class' ),
'references' ) !== false ) {
+ // TODO: i18n
+ $placeholder = $doc->createElement( 'a', 'View
list' );
+ $placeholder->setAttribute( 'class',
'lazy-references-placeholder' );
+ // Currently a broken link
+ $placeholder->setAttribute( 'href',
+ SpecialPage::getTitleFor( 'Cite',
"$listId/" . $this->title->getPrefixedText() )->getLocalUrl() );
+ $list->parentNode->replaceChild( $placeholder,
$list );
+ $listId += 1;
+ }
+ }
+ }
+
+ /**
* Enables images to be loaded asynchronously
*/
private function doRewriteImagesForLazyLoading() {
diff --git a/resources/skins.minerva.content.styles/text.less
b/resources/skins.minerva.content.styles/text.less
index 44299a0..a4e852f 100644
--- a/resources/skins.minerva.content.styles/text.less
+++ b/resources/skins.minerva.content.styles/text.less
@@ -71,4 +71,12 @@
font-size: 0.75em;
// Avoid line-height issues caused by sup and sub
line-height: 1;
-}
\ No newline at end of file
+}
+
+// In beta since we lazy load and there is currently no fallback so hide
+.client-nojs .beta {
+ sup,
+ sub {
+ display: none;
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/271434
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I287608a8fdfa61fe2d9270ab7df4da9bca3aef4c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits