11426: Support separate Mozorg and Pocket modes for Bedrock (#11494)
* Refactor Pocket URLConf ahead of making it a first-class URLconf
For now, the pages are still available via /externalpages/pocket/ but
the URLconf is no longer opinionated about having to have the /externalpages/
namespace in there. This means we can plug it in at the root level when
in Pocket-only mode
* Add support to package.json for easy use of Pocket mode or Mozorg mode
npm run in-mozorg-mode
npm run in-pocket-mode
* Support running in Mozorg or Pocket modes in dev or prod via Docker, via Makefile commands
* Support Mozorg or Pocket mode via env var
Setting the SITE_MODE env var to Mozorg or Pocket will now switch the site
into serving only the URLs for that particular mode.
When in Pocket mode, its pages are served from the root path, not from
the 'externalpages' namespace/module name
The default behaviour, for now, remains as is: all URLs will be served, and
Pocket URLs are served as 'external/pocket/*`
* Minor comment shuffle
* Flatten externalpages/pocket to just pocket
* Make Mozorg the default mode, with Pocket enabled via SITE_MODE env var
* Update docs to outline how to invoke Pocket mode
* Amend link to infringement reporting to be hard-coded, because can no longer reverse() it
* Amend link to bug reporting to be hard-coded, because can no longer reverse() it
* Do not use the redirection middleware when in Pocket mode - it clashes with some Pocket URLs
* Hard-code a careers listing URL, because can not reverse Mozorg URLs in Pocket mode
* Drop redunant Default SITE_MODE from docker config
* Disable Pocket integration tests, temporarily
* Ensure Pocket mode does not use bedrock.redirects as an INSTALLED_APP
* Remove pocket reference from mozorg robots.txt
* Add in robots.txt for Pocket mode, based on current state of https://getpocket.com/robots.txt
* Revert "Add in robots.txt for Pocket mode, based on current state of https://getpocket.com/robots.txt"
This reverts commit 5934b4d613
.
* Remove straggling markup from diff resolution
11
Makefile
|
@ -2,6 +2,7 @@ DC_CI = "bin/docker-compose.sh"
|
|||
DC = $(shell which docker-compose)
|
||||
DOCKER = $(shell which docker)
|
||||
TEST_DOMAIN = www.mozilla.org
|
||||
POCKET_MODE = Pocket
|
||||
|
||||
all: help
|
||||
|
||||
|
@ -57,12 +58,20 @@ pull: .env
|
|||
|
||||
rebuild: clean build
|
||||
|
||||
# Run in Mozorg-only mode, using Bedrock to serve ONLY Mozorg pages
|
||||
run: .docker-build-pull
|
||||
${DC} up assets app
|
||||
|
||||
run-prod: .docker-build-pull
|
||||
${DC} up release-local
|
||||
|
||||
# Run in Pocket-only mode, using Bedrock to serve ONLY Pocket pages _at the root path_
|
||||
run-pocket: .docker-build-pull
|
||||
-SITE_MODE=${POCKET_MODE} ${DC} up assets app
|
||||
|
||||
run-pocket-prod: .docker-build-pull
|
||||
-SITE_MODE=${POCKET_MODE} ${DC} up release-local
|
||||
|
||||
stop:
|
||||
${DC} stop
|
||||
|
||||
|
@ -159,4 +168,4 @@ install-local-python-deps:
|
|||
# Dev requirements are a superset of prod requirements
|
||||
pip install -r requirements/dev.txt
|
||||
|
||||
.PHONY: all clean build pull docs livedocs build-docs lint run stop kill run-shell shell test test-image rebuild build-ci test-ci fresh-data djshell run-prod build-prod test-cdn compile-requirements check-requirements install-local-python-deps
|
||||
.PHONY: all clean build pull docs livedocs build-docs lint run stop kill run-shell shell test test-image rebuild build-ci test-ci fresh-data djshell run-prod run-pocket run-pocket-prod build-prod test-cdn compile-requirements check-requirements install-local-python-deps
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
from bedrock.mozorg.util import page
|
||||
|
||||
urlpatterns = (
|
||||
page("pocket/about/", "externalpages/pocket/about.html"),
|
||||
page("pocket/add/", "externalpages/pocket/add.html"),
|
||||
page("pocket/android/", "externalpages/pocket/android.html"),
|
||||
page("pocket/ios/", "externalpages/pocket/ios.html"),
|
||||
page("pocket/chrome/", "externalpages/pocket/chrome.html"),
|
||||
page("pocket/safari/", "externalpages/pocket/safari.html"),
|
||||
page("pocket/opera/", "externalpages/pocket/opera.html"),
|
||||
page("pocket/edge/", "externalpages/pocket/edge.html"),
|
||||
page("pocket/welcome/", "externalpages/pocket/welcome.html"),
|
||||
page("pocket/contact-info/", "externalpages/pocket/contact-info.html"),
|
||||
page("pocket/firefox/new_tab_learn_more/", "externalpages/pocket/firefox/new-tab-learn-more.html"),
|
||||
page("pocket/pocket-and-firefox/", "externalpages/pocket/pocket-and-firefox.html"),
|
||||
page("pocket/get-inspired/", "externalpages/pocket/get-inspired.html"),
|
||||
page("pocket/jobs/", "externalpages/pocket/jobs.html"),
|
||||
page("pocket/privacy/", "externalpages/pocket/privacy.html"),
|
||||
page("pocket/tos/", "externalpages/pocket/tos.html"),
|
||||
page("pocket/save-to-pocket/", "externalpages/pocket/save-to-pocket.html"),
|
||||
)
|
|
@ -6,6 +6,5 @@ disallow: /*/firstrun/
|
|||
disallow: /*/newsletter/existing/
|
||||
disallow: /*/whatsnew/
|
||||
disallow: /*/etc/
|
||||
disallow: /*/external/
|
||||
{% endif -%}
|
||||
Sitemap: {{ request.scheme }}://{{ request.get_host() }}/sitemap.xml
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% block page_title %}About Us{% endblock %}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
|
||||
<div class="intro-wrapper">
|
||||
<section class="about-section first">
|
||||
|
@ -61,7 +61,7 @@
|
|||
<p class="about-cta-body">Download our images and press kit <a id="press-page" href="https://blog.getpocket.com/press/">here</a>.</p>
|
||||
</section>
|
||||
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
{% endblock %}
|
||||
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -17,14 +17,14 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/platform-nav.html' %}
|
||||
{% include 'pocket/includes/platform-nav.html' %}
|
||||
|
||||
<div class="add-page">
|
||||
<section class="add-header">
|
||||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-t-content-xl mzp-l-split-reversed mzp-l-split-body-narrow',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/add-pocket-header.jpg',
|
||||
image_url='img/pocket/add-pocket-header.jpg',
|
||||
)%}
|
||||
<h2>Save to Pocket from Firefox</h2>
|
||||
<p>Click the Pocket button in your Firefox toolbar to save articles, videos, pages, and more.</p>
|
||||
|
@ -41,15 +41,15 @@
|
|||
<h2>View from any Device</h2>
|
||||
<div class="device-context">
|
||||
<div class="device-image">
|
||||
<img src="{{ static('img/externalpages/pocket/add-any-device.jpg') }}" alt="Different devices displaying Pocket articles">
|
||||
<img src="{{ static('img/pocket/add-any-device.jpg') }}" alt="Different devices displaying Pocket articles">
|
||||
</div>
|
||||
<div class="app-stores">
|
||||
<h3>Get Pocket for:</h3>
|
||||
<ul class="app-store-list">
|
||||
<li class="app-store-badge" aria-label="ios store"><a href="https://apps.apple.com/app/read-it-later-pro/id309601447" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/externalpages/pocket/app-button-apple.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="mac app store"><a href="https://apps.apple.com/app/pocket/id568494494?ls=1&mt=12" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/externalpages/pocket/app-button-mac.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="google play store"><a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/externalpages/pocket/app-button-google.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="amazon app store"><a href="https://www.amazon.com/dp/B0057PAY8G" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/externalpages/pocket/app-button-amazon.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="ios store"><a href="https://apps.apple.com/app/read-it-later-pro/id309601447" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/pocket/app-button-apple.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="mac app store"><a href="https://apps.apple.com/app/pocket/id568494494?ls=1&mt=12" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/pocket/app-button-mac.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="google play store"><a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/pocket/app-button-google.png') }}" alt=""></a></li>
|
||||
<li class="app-store-badge" aria-label="amazon app store"><a href="https://www.amazon.com/dp/B0057PAY8G" target="_blank" rel="noopener noreferrer" class="dark-inline-link"><img src="{{ static('img/pocket/app-button-amazon.png') }}" alt=""></a></li>
|
||||
</ul>
|
||||
<ul class="device-list">
|
||||
<li><a href="https://chrome.google.com/webstore/detail/save-to-pocket/niloccemoadcdkdjlinkgdfekeahmflj?hl=en" target="_blank" rel="noopener noreferrer" class="dark-inline-link rarrow">Windows</a></li>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<h3>Save via e-mail</h3>
|
||||
<p>email any link to your list by sending it to <a href="mailto:add@getpocket.com" class="dark-inline-link">add@getpocket.com</a> </p>
|
||||
<div class="save-email-image">
|
||||
<img src="{{ static('img/externalpages/pocket/save-via-email.png') }}" alt="">
|
||||
<img src="{{ static('img/pocket/save-via-email.png') }}" alt="">
|
||||
</div>
|
||||
<a href="https://help.getpocket.com/article/1020-saving-to-pocket-via-email" target="_blank" rel="noopener noreferrer" class="dark-inline-link rarrow">Learn more</a>
|
||||
</div>
|
||||
|
@ -81,22 +81,22 @@
|
|||
<ul class="app-board">
|
||||
<li class="app-icon" aria-label="twitter">
|
||||
<a href="https://twitter.com" target="_blank" rel="external noopener">
|
||||
<img src="{{ static('img/externalpages/pocket/pocket-twitter.svg') }}" alt="">
|
||||
<img src="{{ static('img/pocket/pocket-twitter.svg') }}" alt="">
|
||||
</a>
|
||||
</li>
|
||||
<li class="app-icon" aria-label="flipboard">
|
||||
<a href="https://flipboard.com" target="_blank" rel="external noopener">
|
||||
<img src="{{ static('img/externalpages/pocket/pocket-flipboard.svg') }}" alt="">
|
||||
<img src="{{ static('img/pocket/pocket-flipboard.svg') }}" alt="">
|
||||
</a>
|
||||
</li>
|
||||
<li class="app-icon" aria-label="tweetbot">
|
||||
<a href="https://tapbots.com/tweetbot/" target="_blank" rel="external noopener">
|
||||
<img src="{{ static('img/externalpages/pocket/pocket-tweetbot.svg') }}" alt="">
|
||||
<img src="{{ static('img/pocket/pocket-tweetbot.svg') }}" alt="">
|
||||
</a>
|
||||
</li>
|
||||
<li class="app-icon" aria-label="feedly">
|
||||
<a href="https://feedly.com" target="_blank" rel="external noopener">
|
||||
<img src="{{ static('img/externalpages/pocket/pocket-feedly.svg') }}" alt="">
|
||||
<img src="{{ static('img/pocket/pocket-feedly.svg') }}" alt="">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -112,6 +112,6 @@
|
|||
</section>
|
||||
</div>
|
||||
|
||||
{% include 'externalpages/pocket/includes/platform-footer.html' %}
|
||||
{% include 'pocket/includes/platform-footer.html' %}
|
||||
|
||||
{% endblock %}
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-android.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-android.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Android{% endblock %}
|
||||
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-chrome.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-chrome.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Chrome{% endblock %}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% block page_title %}Contact Info{% endblock %}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
<section class="mzp-l-content mzp-t-content-xl">
|
||||
<h1 class="contact-info-header">Contact info</h1>
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
|||
<p class="contact-info-body-text">To view all open positions at Pocket, please visit our <a href="https://getpocket.com/jobs">Jobs Page</a>.</p>
|
||||
|
||||
<h2 class="contact-info-subheader">Security</h2>
|
||||
<p class="contact-info-body-text">If you believe you have discovered a security vulnerability in Pocket, please follow Mozilla’s bug reporting process documented on <a href="{{ url('mozorg.about.governance.policies.security.bugs') }}">Mozilla’s Security page</a>.</p>
|
||||
<p class="contact-info-body-text">If you believe you have discovered a security vulnerability in Pocket, please follow Mozilla’s bug reporting process documented on <a href="https://www.mozilla.org/en-US/about/governance/policies/security-group/bugs/">Mozilla’s Security page</a>.</p>
|
||||
<p class="contact-info-body-text">For questions related to security, please contact us at <a href="mailto:security@getpocket.com">security@getpocket.com</a>.</p>
|
||||
|
||||
<h2 class="contact-info-subheader">Follow Us</h2>
|
||||
|
@ -51,5 +51,5 @@
|
|||
<a href="tel:4156926111" aria-label="4 1 5. 6 9 2. 6 1 1 1.">415-692-6111</a>
|
||||
</address>
|
||||
</section>
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
{% endblock %}
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-edge.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-edge.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Edge{% endblock %}
|
||||
|
|
@ -4,7 +4,7 @@ License, v. 2.0. If a copy of the MPL was not distributed with this
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -25,7 +25,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md new-tab-section top',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/new-tab/pocket-list.png',
|
||||
image_url='img/pocket/new-tab/pocket-list.png',
|
||||
)%}
|
||||
<p class="section-top-header-lede">POCKET FOR FIREFOX</p>
|
||||
<h2 class="new-tab-section-header top">Build your personal library of fascinating reads.</h2>
|
||||
|
@ -40,7 +40,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
class="mzp-c-split mzp-l-split-center-on-sm-md mzp-t-content-xl mzp-l-split-reversed mzp-t-split-nospace new-tab-section">
|
||||
<div class="mzp-c-split-container">
|
||||
<div class="mzp-c-split-media mzp-l-split-h-center mzp-l-split-media-overflow hidden-gem-media">
|
||||
<img class="mzp-c-split-media-asset" src="/media/img/externalpages/pocket/new-tab/hidden-gem.svg" alt="" loading="eager">
|
||||
<img class="mzp-c-split-media-asset" src="/media/img/pocket/new-tab/hidden-gem.svg" alt="" loading="eager">
|
||||
</div>
|
||||
<div class="mzp-c-split-body hidden-gem-body">
|
||||
<h2 class="new-tab-section-header">Finding the hidden gems. Respecting your privacy.</h2>
|
||||
|
@ -51,7 +51,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-t-content-xl mzp-t-split-nospace new-tab-section',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/new-tab/fortress.svg',
|
||||
image_url='img/pocket/new-tab/fortress.svg',
|
||||
)%}
|
||||
<h2 class="new-tab-section-header">Your data stays private. Always.</h2>
|
||||
<p class="new-tab-section-body">In addition to dishing up captivating stories, we also show you relevant, highly-vetted content from select sponsors. Rest assured, your browsing data never leaves your personal copy of Firefox—we don’t see it, and our sponsors don’t either. Want more details? Here’s the full scoop on <a href="https://help.getpocket.com/article/1142-firefox-new-tab-recommendations-faq#personalized">how privacy works in Pocket.</a></p>
|
||||
|
@ -60,7 +60,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
block_class='mzp-l-split-center-on-sm-md mzp-t-content-lg mzp-l-split-reversed mzp-t-split-nospace new-tab-section',
|
||||
media_class='mzp-l-split-h-center',
|
||||
body_class="new-tab-books-body",
|
||||
image_url='img/externalpages/pocket/new-tab/books.svg',
|
||||
image_url='img/pocket/new-tab/books.svg',
|
||||
)%}
|
||||
<h2 class="new-tab-section-header">Fuel your mind with even more fascinating stories.</h2>
|
||||
<p class="new-tab-section-body">Check out Pocket’s <a href="https://getpocket.com/explore">Must Reads</a> for some of the best articles on the web. And get thought-provoking stories delivered to you daily by subscribing to <a href="https://getpocket.com/explore/pocket-hits-signup">Pocket’s newsletter</a>.</p>
|
||||
|
@ -68,7 +68,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-t-content-xl mzp-t-split-nospace new-tab-section',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/new-tab/lounge.svg',
|
||||
image_url='img/pocket/new-tab/lounge.svg',
|
||||
)%}
|
||||
<h2 class="new-tab-section-header">Save in Pocket & read on your own time.</h2>
|
||||
<p class="new-tab-section-body">Built right into Firefox, Pocket also lets you save stories and come back to them when you’re ready.</p>
|
||||
|
@ -76,7 +76,7 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
{% endcall %}
|
||||
</section>
|
||||
<section class="mzp-l-content">
|
||||
<img class="details-img" src="{{ static('img/externalpages/pocket/new-tab/sign.svg') }}" />
|
||||
<img class="details-img" src="{{ static('img/pocket/new-tab/sign.svg') }}" />
|
||||
<div>
|
||||
<h2 class="new-tab-section-header">You make the call.</h2>
|
||||
<div class="helpful-links-wrapper">
|
||||
|
@ -91,8 +91,8 @@ file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|||
</div>
|
||||
</section>
|
||||
<section class="grass-graphic">
|
||||
<img class="left-grass" src="{{ static('img/externalpages/pocket/new-tab/grass-footer-left.png') }}" />
|
||||
<img class="right-grass" src="{{ static('img/externalpages/pocket/new-tab/grass-footer-right.png') }}" />
|
||||
<img class="left-grass" src="{{ static('img/pocket/new-tab/grass-footer-left.png') }}" />
|
||||
<img class="right-grass" src="{{ static('img/pocket/new-tab/grass-footer-right.png') }}" />
|
||||
</section>
|
||||
<footer class="new-tab-footer mzp-t-dark">
|
||||
<span class="mzp-c-wordmark mzp-t-wordmark-xs mzp-t-product-pocket">Pocket</span>
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -17,19 +17,19 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
|
||||
<section>
|
||||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/save-inspirations.png',
|
||||
image_url='img/pocket/save-inspirations.png',
|
||||
)%}
|
||||
<h1 class="section-heading">Save what inspires you</h1>
|
||||
<p class="section-lede">Pocket is your save button for the internet. When a story catches your eye anywhere online, save it to Pocket and it’ll go straight to your list, ready for you to dig into when you’re free.</p>
|
||||
<div class="app-store-badges">
|
||||
<a href="https://apps.apple.com/us/app/pocket-save-read-grow/" target="_blank" rel="noopener noreferrer" class="apple-store"><img src="{{ static('img/externalpages/pocket/app-button-apple.png') }}" alt="Get it from the Apple Store"></a>
|
||||
<a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="google-play-store"><img src="{{ static('img/externalpages/pocket/app-button-google.png') }}" alt="Get it from Google Play Store"></a>
|
||||
<a href="https://apps.apple.com/us/app/pocket-save-read-grow/" target="_blank" rel="noopener noreferrer" class="apple-store"><img src="{{ static('img/pocket/app-button-apple.png') }}" alt="Get it from the Apple Store"></a>
|
||||
<a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="google-play-store"><img src="{{ static('img/pocket/app-button-google.png') }}" alt="Get it from Google Play Store"></a>
|
||||
</div>
|
||||
{% endcall %}
|
||||
</section>
|
||||
|
@ -38,7 +38,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-l-split-reversed pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/focused-reading.png',
|
||||
image_url='img/pocket/focused-reading.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Special features for focused reading</h2>
|
||||
<p class="section-lede">Use the Pocket app to listen to stories with our audio playback option. Customize how you see stories in Pocket with dark mode and font options. Keep track of your saves with tags, and preserve important passages with highlights. You can even read offline.</p>
|
||||
|
@ -49,7 +49,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/reading-nook.png',
|
||||
image_url='img/pocket/reading-nook.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Your private reading nook</h2>
|
||||
<p class="section-lede">When you’re ready to dig into what you’ve saved, Pocket provides a quiet, calm space that’s perfect for reading. It strips away all the distractions of the internet — like flashing banners and pop-ups — so you can really focus.</p>
|
||||
|
@ -61,13 +61,13 @@
|
|||
Start building your personal library now
|
||||
</h2>
|
||||
<div class="app-store-badges">
|
||||
<a href="https://apps.apple.com/us/app/pocket-save-read-grow/" target="_blank" rel="noopener noreferrer" class="apple-store"><img src="{{ static('img/externalpages/pocket/app-button-apple.png') }}" alt="Get it from the Apple Store"></a>
|
||||
<a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="google-play-store"><img src="{{ static('img/externalpages/pocket/app-button-google.png') }}" alt="Get it from Google Play Store"></a>
|
||||
<a href="https://apps.apple.com/us/app/pocket-save-read-grow/" target="_blank" rel="noopener noreferrer" class="apple-store"><img src="{{ static('img/pocket/app-button-apple.png') }}" alt="Get it from the Apple Store"></a>
|
||||
<a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro" target="_blank" rel="noopener noreferrer" class="google-play-store"><img src="{{ static('img/pocket/app-button-google.png') }}" alt="Get it from Google Play Store"></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% include 'externalpages/pocket/includes/pocket-premium.html' %}
|
||||
{% include 'pocket/includes/pocket-premium.html' %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
|
||||
{% endblock %}
|
|
@ -66,14 +66,14 @@
|
|||
<a class="app-download-link"
|
||||
href="https://apps.apple.com/us/app/pocket-save-read-grow/id309601447" target="_blank"
|
||||
rel="noopener noreferrer">
|
||||
<img src="{{ static('img/externalpages/pocket/apple-app-store-badge.svg') }}" alt="Download On the Apple App Store">
|
||||
<img src="{{ static('img/pocket/apple-app-store-badge.svg') }}" alt="Download On the Apple App Store">
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="app-download-link google-play-badge"
|
||||
href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro"
|
||||
target="_blank" rel="noopener noreferrer">
|
||||
<img src="{{ static('img/externalpages/pocket/google-play-badge.png') }}" alt="Get It On Google Play">
|
||||
<img src="{{ static('img/pocket/google-play-badge.png') }}" alt="Get It On Google Play">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% include 'externalpages/pocket/includes/mobile-nav.html' %}
|
||||
{% include 'pocket/includes/mobile-nav.html' %}
|
||||
|
||||
<header class="pocket-header">
|
||||
<nav class="global-nav-container">
|
|
@ -8,7 +8,7 @@
|
|||
<a href="https://getpocket.com/premium" target="_blank" rel="external noopener">
|
||||
<div class="pocket-premium-wrapper">
|
||||
<div class="premium-diamond">
|
||||
<img src="{{ static('img/externalpages/pocket/colorful-diamond.gif') }}" alt="">
|
||||
<img src="{{ static('img/pocket/colorful-diamond.gif') }}" alt="">
|
||||
</div>
|
||||
<p>Ready for the ultimate Pocket experience? Get <span>Pocket Premium</span> and you’ll have access to our full array of features, including a personal, backed-up copy of everything you save.</p>
|
||||
</div>
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-ios.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-ios.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for iOS{% endblock %}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -15,11 +15,11 @@
|
|||
{% block page_title %}Jobs{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
<div class="mzp-l-content mzp-t-content-xl pocket-jobs-wrapper">
|
||||
<h1>Join the Pocket Team</h1>
|
||||
<figure>
|
||||
{{ high_res_img('img/externalpages/pocket/jobs/jobs-team.jpg', {'alt': '', 'width': '745', 'height': '408'}) }}
|
||||
{{ high_res_img('img/pocket/jobs/jobs-team.jpg', {'alt': '', 'width': '745', 'height': '408'}) }}
|
||||
<figcaption>Photo by Gaurang Katre</figcaption>
|
||||
</figure>
|
||||
<p>We invite you to become a vital part of our small team in San Francisco. We’re building a company that enables people to save and consume content that is worthy of both their time and attention. By doing so, we want to make it easier to spend time with more high-quality content, no matter how noisy it gets.</p>
|
||||
|
@ -29,13 +29,13 @@
|
|||
<p>If that sounds compelling, we’d love to meet you.</p>
|
||||
<section>
|
||||
<h2>Current Positions</h2>
|
||||
<a href="{{ url('careers.listings') }}?team=Core%20Product-Pocket">See our latest job openings</a>
|
||||
<a href="https://www.mozilla.org/en-US/careers/listings/?team=Core%20Product-Pocket">See our latest job openings</a>
|
||||
<figure class="figure-group" role="group">
|
||||
<figure>
|
||||
{{ high_res_img('img/externalpages/pocket/jobs/jobs-chat.jpg', {'alt': '', 'width': '360', 'height': '240'}) }}
|
||||
{{ high_res_img('img/pocket/jobs/jobs-chat.jpg', {'alt': '', 'width': '360', 'height': '240'}) }}
|
||||
</figure>
|
||||
<figure>
|
||||
{{ high_res_img('img/externalpages/pocket/jobs/jobs-planning.jpg', {'alt': '', 'width': '360', 'height': '240'}) }}
|
||||
{{ high_res_img('img/pocket/jobs/jobs-planning.jpg', {'alt': '', 'width': '360', 'height': '240'}) }}
|
||||
</figure>
|
||||
<figcaption>Photo by <a href="http://www.themogli.com/">Mogli</a></figcaption>
|
||||
</figure>
|
||||
|
@ -66,5 +66,5 @@
|
|||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
{% endblock %}
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-opera.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-opera.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Opera{% endblock %}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/platform-nav.html' %}
|
||||
{% include 'pocket/includes/platform-nav.html' %}
|
||||
<div class="platform">
|
||||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-t-content-lg mzp-l-split-reversed mzp-l-split-hide-media-on-sm-md',
|
||||
|
@ -28,5 +28,5 @@
|
|||
<a href="{{ self.page_url() }}" class="mzp-c-button" target="_blank" rel="external noopener">{{ self.page_cta() }}</a>
|
||||
{% endcall %}
|
||||
</div>
|
||||
{% include 'externalpages/pocket/includes/platform-footer.html' %}
|
||||
{% include 'pocket/includes/platform-footer.html' %}
|
||||
{% endblock %}
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -17,13 +17,13 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
|
||||
<section>
|
||||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/save-inspirations.png',
|
||||
image_url='img/pocket/save-inspirations.png',
|
||||
)%}
|
||||
<span class="tagline">Pocket for Firefox</span>
|
||||
<h1 class="section-heading">Build your personal library of fascinating reads.</h1>
|
||||
|
@ -47,7 +47,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/reading-nook.png',
|
||||
image_url='img/pocket/reading-nook.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Your private reading nook</h2>
|
||||
<p class="section-lede">When you’re ready to dig into what you’ve saved, Pocket provides a quiet, calm space that’s perfect for reading. It strips away all the distractions of the internet — like flashing banners and pop-ups — so you can really focus.</p>
|
||||
|
@ -58,7 +58,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-l-split-reversed pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/focused-reading.png',
|
||||
image_url='img/pocket/focused-reading.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Special features for focused reading</h2>
|
||||
<p class="section-lede">Use the Pocket app to listen to stories with our audio playback option. Customize how you see stories in Pocket with dark mode and font options. Keep track of your saves with tags, and preserve important passages with highlights. You can even read offline.</p>
|
||||
|
@ -70,7 +70,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/save-button-doodle.svg',
|
||||
image_url='img/pocket/save-button-doodle.svg',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Your save button for the internet</h2>
|
||||
<p class="section-lede">Click the <span class="pocket-logo-inline">Pocket Logo</span> button in Firefox anytime you see something you’d like to save, wherever you are online. It’ll go straight to your list in Pocket, ready for you to dig into when you’re free.</p>
|
||||
|
@ -93,8 +93,8 @@
|
|||
</section>
|
||||
|
||||
|
||||
{% include 'externalpages/pocket/includes/pocket-premium.html' %}
|
||||
{% include 'pocket/includes/pocket-premium.html' %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
|
||||
{% endblock %}
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
|||
{% block page_title %}Privacy{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
<div class="mzp-l-content mzp-t-content-xl pocket-privacy-wrapper">
|
||||
<section>
|
||||
<h1>Privacy Policy</h1>
|
||||
|
@ -139,5 +139,5 @@
|
|||
<p>Europeans who believe a privacy complaint is unresolved have the right to lodge a complaint with the supervisory authority of their Member State.</p>
|
||||
</section>
|
||||
</div>
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
{% endblock %}
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-safari.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-safari.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Safari{% endblock %}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -17,13 +17,13 @@
|
|||
|
||||
{% block content %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
|
||||
<section>
|
||||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/save-inspirations.png',
|
||||
image_url='img/pocket/save-inspirations.png',
|
||||
)%}
|
||||
<h1 class="section-heading">Build a home for everything that interests you with Pocket.</h1>
|
||||
<p class="section-lede">Use Pocket to save anything that sparks your curiosity and enjoy it when you’re ready to focus. In no time your list will become a personal library filled with enticing content to inform, inspire, and fuel you.</p>
|
||||
|
@ -40,7 +40,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-l-split-reversed pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/save-button-doodle.svg',
|
||||
image_url='img/pocket/save-button-doodle.svg',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Save from anywhere on the web</h2>
|
||||
<p class="section-lede">Once you’ve signed up, add the <span class="pocket-logo-inline">Pocket Logo</span> button to your browser for the fastest and easiest way to save articles, videos, and links to your personal library.</p>
|
||||
|
@ -52,7 +52,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/reading-nook.png',
|
||||
image_url='img/pocket/reading-nook.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Absorb content in a quiet space</h2>
|
||||
<p class="section-lede">Away from flashing banners and internet pop-ups, you’ll be able to read, watch, or listen to everything you’ve collected.</p>
|
||||
|
@ -64,7 +64,7 @@
|
|||
{% call split(
|
||||
block_class='mzp-l-split-center-on-sm-md mzp-l-split-reversed pocket-feature-page-split',
|
||||
media_class='mzp-l-split-h-center',
|
||||
image_url='img/externalpages/pocket/focused-reading.png',
|
||||
image_url='img/pocket/focused-reading.png',
|
||||
)%}
|
||||
<h2 class="sub-section-heading">Customize your experience</h2>
|
||||
<ul class="section-lede">
|
||||
|
@ -88,8 +88,8 @@
|
|||
</div>
|
||||
</section>
|
||||
|
||||
{% include 'externalpages/pocket/includes/pocket-premium.html' %}
|
||||
{% include 'pocket/includes/pocket-premium.html' %}
|
||||
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
|
||||
{% endblock %}
|
|
@ -4,7 +4,7 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/base.html" %}
|
||||
{% extends "pocket/base.html" %}
|
||||
|
||||
{% from "macros-protocol.html" import split with context %}
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
|||
{% block page_title %}Terms of Service{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% include 'externalpages/pocket/includes/nav.html' %}
|
||||
{% include 'pocket/includes/nav.html' %}
|
||||
<div class="mzp-l-content mzp-t-content-xl pocket-terms-wrapper">
|
||||
<section>
|
||||
<h1>Terms of Service</h1>
|
||||
|
@ -92,7 +92,7 @@
|
|||
<h2>Copyright infringement</h2>
|
||||
<p>The videos, articles and other content made available on third-party websites may be protected by copyright and other applicable laws. Some content may not be reproduced, used to prepare derivative works, distributed, performed publicly or displayed publicly without the written permission of the copyright holder, except to the extent allowed under the "fair use" provisions of the U.S. copyright laws, other limitations on exclusive copyrights in the U.S. copyright laws, or comparable provisions of foreign laws. Other content may have re-use permissions attached. Please refer to the website you were visiting when you saved such content for information that may be applicable to such content.</p>
|
||||
<p>You represent and agree that the Pocket application will be used solely for your personal-noncommercial use with respect to content of websites that you have the lawful right to access, and that the Pocket application will not be used in violation of the restrictions posted on the website where such content was published. Some websites include security measures designed to prevent access, and you agree not to take any steps to defeat any such security measures. We do not necessarily monitor any materials posted, transmitted, or saved to or with the Pocket Technologies. By posting, sharing or saving any videos, articles or content, you represent that doing so does not infringe any third party’s copyrights, trademarks, privacy rights or other intellectual property or legal rights of any kind. If notified that any user has posted, shared or saved any information or materials which allegedly do not conform to this Agreement, we may in our sole discretion investigate the allegation and determine whether to take any other actions, including, but not limited to, whether to remove or request the removal of the information or materials posted, shared or saved by a user. We also reserve the right to terminate the account of any user who transfers or saves content in violation of this Agreement. We shall have no liability or responsibility to users for performance or nonperformance of such activities. You may be subject to civil and criminal penalties, including without limitation monetary damages, if you violate the terms of this Agreement or infringe any third party’s legal rights.</p>
|
||||
<p>If you believe that your copyrighted work or trademark has been infringed, please contact us and provide all information relevant to any claim of copyright or trademark infringement. Please contact us as described on Mozilla's <a href="{{ url('legal.report-infringement') }}">Report Copyright or Trademark Infringement page</a>.</p>
|
||||
<p>If you believe that your copyrighted work or trademark has been infringed, please contact us and provide all information relevant to any claim of copyright or trademark infringement. Please contact us as described on Mozilla's <a href="https://www.mozilla.org/en-US/about/legal/report-infringement/">Report Copyright or Trademark Infringement page</a>.</p>
|
||||
</section>
|
||||
|
||||
<section id="thirdparty">
|
||||
|
@ -209,5 +209,5 @@
|
|||
<p>Copyright © 2012-2021 Mozilla Corporation All rights reserved.</p>
|
||||
</section>
|
||||
</div>
|
||||
{% include 'externalpages/pocket/includes/footer.html' %}
|
||||
{% include 'pocket/includes/footer.html' %}
|
||||
{% endblock %}
|
|
@ -4,9 +4,9 @@
|
|||
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#}
|
||||
|
||||
{% extends "externalpages/pocket/platform-pages.html" %}
|
||||
{% extends "pocket/platform-pages.html" %}
|
||||
|
||||
{% set platform_image = 'img/externalpages/pocket/welcome-bookmarklet.jpg' %}
|
||||
{% set platform_image = 'img/pocket/welcome-bookmarklet.jpg' %}
|
||||
|
||||
{% block page_title %}Pocket for Your Browser{% endblock %}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
from bedrock.mozorg.util import page
|
||||
|
||||
urlpatterns = (
|
||||
page("about/", "pocket/about.html"),
|
||||
page("add/", "pocket/add.html"),
|
||||
page("android/", "pocket/android.html"),
|
||||
page("ios/", "pocket/ios.html"),
|
||||
page("chrome/", "pocket/chrome.html"),
|
||||
page("safari/", "pocket/safari.html"),
|
||||
page("opera/", "pocket/opera.html"),
|
||||
page("edge/", "pocket/edge.html"),
|
||||
page("welcome/", "pocket/welcome.html"),
|
||||
page("contact-info/", "pocket/contact-info.html"),
|
||||
page("firefox/new_tab_learn_more/", "pocket/firefox/new-tab-learn-more.html"),
|
||||
page("pocket-and-firefox/", "pocket/pocket-and-firefox.html"),
|
||||
page("get-inspired/", "pocket/get-inspired.html"),
|
||||
page("jobs/", "pocket/jobs.html"),
|
||||
page("privacy/", "pocket/privacy.html"),
|
||||
page("tos/", "pocket/tos.html"),
|
||||
page("save-to-pocket/", "pocket/save-to-pocket.html"),
|
||||
)
|
|
@ -7,12 +7,6 @@ import sys
|
|||
|
||||
from .base import * # noqa
|
||||
|
||||
try:
|
||||
from .local import * # noqa
|
||||
except ImportError:
|
||||
"local.py is supported, but no longer necessary"
|
||||
|
||||
|
||||
if DEV:
|
||||
ALLOWED_HOSTS = ["*"]
|
||||
else:
|
||||
|
@ -94,7 +88,34 @@ MEDIA_URL = CDN_BASE_URL + MEDIA_URL
|
|||
STATIC_URL = CDN_BASE_URL + STATIC_URL
|
||||
logging.config.dictConfig(LOGGING)
|
||||
|
||||
# OPERATION MODE SELECTION
|
||||
# Which site do we want Bedrock to serve?
|
||||
POCKET_SITE_MODE = "Pocket"
|
||||
MOZORG_SITE_MODE = "Mozorg"
|
||||
|
||||
site_mode = config("SITE_MODE", default=MOZORG_SITE_MODE)
|
||||
|
||||
if site_mode == POCKET_SITE_MODE:
|
||||
ROOT_URLCONF = "bedrock.urls.pocket_mode"
|
||||
|
||||
# DROP the redirects app and middleware, because it's contains Mozorg-specific rules that
|
||||
# clash with some Pocket URL paths (eg /jobs/)
|
||||
INSTALLED_APPS.pop(INSTALLED_APPS.index("bedrock.redirects"))
|
||||
MIDDLEWARE.pop(MIDDLEWARE.index("bedrock.redirects.middleware.RedirectsMiddleware"))
|
||||
|
||||
# TODO: define in Pocket-appropriate versions of
|
||||
# DEV_LANGUAGES, PROD_LANGUAGES, CANONICAL_LOCALES,
|
||||
# FLUENT_* overrides for Pocket L10N, etc
|
||||
else:
|
||||
ROOT_URLCONF = "bedrock.urls.mozorg_mode"
|
||||
# TODO: move Mozorg-appropriate versions of
|
||||
# DEV_LANGUAGES, PROD_LANGUAGES, CANONICAL_LOCALES,
|
||||
# FLUENT_* overrides for Pocket L10N into this file
|
||||
|
||||
# TEST-SPECIFIC SETTINGS
|
||||
# TODO: make this selectable by an env var, like the other modes
|
||||
if (len(sys.argv) > 1 and sys.argv[1] == "test") or "pytest" in sys.modules:
|
||||
|
||||
# Using the CachedStaticFilesStorage for tests breaks all the things.
|
||||
STATICFILES_STORAGE = "django.contrib.staticfiles.storage.StaticFilesStorage"
|
||||
# TEMPLATE_DEBUG has to be True for Jinja to call the template_rendered
|
||||
|
@ -105,3 +126,5 @@ if (len(sys.argv) > 1 and sys.argv[1] == "test") or "pytest" in sys.modules:
|
|||
PROD_DETAILS_STORAGE = "product_details.storage.PDFileStorage"
|
||||
|
||||
DATABASES["default"] = {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}
|
||||
|
||||
sys.stdout.write(f"Using SITE_MODE of '{site_mode}' and ROOT_URLCONF of '{ROOT_URLCONF}'\n")
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
"""IMPORTANT: bedrock/settings/__init__.py contains important logic that determines
|
||||
which site will be served.
|
||||
"""
|
||||
|
||||
import json
|
||||
import platform
|
||||
import socket
|
||||
|
@ -235,6 +239,8 @@ PROD_LANGUAGES = (
|
|||
|
||||
GITHUB_REPO = "https://github.com/mozilla/bedrock"
|
||||
|
||||
# Default l10n config is for mozorg. See settings/__init__.py for where we [will] plug in
|
||||
# an alternative Pocket-appropriate l10n setup.
|
||||
# Global L10n files.
|
||||
FLUENT_DEFAULT_FILES = [
|
||||
"banners/firefox-app-store",
|
||||
|
@ -455,7 +461,6 @@ NOINDEX_URLS = [
|
|||
r"^foundation/annualreport/$" r"^firefox/notes/$" r"^teach/$" r"^about/legal/impressum/$",
|
||||
r"^security/announce/",
|
||||
r"^exp/",
|
||||
r"^external/",
|
||||
]
|
||||
|
||||
# Pages we do want indexed but don't show up in automated URL discovery
|
||||
|
@ -511,8 +516,6 @@ WHITENOISE_MAX_AGE = 6 * 60 * 60 # 6 hours
|
|||
|
||||
PROJECT_MODULE = "bedrock"
|
||||
|
||||
ROOT_URLCONF = "bedrock.urls"
|
||||
|
||||
|
||||
def get_app_name(hostname):
|
||||
"""
|
||||
|
@ -561,7 +564,7 @@ ENABLE_CSP_MIDDLEWARE = config("ENABLE_CSP_MIDDLEWARE", default="true", parser=b
|
|||
if ENABLE_CSP_MIDDLEWARE:
|
||||
MIDDLEWARE.append("csp.middleware.CSPMiddleware")
|
||||
|
||||
INSTALLED_APPS = (
|
||||
INSTALLED_APPS = [
|
||||
# Django contrib apps
|
||||
"django.contrib.auth",
|
||||
"django.contrib.contenttypes",
|
||||
|
@ -587,7 +590,7 @@ INSTALLED_APPS = (
|
|||
"bedrock.privacy",
|
||||
"bedrock.products",
|
||||
"bedrock.externalfiles",
|
||||
"bedrock.externalpages",
|
||||
"bedrock.pocket",
|
||||
"bedrock.security",
|
||||
"bedrock.releasenotes",
|
||||
"bedrock.contentcards",
|
||||
|
@ -603,7 +606,7 @@ INSTALLED_APPS = (
|
|||
# libs
|
||||
"django_extensions",
|
||||
"lib.l10n_utils",
|
||||
)
|
||||
]
|
||||
|
||||
# Must match the list at CloudFlare if the
|
||||
# VaryNoCacheMiddleware is enabled. The home
|
||||
|
|
|
@ -30,7 +30,6 @@ urlpatterns = (
|
|||
path("", include("bedrock.sitemaps.urls")),
|
||||
path("careers/", include("bedrock.careers.urls")),
|
||||
path("exp/", include("bedrock.exp.urls")),
|
||||
path("external/", include("bedrock.externalpages.urls")),
|
||||
path("healthz/", watchman_views.ping, name="watchman.ping"),
|
||||
path("readiness/", watchman_views.status, name="watchman.status"),
|
||||
path("healthz-cron/", base_views.cron_health_check),
|
|
@ -0,0 +1,31 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
from django.conf import settings
|
||||
from django.urls import include, path
|
||||
from django.utils.module_loading import import_string
|
||||
|
||||
from watchman import views as watchman_views
|
||||
|
||||
from bedrock.base import views as base_views
|
||||
|
||||
# The default django 404 and 500 handler doesn't run the ContextProcessors,
|
||||
# which breaks the base template page. So we replace them with views that do!
|
||||
handler500 = "bedrock.base.views.server_error_view"
|
||||
handler404 = "bedrock.base.views.page_not_found_view"
|
||||
|
||||
|
||||
urlpatterns = (
|
||||
path("", include("bedrock.pocket.urls")),
|
||||
path("healthz/", watchman_views.ping, name="watchman.ping"),
|
||||
path("readiness/", watchman_views.status, name="watchman.status"),
|
||||
path("healthz-cron/", base_views.cron_health_check),
|
||||
)
|
||||
|
||||
if settings.DEBUG:
|
||||
|
||||
urlpatterns += (
|
||||
path("404/", import_string(handler404)),
|
||||
path("500/", import_string(handler500)),
|
||||
)
|
|
@ -30,6 +30,9 @@ services:
|
|||
platform: linux/amd64
|
||||
command: python manage.py runserver 0.0.0.0:8080
|
||||
env_file: .env
|
||||
environment:
|
||||
SITE_MODE: "${SITE_MODE:-Mozorg}"
|
||||
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
|
@ -85,6 +88,7 @@ services:
|
|||
env_file: .env
|
||||
environment:
|
||||
RUN_SUPERVISOR: "true"
|
||||
SITE_MODE: "${SITE_MODE:-Mozorg}"
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
|
|
|
@ -336,6 +336,22 @@ image first:
|
|||
|
||||
$ make build-prod run-prod
|
||||
|
||||
|
||||
Pocket Mode
|
||||
-----------
|
||||
|
||||
By default, Bedrock will serve the content of ``www.mozilla.org``. However, it is also possible to
|
||||
make Bedrock serve the content pages for Pocket (``getpocket.com``). This is done, ultimately, by
|
||||
setting a ``SITE_MODE`` env var to the value of ``Pocket``.
|
||||
|
||||
For local development, setting this env var is already supported in the standard ways to run the site:
|
||||
|
||||
* Docker: ``make run-pocket`` and ``make run-pocket prod``
|
||||
* Node/webpack and Django runserver: ``npm run in-pocket-mode``
|
||||
* ``SITE_MODE=Pocket ./manage.py runserver`` for plain ol' Django runserver, in Pocket mode
|
||||
|
||||
For demos on servers, remember to set the SITE_MODE env var to be the value you need (``Pocket`` or ``Mozorg`` – or nothing, which is the same as setting ``Mozorg``)
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
@import '../includes/nav';
|
||||
@import '../includes/footer';
|
||||
|
||||
$image-path: '/media/img/externalpages/pocket';
|
||||
$image-path: '/media/img/pocket';
|
||||
|
||||
.intro-wrapper {
|
||||
background-color: #95d5d2;
|
|
@ -6,7 +6,7 @@
|
|||
@import '../includes/platform-nav';
|
||||
@import '../includes/platform-footer';
|
||||
|
||||
$image-path: '/media/img/externalpages/pocket';
|
||||
$image-path: '/media/img/pocket';
|
||||
|
||||
@import '~@mozilla-protocol/core/protocol/css/includes/lib';
|
||||
@import '~@mozilla-protocol/core/protocol/css/components/button';
|
|
@ -116,7 +116,7 @@ $image-path: '/media/protocol/img';
|
|||
|
||||
.pocket-logo-inline {
|
||||
@include image-replaced;
|
||||
background: url('/media/img/externalpages/pocket/new-tab/pocket-logo-inline.svg') no-repeat;
|
||||
background: url('/media/img/pocket/new-tab/pocket-logo-inline.svg') no-repeat;
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
vertical-align: middle;
|
|
@ -6,7 +6,7 @@
|
|||
@import '../includes/platform-footer';
|
||||
@import '../includes/platform-nav';
|
||||
|
||||
$image-path: '/media/img/externalpages/pocket';
|
||||
$image-path: '/media/img/pocket';
|
||||
|
||||
@import '~@mozilla-protocol/core/protocol/css/includes/lib';
|
||||
@import '~@mozilla-protocol/core/protocol/css/components/button';
|
|
@ -20,7 +20,7 @@ $image-path: '/media/protocol/img';
|
|||
|
||||
.pocket-logo-inline {
|
||||
@include image-replaced;
|
||||
background: url('/media/img/externalpages/pocket/new-tab/pocket-logo-inline.svg') no-repeat;
|
||||
background: url('/media/img/pocket/new-tab/pocket-logo-inline.svg') no-repeat;
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
vertical-align: middle;
|
||||
|
@ -167,7 +167,7 @@ $image-path: '/media/protocol/img';
|
|||
|
||||
.explore-stories {
|
||||
@media #{$mq-xl} {
|
||||
background: no-repeat url('/media/img/externalpages/pocket/articles-grid-right.png') right, url('/media/img/externalpages/pocket/articles-grid-left.png') left, linear-gradient(180deg, hsla(0deg, 0%, 90.2%, 0.3), hsla(0deg, 0%, 90.2%, 0) 17%), linear-gradient(0deg, hsla(0deg, 0%, 90.2%, 0.3), hsla(0deg, 0%, 90.2%, 0) 17%);
|
||||
background: no-repeat url('/media/img/pocket/articles-grid-right.png') right, url('/media/img/pocket/articles-grid-left.png') left, linear-gradient(180deg, hsla(0deg, 0%, 90.2%, 0.3), hsla(0deg, 0%, 90.2%, 0) 17%), linear-gradient(0deg, hsla(0deg, 0%, 90.2%, 0.3), hsla(0deg, 0%, 90.2%, 0) 17%);
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
margin: $layout-lg;
|
|
@ -7,7 +7,7 @@
|
|||
@import '~@mozilla-protocol/core/protocol/css/includes/lib';
|
||||
|
||||
$image-path: '/media/protocol/img';
|
||||
$pocket-image-path: '/media/img/externalpages/pocket';
|
||||
$pocket-image-path: '/media/img/pocket';
|
||||
|
||||
.pocket-footer-container {
|
||||
border-top: 1px solid transparent;
|
||||
|
@ -207,7 +207,7 @@ $pocket-image-path: '/media/img/externalpages/pocket';
|
|||
width: 20px;
|
||||
|
||||
&.twitter {
|
||||
background-image: url('/media/img/externalpages/pocket/platform-footer/twitter-logo.svg');
|
||||
background-image: url('/media/img/pocket/platform-footer/twitter-logo.svg');
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
|
@ -217,7 +217,7 @@ $pocket-image-path: '/media/img/externalpages/pocket';
|
|||
}
|
||||
|
||||
&.facebook {
|
||||
background-image: url('/media/img/externalpages/pocket/platform-footer/facebook-logo.svg');
|
||||
background-image: url('/media/img/pocket/platform-footer/facebook-logo.svg');
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
|
@ -5,7 +5,7 @@
|
|||
@import '~@mozilla-protocol/core/protocol/css/includes/lib';
|
||||
@import '../utils/variables';
|
||||
|
||||
$icon-path: '/media/img/externalpages/pocket/mobile-nav/';
|
||||
$icon-path: '/media/img/pocket/mobile-nav/';
|
||||
|
||||
// variables from pocket
|
||||
$easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
|
|
@ -5,7 +5,7 @@
|
|||
@import '../utils/variables';
|
||||
@import './mobile-nav';
|
||||
|
||||
$image-path: '/media/img/externalpages/pocket';
|
||||
$image-path: '/media/img/pocket';
|
||||
|
||||
.pocket-header {
|
||||
width: 100%;
|
|
@ -93,7 +93,7 @@ $image-path: '/media/protocol/img';
|
|||
width: 20px;
|
||||
|
||||
&.twitter {
|
||||
background-image: url('/media/img/externalpages/pocket/platform-footer/twitter-logo.svg');
|
||||
background-image: url('/media/img/pocket/platform-footer/twitter-logo.svg');
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
|
@ -103,7 +103,7 @@ $image-path: '/media/protocol/img';
|
|||
}
|
||||
|
||||
&.facebook {
|
||||
background-image: url('/media/img/externalpages/pocket/platform-footer/facebook-logo.svg');
|
||||
background-image: url('/media/img/pocket/platform-footer/facebook-logo.svg');
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
|
@ -21,14 +21,14 @@
|
|||
margin-left: 0;
|
||||
|
||||
.pocket-logo-svg {
|
||||
background-image: url('/media/img/externalpages/pocket/pocket-logo-grey.png');
|
||||
background-image: url('/media/img/pocket/pocket-logo-grey.png');
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
height: 38px;
|
||||
width: 151px;
|
||||
|
||||
@media #{$mq-md} {
|
||||
background-image: url('/media/img/externalpages/pocket/pocket-logo-grey-high-res.png');
|
||||
background-image: url('/media/img/pocket/pocket-logo-grey-high-res.png');
|
||||
height: 47px;
|
||||
width: 189px;
|
||||
}
|
До Ширина: | Высота: | Размер: 168 KiB После Ширина: | Высота: | Размер: 168 KiB |
До Ширина: | Высота: | Размер: 15 KiB После Ширина: | Высота: | Размер: 15 KiB |
До Ширина: | Высота: | Размер: 7.1 KiB После Ширина: | Высота: | Размер: 7.1 KiB |
До Ширина: | Высота: | Размер: 3.4 KiB После Ширина: | Высота: | Размер: 3.4 KiB |
До Ширина: | Высота: | Размер: 4.5 KiB После Ширина: | Высота: | Размер: 4.5 KiB |
До Ширина: | Высота: | Размер: 4.5 KiB После Ширина: | Высота: | Размер: 4.5 KiB |
До Ширина: | Высота: | Размер: 11 KiB После Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 8.0 KiB После Ширина: | Высота: | Размер: 8.0 KiB |
До Ширина: | Высота: | Размер: 224 KiB После Ширина: | Высота: | Размер: 224 KiB |
До Ширина: | Высота: | Размер: 130 KiB После Ширина: | Высота: | Размер: 130 KiB |
До Ширина: | Высота: | Размер: 12 KiB После Ширина: | Высота: | Размер: 12 KiB |
До Ширина: | Высота: | Размер: 7.5 KiB После Ширина: | Высота: | Размер: 7.5 KiB |
До Ширина: | Высота: | Размер: 10 KiB После Ширина: | Высота: | Размер: 10 KiB |
До Ширина: | Высота: | Размер: 8.4 KiB После Ширина: | Высота: | Размер: 8.4 KiB |
До Ширина: | Высота: | Размер: 12 KiB После Ширина: | Высота: | Размер: 12 KiB |
До Ширина: | Высота: | Размер: 29 KiB После Ширина: | Высота: | Размер: 29 KiB |
До Ширина: | Высота: | Размер: 521 B После Ширина: | Высота: | Размер: 521 B |
До Ширина: | Высота: | Размер: 14 KiB После Ширина: | Высота: | Размер: 14 KiB |
До Ширина: | Высота: | Размер: 376 KiB После Ширина: | Высота: | Размер: 376 KiB |
До Ширина: | Высота: | Размер: 119 KiB После Ширина: | Высота: | Размер: 119 KiB |
До Ширина: | Высота: | Размер: 384 KiB После Ширина: | Высота: | Размер: 384 KiB |
До Ширина: | Высота: | Размер: 115 KiB После Ширина: | Высота: | Размер: 115 KiB |
До Ширина: | Высота: | Размер: 1.4 MiB После Ширина: | Высота: | Размер: 1.4 MiB |
До Ширина: | Высота: | Размер: 459 KiB После Ширина: | Высота: | Размер: 459 KiB |
До Ширина: | Высота: | Размер: 575 B После Ширина: | Высота: | Размер: 575 B |
До Ширина: | Высота: | Размер: 578 B После Ширина: | Высота: | Размер: 578 B |
До Ширина: | Высота: | Размер: 497 B После Ширина: | Высота: | Размер: 497 B |
До Ширина: | Высота: | Размер: 500 B После Ширина: | Высота: | Размер: 500 B |
До Ширина: | Высота: | Размер: 272 B После Ширина: | Высота: | Размер: 272 B |
До Ширина: | Высота: | Размер: 1.7 KiB После Ширина: | Высота: | Размер: 1.7 KiB |
До Ширина: | Высота: | Размер: 1.7 KiB После Ширина: | Высота: | Размер: 1.7 KiB |
До Ширина: | Высота: | Размер: 491 B После Ширина: | Высота: | Размер: 491 B |
До Ширина: | Высота: | Размер: 494 B После Ширина: | Высота: | Размер: 494 B |
До Ширина: | Высота: | Размер: 598 B После Ширина: | Высота: | Размер: 598 B |
До Ширина: | Высота: | Размер: 601 B После Ширина: | Высота: | Размер: 601 B |
До Ширина: | Высота: | Размер: 672 B После Ширина: | Высота: | Размер: 672 B |
До Ширина: | Высота: | Размер: 675 B После Ширина: | Высота: | Размер: 675 B |
До Ширина: | Высота: | Размер: 714 B После Ширина: | Высота: | Размер: 714 B |
До Ширина: | Высота: | Размер: 717 B После Ширина: | Высота: | Размер: 717 B |
До Ширина: | Высота: | Размер: 440 B После Ширина: | Высота: | Размер: 440 B |
До Ширина: | Высота: | Размер: 443 B После Ширина: | Высота: | Размер: 443 B |
До Ширина: | Высота: | Размер: 406 B После Ширина: | Высота: | Размер: 406 B |
До Ширина: | Высота: | Размер: 409 B После Ширина: | Высота: | Размер: 409 B |
До Ширина: | Высота: | Размер: 308 B После Ширина: | Высота: | Размер: 308 B |