Bug 1515206 - Add Pocket layout code, snippets and perf bug fixes to Activity Stream r=Mardak

Differential Revision: https://phabricator.services.mozilla.com/D14923

--HG--
extra : moz-landing-system : lando
This commit is contained in:
k88hudson 2018-12-19 01:52:03 +00:00
Родитель 0fc58f5ee3
Коммит 2c424c573a
259 изменённых файлов: 1024 добавлений и 425 удалений

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

@ -33,6 +33,7 @@ for (const type of [
"AS_ROUTER_TELEMETRY_USER_EVENT",
"BLOCK_URL",
"BOOKMARK_URL",
"CONTENT_LAYOUT",
"COPY_DOWNLOAD_LINK",
"DELETE_BOOKMARK_BY_ID",
"DELETE_FROM_POCKET",

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

@ -47,6 +47,7 @@ const INITIAL_STATE = {
pocketCta: {},
waitingForSpoc: true,
},
Layout: [],
};
function App(prevState = INITIAL_STATE.App, action) {
@ -429,10 +430,19 @@ function Pocket(prevState = INITIAL_STATE.Pocket, action) {
}
}
function Layout(prevState = INITIAL_STATE.Layout, action) {
switch (action.type) {
case at.CONTENT_LAYOUT:
return action.data;
default:
return prevState;
}
}
this.INITIAL_STATE = INITIAL_STATE;
this.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;
this.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;
this.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket};
this.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket, Layout};
const EXPORTED_SYMBOLS = ["reducers", "INITIAL_STATE", "insertPinned", "TOP_SITES_DEFAULT_ROWS", "TOP_SITES_MAX_SITES_PER_ROW"];

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

@ -42,6 +42,7 @@
}
.monthly-checkbox-container {
display: flex;
width: 100%;
}

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

@ -27,7 +27,7 @@ export class _StartupOverlay extends React.PureComponent {
try {
this.didFetch = true;
const fxaParams = "entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email";
const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);
const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`, {credentials: "omit"});
if (response.status === 200) {
const {flowId, flowBeginTime} = await response.json();
this.setState({flowId, flowBeginTime});

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

@ -47,7 +47,7 @@ export class SubmitFormSnippet extends React.PureComponent {
{url: this.refs.form.action, formData: new FormData(this.refs.form)};
try {
const fetchRequest = new Request(url, {body: formData, method: "POST"});
const fetchRequest = new Request(url, {body: formData, method: "POST", credentials: "omit"});
const response = await fetch(fetchRequest);
json = await response.json();
} catch (err) {

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

@ -67,6 +67,7 @@
font-size: 12px;
color: var(--newtab-text-secondary-color);
margin-top: 10px;
display: flex;
flex: 0 0 100%;
}

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

@ -24,6 +24,7 @@ export class _CollapsibleSection extends React.PureComponent {
this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);
this.onMenuUpdate = this.onMenuUpdate.bind(this);
this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};
this.setContextMenuButtonRef = this.setContextMenuButtonRef.bind(this);
}
componentWillMount() {
@ -41,8 +42,19 @@ export class _CollapsibleSection extends React.PureComponent {
}
}
setContextMenuButtonRef(element) {
this.contextMenuButtonRef = element;
}
componentDidMount() {
this.contextMenuButtonRef.addEventListener("mouseenter", this.onMenuButtonMouseEnter);
this.contextMenuButtonRef.addEventListener("mouseleave", this.onMenuButtonMouseLeave);
}
componentWillUnmount() {
this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);
this.contextMenuButtonRef.removeEventListener("mouseenter", this.onMenuButtonMouseEnter);
this.contextMenuButtonRef.removeEventListener("mouseleave", this.onMenuButtonMouseLeave);
}
enableOrDisableAnimation() {
@ -148,7 +160,7 @@ export class _CollapsibleSection extends React.PureComponent {
<span className="click-target" onClick={this.onHeaderClick}>
{isCollapsible && <span className={`collapsible-arrow icon ${collapsed ? "icon-arrowhead-forward-small" : "icon-arrowhead-down-small"}`} />}
</span>
<span>
<span className="learn-more-link-wrapper">
{learnMore &&
<span className="learn-more-link">
<a href={learnMore.link.href}>
@ -164,8 +176,7 @@ export class _CollapsibleSection extends React.PureComponent {
className="context-menu-button icon"
title={this.props.intl.formatMessage({id: "context_menu_title"})}
onClick={this.onMenuButtonClick}
onMouseEnter={this.onMenuButtonMouseEnter}
onMouseLeave={this.onMenuButtonMouseLeave}>
ref={this.setContextMenuButtonRef}>
<span className="sr-only">
<FormattedMessage id="section_context_menu_button_sr" />
</span>

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

@ -17,6 +17,20 @@
}
.click-target-container {
// Center "How it works" for "mobile" viewport
@media (max-width: $break-point-medium - 1) {
display: block;
.learn-more-link-wrapper {
display: block;
text-align: center;
.learn-more-link {
margin-inline-start: 0;
}
}
}
vertical-align: top;
.click-target {
@ -128,4 +142,12 @@
overflow: hidden;
}
}
// Hide first story card for the medium breakpoint to prevent orphaned third story
&[data-section-id='topstories'] .card-outer:first-child {
@media (min-width: $break-point-medium) and (max-width: $break-point-large - 1) {
display: none;
}
}
}

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

@ -3,9 +3,11 @@
$min-button-height: 18px;
font-size: 13px;
margin-inline-end: 20px;
display: inline-block;
display: flex;
align-items: flex-start;
.pocket-cta-button {
white-space: nowrap;
background: $blue-60;
letter-spacing: -0.34px;
color: $white;

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

@ -248,11 +248,19 @@ export class Section extends React.PureComponent {
</div>}
{id === "topstories" &&
<div className="top-stories-bottom-container">
<div>
{shouldShowTopics && <Topics topics={this.props.topics} />}
{shouldShowPocketCta && <PocketLoggedInCta />}
</div>
<div>
{shouldShowTopics &&
<div className="wrapper-topics">
<Topics topics={this.props.topics} />
</div>
}
{shouldShowPocketCta &&
<div className="wrapper-cta">
<PocketLoggedInCta />
</div>
}
<div className="wrapper-more-recommendations">
{shouldShowReadMore &&
<MoreRecommendations read_more_endpoint={read_more_endpoint} />}
</div>
@ -298,7 +306,26 @@ export class _Sections extends React.PureComponent {
return sections;
}
renderLayout() {
return (
<div className="sections-list layout">
{this.props.Layout.map((section, sectionIndex) => (
<div key={`section-${sectionIndex}`} className={`column column-${section.width}`}>
{section.components.map((component, componentIndex) => (
<div key={`component-${componentIndex}`}>
<div>{component.type}</div>
</div>
))}
</div>
))}
</div>
);
}
render() {
if (this.props.Layout && this.props.Layout.length) {
return this.renderLayout();
}
return (
<div className="sections-list">
{this.renderSections()}
@ -307,4 +334,4 @@ export class _Sections extends React.PureComponent {
}
}
export const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);
export const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs, Layout: state.Layout}))(_Sections);

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

@ -1,4 +1,25 @@
.sections-list {
&.layout {
$columns: 12;
display: grid;
grid-template-columns: repeat($columns, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px;
.column {
border: 1px solid $black;
}
@while $columns > 0 {
.column-#{$columns} {
grid-column-start: auto;
grid-column-end: span $columns;
}
$columns: $columns - 1;
}
}
.section-list {
display: grid;
grid-gap: $base-gutter;
@ -84,6 +105,43 @@
font-size: 13px;
}
}
.wrapper-topics,
.wrapper-cta + .wrapper-more-recommendations {
@media (max-width: $break-point-large - 1) {
display: none;
}
}
@media (max-width: $break-point-medium - 1) {
.wrapper-cta {
text-align: center;
.pocket-logged-in-cta {
display: block;
margin-inline-end: 0;
.pocket-cta-button {
max-width: none;
display: block;
margin-inline-end: 0;
margin: 5px 0 10px;
}
}
}
.wrapper-more-recommendations {
width: 100%;
.more-recommendations {
justify-content: center;
&::after {
display: none;
}
}
}
}
}
@media (min-width: $break-point-widest) {

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

@ -96,6 +96,8 @@ $wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7 + $section-horizont
// layout issues when the scrollbar is visible. 16px is wide enough to cover all
// OSes and keeps it simpler than a per-OS value.
$scrollbar-width: 16px;
// Breakpoints
$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;
$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;
$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;

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

@ -846,6 +846,50 @@ main {
opacity: 1;
transform: translateY(0); } }
.sections-list.layout {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px; }
.sections-list.layout .column {
border: 1px solid #000; }
.sections-list.layout .column-12 {
grid-column-start: auto;
grid-column-end: span 12; }
.sections-list.layout .column-11 {
grid-column-start: auto;
grid-column-end: span 11; }
.sections-list.layout .column-10 {
grid-column-start: auto;
grid-column-end: span 10; }
.sections-list.layout .column-9 {
grid-column-start: auto;
grid-column-end: span 9; }
.sections-list.layout .column-8 {
grid-column-start: auto;
grid-column-end: span 8; }
.sections-list.layout .column-7 {
grid-column-start: auto;
grid-column-end: span 7; }
.sections-list.layout .column-6 {
grid-column-start: auto;
grid-column-end: span 6; }
.sections-list.layout .column-5 {
grid-column-start: auto;
grid-column-end: span 5; }
.sections-list.layout .column-4 {
grid-column-start: auto;
grid-column-end: span 4; }
.sections-list.layout .column-3 {
grid-column-start: auto;
grid-column-end: span 3; }
.sections-list.layout .column-2 {
grid-column-start: auto;
grid-column-end: span 2; }
.sections-list.layout .column-1 {
grid-column-start: auto;
grid-column-end: span 1; }
.sections-list .section-list {
display: grid;
grid-gap: 32px;
@ -918,6 +962,27 @@ main {
.top-stories-bottom-container a.more-recommendations {
font-weight: normal;
font-size: 13px; }
@media (max-width: 865px) {
.top-stories-bottom-container .wrapper-topics,
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
display: none; } }
@media (max-width: 609px) {
.top-stories-bottom-container .wrapper-cta {
text-align: center; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
display: block;
margin-inline-end: 0; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
max-width: none;
display: block;
margin-inline-end: 0;
margin: 5px 0 10px; }
.top-stories-bottom-container .wrapper-more-recommendations {
width: 100%; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
justify-content: center; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
display: none; } }
@media (min-width: 1122px) {
.sections-list .normal-cards .section-list {
@ -1471,6 +1536,14 @@ main {
vertical-align: middle; }
.collapsible-section .section-title .click-target-container {
vertical-align: top; }
@media (max-width: 609px) {
.collapsible-section .section-title .click-target-container {
display: block; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
display: block;
text-align: center; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
margin-inline-start: 0; } }
.collapsible-section .section-title .click-target-container .click-target {
cursor: pointer;
white-space: nowrap; }
@ -1532,6 +1605,9 @@ main {
.collapsible-section.collapsed .section-body {
max-height: 0;
overflow: hidden; }
@media (min-width: 610px) and (max-width: 865px) {
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
display: none; } }
.asrouter-admin {
max-width: 996px;
@ -1606,8 +1682,10 @@ main {
.pocket-logged-in-cta {
font-size: 13px;
margin-inline-end: 20px;
display: inline-block; }
display: flex;
align-items: flex-start; }
.pocket-logged-in-cta .pocket-cta-button {
white-space: nowrap;
background: #0060DF;
letter-spacing: -0.34px;
color: #FFF;
@ -2059,6 +2137,7 @@ main {
font-size: 12px;
color: var(--newtab-text-secondary-color);
margin-top: 10px;
display: flex;
flex: 0 0 100%; }
.SubmitFormSnippet .innerWrapper {
max-width: 670px;
@ -2245,6 +2324,7 @@ main {
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
border: 1px dotted var(--newtab-link-primary-color); }
.EOYSnippetForm .monthly-checkbox-container {
display: flex;
width: 100%; }
.EOYSnippetForm .donation-form-url {
margin-inline-start: 18px;

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

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

@ -849,6 +849,50 @@ main {
opacity: 1;
transform: translateY(0); } }
.sections-list.layout {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px; }
.sections-list.layout .column {
border: 1px solid #000; }
.sections-list.layout .column-12 {
grid-column-start: auto;
grid-column-end: span 12; }
.sections-list.layout .column-11 {
grid-column-start: auto;
grid-column-end: span 11; }
.sections-list.layout .column-10 {
grid-column-start: auto;
grid-column-end: span 10; }
.sections-list.layout .column-9 {
grid-column-start: auto;
grid-column-end: span 9; }
.sections-list.layout .column-8 {
grid-column-start: auto;
grid-column-end: span 8; }
.sections-list.layout .column-7 {
grid-column-start: auto;
grid-column-end: span 7; }
.sections-list.layout .column-6 {
grid-column-start: auto;
grid-column-end: span 6; }
.sections-list.layout .column-5 {
grid-column-start: auto;
grid-column-end: span 5; }
.sections-list.layout .column-4 {
grid-column-start: auto;
grid-column-end: span 4; }
.sections-list.layout .column-3 {
grid-column-start: auto;
grid-column-end: span 3; }
.sections-list.layout .column-2 {
grid-column-start: auto;
grid-column-end: span 2; }
.sections-list.layout .column-1 {
grid-column-start: auto;
grid-column-end: span 1; }
.sections-list .section-list {
display: grid;
grid-gap: 32px;
@ -921,6 +965,27 @@ main {
.top-stories-bottom-container a.more-recommendations {
font-weight: normal;
font-size: 13px; }
@media (max-width: 865px) {
.top-stories-bottom-container .wrapper-topics,
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
display: none; } }
@media (max-width: 609px) {
.top-stories-bottom-container .wrapper-cta {
text-align: center; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
display: block;
margin-inline-end: 0; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
max-width: none;
display: block;
margin-inline-end: 0;
margin: 5px 0 10px; }
.top-stories-bottom-container .wrapper-more-recommendations {
width: 100%; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
justify-content: center; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
display: none; } }
@media (min-width: 1122px) {
.sections-list .normal-cards .section-list {
@ -1474,6 +1539,14 @@ main {
vertical-align: middle; }
.collapsible-section .section-title .click-target-container {
vertical-align: top; }
@media (max-width: 609px) {
.collapsible-section .section-title .click-target-container {
display: block; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
display: block;
text-align: center; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
margin-inline-start: 0; } }
.collapsible-section .section-title .click-target-container .click-target {
cursor: pointer;
white-space: nowrap; }
@ -1535,6 +1608,9 @@ main {
.collapsible-section.collapsed .section-body {
max-height: 0;
overflow: hidden; }
@media (min-width: 610px) and (max-width: 865px) {
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
display: none; } }
.asrouter-admin {
max-width: 996px;
@ -1609,8 +1685,10 @@ main {
.pocket-logged-in-cta {
font-size: 13px;
margin-inline-end: 20px;
display: inline-block; }
display: flex;
align-items: flex-start; }
.pocket-logged-in-cta .pocket-cta-button {
white-space: nowrap;
background: #0060DF;
letter-spacing: -0.34px;
color: #FFF;
@ -2062,6 +2140,7 @@ main {
font-size: 12px;
color: var(--newtab-text-secondary-color);
margin-top: 10px;
display: flex;
flex: 0 0 100%; }
.SubmitFormSnippet .innerWrapper {
max-width: 670px;
@ -2248,6 +2327,7 @@ main {
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
border: 1px dotted var(--newtab-link-primary-color); }
.EOYSnippetForm .monthly-checkbox-container {
display: flex;
width: 100%; }
.EOYSnippetForm .donation-form-url {
margin-inline-start: 18px;

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

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

@ -846,6 +846,50 @@ main {
opacity: 1;
transform: translateY(0); } }
.sections-list.layout {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px; }
.sections-list.layout .column {
border: 1px solid #000; }
.sections-list.layout .column-12 {
grid-column-start: auto;
grid-column-end: span 12; }
.sections-list.layout .column-11 {
grid-column-start: auto;
grid-column-end: span 11; }
.sections-list.layout .column-10 {
grid-column-start: auto;
grid-column-end: span 10; }
.sections-list.layout .column-9 {
grid-column-start: auto;
grid-column-end: span 9; }
.sections-list.layout .column-8 {
grid-column-start: auto;
grid-column-end: span 8; }
.sections-list.layout .column-7 {
grid-column-start: auto;
grid-column-end: span 7; }
.sections-list.layout .column-6 {
grid-column-start: auto;
grid-column-end: span 6; }
.sections-list.layout .column-5 {
grid-column-start: auto;
grid-column-end: span 5; }
.sections-list.layout .column-4 {
grid-column-start: auto;
grid-column-end: span 4; }
.sections-list.layout .column-3 {
grid-column-start: auto;
grid-column-end: span 3; }
.sections-list.layout .column-2 {
grid-column-start: auto;
grid-column-end: span 2; }
.sections-list.layout .column-1 {
grid-column-start: auto;
grid-column-end: span 1; }
.sections-list .section-list {
display: grid;
grid-gap: 32px;
@ -918,6 +962,27 @@ main {
.top-stories-bottom-container a.more-recommendations {
font-weight: normal;
font-size: 13px; }
@media (max-width: 865px) {
.top-stories-bottom-container .wrapper-topics,
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
display: none; } }
@media (max-width: 609px) {
.top-stories-bottom-container .wrapper-cta {
text-align: center; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
display: block;
margin-inline-end: 0; }
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
max-width: none;
display: block;
margin-inline-end: 0;
margin: 5px 0 10px; }
.top-stories-bottom-container .wrapper-more-recommendations {
width: 100%; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
justify-content: center; }
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
display: none; } }
@media (min-width: 1122px) {
.sections-list .normal-cards .section-list {
@ -1471,6 +1536,14 @@ main {
vertical-align: middle; }
.collapsible-section .section-title .click-target-container {
vertical-align: top; }
@media (max-width: 609px) {
.collapsible-section .section-title .click-target-container {
display: block; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
display: block;
text-align: center; }
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
margin-inline-start: 0; } }
.collapsible-section .section-title .click-target-container .click-target {
cursor: pointer;
white-space: nowrap; }
@ -1532,6 +1605,9 @@ main {
.collapsible-section.collapsed .section-body {
max-height: 0;
overflow: hidden; }
@media (min-width: 610px) and (max-width: 865px) {
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
display: none; } }
.asrouter-admin {
max-width: 996px;
@ -1606,8 +1682,10 @@ main {
.pocket-logged-in-cta {
font-size: 13px;
margin-inline-end: 20px;
display: inline-block; }
display: flex;
align-items: flex-start; }
.pocket-logged-in-cta .pocket-cta-button {
white-space: nowrap;
background: #0060DF;
letter-spacing: -0.34px;
color: #FFF;
@ -2059,6 +2137,7 @@ main {
font-size: 12px;
color: var(--newtab-text-secondary-color);
margin-top: 10px;
display: flex;
flex: 0 0 100%; }
.SubmitFormSnippet .innerWrapper {
max-width: 670px;
@ -2245,6 +2324,7 @@ main {
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
border: 1px dotted var(--newtab-link-primary-color); }
.EOYSnippetForm .monthly-checkbox-container {
display: flex;
width: 100%; }
.EOYSnippetForm .donation-form-url {
margin-inline-start: 18px;

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

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

@ -211,7 +211,7 @@ const globalImportContext = typeof Window === "undefined" ? BACKGROUND_PROCESS :
// }
const actionTypes = {};
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DOWNLOAD_CHANGED", "FILL_SEARCH_TERM", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "CONTENT_LAYOUT", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DOWNLOAD_CHANGED", "FILL_SEARCH_TERM", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
actionTypes[type] = type;
}
@ -2017,7 +2017,7 @@ class _StartupOverlay extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureC
try {
_this.didFetch = true;
const fxaParams = "entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email";
const response = yield fetch(`${_this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);
const response = yield fetch(`${_this.props.fxa_endpoint}/metrics-flow?${fxaParams}`, { credentials: "omit" });
if (response.status === 200) {
const { flowId, flowBeginTime } = yield response.json();
_this.setState({ flowId, flowBeginTime });
@ -3942,15 +3942,19 @@ class Section extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureComponent
id === "topstories" && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ className: "top-stories-bottom-container" },
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
shouldShowTopics && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
null,
shouldShowTopics && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__["Topics"], { topics: this.props.topics }),
shouldShowPocketCta && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__["PocketLoggedInCta"], null)
{ className: "wrapper-topics" },
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__["Topics"], { topics: this.props.topics })
),
shouldShowPocketCta && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ className: "wrapper-cta" },
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__["PocketLoggedInCta"], null)
),
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
null,
{ className: "wrapper-more-recommendations" },
shouldShowReadMore && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__["MoreRecommendations"], { read_more_endpoint: read_more_endpoint })
)
)
@ -3995,7 +3999,30 @@ class _Sections extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureCompone
return sections;
}
renderLayout() {
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ className: "sections-list layout" },
this.props.Layout.map((section, sectionIndex) => react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ key: `section-${sectionIndex}`, className: `column column-${section.width}` },
section.components.map((component, componentIndex) => react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ key: `component-${componentIndex}` },
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
null,
component.type
)
))
))
);
}
render() {
if (this.props.Layout && this.props.Layout.length) {
return this.renderLayout();
}
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
"div",
{ className: "sections-list" },
@ -4004,7 +4031,7 @@ class _Sections extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureCompone
}
}
const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs }))(_Sections);
const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs, Layout: state.Layout }))(_Sections);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
/***/ }),
@ -4510,6 +4537,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);
this.onMenuUpdate = this.onMenuUpdate.bind(this);
this.state = { enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false };
this.setContextMenuButtonRef = this.setContextMenuButtonRef.bind(this);
}
componentWillMount() {
@ -4527,8 +4555,19 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
}
}
setContextMenuButtonRef(element) {
this.contextMenuButtonRef = element;
}
componentDidMount() {
this.contextMenuButtonRef.addEventListener("mouseenter", this.onMenuButtonMouseEnter);
this.contextMenuButtonRef.addEventListener("mouseleave", this.onMenuButtonMouseLeave);
}
componentWillUnmount() {
this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);
this.contextMenuButtonRef.removeEventListener("mouseenter", this.onMenuButtonMouseEnter);
this.contextMenuButtonRef.removeEventListener("mouseleave", this.onMenuButtonMouseLeave);
}
enableOrDisableAnimation() {
@ -4647,7 +4686,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
),
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
"span",
null,
{ className: "learn-more-link-wrapper" },
learnMore && react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
"span",
{ className: "learn-more-link" },
@ -4669,8 +4708,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
className: "context-menu-button icon",
title: this.props.intl.formatMessage({ id: "context_menu_title" }),
onClick: this.onMenuButtonClick,
onMouseEnter: this.onMenuButtonMouseEnter,
onMouseLeave: this.onMenuButtonMouseLeave },
ref: this.setContextMenuButtonRef },
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
"span",
{ className: "sr-only" },
@ -6755,7 +6793,7 @@ class SubmitFormSnippet_SubmitFormSnippet extends external_React_default.a.PureC
const { url, formData } = _this.props.processFormData ? _this.props.processFormData(_this.refs.mainInput, _this.props) : { url: _this.refs.form.action, formData: new FormData(_this.refs.form) };
try {
const fetchRequest = new Request(url, { body: formData, method: "POST" });
const fetchRequest = new Request(url, { body: formData, method: "POST", credentials: "omit" });
const response = yield fetch(fetchRequest);
json = yield response.json();
} catch (err) {
@ -9840,7 +9878,8 @@ const INITIAL_STATE = {
isUserLoggedIn: null,
pocketCta: {},
waitingForSpoc: true
}
},
Layout: []
};
@ -10224,7 +10263,16 @@ function Pocket(prevState = INITIAL_STATE.Pocket, action) {
}
}
var reducers = { TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket };
function Layout(prevState = INITIAL_STATE.Layout, action) {
switch (action.type) {
case Actions["actionTypes"].CONTENT_LAYOUT:
return action.data;
default:
return prevState;
}
}
var reducers = { TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket, Layout };
/***/ }),
/* 56 */

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

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

@ -68,8 +68,7 @@ class PageAction {
// Wait for layout to flush to avoid a synchronous reflow then calculate the
// label width. We can safely get the width even though the recommendation is
// collapsed; the label itself remains full width (with its overflow hidden)
await this.window.promiseDocumentFlushed;
const [{width}] = this.label.getClientRects();
let [{width}] = await this.window.promiseDocumentFlushed(() => this.label.getClientRects());
this.urlbar.style.setProperty("--cfr-label-width", `${width}px`);
this.container.addEventListener("click", this._handleClick);
@ -244,7 +243,6 @@ class PageAction {
// See https://searchfox.org/mozilla-central/rev/847b64cc28b74b44c379f9bff4f415b97da1c6d7/toolkit/modules/PopupNotifications.jsm#42
browser.cfrpopupnotificationanchor = this.container;
const notification = this.window.document.getElementById("contextual-feature-recommendation-notification");
const headerLabel = this.window.document.getElementById("cfr-notification-header-label");
const headerLink = this.window.document.getElementById("cfr-notification-header-link");
const headerImage = this.window.document.getElementById("cfr-notification-header-image");

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

@ -9,10 +9,22 @@ ChromeUtils.import("resource://gre/modules/addons/AddonRepository.jsm");
async function getAddonName() {
try {
const {content} = await AttributionCode.getAttrDataAsync();
if (!content) {
let {content, source} = await AttributionCode.getAttrDataAsync();
if (!content || source !== "addons.mozilla.org") {
return null;
}
// Attribution data can be double encoded
while (content.includes("%")) {
try {
const result = decodeURIComponent(content);
if (result === content) {
break;
}
content = result;
} catch (e) {
break;
}
}
const addons = await AddonRepository.getAddonsByIDs([content]);
return addons[0].name;
} catch (e) {

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

@ -151,7 +151,7 @@ const MESSAGES = () => ([
scene1_title_icon: TEST_ICON_16,
scene2_button_label: "Send",
scene2_disclaimer_html: "The intended recipient of the email must have consented. <privacyLink>Learn more.</privacyLink>",
scene2_disclaimer_html: "The intended recipient of the email must have consented. <privacyLink>Learn more</privacyLink>.",
scene2_dismiss_button_text: "Dismiss",
scene2_icon: TEST_ICON,
scene2_input_placeholder: "Your email address or phone number",

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

@ -29,7 +29,7 @@ this.TippyTopProvider = class TippyTopProvider {
async init() {
// Load the Tippy Top sites from the json manifest.
try {
for (const site of await (await fetch(TIPPYTOP_JSON_PATH)).json()) {
for (const site of await (await fetch(TIPPYTOP_JSON_PATH, {credentials: "omit"})).json()) {
// The tippy top manifest can have a url property (string) or a
// urls property (array of strings)
for (const url of site.url ? [site.url] : site.urls || []) {

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

@ -112,6 +112,13 @@ this.TopStoriesFeed = class TopStoriesFeed {
this.store.dispatch(shouldBroadcast ? ac.BroadcastToContent(action) : ac.AlsoToPreloaded(action));
}
maybeDispatchLayoutUpdate(data, shouldBroadcast) {
if (data && data.length) {
const action = {type: at.CONTENT_LAYOUT, data};
this.store.dispatch(shouldBroadcast ? ac.BroadcastToContent(action) : ac.AlsoToPreloaded(action));
}
}
doContentUpdate(shouldBroadcast) {
let updateProps = {};
if (this.stories) {
@ -168,12 +175,13 @@ this.TopStoriesFeed = class TopStoriesFeed {
return;
}
try {
const response = await fetch(this.stories_endpoint);
const response = await fetch(this.stories_endpoint, {credentials: "omit"});
if (!response.ok) {
throw new Error(`Stories endpoint returned unexpected status: ${response.status}`);
}
const body = await response.json();
this.maybeDispatchLayoutUpdate(body.layout);
this.updateSettings(body.settings);
this.stories = this.rotate(this.transform(body.recommendations));
this.cleanUpTopRecImpressionPref();
@ -194,7 +202,9 @@ this.TopStoriesFeed = class TopStoriesFeed {
async loadCachedData() {
const data = await this.cache.get();
let stories = data.stories && data.stories.recommendations;
let layout = data.stories && data.stories.layout;
let topics = data.topics && data.topics.topics;
this.maybeDispatchLayoutUpdate(layout);
let affinities = data.domainAffinities;
if (this.personalized && affinities && affinities.scores) {
@ -288,7 +298,7 @@ this.TopStoriesFeed = class TopStoriesFeed {
return;
}
try {
const response = await fetch(this.topics_endpoint);
const response = await fetch(this.topics_endpoint, {credentials: "omit"});
if (!response.ok) {
throw new Error(`Topics endpoint returned unexpected status: ${response.status}`);
}

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

@ -143,9 +143,7 @@ pocket_read_more=Temes populars:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=Mostra més articles
pocket_more_reccommendations=Més recomanacions
pocket_learn_more=Més informació
pocket_how_it_works=Com funciona
pocket_cta_button=Obtén el Pocket
pocket_cta_text=Deseu els vostres articles preferits al Pocket i gaudiu d'altres recomanacions fascinants.
@ -197,7 +195,6 @@ firstrun_form_header=Introduïu la vostra adreça electrònica
firstrun_form_sub_header=per continuar al Firefox Sync.
firstrun_email_input_placeholder=Adreça electrònica
firstrun_invalid_input=Cal una adreça electrònica vàlida
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
@ -208,3 +205,6 @@ firstrun_privacy_notice=Avís de privadesa
firstrun_continue_to_login=Continua
firstrun_skip_login=Omet aquest pas
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=Obre el menú

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

@ -60,7 +60,7 @@ menu_action_open_file=Otevřít soubor
# link that belongs to this downloaded item"
menu_action_copy_download_link=Kopírovat stahovaný odkaz
menu_action_go_to_download_page=Přejít na stránku stahování
menu_action_remove_download=Odebrat z historie
menu_action_remove_download=Odstranit z historie
# LOCALIZATION NOTE (search_button): This is screenreader only text for the
# search button.
@ -144,7 +144,6 @@ pocket_read_more=Populární témata:
# end of the list of popular topic links.
pocket_read_even_more=Zobrazit více článků
pocket_more_reccommendations=Další doporučení
pocket_learn_more=Zjistit více
pocket_how_it_works=Jak to funguje
pocket_cta_button=Získejte Pocket
pocket_cta_text=Ukládejte si články do služby Pocket a užívejte si skvělé čtení.
@ -178,7 +177,7 @@ section_menu_action_expand_section=Rozbalit sekci
section_menu_action_manage_section=Nastavení sekce
section_menu_action_manage_webext=Správa rozšíření
section_menu_action_add_topsite=Přidat mezi top stránky
section_menu_action_add_search_engine=Přidat vyhledávací modul
section_menu_action_add_search_engine=Přidat vyhledávač
section_menu_action_move_up=Posunout nahoru
section_menu_action_move_down=Posunout dolů
section_menu_action_privacy_notice=Zásady ochrany osobních údajů
@ -202,7 +201,7 @@ firstrun_invalid_input=Je požadován platný e-mail
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Pokračováním souhlasíte s {terms} a {privacy}.
firstrun_terms_of_service=Podmínkami používání služby
firstrun_privacy_notice=Zásadami ochrany soukromí
firstrun_privacy_notice=Zásadami ochrany osobních údajů
firstrun_continue_to_login=Pokračovat
firstrun_skip_login=Přeskočit tento krok

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

@ -143,9 +143,7 @@ pocket_read_more=Gai ezagunak:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=Ikusi istorio gehiago
pocket_more_reccommendations=Gomendio gehiago
pocket_learn_more=Argibide gehiago
pocket_how_it_works=Nola dabilen
pocket_cta_button=Eskuratu Pocket
pocket_cta_text=Gorde gogoko dituzun istorioak Pocket-en eta piztu zure gogoa irakurgai erakargarriekin.
@ -197,7 +195,6 @@ firstrun_form_header=Idatzi zure helbide elektronikoa
firstrun_form_sub_header=Firefox Sync-ekin jarraitzeko.
firstrun_email_input_placeholder=Helbide elektronikoa
firstrun_invalid_input=Baliozko helbide elektronikoa behar da
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
@ -208,3 +205,6 @@ firstrun_privacy_notice=Pribatutasun-oharra
firstrun_continue_to_login=Jarraitu
firstrun_skip_login=Saltatu urrats hau
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=Ireki menua

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

@ -143,9 +143,9 @@ pocket_read_more=נושאים פופולריים:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=צפייה בחדשות נוספות
pocket_more_reccommendations=המלצות נוספות
pocket_learn_more=מידע נוסף
pocket_how_it_works=איך זה עובד
pocket_cta_button=קבלת Pocket
highlights_empty_state=ניתן להתחיל בגלישה ואנו נציג בפניך מספר כתבות, סרטונים ועמודים שונים מעולים בהם ביקרת לאחרונה או שהוספת לסימניות.
@ -195,7 +195,6 @@ firstrun_form_header=נא להקליד את כתובת הדוא״ל שלך
firstrun_form_sub_header=כדי להמשיך אל Firefox Sync.
firstrun_email_input_placeholder=דוא״ל
firstrun_invalid_input=נדרשת כתובת דוא״ל חוקית
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
@ -204,5 +203,8 @@ firstrun_extra_legal_links=בחירתך להמשיך בתהליך מהווה א
firstrun_terms_of_service=תנאי השירות
firstrun_privacy_notice=הצהרת הפרטיות
firstrun_continue_to_login=להמשיך
firstrun_skip_login=לדלג על שלב זה
firstrun_continue_to_login=המשך
firstrun_skip_login=דילוג על שלב זה
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=פתיחת תפריט

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

@ -1,7 +1,7 @@
newtab_page_title=Նոր ներդիր
header_top_sites=Լավագույն կայքեր
header_highlights=Գունանշում
header_highlights=Գունանշումներ
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
# of the corresponding content provider.
header_recommended_by=Առաջարկվում է {provider}
@ -31,6 +31,7 @@ menu_action_open_new_window=Բացել Նոր Պատուհանով
menu_action_open_private_window=Բացել Նոր Գաղտնի դիտարկմամբ
menu_action_dismiss=Բաց թողնել
menu_action_delete=Ջնջել Պատմությունից
menu_action_pin=Ամրացնել
menu_action_unpin=Ապամրացնել
confirm_history_delete_p1=Վստահ եք, որ ցանկանում եք ջնջել այս էջի ամեն մի օրինակ ձեր պատմությունից?
# LOCALIZATION NOTE (confirm_history_delete_notice_p2): this string is displayed in

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

@ -144,7 +144,6 @@ pocket_read_more=Subjectos popular:
# end of the list of popular topic links.
pocket_read_even_more=Vider plus historias
pocket_more_reccommendations=Altere recommendationes
pocket_learn_more=Saper plus
pocket_how_it_works=Como illo labora
pocket_cta_button=Installa Pocket
pocket_cta_text=Salvar le chronologias que tu ama in Pocket, e alimenta tu mente con lecturas fascinante.

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

@ -1,15 +1,19 @@
newtab_page_title=Nýr flipi
header_highlights=Úrdrættir
header_top_sites=Efstu vefsvæðin
header_highlights=Hápunktar
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
# of the corresponding content provider.
header_recommended_by=Með þessu mælir {provider}
# LOCALIZATION NOTE(context_menu_button_sr): This is for screen readers when
# the context menu button is focused/active. Title is the label or hostname of
# the site.
context_menu_button_sr=Opna samhengisvalmynd fyrir {title}
# LOCALIZATION NOTE(section_context_menu_button_sr): This is for screen readers when
# the section edit context menu button is focused/active.
section_context_menu_button_sr=Opnaðu samhengisvalmyndina
# LOCALIZATION NOTE (type_label_*): These labels are associated to pages to give
# context on how the element is related to the user, e.g. type indicates that
@ -24,13 +28,22 @@ type_label_downloaded=Niðurhalað
# menu and are meant as a call to action for a given page.
# LOCALIZATION NOTE (menu_action_bookmark): Bookmark is a verb, as in "Add to
# bookmarks"
menu_action_bookmark=Bókamerkja
menu_action_remove_bookmark=Fjarlægja bókamerki
menu_action_open_new_window=Opna í nýjum glugga
menu_action_open_private_window=Opna í nýjum huliðsglugga
menu_action_dismiss=Hafna
menu_action_delete=Eyða úr ferli
menu_action_pin=Festa
menu_action_unpin=Leysa
confirm_history_delete_p1=Ertu viss um að þú viljir eyða öllum tilvikum af þessari síðu úr vafraferli þínum?
# LOCALIZATION NOTE (confirm_history_delete_notice_p2): this string is displayed in
# the same dialog as confirm_history_delete_p1. "This action" refers to deleting a
# page from history.
confirm_history_delete_notice_p2=Ekki er ekki hægt að bakfæra þessa aðgerð.
menu_action_save_to_pocket=Vista í Pocket
menu_action_delete_pocket=Eyða úr Pocket
menu_action_archive_pocket=Safna í Pocket
# LOCALIZATION NOTE (menu_action_show_file_*): These are platform specific strings
# found in the context menu of an item that has been downloaded. The intention behind
@ -45,74 +58,153 @@ menu_action_open_file=Opna skrá
# LOCALIZATION NOTE (menu_action_copy_download_link, menu_action_go_to_download_page):
# "Download" here, in both cases, is not a verb, it is a noun. As in, "Copy the
# link that belongs to this downloaded item"
menu_action_copy_download_link=Afrita niðurhalsslóð
menu_action_go_to_download_page=Opna niðurhalssíðu
menu_action_remove_download=Eyða úr vafraferli
# LOCALIZATION NOTE (search_button): This is screenreader only text for the
# search button.
search_button=Leita
# LOCALIZATION NOTE (search_header): Displayed at the top of the panel
# showing search suggestions. {search_engine_name} is replaced with the name of
# the current default search engine. e.g. 'Google Search'
search_header={search_engine_name} Leita
# LOCALIZATION NOTE (search_web_placeholder): This is shown in the searchbox when
# the user hasn't typed anything yet.
search_web_placeholder=Leita á vefnum
# LOCALIZATION NOTE (section_disclaimer_topstories): This is shown below
# the topstories section title to provide additional information about
# how the stories are selected.
section_disclaimer_topstories=Áhugaverðustu sögurnar á vefnum, valdar út frá því sem þú lest. Frá Pocket, nú hluti af Mozilla.
section_disclaimer_topstories_linktext=Læra hvernig það virkar.
# LOCALIZATION NOTE (section_disclaimer_topstories_buttontext): The text of
# the button used to acknowledge, and hide this disclaimer in the future.
section_disclaimer_topstories_buttontext=Allt í lagi, ég skil
# LOCALIZATION NOTE (prefs_*, settings_*): These are shown in about:preferences
# for a "Firefox Home" section. "Firefox" should be treated as a brand and kept
# in English, while "Home" should be localized matching the about:preferences
# sidebar mozilla-central string for the panel that has preferences related to
# what is shown for the homepage, new windows, and new tabs.
prefs_home_header=Upphafssíða Firefox
prefs_home_description=Veldu hvaða efni þú vilt á Firefox heimaskjánum þínum.
# LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
# plural forms used in a drop down of multiple row options (1 row, 2 rows).
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
prefs_section_rows_option={num} röð;{num} raðir
prefs_search_header=Vefleit
prefs_topsites_description=Mest heimsóttu vefsíður
prefs_topstories_description2=Frábært efni víðsvegar að af vefnum, sérsniðið fyrir þig
prefs_topstories_options_sponsored_label=Kostaðar sögur
prefs_topstories_sponsored_learn_more=Læra meira
prefs_highlights_description=Úrval af vefsvæðum sem þú hefur vistað eða heimsótt
prefs_highlights_options_visited_label=Heimsóttar síður
prefs_highlights_options_download_label=Síðasta niðurhal
prefs_highlights_options_pocket_label=Síður vistaðar í Pocket
prefs_snippets_description=Uppfærslur frá Mozilla og Firefox
settings_pane_button_label=Sérsníða ræsisíðuna
settings_pane_topsites_header=Efstu vefsvæði
settings_pane_highlights_header=Hápunktar
settings_pane_highlights_options_bookmarks=Bókamerki
# LOCALIZATION NOTE(settings_pane_snippets_header): For the "Snippets" feature
# traditionally on about:home. Alternative translation options: "Small Note" or
# something that expresses the idea of "a small message, shortened from
# something else, and non-essential but also not entirely trivial and useless."
settings_pane_snippets_header=Bútar
# LOCALIZATION NOTE (edit_topsites_*): This is shown in the Edit Top Sites modal
# dialog.
edit_topsites_button_text=Breyta
edit_topsites_edit_button=Breyta þessari síðu
# LOCALIZATION NOTE (topsites_form_*): This is shown in the New/Edit Topsite modal.
topsites_form_add_header=Ný toppsíða
topsites_form_edit_header=Breyta toppsíðu
topsites_form_title_label=Titill
topsites_form_title_placeholder=Sláðu inn titil
topsites_form_url_label=Vefslóð
topsites_form_image_url_label=Sérsniðin myndslóð
topsites_form_url_placeholder=Slá inn eða líma vefslóð
topsites_form_use_image_link=Nota sérsniðna mynd…
# LOCALIZATION NOTE (topsites_form_*_button): These are verbs/actions.
topsites_form_preview_button=Forskoðun
topsites_form_add_button=Bæta við
topsites_form_save_button=Vista
topsites_form_cancel_button=Hætta við
topsites_form_url_validation=Gildrar vefslóðar krafist
topsites_form_image_validation=Ekki tókst að hlaða mynd. Prófið aðra vefslóð.
# LOCALIZATION NOTE (pocket_read_more): This is shown at the bottom of the
# trending stories section and precedes a list of links to popular topics.
pocket_read_more=Helstu umræðuefni:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=Skoða fleiri sögur
pocket_more_reccommendations=Fleiri meðmæli
pocket_how_it_works=Hvernig það virkar
pocket_cta_button=Sækja Pocket
pocket_cta_text=Vistaðu sögurnar sem þú elskar í Pocket og fáðu innblástur í huga þinn með heillandi lesningu.
highlights_empty_state=Byrjaðu að vafra og við sýnum þér frábærar greinar, myndbönd og önnur vefsvæði sem þú hefur nýverið heimsótt eða bókarmerkt.
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
# in the space that would have shown a few stories, this is shown instead.
# {provider} is replaced by the name of the content provider for this section.
topstories_empty_state=Þú hefur lesið allt. Athugaðu aftur síðar eftir fleiri fréttum frá {provider}. Geturðu ekki beðið? Veldu vinsælt umfjöllunarefni til að finna fleiri áhugaverðar greinar hvaðanæva að af vefnum.
# LOCALIZATION NOTE (manual_migration_explanation2): This message is shown to encourage users to
# import their browser profile from another browser they might be using.
manual_migration_explanation2=Reyndu Firefox með bókamerkjum, sögu og lykilorðum úr öðrum vafra.
# LOCALIZATION NOTE (manual_migration_cancel_button): This message is shown on a button that cancels the
# process of importing another browsers profile into Firefox.
manual_migration_cancel_button=Nei takk
# LOCALIZATION NOTE (manual_migration_import_button): This message is shown on a button that starts the process
# of importing another browsers profile profile into Firefox.
manual_migration_import_button=Yfirfæra núna
# LOCALIZATION NOTE (error_fallback_default_*): This message and suggested
# action link are shown in each section of UI that fails to render
error_fallback_default_info=Úbbs, eitthvað fór úrskeiðis við að hlaða þessu efni inn.
error_fallback_default_refresh_suggestion=Endurhlaðið síðu til að reyna aftur.
# LOCALIZATION NOTE (section_menu_action_*). These strings are displayed in the section
# context menu and are meant as a call to action for the given section.
section_menu_action_remove_section=Fjarlægja kafla
section_menu_action_collapse_section=Fella kafla
section_menu_action_expand_section=Stækka kafla
section_menu_action_manage_section=Stjórna kafla
section_menu_action_manage_webext=Stjórna viðbót
section_menu_action_add_topsite=Bæta við toppsíðu
section_menu_action_add_search_engine=Bæta við leitarvél
section_menu_action_move_up=Færa upp
section_menu_action_move_down=Færa niður
section_menu_action_privacy_notice=Tilkynning um friðhelgi
# LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the
# firstrun of the browser, they give an introduction to Firefox and Sync.
firstrun_title=Taktu Firefox með þér
firstrun_content=Fáðu bókamerki, sögu, lykilorð og aðrar stillingar á öllum tækjunum þínum.
firstrun_learn_more_link=Frekari upplýsingar um Firefox reikninga
# LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
# firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
# firstrun_form_header is displayed more boldly as the call to action.
firstrun_form_header=Sláðu inn netfangið þitt
firstrun_form_sub_header=fara áfram á Firefox Sync
firstrun_email_input_placeholder=Netfang
firstrun_invalid_input=Krafist er gilds netfangs
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Með því að halda áfram samþykkir þú {terms} og {privacy}.
firstrun_terms_of_service=Skilmálar þjónustu
firstrun_privacy_notice=Tilkynning um friðhelgi
firstrun_continue_to_login=Áfram
firstrun_skip_login=Sleppa þessu skrefi
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=Opna valmynd

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

@ -77,7 +77,6 @@ topsites_form_image_validation=Errore durante il caricamento dellimmagine. Pr
pocket_read_more=Argomenti popolari:
pocket_read_even_more=Visualizza altre storie
pocket_more_reccommendations = Altri suggerimenti
pocket_learn_more = Ulteriori informazioni
pocket_how_it_works = Come funziona
pocket_cta_button = Ottieni Pocket
pocket_cta_text = Salva le storie che ami in Pocket e nutri la tua mente con letture appassionanti.

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

@ -143,9 +143,9 @@ pocket_read_more=人気のトピック:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=他の記事を見る
pocket_more_reccommendations=他のおすすめ
pocket_learn_more=詳細
pocket_how_it_works=使い方
pocket_cta_button=Pocket を入手
pocket_cta_text=お気に入りに記事を Pocket に保存して、魅力的な読み物を思う存分楽しみましょう。
@ -196,7 +196,6 @@ firstrun_form_header=メールアドレスを入力してください
firstrun_form_sub_header=Firefox Sync の利用を続けるために必要です
firstrun_email_input_placeholder=メールアドレス
firstrun_invalid_input=メールアドレスを正しく入力してください
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
@ -207,3 +206,6 @@ firstrun_privacy_notice=プライバシーに関する通知
firstrun_continue_to_login=続ける
firstrun_skip_login=この手順をスキップ
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=メニューを開きます

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

@ -143,9 +143,9 @@ pocket_read_more=人気のトピック:
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
# end of the list of popular topic links.
pocket_read_even_more=他の記事を見る
pocket_more_reccommendations=他のおすすめ
pocket_learn_more=詳細
pocket_how_it_works=使い方
pocket_cta_button=Pocket を入手
pocket_cta_text=お気に入りに記事を Pocket に保存して、魅力的な読み物を思う存分楽しみましょう。
@ -196,7 +196,6 @@ firstrun_form_header=メールアドレスを入力してください
firstrun_form_sub_header=Firefox Sync の利用を続けるために必要です
firstrun_email_input_placeholder=メールアドレス
firstrun_invalid_input=メールアドレスを正しく入力してください
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
@ -207,3 +206,6 @@ firstrun_privacy_notice=プライバシーに関する通知
firstrun_continue_to_login=続ける
firstrun_skip_login=この手順をスキップ
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
context_menu_title=メニューを開きます

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

@ -144,7 +144,6 @@ pocket_read_more=Populaire onderwerpen:
# end of the list of popular topic links.
pocket_read_even_more=Meer verhalen bekijken
pocket_more_reccommendations=Meer aanbevelingen
pocket_learn_more=Meer info
pocket_how_it_works=Hoe het werkt
pocket_cta_button=Pocket gebruiken
pocket_cta_text=Bewaar de verhalen die u interessant vindt in Pocket, en stimuleer uw gedachten met boeiende leesstof.

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

@ -145,6 +145,7 @@ pocket_read_more=Tèmas populars:
pocket_read_even_more=Veire mai darticles
pocket_more_reccommendations=Mai de recomandacions
pocket_learn_more=Ne saber mai
pocket_how_it_works=Cossí fonciona
pocket_cta_button=Installar Pocket
highlights_empty_state=Començatz de navegar e aquí vos mostrarem los melhors articles, vidèos e autras paginas quavètz visitadas o apondudas als marcapaginas.

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

@ -149,7 +149,7 @@ pocket_how_it_works=Como funciona
pocket_cta_button=Adicionar o Pocket
pocket_cta_text=Salve as histórias que você gosta no Pocket e abasteça sua mente com leituras fascinantes.
highlights_empty_state=Comece a navegar e nós mostraremos aqui alguns ótimos artigos, vídeos e outras páginas que você favoritou ou visitou recentemente.
highlights_empty_state=Comece a navegar e mostraremos aqui alguns ótimos artigos, vídeos e outras páginas que você favoritou ou visitou recentemente.
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
# in the space that would have shown a few stories, this is shown instead.
# {provider} is replaced by the name of the content provider for this section.

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

@ -144,7 +144,6 @@ pocket_read_more=Tópicos populares:
# end of the list of popular topic links.
pocket_read_even_more=Ver mais histórias
pocket_more_reccommendations=Mais recomendações
pocket_learn_more=Saber mais
pocket_how_it_works=Como funciona
pocket_cta_button=Obter o Pocket
pocket_cta_text=Guarde as histórias que adora no Pocket, e abasteça a sua mente com leituras fascinantes.
@ -192,7 +191,7 @@ firstrun_learn_more_link=Saber mais acerca do Contas Firefox
# LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
# firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
# firstrun_form_header is displayed more boldly as the call to action.
firstrun_form_header=Introduza o seu e-mail
firstrun_form_header=Introduza o seu email
firstrun_form_sub_header=para continuar para o Firefox Sync.
firstrun_email_input_placeholder=Email

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

@ -200,7 +200,7 @@ firstrun_invalid_input=Necesită o adresă de e-mail validă
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
firstrun_extra_legal_links=Continuând, ești de acord cu {terms} și {privacy}.
firstrun_extra_legal_links=Prin continuare, agreezi {terms} și {privacy}.
firstrun_terms_of_service=Termenii de utilizare a serviciului
firstrun_privacy_notice=Politica de confidențialitate

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

@ -95,6 +95,7 @@ prefs_topsites_description=سائٹس جو آُپ سب سے زیادہ ملاح
prefs_topstories_options_sponsored_label=سرپرست شدہ کہاناں
prefs_topstories_sponsored_learn_more=مزید سیکھیں
prefs_highlights_options_visited_label=دورہ کردہ صفحہات
prefs_highlights_options_download_label=حالیہ ڈاؤن لوڈ شدہ
prefs_highlights_options_pocket_label=صفحات Pocket میں محفوظ کر دیئے گئے ہیں
prefs_snippets_description=Mozilla اورFirefox کی جانب سے تازہ کاریاں
settings_pane_button_label=اپنے نئے ٹیب کہ صفحہ کی تخصیص کریں
@ -134,7 +135,6 @@ pocket_read_more=مشہور مضامین:
# end of the list of popular topic links.
pocket_read_even_more=مزید کہانیاں دیکھیں
pocket_more_reccommendations=اور زیادہ سفارشات
pocket_learn_more=مزید سیکھیں
pocket_how_it_works=یہ کس طرح کام کرتا ہے
pocket_cta_button=Pocket حاصل کریں

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -107,6 +107,5 @@ window.gActivityStreamStrings = {
"firstrun_privacy_notice": "Avís de privadesa",
"firstrun_continue_to_login": "Continua",
"firstrun_skip_login": "Omet aquest pas",
"context_menu_title": "Open menu",
"pocket_learn_more": "Més informació"
"context_menu_title": "Obre el menú"
};

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

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

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

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

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

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

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

@ -31,7 +31,7 @@ window.gActivityStreamStrings = {
"menu_action_open_file": "Otevřít soubor",
"menu_action_copy_download_link": "Kopírovat stahovaný odkaz",
"menu_action_go_to_download_page": "Přejít na stránku stahování",
"menu_action_remove_download": "Odebrat z historie",
"menu_action_remove_download": "Odstranit z historie",
"search_button": "Vyhledat",
"search_header": "Vyhledat pomocí {search_engine_name}",
"search_web_placeholder": "Vyhledat na webu",
@ -91,7 +91,7 @@ window.gActivityStreamStrings = {
"section_menu_action_manage_section": "Nastavení sekce",
"section_menu_action_manage_webext": "Správa rozšíření",
"section_menu_action_add_topsite": "Přidat mezi top stránky",
"section_menu_action_add_search_engine": "Přidat vyhledávací modul",
"section_menu_action_add_search_engine": "Přidat vyhledávač",
"section_menu_action_move_up": "Posunout nahoru",
"section_menu_action_move_down": "Posunout dolů",
"section_menu_action_privacy_notice": "Zásady ochrany osobních údajů",
@ -104,9 +104,8 @@ window.gActivityStreamStrings = {
"firstrun_invalid_input": "Je požadován platný e-mail",
"firstrun_extra_legal_links": "Pokračováním souhlasíte s {terms} a {privacy}.",
"firstrun_terms_of_service": "Podmínkami používání služby",
"firstrun_privacy_notice": "Zásadami ochrany soukromí",
"firstrun_privacy_notice": "Zásadami ochrany osobních údajů",
"firstrun_continue_to_login": "Pokračovat",
"firstrun_skip_login": "Přeskočit tento krok",
"context_menu_title": "Otevře nabídku",
"pocket_learn_more": "Zjistit více"
"context_menu_title": "Otevře nabídku"
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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