Yurik has uploaded a new change for review.
https://gerrit.wikimedia.org/r/90881
Change subject: New warning page
......................................................................
New warning page
Instead of a red banner, show a full page warning user of either
navigating to an external site or to a non-free image.
Change-Id: Ie668ecbdf69842d409623b985f08d71fff6e7064
---
M ZeroRatedMobileAccess.i18n.php
M ZeroRatedMobileAccess.php
M includes/PageRenderingHooks.php
M includes/ZeroSpecialPage.php
A modules/special.css
5 files changed, 192 insertions(+), 5 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ZeroRatedMobileAccess
refs/changes/81/90881/1
diff --git a/ZeroRatedMobileAccess.i18n.php b/ZeroRatedMobileAccess.i18n.php
index a983783..fe17639 100644
--- a/ZeroRatedMobileAccess.i18n.php
+++ b/ZeroRatedMobileAccess.i18n.php
@@ -29,7 +29,8 @@
'zero-rated-mobile-access-home-page-selection-text' => 'Or go to the
home page in the following language:',
'zero-rated-mobile-access-banner-text' => 'Free {{SITENAME}} from $1',
'zero-rated-mobile-access-banner-text-data-charges' => 'Standard data
charges may apply. Do you want to continue? $1 / $2',
- 'zero-rated-mobile-access-charge-auth' => 'Standard data charges may
apply. Do you want to continue?',
+ 'zero-rated-mobile-access-charge-auth' => 'You are about to leave
Zero-rated (free) {{SITENAME}}. Standard data charges may apply.',
+ 'zero-rated-mobile-access-file-auth' => 'You are about to view an
image. Images have not been made free by your mobile carrier. Standard data
charges may apply.',
'zero-rated-mobile-access-banner-text-data-charges-yes' => 'Yes',
'zero-rated-mobile-access-banner-text-data-charges-no' => 'No',
'zero-rated-mobile-access-go-back' => 'Go back',
@@ -81,7 +82,8 @@
'zero-rated-mobile-access-banner-text-data-charges' => 'Data charges
notice to user before images are displayed. Parameters:
* $1 is {{Msg-mw|zero-rated-mobile-access-banner-text-data-charges-yes}}
* $2 is {{Msg-mw|zero-rated-mobile-access-banner-text-data-charges-no}}',
- 'zero-rated-mobile-access-charge-auth' => 'Data charges authorization
question to user before images are displayed or redirects followed.',
+ 'zero-rated-mobile-access-charge-auth' => 'Data charges authorization
question to user before following redirect to an external site.',
+ 'zero-rated-mobile-access-file-auth' => 'Data charges authorization
question to user before images are displayed.',
'zero-rated-mobile-access-banner-text-data-charges-yes' => 'Text for
accepting charges.
{{Identical|Yes}}',
'zero-rated-mobile-access-banner-text-data-charges-no' => 'Text for
rejecting charges.
diff --git a/ZeroRatedMobileAccess.php b/ZeroRatedMobileAccess.php
index 32329d5..e3d77b1 100644
--- a/ZeroRatedMobileAccess.php
+++ b/ZeroRatedMobileAccess.php
@@ -63,6 +63,13 @@
'styles' => array( 'modules/banner.css' ),
);
+$wgResourceModules['mobile.zero.special'] = array(
+ 'localBasePath' => $localBasePath,
+ 'remoteExtPath' => $remoteExtPath,
+ 'targets' => array( 'mobile' ),
+ 'styles' => array( 'modules/special.css' ),
+);
+
$wgResourceModules['mobile.zero.scripts'] = array(
'dependencies' => array( 'mobile.startup' ),
'localBasePath' => $localBasePath,
diff --git a/includes/PageRenderingHooks.php b/includes/PageRenderingHooks.php
index e400928..cc92eca 100644
--- a/includes/PageRenderingHooks.php
+++ b/includes/PageRenderingHooks.php
@@ -431,9 +431,7 @@
} else {
if ( $this->isZeroSpecial ) {
$redir = $this->getRedirectInfo();
- if ( array_key_exists( 'warn', $redir ) ) {
- return self::renderWarning( $redir,
$wap );
- } elseif ( array_key_exists( 'redirect', $redir
) ) {
+ if ( array_key_exists( 'warn', $redir ) ||
array_key_exists( 'redirect', $redir ) ) {
return '';
}
}
diff --git a/includes/ZeroSpecialPage.php b/includes/ZeroSpecialPage.php
index c8fef00..8120d30 100644
--- a/includes/ZeroSpecialPage.php
+++ b/includes/ZeroSpecialPage.php
@@ -64,6 +64,10 @@
$out->addHTML( $output );
}
}
+ } else {
+ $html = $this->renderWarning( $redir );
+ $out->addModuleStyles( 'mobile.zero.special' );
+ $out->addHTML( $html );
}
}
@@ -148,4 +152,47 @@
$output .= Html::closeElement( 'select' );
return $output;
}
+
+ /**
+ * Create HTML warning of navigation to a paid resource
+ * @param array $redir that describes how redirect should be rendered
+ * @return string HTML
+ */
+ private function renderWarning( $redir )
+ {
+ // Show warning text (navigating away from the free site)
+ $from = $redir['from'];
+ $reject = wfMessage( 'zero-rated-mobile-access-go-back' );
+ $reject = <<<END
+<span class="ve-ui-pushButtonWidget ve-ui-buttonWidget ve-ui-pushButtonWidget">
+ <a class="ve-ui-buttonWidget-button" role="button" href="$from">
+ <span class="ve-ui-labeledElement-label">$reject</span>
+ </a>
+</span>
+END;
+ $to = $redir['to'];
+ $accept = wfMessage( 'zero-rated-mobile-access-accept' );
+ $accept = <<<END
+<span class="ve-ui-flaggableElement-primary ve-ui-buttonWidget
ve-ui-pushButtonWidget">
+ <a class="ve-ui-buttonWidget-button" role="button" href="$to"
tabindex="0">
+ <span class="ve-ui-labeledElement-label">$accept</span>
+ </a>
+</span>
+END;
+ $lang = $this->getLanguage();
+ if ( $lang->isRTL() ) {
+ $buttons = $accept . $reject;
+ } else {
+ $buttons = $reject . $accept;
+ }
+ $dir = $lang->getDir();
+ $msg = wfMessage( $redir['warn'] === 'file'
+ ? 'zero-rated-mobile-access-file-auth'
+ : 'zero-rated-mobile-access-charge-auth' );
+ $html = <<<END
+<div dir='$dir'>$msg</div>
+<div dir='$dir'
class="ve-init-mw-viewPageTarget-toolbar-actions">$buttons</div>
+END;
+ return $html;
+ }
}
diff --git a/modules/special.css b/modules/special.css
new file mode 100644
index 0000000..6543e31
--- /dev/null
+++ b/modules/special.css
@@ -0,0 +1,133 @@
+.ve-init-mw-viewPageTarget-toolbar-actions {
+ display: inline-block;
+ vertical-align: middle;
+ line-height: 1em;
+}
+
+.ve-init-mw-viewPageTarget-toolbar-actions > .ve-ui-pushButtonWidget {
+ margin-left: 0.25em;
+ margin-right: 0.25em;
+ margin-top: 0.2em;
+}
+
+.ve-ui-pushButtonWidget .ve-ui-buttonWidget-button {
+ display: inline-block;
+ font-size: 1em;
+ margin: 0.1em 0;
+ padding: 0.2em 0.8em;
+ border-radius: 0.3em;
+ vertical-align: top;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+ box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
+ text-align: center;
+
+ /* Animation */
+ -webkit-transition: border-color 100ms;
+ -moz-transition: border-color 100ms;
+ -o-transition: border-color 100ms;
+ transition: border-color 100ms;
+
+ /* Gray */
+ border: 1px #c9c9c9 solid;
+ background-color: #ffffff;
+ filter: progid:DXImageTransform.Microsoft.gradient(
+ GradientType=0,startColorstr=#ffffff, endColorstr=#f0f0f0
+ );
+ background-image: -webkit-gradient(
+ linear, right top, right bottom, color-stop(0%,#ffffff),
color-stop(100%,#f0f0f0)
+ );
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #f0f0f0
100%);
+ background-image: -moz-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: -ms-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: -o-linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+ background-image: linear-gradient(top, #ffffff 0%, #f0f0f0 100%);
+}
+
+.ve-ui-pushButtonWidget .ve-ui-buttonWidget-button:hover,
+.ve-ui-pushButtonWidget .ve-ui-buttonWidget-button:focus {
+ border-color: #aaa;
+}
+
+.ve-ui-pushButtonWidget .ve-ui-buttonWidget-button:active {
+ border-color: #ddd;
+ box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+ color: black;
+}
+
+.ve-ui-pushButtonWidget .ve-ui-buttonWidget-button >
.ve-ui-labeledElement-label {
+ display: inline-block;
+ vertical-align: middle;
+ line-height: 1.9em;
+}
+
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-destructive
.ve-ui-buttonWidget-button {
+ /* Red text */
+ color: #d45353;
+}
+
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-constructive
.ve-ui-buttonWidget-button {
+ /* Green */
+ border: solid 1px #c3e59a;
+ background-color: #f0fbe1;
+ filter: progid:DXImageTransform.Microsoft.gradient(
+ GradientType=0,startColorstr=#f0fbe1, endColorstr=#c3e59a
+ );
+ background-image: -webkit-gradient(
+ linear, right top, right bottom, color-stop(0%,#f0fbe1),
color-stop(100%,#c3e59a)
+ );
+ background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a
100%);
+ background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+ background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+}
+
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-constructive
.ve-ui-buttonWidget-button:hover,
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-constructive
.ve-ui-buttonWidget-button:focus {
+ border-color: #a6cf74;
+}
+
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-primary
.ve-ui-buttonWidget-button {
+ /* Blue */
+ border: solid 1px #b0d9ee;
+ background-color: #eaf4fa;
+ filter: progid:DXImageTransform.Microsoft.gradient(
+ GradientType=0,startColorstr=#eaf4fa, endColorstr=#b0d9ee
+ );
+ background-image: -webkit-gradient(
+ linear, right top, right bottom, color-stop(0%,#eaf4fa),
color-stop(100%,#b0d9ee)
+ );
+ background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee
100%);
+ background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+ background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+}
+
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-primary
.ve-ui-buttonWidget-button:hover,
+.ve-ui-pushButtonWidget.ve-ui-flaggableElement-primary
.ve-ui-buttonWidget-button:focus {
+ border-color: #84b9d4;
+}
+
+.ve-ui-buttonWidget {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+a.ve-ui-buttonWidget-button {
+ color: #333;
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.ve-ui-dialog-content .ve-ui-window-foot
.ve-ui-pushButtonWidget.ve-ui-flaggableElement-primary,
+.ve-ui-dialog-content .ve-ui-window-foot
.ve-ui-pushButtonWidget.ve-ui-flaggableElement-constructive,
+.ve-ui-dialog-content .ve-ui-window-foot
.ve-ui-pushButtonWidget.ve-ui-flaggableElement-destructive {
+ float: right;
+}
--
To view, visit https://gerrit.wikimedia.org/r/90881
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie668ecbdf69842d409623b985f08d71fff6e7064
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