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

Reply via email to