This commit is contained in:
Alex Gibson 2023-03-09 16:13:54 +00:00 коммит произвёл GitHub
Родитель 1cc7f539b8
Коммит d3d0a74715
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
21 изменённых файлов: 371 добавлений и 76 удалений

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

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="136" height="142" fill="none"><rect width="67.346" height="67.346" x=".948" fill="#0090ED" rx="5.221"/><rect width="67.346" height="67.346" x="68.294" y="74.654" fill="#0090ED" rx="5.221"/><mask id="a" fill="#fff"><path d="M114.235 67.346H74.559V27.669h33.926a5.75 5.75 0 0 1 5.75 5.75v33.927Z"/></mask><path fill="#0090ED" d="M114.235 67.346H74.559h39.676ZM74.559 24.794h33.926a8.625 8.625 0 0 1 8.625 8.625h-5.75a2.875 2.875 0 0 0-2.875-2.875H74.559v-5.75Zm33.926 0a8.625 8.625 0 0 1 8.625 8.625v33.927h-5.75V33.419a2.875 2.875 0 0 0-2.875-2.875v-5.75ZM74.559 67.346V27.669v39.677Z" mask="url(#a)"/><path stroke="#0090ED" stroke-linecap="round" stroke-width="2.875" d="m82.609 36.87-8.05-7.763 8.05-7.763"/><mask id="b" fill="#fff"><path d="M22.353 74.654h39.676v39.677H28.103a5.75 5.75 0 0 1-5.75-5.75V74.654Z"/></mask><path fill="#0090ED" d="M22.353 74.654h39.676-39.676Zm39.676 42.552H28.103a8.625 8.625 0 0 1-8.625-8.625h5.75a2.875 2.875 0 0 0 2.875 2.875H62.03v5.75Zm-33.926 0a8.625 8.625 0 0 1-8.625-8.625V74.654h5.75v33.927a2.875 2.875 0 0 0 2.875 2.875v5.75ZM62.03 74.654v39.677-39.677Z" mask="url(#b)"/><path stroke="#0090ED" stroke-linecap="round" stroke-width="2.875" d="m53.98 105.131 8.05 7.762-8.05 7.763"/><path fill="#FFFFF2" d="M89.95 132.664h.793c7.1 0 9.146-2.464 9.146-9.648v-24.39c0-2.924 1.754-4.469 4.344-4.469 2.631 0 4.301 1.88 4.301 4.218 0 2.59-1.921 4.386-4.719 4.386h-1.002v5.262h1.086c3.382 0 5.512 2.046 5.512 4.678 0 2.714-1.962 4.719-4.552 4.719-.626 0-2.506-.084-2.882-.334v5.22c.71.293 2.047.418 2.924.418 6.473 0 10.525-4.302 10.525-10.065 0-3.592-2.089-6.307-5.221-7.56 2.506-1.336 4.009-3.717 4.009-6.724 0-5.387-4.009-9.146-9.898-9.146-6.473 0-10.19 4.093-10.065 9.898v23.889c0 3.383-.501 4.26-4.302 4.26v5.388ZM35.613 48.028c6.808 0 11.193-4.343 11.193-9.564 0-6.599-5.387-8.102-10.065-9.105-3.8-.877-6.85-1.336-6.85-3.8 0-2.005 1.42-3.634 4.72-3.634 3.508 0 5.555 1.462 7.142 3.8l4.803-3.758c-3.091-3.425-6.474-5.304-11.862-5.304-6.348 0-10.817 4.01-10.817 9.02 0 6.182 5.096 7.644 9.648 8.604 4.218.961 7.142 1.546 7.142 4.386 0 2.213-1.713 3.8-5.012 3.8-3.634 0-6.348-1.629-8.353-4.803l-5.137 4.093c2.882 3.676 6.891 6.265 13.448 6.265Z"/></svg>

После

Ширина:  |  Высота:  |  Размер: 2.2 KiB

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

@ -0,0 +1,70 @@
{#
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/.
#}
{% extends "firefox/whatsnew/base.html" %}
{% block page_title %}{{ ftl('whatsnew-page-title') }}{% endblock %}
{% block page_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %}
{% block page_css %}
{{ css_bundle('firefox_whatsnew_111_eu') }}
{% endblock %}
{% block site_header %}{% endblock %}
{% block wnp_content %}
<section class="wnp-content-main mzp-l-content mzp-t-content-md">
<h2>
{{ picture(
url="firefox/whatsnew/whatsnew111-eu/pdf-title-light.svg",
sources=[
{
"media": "(prefers-color-scheme: light)",
"srcset": {
"img/firefox/whatsnew/whatsnew111-eu/pdf-title-light.svg": "default",
}
},
{
"media": "(prefers-color-scheme: dark)",
"srcset": {
"img/firefox/whatsnew/whatsnew111-eu/pdf-title-dark.svg": "default",
}
}
],
optional_attributes={
"alt": ftl('whatsnew-111-pdf-title-alt'),
"l10n": True,
}
) }}
</h2>
<p class="wnp-main-tagline">{{ ftl('whatsnew-111-pdf-its-spring-cleaning-season') }}</p>
<p class="wnp-main-tagline">{{ ftl('whatsnew-111-pdf-try-it-out-now-and-say') }}</p>
{% if LANG == 'es-ES' %}
{% set pdf = 'https://assets.mozilla.net/wnp111-eu/wnp-fx111-es.pdf' %}
{% elif LANG == 'it' %}
{% set pdf = 'https://assets.mozilla.net/wnp111-eu/wnp-fx111-it.pdf' %}
{% elif LANG == 'pl' %}
{% set pdf = 'https://assets.mozilla.net/wnp111-eu/wnp-fx111-pl.pdf' %}
{% elif LANG == 'pt-PT' %}
{% set pdf = 'https://assets.mozilla.net/wnp111-eu/wnp-fx111-pt.pdf' %}
{% elif LANG == 'nl' %}
{% set pdf = 'https://assets.mozilla.net/wnp111-eu/wnp-fx111-nl.pdf' %}
{% endif %}
{% if pdf %}
<p class="wnp-main-cta pdf">
<a class="mzp-c-button mzp-t-product" href="{{ pdf }}" data-cta-type="button" data-cta-text="Try it now">
{{ ftl('whatsnew-111-pdf-cta') }}
</a>
</p>
{% endif %}
</section>
{% endblock %}
{% block js %}
{{ js_bundle('firefox_whatsnew_update') }}
{% endblock %}

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

@ -0,0 +1,45 @@
{#
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/.
#}
{% extends "firefox/whatsnew/base.html" %}
{% block page_title %}{{ ftl('whatsnew-page-title') }}{% endblock %}
{% block page_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %}
{% block page_css %}
{{ css_bundle('firefox_whatsnew_111_eu') }}
{% endblock %}
{% block site_header %}{% endblock %}
{% set _utm_campaign = 'whatsnew111-translate-de' %}
{% set params = 'utm_source=' ~ entrypoint ~ '&utm_medium=referral&utm_campaign=' ~ _utm_campaign %}
{% block wnp_content %}
<section class="wnp-content-main mzp-l-content mzp-t-content-md">
<div class="wnp-main-image" role="presentation">
{% include 'firefox/whatsnew/includes/fx111/translate.svg' %}
</div>
<h2 class="wnp-main-title">Sag Hola zu Firefox Translations</h2>
<p class="wnp-main-tagline">
Das Internet kommt dir manchmal spanisch vor, aber du willst beim Übersetzen nicht auf
Privatsphäre verzichten? Mit der Firefox Translations Erweiterung übersetzt du alles
lokal auf deinem Gerät und behältst es so ganz für dich allein.
</p>
<p class="wnp-main-cta translate">
<a class="mzp-c-button mzp-t-product" href="https://addons.mozilla.org/de/firefox/addon/firefox-translations/?{{ params }}" data-cta-type="button" data-cta-text="Add to Firefox">
Zu Firefox hinzufügen
</a>
</p>
</section>
{% endblock %}
{% block js %}
{{ js_bundle('firefox_whatsnew_update') }}
{% endblock %}

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

@ -0,0 +1,45 @@
{#
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/.
#}
{% extends "firefox/whatsnew/base.html" %}
{% block page_title %}{{ ftl('whatsnew-page-title') }}{% endblock %}
{% block page_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %}
{% block page_css %}
{{ css_bundle('firefox_whatsnew_111_eu') }}
{% endblock %}
{% block site_header %}{% endblock %}
{% set _utm_campaign = 'whatsnew111-translate-fr' %}
{% set params = 'utm_source=' ~ entrypoint ~ '&utm_medium=referral&utm_campaign=' ~ _utm_campaign %}
{% block wnp_content %}
<section class="wnp-content-main mzp-l-content mzp-t-content-md">
<div class="wnp-main-image" role="presentation">
{% include 'firefox/whatsnew/includes/fx111/translate.svg' %}
</div>
<h2 class="wnp-main-title">Dites hello à Firefox Translations</h2>
<p class="wnp-main-tagline">
Lost in translation et inquiet pour vos données ? Essayez lextension Firefox Translations :
elle travaille localement, et non dans le cloud, pour que toutes vos données restent sur
votre ordinateur, et confidentielles.
</p>
<p class="wnp-main-cta translate">
<a class="mzp-c-button mzp-t-product" href="https://addons.mozilla.org/fr/firefox/addon/firefox-translations/?{{ params }}" data-cta-type="button" data-cta-text="Add to Firefox">
Ajouter à Firefox
</a>
</p>
</section>
{% endblock %}
{% block js %}
{{ js_bundle('firefox_whatsnew_update') }}
{% endblock %}

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

@ -0,0 +1,45 @@
{#
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/.
#}
{% extends "firefox/whatsnew/base.html" %}
{% block page_title %}{{ ftl('whatsnew-page-title') }}{% endblock %}
{% block page_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %}
{% block page_css %}
{{ css_bundle('firefox_whatsnew_111_eu') }}
{% endblock %}
{% block site_header %}{% endblock %}
{% set _utm_campaign = 'whatsnew111-translate-uk' %}
{% set params = 'utm_source=' ~ entrypoint ~ '&utm_medium=referral&utm_campaign=' ~ _utm_campaign %}
{% block wnp_content %}
<section class="wnp-content-main mzp-l-content mzp-t-content-md">
<div class="wnp-main-image" role="presentation">
{% include 'firefox/whatsnew/includes/fx111/translate.svg' %}
</div>
<h2 class="wnp-main-title">Say hola to Firefox Translations</h2>
<p class="wnp-main-tagline">
Lost in translation and worried about your data? Try the Firefox
Translations extension: it works locally, so all your data stays
on your computer, and private to you.
</p>
<p class="wnp-main-cta translate">
<a class="mzp-c-button mzp-t-product" href="https://addons.mozilla.org/firefox/addon/firefox-translations/?{{ params }}" data-cta-type="button" data-cta-text="Add to Firefox">
Add to Firefox
</a>
</p>
</section>
{% endblock %}
{% block js %}
{{ js_bundle('firefox_whatsnew_update') }}
{% endblock %}

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

@ -1,32 +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/.
#}
{% extends "firefox/whatsnew/base.html" %}
{% block page_title %}{{ ftl('whatsnew-page-title') }}{% endblock %}
{% block page_desc %}{{ ftl('whatsnew-page-description') }}{% endblock %}
{% block page_css %}
{{ css_bundle('firefox_whatsnew_111_eu') }}
{% endblock %}
{% block site_header %}{% endblock %}
{% block wnp_content %}
<section class="wnp-content-main mzp-l-content mzp-t-content-md">
<h1>{{ ftl('whatsnew-111-pdf-title') }}</h1>
<p class="wnp-main-tagline">{{ ftl('whatsnew-111-pdf-its-spring-cleaning-season') }}</p>
<p class="wnp-main-tagline">{{ ftl('whatsnew-111-pdf-try-it-out-now-and-say') }}</p>
<p><a class="mzp-c-button mzp-t-product" href="https://assets.mozilla.net/wnp109-eu/wnp-fx109-uk.pdf" data-cta-type="button" data-cta-text="Try it now">{{ ftl('whatsnew-111-pdf-cta') }}</a></p>
</section>
{% endblock %}
{% block js %}
{{ js_bundle('firefox_whatsnew_update') }}
{% endblock %}

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

@ -883,6 +883,86 @@ class TestWhatsNew(TestCase):
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-en.html"]
def test_fx_111_0_0_es(self, render_mock):
"""Should use whatsnew-fx110-eu-pdf template for es-ES locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "es-ES"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-pdf.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_it(self, render_mock):
"""Should use whatsnew-fx110-eu-pdf template for it locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "it"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-pdf.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_pl(self, render_mock):
"""Should use whatsnew-fx110-eu-pdf template for pl locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "pl"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-pdf.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_pt(self, render_mock):
"""Should use whatsnew-fx110-eu-pdf template for pt-PT locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "pt-PT"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-pdf.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_nl(self, render_mock):
"""Should use whatsnew-fx110-eu-pdf template for nl locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "nl"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-pdf.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_de(self, render_mock):
"""Should use whatsnew-fx110-eu-translate-de template for de locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "de"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-translate.de.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_fr(self, render_mock):
"""Should use whatsnew-fx110-eu-translate-fr template for fr locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "fr"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-translate.fr.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_en_gb(self, render_mock):
"""Should use whatsnew-fx110-eu-translate-uk template for en-GB locale"""
req = self.rf.get("/firefox/whatsnew/")
req.locale = "en-GB"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-translate.uk.html"]
@override_settings(DEV=True)
def test_fx_111_0_0_en_us_gb(self, render_mock):
"""Should use whatsnew-fx110-eu-translate-uk template for en-US locale in GB"""
req = self.rf.get("/firefox/whatsnew/", HTTP_CF_IPCOUNTRY="GB")
req.locale = "en-US"
self.view(req, version="111.0")
template = render_mock.call_args[0][1]
assert template == ["firefox/whatsnew/whatsnew-fx111-eu-translate.uk.html"]
# end 111.0 whatsnew tests

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

@ -484,8 +484,11 @@ class WhatsnewView(L10nTemplateView):
"firefox/whatsnew/whatsnew-fx110-de-v1.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx110-de-v2.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx110-fr.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-eu.html": ["firefox/whatsnew/whatsnew-111-pdf", "firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-en.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-eu-pdf.html": ["firefox/whatsnew/whatsnew-111-pdf", "firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-eu-translate.uk.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-eu-translate.de.html": ["firefox/whatsnew/whatsnew"],
"firefox/whatsnew/whatsnew-fx111-eu-translate.fr.html": ["firefox/whatsnew/whatsnew"],
}
# specific templates that should not be rendered in
@ -576,11 +579,20 @@ class WhatsnewView(L10nTemplateView):
template = "firefox/developer/whatsnew.html"
else:
template = "firefox/whatsnew/index.html"
elif version.startswith("111.0"):
if settings.DEV and locale in ["es-ES", "it", "pl", "pt-PT", "nl"] and ftl_file_is_active("firefox/whatsnew/whatsnew-111-pdf"):
template = "firefox/whatsnew/whatsnew-fx111-eu.html"
elif version.startswith("111."):
if locale in ["es-ES", "it", "pl", "pt-PT", "nl"] and ftl_file_is_active("firefox/whatsnew/whatsnew-111-pdf"):
template = "firefox/whatsnew/whatsnew-fx111-eu-pdf.html"
elif locale.startswith("en-"):
template = "firefox/whatsnew/whatsnew-fx111-en.html"
if country == "GB":
template = "firefox/whatsnew/whatsnew-fx111-eu-translate.uk.html"
elif locale == "en-GB":
template = "firefox/whatsnew/whatsnew-fx111-eu-translate.uk.html"
else:
template = "firefox/whatsnew/whatsnew-fx111-en.html"
elif locale == "de":
template = "firefox/whatsnew/whatsnew-fx111-eu-translate.de.html"
elif locale == "fr":
template = "firefox/whatsnew/whatsnew-fx111-eu-translate.fr.html"
else:
template = "firefox/whatsnew/index.html"
elif version.startswith("110.0"):

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

@ -8,51 +8,25 @@
@import '~@mozilla-protocol/core/protocol/css/components/notification-bar';
.wnp-content-main {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding-top: $spacing-2xl;
}
h1 {
padding: $spacing-sm;
}
.wnp-main-image {
margin-bottom: $spacing-2xl;
}
.wnp-main-img-light {
display: block;
}
.wnp-main-img-dark {
display: none;
}
.wnp-main-tagline {
@include text-body-lg;
text-align: center;
color: $color-black;
padding: $spacing-sm;
}
@media #{$mq-md} {
h1 {
padding: 0;
}
}
.wnp-main-tagline {
@include text-body-lg;
text-align: center;
color: $color-black;
padding: $spacing-sm;
}
// Dark mode support
@media (prefers-color-scheme: dark) {
.wnp-content-main {
.wnp-main-img-light {
display: none;
}
.wnp-main-img-dark {
display: block;
}
.wnp-main-tagline {
color: $color-white;
}
.wnp-main-title,
.wnp-main-tagline {
color: $color-white;
}
}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 10 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 10 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 8.2 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 8.2 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 6.1 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 6.1 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 7.2 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 7.2 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 11 KiB

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

@ -0,0 +1,23 @@
# 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/.
import pytest
from pages.firefox.whatsnew.whatsnew_111 import FirefoxWhatsNew111Page
@pytest.mark.skip_if_not_firefox(reason="Whatsnew pages are shown to Firefox only.")
@pytest.mark.nondestructive
@pytest.mark.parametrize("locale", [("es-ES"), ("it"), ("nl")])
def test_pdf_button_is_displayed(locale, base_url, selenium):
page = FirefoxWhatsNew111Page(selenium, base_url, locale=locale).open()
assert page.is_pdf_button_displayed
@pytest.mark.skip_if_not_firefox(reason="Whatsnew pages are shown to Firefox only.")
@pytest.mark.nondestructive
@pytest.mark.parametrize("locale", [("de"), ("fr"), ("en-GB")])
def test_translate_button_is_displayed(locale, base_url, selenium):
page = FirefoxWhatsNew111Page(selenium, base_url, locale=locale).open()
assert page.is_translate_button_displayed

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

@ -0,0 +1,22 @@
# 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 selenium.webdriver.common.by import By
from pages.base import BasePage
class FirefoxWhatsNew111Page(BasePage):
_URL_TEMPLATE = "/{locale}/firefox/111.0/whatsnew/"
_translate_button_locator = (By.CSS_SELECTOR, ".wnp-main-cta.translate .mzp-c-button")
_pdf_button_locator = (By.CSS_SELECTOR, ".wnp-main-cta.pdf .mzp-c-button")
@property
def is_translate_button_displayed(self):
return self.is_element_displayed(*self._translate_button_locator)
@property
def is_pdf_button_displayed(self):
return self.is_element_displayed(*self._pdf_button_locator)