Add convert.com experimentation sandbox (Fixes #7508)

This commit is contained in:
Jonathan Petto 2019-05-28 13:52:42 -05:00 коммит произвёл Alex Gibson
Родитель 86fe12e0c1
Коммит 24b8d6f3dc
23 изменённых файлов: 433 добавлений и 2 удалений

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

@ -3,7 +3,7 @@
<!doctype html>
{# Note the "windows" class, without javascript platform-specific
assets default to windows #}
<html class="windows x86 no-js" lang="{{ LANG|replace('en-US', 'en') }}" dir="{{ DIR }}" data-latest-firefox="{{ latest_firefox_version }}" data-esr-versions="{{ esr_firefox_versions|join(' ') }}" {% if settings.GTM_CONTAINER_ID %}data-gtm-container-id="{{ settings.GTM_CONTAINER_ID }}"{% endif %} {% block gtm_page_id %}{% endblock %} {% if settings.STUB_ATTRIBUTION_RATE %}data-stub-attribution-rate="{{ settings.STUB_ATTRIBUTION_RATE }}"{% endif %}>
<html class="windows x86 no-js" lang="{{ LANG|replace('en-US', 'en') }}" dir="{{ DIR }}" data-latest-firefox="{{ latest_firefox_version }}" data-esr-versions="{{ esr_firefox_versions|join(' ') }}" {% if settings.GTM_CONTAINER_ID %}data-gtm-container-id="{{ settings.GTM_CONTAINER_ID }}"{% endif %} {% block gtm_page_id %}{% endblock %} {% if settings.STUB_ATTRIBUTION_RATE %}data-stub-attribution-rate="{{ settings.STUB_ATTRIBUTION_RATE }}"{% endif %} {% block html_attrs %}{% endblock %}>
<head>
<meta charset="utf-8">{# Note: Must be within first 512 bytes of page #}

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

@ -3,7 +3,7 @@
<!doctype html>
{# Note the "windows" class, without javascript platform-specific
assets default to windows #}
<html class="windows x86 no-js" lang="{{ LANG|replace('en-US', 'en') }}" dir="{{ DIR }}" data-latest-firefox="{{ latest_firefox_version }}" data-esr-versions="{{ esr_firefox_versions|join(' ') }}" {% if settings.GTM_CONTAINER_ID %}data-gtm-container-id="{{ settings.GTM_CONTAINER_ID }}"{% endif %} {% block gtm_page_id %}{% endblock %} {% if settings.STUB_ATTRIBUTION_RATE %}data-stub-attribution-rate="{{ settings.STUB_ATTRIBUTION_RATE }}"{% endif %}>
<html class="windows x86 no-js" lang="{{ LANG|replace('en-US', 'en') }}" dir="{{ DIR }}" data-latest-firefox="{{ latest_firefox_version }}" data-esr-versions="{{ esr_firefox_versions|join(' ') }}" {% if settings.GTM_CONTAINER_ID %}data-gtm-container-id="{{ settings.GTM_CONTAINER_ID }}"{% endif %} {% block gtm_page_id %}{% endblock %} {% if settings.STUB_ATTRIBUTION_RATE %}data-stub-attribution-rate="{{ settings.STUB_ATTRIBUTION_RATE }}"{% endif %} {% block html_attrs %}{% endblock %}>
<head>
<meta charset="utf-8">{# Note: Must be within first 512 bytes of page #}

0
bedrock/exp/__init__.py Normal file
Просмотреть файл

0
bedrock/exp/models.py Normal file
Просмотреть файл

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

@ -0,0 +1,18 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% extends "exp/base/base.html" %}
{% block page_title_prefix %}{% endblock %}
{% block page_title_suffix %}{% endblock %}
{% block page_image %}{{ static('img/firefox/template/page-image-firefox.jpg') }}{% endblock %}
{% block page_favicon %}{{ static('img/firefox/favicon.ico') }}{% endblock %}
{% block page_favicon_large %}{{ static('img/firefox/favicon-196.png') }}{% endblock %}
{% block page_ios_icon %}{{ static('img/firefox/ios-icon-180.png') }}{% endblock %}
{% block facebook_id %}14696440021{# facebook.com/Firefox #}{% endblock %}
{% block twitter_id %}firefox{% endblock %}
{% block body_class %}mzp-t-firefox{% endblock %}

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

@ -0,0 +1,27 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% extends "base-protocol.html" %}
{% block html_attrs %}data-convert-project-id="{{ settings.CONVERT_PROJECT_ID }}"{% endblock %}
{% block experiments %}
{% if switch('convert-experiment-script') %}
{# Pre-fetch the DNS lookup prior to loading the convert script #}
<link rel="dns-prefetch" href="https://cdn-3.convertexperiments.com/">
{{ js_bundle('convert') }}
{% endif %}
{% endblock %}
{% block body_class %}mzp-t-mozilla{% endblock %}
{% block site_js %}
<!--[if !IE]><!-->
{{ js_bundle('common-protocol-no-jquery') }}
<!--<![endif]-->
<!--[if IE]>
{{ js_bundle('common-ie') }}
<![endif]-->
{% endblock %}

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

@ -0,0 +1,28 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% from "macros.html" import google_play_button with context %}
{% from "macros-protocol.html" import hero, picto_card with context %}
{% extends "exp/base/base-firefox.html" %}
{% block canonical_urls %}
{# the SEM campaign page should set canonical to the /firefox/new/ page. #}
<link rel="canonical" href="{{ settings.CANONICAL_URL }}/{{ LANG }}/firefox/new/">
{% endblock %}
{# All stylesheets are loaded in extrahead to serve legacy IE basic styles #}
{% block extrahead %}
{{ css_bundle('protocol-core') }}
{{ css_bundle('exp-firefox-new') }}
{% endblock %}
{% block old_ie_styles %}{% endblock %}
{% block site_css %}{% endblock %}
{% block page_css %}{% endblock %}
{% block site_header %}{% endblock %}
{# Bug 1381776 #}
{% block update_notification %}{% endblock %}

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

@ -0,0 +1,43 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% extends "exp/firefox/new/base.html" %}
{% block page_title_prefix %}Download Firefox — {% endblock %}
{% block page_title %}kostenloser Browser{% endblock %}
{# Bug 1438302 Avoid duplicate content for en-CA and en-GB pages. #}
{% block page_title_suffix %} — Mozilla{% endblock %}
{% block page_desc %}Download Mozilla Firefox, den kostenlosen Browser für Windows, Mac, Linux, Android und iOS. Firefox wird von Mozilla entwickelt – der Non-Profit-Organisation, die sich für deine Online-Rechte stark macht.{% endblock %}
{#- This will appear as <meta property="og:title"> which can be used for social share -#}
{% block page_og_title %}Jetzt den schnellsten Firefox aller Zeiten herunterladen{% endblock %}
{#- This will appear as <meta property="og:description"> which can be used for social share -#}
{% block page_og_desc %}Der neue Firefox: schnellere Seitenladezeiten, weniger Speicherverbrauch und vollgepackt mit neuen Funktionen.{% endblock %}
{% block content %}
<main role="main" class="main-download" {% if v %}data-variant="{{ v }}"{% endif %}>
{% call hero(
title='Hol dir den neuesten Firefox Browser.',
desc='Und damit eines der Firefox Produkte, für die deine Privatsphäre an erster Stelle steht.',
class='mzp-has-image mzp-t-dark',
include_cta=True,
image_url='firefox/new/trailhead/browser-window.svg',
heading_level=1
) %}
{{ download_firefox(alt_copy='Jetzt herunterladen', download_location='primary cta') }}
{% endcall %}
<section class="features">
<ul class="mzp-l-card-third mzp-l-content">
{{ picto_card(title='Komm zu Firefox', desc='Verbinde alle deine Firefox Produkte miteinander und bleib in Sachen Online-Sicherheit immer auf dem neuesten Stand.', class='join') }}
{{ picto_card(title='Passwörter immer dabei', desc='<strong>Firefox Lockwise</strong> hat deine gespeicherten Passwörter immer und auf allen deinen Geräten für dich parat.'|safe, class='lockwise') }}
{{ picto_card(title='Schütze deine Privatsphäre', desc='Im <strong>Privaten Modus</strong> wird dein Browserverlauf automatisch gelöscht, sodass andere Benutzer deines Computers ihn nicht sehen können.'|safe, class='private') }}
</ul>
</section>
</main>
{% endblock %}

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

@ -0,0 +1,51 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% extends "exp/firefox/new/base.html" %}
{% block page_title_prefix %}Download Firefox — {% endblock %}
{% block page_title %}Free Web Browser{% endblock %}
{# Bug 1438302 Avoid duplicate content for en-CA and en-GB pages. #}
{%- block page_title_suffix -%}
{% if LANG == 'en-CA' %}
— Mozilla (CA)
{% elif LANG == 'en-GB' %}
— Mozilla (UK)
{% else %}
— Mozilla
{% endif %}
{%- endblock -%}
{% block page_desc %}Download Mozilla Firefox, a free web browser. Firefox is created by a global non-profit dedicated to putting individuals in control online. Get Firefox for Windows, macOS, Linux, Android and iOS today!{% endblock %}
{#- This will appear as <meta property="og:title"> which can be used for social share -#}
{% block page_og_title %}Download the fastest Firefox ever{% endblock %}
{#- This will appear as <meta property="og:description"> which can be used for social share -#}
{% block page_og_desc %}Faster page loading, less memory usage and packed with features, the new Firefox is here.{% endblock %}
{% block content %}
<main role="main" class="main-download" {% if v %}data-variant="{{ v }}"{% endif %}>
{% call hero(
title='Get the latest Firefox browser.',
desc='And start getting the respect you deserve with our family of privacy-first products.',
class='mzp-has-image mzp-t-dark',
include_cta=True,
image_url='firefox/new/trailhead/browser-window.svg',
heading_level=1
) %}
{{ download_firefox(alt_copy='Download Now', download_location='primary cta') }}
{% endcall %}
<section class="features">
<ul class="mzp-l-card-third mzp-l-content">
{{ picto_card(title='Join Firefox', desc='Connect to a whole family of respectful products, plus all the knowledge you need to protect yourself online.', class='join') }}
{{ picto_card(title='Passwords made portable', desc='<strong>Firefox Lockwise</strong> makes the passwords you save in Firefox available on all your devices.'|safe, class='lockwise') }}
{{ picto_card(title='Protect your privacy', desc='<strong>Private Browsing</strong> clears your history to keep it secret from anyone who uses your computer.'|safe, class='private') }}
</ul>
</section>
</main>
{% endblock %}

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

@ -0,0 +1,63 @@
{# 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 http://mozilla.org/MPL/2.0/. -#}
{% extends "exp/base/base.html" %}
{% block page_title %}{{ _('Opt-out of Convert experiments') }}{% endblock %}
{% block page_desc %}{{ _('Your privacy is very important to Mozilla. This page will enable you to opt-out of Convert experiments on www.mozilla.org') }}{% endblock %}
{% block experiments %}
{{ js_bundle('jquery') }}
<script type="text/javascript" src="https://cdn-3.convertexperiments.com/js/{{ settings.CONVERT_PROJECT_ID }}.js" async></script>
{% endblock %}
{% block canonical_urls %}<meta name="robots" content="noindex,follow">{% endblock %}
{% block page_css %}
{{ css_bundle('exp-opt-out') }}
{% endblock %}
{% block content %}
<div class="mzp-l-content">
<article class="mzp-c-article">
<h1 class="mzp-c-article-title">{{ _('Opt-out of Convert experiments') }}</h1>
<p>
{% trans convert='https://www.convert.com/', websites=url('privacy.notices.websites'), privacy='https://www.convert.com/privacy-notice/' %}
Your privacy is very important to Mozilla. In an effort to improve user experiences on www.mozilla.org, Mozilla sometimes runs
website experiments using a tool called <a href="{{ convert }}">Convert</a>. Convert does not collect any personally
identifiable information, is committed to data privacy and security, and does not share data with any parties other than
Mozilla. You can read more information in the <a href="{{ websites }}">Mozilla Websites Privacy Policy</a> and the
<a href="{{ privacy }}">Convert Privacy Policy</a>.
{% endtrans %}
</p>
<p>
{% trans %}
If you still want to opt-out of Convert experiments on www.mozilla.org, you can do so by clicking the link below.
The link will automatically replace Convert cookies and verify your opt-out status.
{% endtrans %}
</p>
<noscript>
<p>{{ _('Please note you need JavaScript enabled in order to opt-out.') }}</p>
</noscript>
<p><a class="mzp-c-cta-link" href="{{ url('exp.opt-out') }}?convert_optout=1">{{ _('Opt-out of Convert experiments') }}</a></p>
<p>{{ _('If you change your mind, you can opt-in again here:') }}</p>
<p><a class="mzp-c-cta-link" href="{{ url('exp.opt-out') }}?convert_canceloptout=1">{{ _('Opt-in to Convert experiments') }}</a></p>
<p>
{% trans dnt='https://support.mozilla.org/kb/how-do-i-turn-do-not-track-feature' %}
Note: If you already have <a href="{{ dnt }}">Do Not Track</a> enabled then Convert will respect your preference,
and you will not be entered into website experiments.
{% endtrans %}
</p>
</article>
</div>
{% endblock %}

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

@ -0,0 +1,11 @@
# 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 http://mozilla.org/MPL/2.0/.
from bedrock.mozorg.util import page
urlpatterns = (
page('opt-out', 'exp/opt-out.html'),
page('firefox/new', 'exp/firefox/new/download.html', active_locales=['en-US', 'en-GB', 'en-CA', 'de']),
)

0
bedrock/exp/views.py Normal file
Просмотреть файл

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

@ -297,6 +297,7 @@ NOINDEX_URLS = [
r'^about/legal/impressum/$',
r'^security/announce/',
r'^etc/',
r'^exp/',
]
# Pages we do want indexed but don't show up in automated URL discovery
@ -465,6 +466,7 @@ INSTALLED_APPS = (
'bedrock.sitemaps',
'bedrock.etc',
'bedrock.pocketfeed',
'bedrock.exp',
# last so that redirects here will be last
'bedrock.redirects',
@ -1394,6 +1396,8 @@ CSP_IMG_SRC = CSP_DEFAULT_SRC + [
'adservice.google.de',
'adservice.google.dk',
'creativecommons.org',
'cdn-3.convertexperiments.com',
'logs.convertexperiments.com',
]
CSP_SCRIPT_SRC = CSP_DEFAULT_SRC + [
# TODO fix things so that we don't need this
@ -1406,10 +1410,16 @@ CSP_SCRIPT_SRC = CSP_DEFAULT_SRC + [
'tagmanager.google.com',
'www.youtube.com',
's.ytimg.com',
'cdn-3.convertexperiments.com',
'app.convert.com',
'data.track.convertexperiments.com',
'1003350.track.convertexperiments.com',
'1003343.track.convertexperiments.com',
]
CSP_STYLE_SRC = CSP_DEFAULT_SRC + [
# TODO fix things so that we don't need this
"'unsafe-inline'",
'app.convert.com',
]
CSP_CHILD_SRC = [
'www.googletagmanager.com',
@ -1458,3 +1468,6 @@ if config('SWITCH_TRACKING_PIXEL', default=str(DEV), parser=bool):
# FUNNELCAKE_103_LOCALES=de,fr,en-US
#
# where "103" in the variable name is the funnelcake ID.
# Issue 7508 - Convert.com experiment sandbox
CONVERT_PROJECT_ID = ('10039-1003350' if DEV else '10039-1003343')

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

@ -28,6 +28,7 @@ urlpatterns = (
url(r'', include('bedrock.mozorg.urls')),
url(r'', include('bedrock.newsletter.urls')),
url(r'^etc/', include('bedrock.etc.urls')),
url(r'^exp/', include('bedrock.exp.urls')),
url(r'^healthz/$', watchman_views.ping, name="watchman.ping"),
url(r'^readiness/$', watchman_views.status, name="watchman.status"),

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

@ -0,0 +1,100 @@
// 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 http://mozilla.org/MPL/2.0/.
$font-path: '/media/fonts';
$image-path: '/media/protocol/img';
@import '../../../../protocol/css/components/hero';
@import '../../../../protocol/css/components/modal';
@import '../../../../protocol/css/components/picto-card';
@import '../../../../protocol/css/includes/lib';
@import '../../../../protocol/css/templates/card-layout';
.mzp-c-hero.mzp-t-dark {
@include background-size(auto 100%);
background-color: $color-off-black;
.mzp-c-hero-title {
@include at2x('/media/img/logos/firefox/logo-quantum-wordmark-white.png', 147px, 48px);
background-position: top center;
background-repeat: no-repeat;
padding-top: $layout-xl;
}
.mzp-c-hero-image img {
top: 48px;
bottom: auto;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .5);
}
@media #{$mq-md} {
@include bidi((
(background-image, url('/media/img/exp/firefox/new/hero-bg.svg'), url('/media/img/exp/firefox/new/hero-bg-rtl.svg')),
(background-position, top right -600px, top left -600px),
));
background-repeat: no-repeat;
.mzp-c-hero-title {
@include bidi(((background-position, top left, top right),));
max-width: 9em;
}
.mzp-c-hero-desc {
max-width: 21em;
}
}
@media #{$mq-lg} {
@include bidi(((background-position, top right -480px, top left -480px),));
}
@media #{$mq-xl} {
@include bidi(((background-position, top right -260px, top left -260px),));
}
}
/**
* Picto card custom icon sizes.
* These should be standardized into a `large` icon size.
* https://github.com/mozilla/protocol/issues/382
*/
.mzp-c-card-picto .mzp-c-card-picto-content {
padding-top: 140px;
&:before {
background-color: transparent;
background-position: top left;
background-repeat: no-repeat;
}
@media #{$mq-lg} {
.mzp-c-card-picto-title {
@include text-display-sm;
margin-bottom: $spacing-xl;
}
}
}
.join .mzp-c-card-picto-content::before {
height: 104px;
width: 104px;
margin-left: -52px;
background-image: url('/media/img/exp/firefox/new/icon-join.svg');
}
.lockwise .mzp-c-card-picto-content::before {
height: 96px;
width: 152px;
margin-left: -76px;
background-image: url('/media/img/exp/firefox/new/icon-lockwise.svg');
}
.private .mzp-c-card-picto-content::before {
height: 83px;
width: 113px;
margin-left: -56px;
background-image: url('/media/img/exp/firefox/new/icon-private.svg');
}

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

@ -0,0 +1,7 @@
// 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 http://mozilla.org/MPL/2.0/.
@import '../../protocol/css/includes/lib';
@import '../../protocol/css/components/article';

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

@ -0,0 +1 @@
<svg width="1187" height="818" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M0 0h1187v818H0z"/><linearGradient x1="9.006%" y1="53.356%" x2="27.729%" y2="47.699%" id="c"><stop stop-color="#FF4F5E" offset="0%"/><stop stop-color="#FFAC49" offset="61.587%"/><stop stop-color="#FF7139" offset="100%"/></linearGradient><linearGradient x1="22.591%" y1="76.958%" x2="23.739%" y2="90.182%" id="d"><stop stop-color="#9059FF" offset="0%"/><stop stop-color="#FF4F5E" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M1188 0H0v818h1188z"/><g transform="matrix(-1 0 0 1 1187 0)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g fill-rule="nonzero" mask="url(#b)"><path d="M5043.34 6243.763c-330.632 26.368-617.387-257.665-640.486-634.407-23.099-376.74 226.205-703.526 556.837-729.894l2993.307-238.72c330.632-26.368 617.387 257.665 640.486 634.406 23.099 376.742-226.206 703.526-556.837 729.895l-2993.307 238.72z" fill="url(#c)" transform="rotate(75 6219.026 144.72)"/><path d="M4787.742 5871.93c327.5 57.888 550.791 402.178 498.733 768.993-52.057 366.815-359.75 617.249-687.25 559.36l-2964.96-524.082c-327.5-57.888-550.79-402.178-498.732-768.993l471.294-3320.885c52.058-366.814 359.75-617.249 687.25-559.36 327.501 57.889 550.792 402.179 498.734 768.993l-377.036 2656.708 2371.967 419.266z" fill="url(#d)" transform="rotate(-144 -45.038 3650.147)"/><path d="M-844.996 823.565c179.544 301.5 540.327 415.284 805.83 254.142 265.504-161.142 335.187-536.188 155.642-837.688-359.089-603.001-219.722-1353.092 311.285-1675.376 531.006-322.284 1252.572-94.717 1611.661 508.284 179.545 301.5 540.328 415.283 805.831 254.142 265.504-161.142 335.187-536.188 155.642-837.688-718.178-1206.002-2161.31-1661.135-3223.323-1016.568-1062.014 644.567-1340.747 2144.75-622.568 3350.752z" fill="#20123A"/></g></g></g></svg>

После

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

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

@ -0,0 +1 @@
<svg width="1187" height="818" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M0 0h1187v818H0z"/><linearGradient x1="9.006%" y1="53.356%" x2="27.729%" y2="47.699%" id="c"><stop stop-color="#FF4F5E" offset="0%"/><stop stop-color="#FFAC49" offset="61.587%"/><stop stop-color="#FF7139" offset="100%"/></linearGradient><linearGradient x1="22.591%" y1="76.958%" x2="23.739%" y2="90.182%" id="d"><stop stop-color="#9059FF" offset="0%"/><stop stop-color="#FF4F5E" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-1 0h1188v818H-1z"/><g><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g fill-rule="nonzero" mask="url(#b)"><path d="M5043.34 6243.763c-330.632 26.368-617.387-257.665-640.486-634.407-23.099-376.74 226.205-703.526 556.837-729.894l2993.307-238.72c330.632-26.368 617.387 257.665 640.486 634.406 23.099 376.742-226.206 703.526-556.837 729.895l-2993.307 238.72z" fill="url(#c)" transform="rotate(75 6219.026 144.72)"/><path d="M4787.742 5871.93c327.5 57.888 550.791 402.178 498.733 768.993-52.057 366.815-359.75 617.249-687.25 559.36l-2964.96-524.082c-327.5-57.888-550.79-402.178-498.732-768.993l471.294-3320.885c52.058-366.814 359.75-617.249 687.25-559.36 327.501 57.889 550.792 402.179 498.734 768.993l-377.036 2656.708 2371.967 419.266z" fill="url(#d)" transform="rotate(-144 -45.038 3650.147)"/><path d="M-844.996 823.565c179.544 301.5 540.327 415.284 805.83 254.142 265.504-161.142 335.187-536.188 155.642-837.688-359.089-603.001-219.722-1353.092 311.285-1675.376 531.006-322.284 1252.572-94.717 1611.661 508.284 179.545 301.5 540.328 415.283 805.831 254.142 265.504-161.142 335.187-536.188 155.642-837.688-718.178-1206.002-2161.31-1661.135-3223.323-1016.568-1062.014 644.567-1340.747 2144.75-622.568 3350.752z" fill="#20123A"/></g></g></g></svg>

После

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

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

@ -0,0 +1 @@
<svg height="104" width="104" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m103.632 51.816c0 6.436-9.643 10.908-11.965 16.505-2.405 5.803 1.161 15.763-3.21 20.134-4.375 4.373-14.335.807-20.136 3.212-5.597 2.322-10.069 11.965-16.505 11.965s-10.908-9.643-16.505-11.965c-5.802-2.405-15.762 1.161-20.134-3.212-4.373-4.371-.807-14.333-3.213-20.134-2.32-5.597-11.964-10.069-11.964-16.505s9.644-10.908 11.964-16.505c2.406-5.802-1.16-15.762 3.213-20.135 4.372-4.372 14.333-.806 20.135-3.21 5.596-2.323 10.068-11.966 16.504-11.966s10.908 9.644 16.505 11.965c5.801 2.405 15.763-1.16 20.135 3.212s.806 14.333 3.211 20.134c2.322 5.597 11.965 10.07 11.965 16.505" fill="#d9bfff"/><path d="m51.817 65.134-13.907 10.15c-1.495 1.09-3.51-.374-2.934-2.132l5.354-16.362-13.95-10.089c-1.5-1.084-.73-3.454 1.121-3.45l17.216.037 5.284-16.384c.568-1.762 3.06-1.762 3.63 0l5.282 16.384 17.217-.038c1.85-.003 2.62 2.367 1.12 3.451l-13.95 10.09 5.356 16.36c.575 1.76-1.44 3.224-2.934 2.134l-13.906-10.15z" fill="#592acb"/><path d="m95.692 52.346c0 5.384-8.067 9.125-10.009 13.807-2.012 4.854.971 13.186-2.686 16.843-3.659 3.658-11.99.675-16.844 2.687-4.682 1.942-8.423 10.01-13.807 10.01s-9.125-8.068-13.807-10.01c-4.854-2.012-13.186.971-16.843-2.687-3.658-3.657-.675-11.99-2.688-16.843-1.94-4.682-10.008-8.423-10.008-13.807s8.067-9.125 10.008-13.807c2.013-4.854-.97-13.186 2.688-16.844 3.657-3.657 11.99-.674 16.844-2.686 4.681-1.942 8.422-10.009 13.806-10.009s9.125 8.067 13.807 10.01c4.853 2.011 13.186-.972 16.844 2.686 3.657 3.657.674 11.99 2.686 16.843 1.942 4.682 10.01 8.423 10.01 13.807" fill="#9059ff"/><path d="m52.346 62.38-10.571 7.717c-1.137.83-2.67-.283-2.232-1.621l4.072-12.44-10.606-7.67c-1.141-.825-.555-2.627.853-2.623l13.089.029 4.016-12.457c.433-1.34 2.327-1.34 2.759 0l4.017 12.457 13.089-.03c1.408-.002 1.993 1.8.853 2.625l-10.607 7.67 4.073 12.438c.437 1.339-1.095 2.452-2.232 1.623l-10.572-7.718z" fill="#fff"/></g></svg>

После

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

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

После

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

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

@ -0,0 +1 @@
<svg height="83" width="113" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m0 83h113v-83h-113z" fill="#fff" fill-rule="evenodd"/></mask><g fill="none" fill-rule="evenodd"><path d="m4.809 0a4.81 4.81 0 0 0 -4.809 4.812v6.014h113v-6.014a4.81 4.81 0 0 0 -4.809-4.812h-103.381z" fill="#45278d"/><path d="m113 10.826h-113v67.362a4.81 4.81 0 0 0 4.809 4.812h103.381a4.81 4.81 0 0 0 4.81-4.812z" fill="#9059ff"/><path d="m20.436 15.638h20.436v-15.638h-20.436z" fill="#9059ff" mask="url(#a)"/><path d="m70.927 40.574a7.994 7.994 0 0 0 -8.932 6.125c0 1.443 5.2 3.061 9.617 3.061 4.418 0 8.928-2.825 8.928-3.827s-2.806-5.065-9.617-5.36h.004zm-28.85 0c-6.811.294-9.617 4.357-9.617 5.359s4.514 3.827 8.928 3.827c4.413 0 9.617-1.618 9.617-3.061a7.994 7.994 0 0 0 -8.928-6.125zm32.97 22.966c-6.998 0-11.837-8.42-18.547-8.42s-11.966 8.42-18.546 8.42c-8.633 0-15.007-8.185-15.112-22.2-.064-8.707 2.524-11.48 13.736-11.48 11.213 0 14.49 4.589 19.922 4.589s8.713-4.594 19.922-4.594c11.208 0 13.8 2.778 13.736 11.48-.105 14.02-6.48 22.205-15.112 22.205z" fill="#fff" mask="url(#a)"/></g></svg>

После

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

17
media/js/exp/convert.js Normal file
Просмотреть файл

@ -0,0 +1,17 @@
/* 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 http://mozilla.org/MPL/2.0/. */
(function() {
'use strict';
var CONVERT_PROJECT_ID = document.getElementsByTagName('html')[0].getAttribute('data-convert-project-id');
// Load third-party JS async and respect DNT.
if (CONVERT_PROJECT_ID && typeof Mozilla.dntEnabled === 'function' && !Mozilla.dntEnabled()) {
var newScriptTag = document.createElement('script');
var target = document.getElementsByTagName('script')[0];
newScriptTag.src = 'https://cdn-3.convertexperiments.com/js/' + CONVERT_PROJECT_ID + '.js';
target.parentNode.insertBefore(newScriptTag, target);
}
})();

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

@ -228,6 +228,18 @@
],
"name": "firefox_campaign_trailhead"
},
{
"files": [
"css/exp/opt-out.scss"
],
"name": "exp-opt-out"
},
{
"files": [
"css/exp/firefox/new/download.scss"
],
"name": "exp-firefox-new"
},
{
"files": [
"css/security/security.scss"
@ -1528,6 +1540,28 @@
],
"name": "common-protocol"
},
{
"files": [
"js/base/mozilla-utils.js",
"js/base/mozilla-client.js",
"js/base/class-list-polyfill.js",
"protocol/js/protocol-supports.js",
"protocol/js/protocol-utils.js",
"protocol/js/protocol-menu.js",
"protocol/js/protocol-navigation.js",
"js/base/protocol/init-navigation.js",
"protocol/js/protocol-lang-switcher.js",
"js/base/protocol/init-lang-switcher.js",
"protocol/js/protocol-details.js",
"protocol/js/protocol-footer.js",
"js/base/base-page-init.js",
"js/base/core-datalayer.js",
"js/base/core-datalayer-init.js",
"js/base/search-params.js",
"js/base/fxa-utm-referral.js"
],
"name": "common-protocol-no-jquery"
},
{
"files": [
"js/base/mozilla-article.js",
@ -1537,6 +1571,19 @@
],
"name": "basic-article"
},
{
"files": [
"js/libs/jquery-3.4.1.min.js",
"js/exp/convert.js"
],
"name": "convert"
},
{
"files": [
"js/libs/jquery-3.4.1.min.js"
],
"name": "jquery"
},
{
"files": [
"js/libs/modernizr.custom.inputtypes.js",