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
This commit is contained in:
Steve Jalim 2022-04-27 13:59:19 +01:00 коммит произвёл GitHub
Родитель aeed6f60b6
Коммит ecc8b37723
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
163 изменённых файлов: 265 добавлений и 174 удалений

Просмотреть файл

@ -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 Mozillas bug reporting process documented on <a href="{{ url('mozorg.about.governance.policies.security.bugs') }}">Mozillas Security page</a>.</p>
<p class="contact-info-body-text">If you believe you have discovered a security vulnerability in Pocket, please follow Mozillas bug reporting process documented on <a href="https://www.mozilla.org/en-US/about/governance/policies/security-group/bugs/">Mozillas 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 dont see it, and our sponsors dont either. Want more details? Heres 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 Pockets <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">Pockets 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 youre 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 itll go straight to your list, ready for you to dig into when youre 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 youre ready to dig into what youve saved, Pocket provides a quiet, calm space thats 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 youll 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. Were 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, wed 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 youre ready to dig into what youve saved, Pocket provides a quiet, calm space thats 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 youd like to save, wherever you are online. Itll go straight to your list in Pocket, ready for you to dig into when youre 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 youre 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 youve 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, youll be able to read, watch, or listen to everything youve 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 partys 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 partys 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 &copy; 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 %}

25
bedrock/pocket/urls.py Normal file
Просмотреть файл

@ -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

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше