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 <jrob...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits