Yurik has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/78091


Change subject: ESI handling of the banner
......................................................................

ESI handling of the banner

* Special:ZeroRatedMobileAccess allows ?renderesibanner param which causes
it to return raw html of the zero banner (just the <div>...</div>)
* When ?testesi is used, the <esi:include> is generated instead of the banner.

Change-Id: Ib69f3b142761bd71c1b47439b6ae1be995580b76
---
M includes/PageRenderingHooks.php
M includes/ZeroConfigContent.php
M includes/ZeroSpecialPage.php
3 files changed, 50 insertions(+), 8 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ZeroRatedMobileAccess 
refs/changes/91/78091/1

diff --git a/includes/PageRenderingHooks.php b/includes/PageRenderingHooks.php
index cd059d2..cc70060 100644
--- a/includes/PageRenderingHooks.php
+++ b/includes/PageRenderingHooks.php
@@ -14,6 +14,7 @@
 use RawMessage;
 use ResourceLoader;
 use SkinTemplate;
+use SpecialPage;
 use Title;
 use WebRequest;
 
@@ -93,7 +94,7 @@
                        }
                }
 
-               $redirPage = \SpecialPage::getTitleFor( 'ZeroRatedMobileAccess' 
);
+               $redirPage = SpecialPage::getTitleFor( 'ZeroRatedMobileAccess' 
);
                $query = 'from=' . $context->getTitle()->getPrefixedURL() . 
'&to=';
                /* @var $link DOMElement */
                foreach ( $xpath->query( '//a' ) as $link ) {
@@ -153,7 +154,7 @@
                                $template->set( 'banners', 
$template->data['banners'] );
                                self::emptyLangLinks( $template );
                        } else {
-                               $template->data['banners'] = array( 
self::renderBanner( $config, null, null, false ) );
+                               $template->data['banners'] = array( 
self::renderBanner( $config ) );
                                $template->set( 'banners', 
$template->data['banners'] );
                                self::rewriteLangLinks( $template, $config, 
$redirectWarningQPS, $req );
                        }
@@ -195,7 +196,7 @@
                if ( isset( $warning ) ) {
                        $notice = $warning;
                } else {
-                       $notice = self::renderBanner( $config, null, null, true 
);
+                       $notice = self::renderBanner( $config, true, null, 
null, true );
                }
 
                return true;
@@ -333,15 +334,23 @@
 
        /**
         * @param $config
+        * @param bool $allowEsi
         * @param Language $lang
         * @param string $sitename
         * @param bool $wap
         * @return string
         */
-       public static function renderBanner( $config, $lang = null, $sitename = 
null, $wap = false ) {
+       public static function renderBanner( $config, $allowEsi = true, $lang = 
null, $sitename = null, $wap = false ) {
+               global $wgRequest;
+               // fixme: temporary until we stabilize it, then remove the 
getCheck()
+               if ( $allowEsi && $wgRequest->getCheck( 'testesi' ) ) {
+                       $special = SpecialPage::getTitleFor( 
'ZeroRatedMobileAccess' );
+                       $url = $special->getLocalURL( 'renderesibanner=1' );
+                       return '<esi:include' . Html::expandAttributes( array( 
'src' => $url ) ) . '/>';
+               }
+
                $bannerText = self::getBannerText( $config, $lang, $sitename );
                if ( $bannerText !== false ) {
-                       global $wgRequest;
                        $billingURL = $wgRequest->appendQuery(
                                
'renderZeroRatedBanner=true&renderwarning=yes&returnto='
                                . urlencode( $config['bannerUrl'] )
diff --git a/includes/ZeroConfigContent.php b/includes/ZeroConfigContent.php
index c87684b..78727d7 100644
--- a/includes/ZeroConfigContent.php
+++ b/includes/ZeroConfigContent.php
@@ -179,7 +179,7 @@
                        // Get localized "wikipedia" sitename. If null, will 
use default {{SITENAME}}
                        $sitename = $wgConf->get( 'wgSitename', str_replace( 
'-', '_', $langCode ) . 'wiki' );
                        $td = $td = Xml::tags( 'td', null,
-                               PageRenderingHooks::renderBanner( $conf, $lang, 
$sitename ) );
+                               PageRenderingHooks::renderBanner( $conf, false, 
$lang, $sitename ) );
                        $rows[] = Xml::tags( 'tr', null, $th . $td );
                }
                $res = Xml::tags( 'table', array( 'class' => 
'mw-zero-config-banners' ),
diff --git a/includes/ZeroSpecialPage.php b/includes/ZeroSpecialPage.php
index 82bb33d..4106ae0 100644
--- a/includes/ZeroSpecialPage.php
+++ b/includes/ZeroSpecialPage.php
@@ -38,9 +38,14 @@
                // fixme: needs lower varnish caching time
 
                $config = PageRenderingHooks::getConfig();
+               $req = $this->getRequest();
+               if ( $req->getCheck( 'renderesibanner' ) ) {
+                       $this->showBanner( $config );
+                       return;
+               }
 
-               $source = $this->getRequest()->getVal( 'from' );
-               $target = $this->getRequest()->getVal( 'to' );
+               $source = $req->getVal( 'from' );
+               $target = $req->getVal( 'to' );
                if ( $target !== null && $source !== null ) {
                        if ( $this->showWarningOrRedirect( $config, $source, 
$target ) ) {
                                return;
@@ -65,6 +70,34 @@
        }
 
        /**
+        * Render raw HTML snippet for ESI inclusion
+        * @param $config
+        */
+       private function showBanner( $config ) {
+               global $wgSquidMaxage, $wgForcedRawSMaxage;
+
+               $out = $this->getOutput();
+               $out->disable();
+
+               $request = $this->getRequest();
+               $response = $request->response();
+
+               $response->header( $out->getVaryHeader() );
+
+//             $contentType = $this->getContentType();
+//             $response->header( 'Content-type: ' . $contentType . '; 
charset=UTF-8' );
+
+               $smaxage = $request->getInt( 'smaxage' );
+               $maxage = $request->getInt( 'maxage', $wgSquidMaxage );
+               $response->header( 'Cache-Control: public, s-maxage=' . 
$smaxage . ', max-age=' . $maxage );
+
+               // fixme: handle WAP
+               $banner = PageRenderingHooks::renderBanner( $config, false );
+
+               echo $banner;
+       }
+
+       /**
         * @param Array $config Carrier configuration
         * @param string $from Title from which it came
         * @param string $toUrl Where to redirect, or shows

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib69f3b142761bd71c1b47439b6ae1be995580b76
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ZeroRatedMobileAccess
Gerrit-Branch: master
Gerrit-Owner: Yurik <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to