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