Jdlrobson has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/368287 )
Change subject: Allow content to be sourced from Parsoid ...................................................................... Allow content to be sourced from Parsoid This helps with testing Apps related bugs and Parsoid related bugs e.g. T171727 To use: $wgMFContentProviderClass = 'MobileFrontend\ContentProviders\McsContentProvider'; $wgMFMcsContentProviderBaseUri = "https://en.wikipedia.org/api/rest_v1"; Change-Id: I648ed26e1826aaca4d6616097fdfc3019ca7a848 --- M extension.json M includes/content-providers/ContentProviderFactory.php A includes/content-providers/McsContentProvider.php 3 files changed, 60 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend refs/changes/87/368287/1 diff --git a/extension.json b/extension.json index ef0f5c1..c08fd65 100644 --- a/extension.json +++ b/extension.json @@ -86,6 +86,7 @@ "MobileFrontend\\ContentProviders\\ContentProviderFactory": "includes/content-providers/ContentProviderFactory.php", "MobileFrontend\\ContentProviders\\DefaultContentProvider": "includes/content-providers/DefaultContentProvider.php", "MobileFrontend\\ContentProviders\\IContentProvider": "includes/content-providers/IContentProvider.php", + "MobileFrontend\\ContentProviders\\McsContentProvider": "includes/content-providers/McsContentProvider.php", "MobileFrontend\\ContentProviders\\MwApiContentProvider": "includes/content-providers/MwApiContentProvider.php" }, "ResourceModules": { diff --git a/includes/content-providers/ContentProviderFactory.php b/includes/content-providers/ContentProviderFactory.php index 43f36f0..8017fea 100644 --- a/includes/content-providers/ContentProviderFactory.php +++ b/includes/content-providers/ContentProviderFactory.php @@ -8,6 +8,7 @@ class ContentProviderFactory { const MW_API = 'MobileFrontend\\ContentProviders\\MwApiContentProvider'; const PHP_PARSER = 'MobileFrontend\\ContentProviders\\DefaultContentProvider'; + const MCS_API = 'MobileFrontend\\ContentProviders\\McsContentProvider'; /** * Create an instance of IContentProvider @@ -28,6 +29,9 @@ } switch ( $contentProviderClass ) { + case self::MCS_API: + $baseUrl = $config->get( 'MFMcsContentProviderBaseUri' ); + return new $contentProviderClass( $baseUrl, $out ); case self::MW_API: $baseUrl = $config->get( 'MFMwApiContentProviderBaseUri' ); return new $contentProviderClass( $baseUrl, $out ); diff --git a/includes/content-providers/McsContentProvider.php b/includes/content-providers/McsContentProvider.php new file mode 100644 index 0000000..59380e7 --- /dev/null +++ b/includes/content-providers/McsContentProvider.php @@ -0,0 +1,55 @@ +<?php + +namespace MobileFrontend\ContentProviders; + +use MobileFrontend\ContentProviders\IContentProvider; +use OutputPage; + +class McsContentProvider implements IContentProvider { + protected $html = ''; + + /** + * Constructor + * + * @param string $baseUrl for the MediaWiki API to be used minus query string e.g. /w/api.php + * @param OutputPage $out so that the ResourceLoader modules specific to the page can be added + */ + public function __construct( $baseUrl, OutputPage $out ) { + $this->baseUrl = $baseUrl; + $this->out = $out; + } + + /** + * @inheritdoc + */ + public function getHTML() { + $out = $this->out; + $title = $out->getTitle(); + $url = $this->baseUrl . '/page/mobile-sections/'; + $url .= $title->getPrefixedDBKey(); + + $resp = file_get_contents( $url, false ); + $json = json_decode( $resp, true ); + if ( !is_bool( $json ) ) { + $lead = $json['lead']; + $html = isset( $lead['sections'][0]['text'] ) ? $lead['sections'][0]['text'] : ''; + + $remaining = $json['remaining']; + + foreach( $remaining['sections'] as $section ) { + if ( isset( $section['line'] ) ) { + $toc = $section['toclevel'] + 1; + $line = $section['line']; + $html .= "<h$toc>$line</h$toc>"; + } + if ( isset( $section['text'] ) ) { + $html .= $section['text']; + } + } + + return $html; + } else { + return ''; + } + } +} -- To view, visit https://gerrit.wikimedia.org/r/368287 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I648ed26e1826aaca4d6616097fdfc3019ca7a848 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