Merge branch 'master' into ux-tweak
This commit is contained in:
commit
e7688a62c6
@ -144,12 +144,15 @@ $(document).ready(function() {
|
|||||||
cd6: err
|
cd6: err
|
||||||
});
|
});
|
||||||
|
|
||||||
document.l10n.formatValue('expiredPageHeader').then(translated => {
|
if (err.message === 'notfound') {
|
||||||
$('.title').text(translated);
|
location.reload();
|
||||||
});
|
} else {
|
||||||
$('#download-btn').attr('hidden', true);
|
document.l10n.formatValue('errorPageHeader').then(translated => {
|
||||||
$('#expired-img').removeAttr('hidden');
|
$('.title').text(translated);
|
||||||
console.log('The file has expired, or has already been deleted.');
|
});
|
||||||
|
$('#download-btn').attr('hidden', true);
|
||||||
|
$('#expired-img').removeAttr('hidden');
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
})
|
})
|
||||||
.then(([decrypted, fname]) => {
|
.then(([decrypted, fname]) => {
|
||||||
|
@ -20,7 +20,7 @@ class FileReceiver extends EventEmitter {
|
|||||||
xhr.onload = function(event) {
|
xhr.onload = function(event) {
|
||||||
if (xhr.status === 404) {
|
if (xhr.status === 404) {
|
||||||
reject(
|
reject(
|
||||||
new Error('The file has expired, or has already been deleted.')
|
new Error('notfound')
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -306,6 +306,11 @@ $(document).ready(function() {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
// err is 0 when coming from a cancel upload event
|
||||||
|
if (err === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// only show error page when the error is anything other than user cancelling the upload
|
||||||
Raven.captureException(err);
|
Raven.captureException(err);
|
||||||
$('#page-one').attr('hidden', true);
|
$('#page-one').attr('hidden', true);
|
||||||
$('#upload-progress').attr('hidden', true);
|
$('#upload-progress').attr('hidden', true);
|
||||||
@ -462,10 +467,8 @@ $(document).ready(function() {
|
|||||||
popupDiv.classList.add('popup');
|
popupDiv.classList.add('popup');
|
||||||
const $popupMessage = $('<div>', { class: 'popup-message' });
|
const $popupMessage = $('<div>', { class: 'popup-message' });
|
||||||
$popupMessage.attr('data-l10n-id', 'deletePopupText');
|
$popupMessage.attr('data-l10n-id', 'deletePopupText');
|
||||||
|
|
||||||
const $popupDelSpan = $('<span>', { class: 'popup-yes' });
|
const $popupDelSpan = $('<span>', { class: 'popup-yes' });
|
||||||
$popupDelSpan.attr('data-l10n-id', 'deletePopupYes');
|
$popupDelSpan.attr('data-l10n-id', 'deletePopupYes');
|
||||||
|
|
||||||
const $popupNvmSpan = $('<span>', { class: 'popup-no' });
|
const $popupNvmSpan = $('<span>', { class: 'popup-no' });
|
||||||
$popupNvmSpan.attr('data-l10n-id', 'deletePopupCancel');
|
$popupNvmSpan.attr('data-l10n-id', 'deletePopupCancel');
|
||||||
|
|
||||||
|
12
l10n.toml
Normal file
12
l10n.toml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# 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/.
|
||||||
|
|
||||||
|
basepath = "."
|
||||||
|
|
||||||
|
[env]
|
||||||
|
l = "{l10n_base}/public/locales/{locale}/"
|
||||||
|
|
||||||
|
[[paths]]
|
||||||
|
reference = "public/locales/en-US/**"
|
||||||
|
l10n = "{l}**"
|
2398
package-lock.json
generated
2398
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,95 +1,95 @@
|
|||||||
|
// Firefox Send is a brand name and should not be localized.
|
||||||
title = Firefox Send
|
title = Firefox Send
|
||||||
siteSubtitle = web experiment
|
siteSubtitle = web experiment
|
||||||
siteFeedback = Feedback
|
siteFeedback = Feedback
|
||||||
|
|
||||||
uploadPageHeader = Private, Encrypted File Sharing
|
uploadPageHeader = Private, Encrypted File Sharing
|
||||||
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
uploadPageExplainer = Send files through a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||||
|
|
||||||
uploadPageLearnMore = Learn more
|
uploadPageLearnMore = Learn more
|
||||||
uploadPageDropMessage = Drop your file here to start uploading
|
uploadPageDropMessage = Drop your file here to start uploading
|
||||||
uploadPageSizeMessage = For the most reliable operation, it’s best to keep your file under 1GB
|
uploadPageSizeMessage = For the most reliable operation, it’s best to keep your file under 1GB
|
||||||
uploadPageBrowseButton = Select a file on your computer
|
uploadPageBrowseButton = Select a file on your computer
|
||||||
.title = {uploadPageBrowseButtonTitle}
|
.title = Select a file on your computer
|
||||||
uploadPageMultipleFilesAlert = Uploading multiple files or a folder is currently not supported.
|
uploadPageMultipleFilesAlert = Uploading multiple files or a folder is currently not supported.
|
||||||
|
|
||||||
uploadPageBrowseButtonTitle = Upload file
|
uploadPageBrowseButtonTitle = Upload file
|
||||||
|
|
||||||
uploadingPageHeader = Uploading Your File
|
uploadingPageHeader = Uploading Your File
|
||||||
importingFile = Importing...
|
importingFile = Importing…
|
||||||
verifyingFile = Verifying...
|
verifyingFile = Verifying…
|
||||||
encryptingFile = Encrypting...
|
encryptingFile = Encrypting…
|
||||||
decryptingFile = Decrypting...
|
decryptingFile = Decrypting…
|
||||||
|
|
||||||
notifyUploadDone = Your upload has finished.
|
notifyUploadDone = Your upload has finished.
|
||||||
|
|
||||||
|
|
||||||
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
uploadingPageMessage = Once your file uploads you will be able to set expiry options.
|
||||||
uploadingPageCancel = Cancel upload
|
uploadingPageCancel = Cancel upload
|
||||||
.title = {uploadingPageCancel}
|
.title = Cancel upload
|
||||||
uploadCancelNotification = Your upload was cancelled.
|
uploadCancelNotification = Your upload was cancelled.
|
||||||
|
uploadingPageLargeFileMessage = This file is large and may take a while to upload. Sit tight!
|
||||||
uploadingPageLargeFileMessage = This file is large and may take awhile to upload. Sit tight!
|
|
||||||
uploadingFileNotification = Notify me when the upload is complete.
|
uploadingFileNotification = Notify me when the upload is complete.
|
||||||
uploadSuccessConfirmHeader = Ready to Send
|
uploadSuccessConfirmHeader = Ready to Send
|
||||||
|
uploadSvgAlt
|
||||||
uploadSvgAlt.alt = Upload
|
.alt = Upload
|
||||||
|
|
||||||
|
|
||||||
//Note the spec suggests that this string is editable. That feature will not appear at Launch
|
|
||||||
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
|
uploadSuccessTimingHeader = The link to your file will expire after 1 download or in 24 hours.
|
||||||
copyUrlFormLabel = Copy and share the link to send your file:
|
|
||||||
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
copyUrlFormLabelWithName = Copy and share the link to send your file: { $filename }
|
||||||
// Note: Title text for button should be the same
|
// Note: Title text for button should be the same.
|
||||||
copyUrlFormButton = Copy to clipboard
|
copyUrlFormButton = Copy to clipboard
|
||||||
.title = {copyUrlFormButton}
|
.title = Copy to clipboard
|
||||||
|
|
||||||
copiedUrl = Copied!
|
copiedUrl = Copied!
|
||||||
|
// Note: Title text for button should be the same.
|
||||||
deleteFileButton = Delete file
|
deleteFileButton = Delete file
|
||||||
.title = {deleteFileButton}
|
.title = Delete file
|
||||||
|
// Note: Title text for button should be the same.
|
||||||
sendAnotherFileLink = Send another file
|
sendAnotherFileLink = Send another file
|
||||||
.title = {sendAnotherFileLink}
|
.title = Send another file
|
||||||
|
// Alternative text used on the download link/button (indicates an action).
|
||||||
downloadAltText.alt = Download
|
downloadAltText
|
||||||
downloadFileName = Download { $filename }
|
.alt = Download
|
||||||
|
downloadFileName = Download { $filename }
|
||||||
downloadFileSize = ({ $size })
|
downloadFileSize = ({ $size })
|
||||||
|
// Firefox Send is a brand name and should not be localized.
|
||||||
downloadMessage = Your friend is sending you a file with Firefox Send, a service that allows you to share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
downloadMessage = Your friend is sending you a file with Firefox Send, a service that allows you to share files with a safe, private, and encrypted link that automatically expires to ensure your stuff does not remain online forever.
|
||||||
|
// Text and title used on the download link/button (indicates an action).
|
||||||
downloadButtonLabel = Download
|
downloadButtonLabel = Download
|
||||||
.title = {downloadButtonLabel}
|
.title = Download
|
||||||
downloadNotification = Your download has completed.
|
downloadNotification = Your download has completed.
|
||||||
downloadFinish = Download Complete
|
downloadFinish = Download Complete
|
||||||
|
// Firefox Send is a brand name and should not be localized. Title text for button should be the same.
|
||||||
sendYourFilesLink = Try Firefox Send
|
sendYourFilesLink = Try Firefox Send
|
||||||
.title = {sendYourFilesLink}
|
.title = Try Firefox Send
|
||||||
downloadingPageProgress = Downloading { $filename } ({ $size })
|
downloadingPageProgress = Downloading { $filename } ({ $size })
|
||||||
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
|
downloadingPageMessage = Please leave this tab open while we fetch your file and decrypt it.
|
||||||
|
errorAltText
|
||||||
errorAltText.alt = Upload error
|
.alt = Upload error
|
||||||
errorPageHeader = Something went wrong!
|
errorPageHeader = Something went wrong!
|
||||||
errorPageMessage = There has been an error uploading the file.
|
errorPageMessage = There has been an error uploading the file.
|
||||||
errorPageLink = Send another file
|
errorPageLink = Send another file
|
||||||
|
|
||||||
fileTooBig = That file is too big to upload. It should be less than { $size }.
|
fileTooBig = That file is too big to upload. It should be less than { $size }.
|
||||||
|
linkExpiredAlt
|
||||||
linkExpiredAlt.alt = Link expired
|
.alt = Link expired
|
||||||
expiredPageHeader = This link has expired or never existed in the first place!
|
expiredPageHeader = This link has expired or never existed in the first place!
|
||||||
notSupportedHeader = Your browser is not supported.
|
notSupportedHeader = Your browser is not supported.
|
||||||
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You'll need to try another browser. We recommend Firefox!
|
// Firefox Send is a brand name and should not be localized.
|
||||||
|
notSupportedDetail = Unfortunately this browser does not support the web technology that powers Firefox Send. You’ll need to try another browser. We recommend Firefox!
|
||||||
downloadFirefoxButtonSub = Free Download
|
downloadFirefoxButtonSub = Free Download
|
||||||
|
uploadedFile = File
|
||||||
|
copyFileList = Copy URL
|
||||||
sentFilesTitle1 = File
|
// expiryFileList is used as a column header
|
||||||
sentFilesTitle2 = Copy URL
|
expiryFileList = Expires In
|
||||||
sentFilesTitle3 = Expires In
|
deleteFileList = Delete
|
||||||
sentFilesTitle4 = Delete
|
nevermindButton = Never mind
|
||||||
|
deleteButtonHover
|
||||||
|
.title = Delete
|
||||||
|
copyUrlHover
|
||||||
|
.title = Copy URL
|
||||||
|
legalHeader = Terms & Privacy
|
||||||
|
legalNoticeTestPilot = Firefox Send is currently a Test Pilot experiment, and subject to the Test Pilot <a>Terms of Service</a> and <a>Privacy Notice</a>. You can learn more about this experiment and its data collection <a>here</a>.
|
||||||
|
legalNoticeMozilla = Use of the Firefox Send website is also subject to Mozilla’s <a>Websites Privacy Notice</a> and <a>Websites Terms of Use</a>.
|
||||||
deletePopupText = Delete this file?
|
deletePopupText = Delete this file?
|
||||||
deletePopupYes = Yes
|
deletePopupYes = Yes
|
||||||
deletePopupCancel = Cancel
|
deletePopupCancel = Cancel
|
||||||
deleteButtonHover.title = {sentFilesTitle4}
|
deleteButtonHover
|
||||||
copyUrlHover.title = {sentFilesTitle2}
|
.title = Delete
|
||||||
|
copyUrlHover
|
||||||
|
.title = Copy URL
|
||||||
footerLinkLegal = Legal
|
footerLinkLegal = Legal
|
||||||
|
// Test Pilot is a proper name and should not be localized.
|
||||||
footerLinkAbout = About Test Pilot
|
footerLinkAbout = About Test Pilot
|
||||||
footerLinkPrivacy = Privacy
|
footerLinkPrivacy = Privacy
|
||||||
footerLinkTerms = Terms
|
footerLinkTerms = Terms
|
1
public/locales/it/send.ftl
Normal file
1
public/locales/it/send.ftl
Normal file
@ -0,0 +1 @@
|
|||||||
|
importingFile = Importazione in corso…
|
@ -45,20 +45,19 @@ app.use(
|
|||||||
connectSrc: [
|
connectSrc: [
|
||||||
"'self'",
|
"'self'",
|
||||||
'https://sentry.prod.mozaws.net',
|
'https://sentry.prod.mozaws.net',
|
||||||
'https://www.google-analytics.com',
|
'https://www.google-analytics.com'
|
||||||
'https://ssl.google-analytics.com'
|
|
||||||
],
|
],
|
||||||
imgSrc: [
|
imgSrc: [
|
||||||
"'self'",
|
"'self'",
|
||||||
'https://www.google-analytics.com',
|
'https://www.google-analytics.com'
|
||||||
'https://ssl.google-analytics.com'
|
|
||||||
],
|
],
|
||||||
scriptSrc: ["'self'", 'https://ssl.google-analytics.com'],
|
scriptSrc: ["'self'"],
|
||||||
styleSrc: ["'self'", 'https://code.cdn.mozilla.net'],
|
styleSrc: ["'self'", 'https://code.cdn.mozilla.net'],
|
||||||
fontSrc: ["'self'", 'https://code.cdn.mozilla.net'],
|
fontSrc: ["'self'", 'https://code.cdn.mozilla.net'],
|
||||||
formAction: ["'none'"],
|
formAction: ["'none'"],
|
||||||
frameAncestors: ["'none'"],
|
frameAncestors: ["'none'"],
|
||||||
objectSrc: ["'none'"]
|
objectSrc: ["'none'"],
|
||||||
|
reportUri: '/__cspreport__'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@ -80,6 +79,10 @@ app.get('/unsupported', (req, res) => {
|
|||||||
res.render('unsupported');
|
res.render('unsupported');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/legal', (req, res) => {
|
||||||
|
res.render('legal');
|
||||||
|
});
|
||||||
|
|
||||||
app.get('/jsconfig.js', (req, res) => {
|
app.get('/jsconfig.js', (req, res) => {
|
||||||
res.set('Content-Type', 'application/javascript');
|
res.set('Content-Type', 'application/javascript');
|
||||||
res.render('jsconfig', {
|
res.render('jsconfig', {
|
||||||
|
@ -21,10 +21,10 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<!-- htmllint attr-bans="false" -->
|
<!-- htmllint attr-bans="false" -->
|
||||||
<th width="35%" data-l10n-id="sentFilesTitle1"></th>
|
<th width="35%" data-l10n-id="uploadedFile"></th>
|
||||||
<th width="25%" data-l10n-id="sentFilesTitle2"></th>
|
<th width="25%" data-l10n-id="copyFileList"></th>
|
||||||
<th width="21%" data-l10n-id="sentFilesTitle3"></th>
|
<th width="21%" data-l10n-id="expiryFileList"></th>
|
||||||
<th width="12%" data-l10n-id="sentFilesTitle4"></th>
|
<th width="12%" data-l10n-id="deleteFileList"></th>
|
||||||
<!-- htmllint tag-bans="$previous" -->
|
<!-- htmllint tag-bans="$previous" -->
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<div id="share-link" hidden="true">
|
<div id="share-link" hidden="true">
|
||||||
<div class="title" data-l10n-id="uploadSuccessTimingHeader"></div>
|
<div class="title" data-l10n-id="uploadSuccessTimingHeader"></div>
|
||||||
<div id="share-window">
|
<div id="share-window">
|
||||||
<div id="copy-text" data-l10n-id="copyUrlFormLabel"></div>
|
<div id="copy-text"></div>
|
||||||
<div id="copy">
|
<div id="copy">
|
||||||
<input id="link" type="url" value="" readonly/>
|
<input id="link" type="url" value="" readonly/>
|
||||||
<button id="copy-btn" data-l10n-id="copyUrlFormButton"></button>
|
<button id="copy-btn" data-l10n-id="copyUrlFormButton"></button>
|
||||||
|
@ -9,12 +9,13 @@
|
|||||||
|
|
||||||
<meta name="defaultLanguage" content="en-US">
|
<meta name="defaultLanguage" content="en-US">
|
||||||
<meta name="availableLanguages" content="en-US">
|
<meta name="availableLanguages" content="en-US">
|
||||||
<link rel="localization" href="/locales/send.{locale}.ftl">
|
|
||||||
<link rel="icon" type="image/png" href="/resources/favicon-32x32.png" sizes="32x32" />
|
<link rel="icon" type="image/png" href="/resources/favicon-32x32.png" sizes="32x32" />
|
||||||
|
<link rel="localization" href="/locales/{locale}/send.ftl">
|
||||||
<script defer src="/l20n.min.js"></script>
|
<script defer src="/l20n.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header class="header">
|
<header class="header">
|
||||||
<div class="send-logo">
|
<div class="send-logo">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<img src="/resources/send_logo.svg" alt="Send"/><h1 class="site-title">Send</h1>
|
<img src="/resources/send_logo.svg" alt="Send"/><h1 class="site-title">Send</h1>
|
||||||
@ -34,8 +35,8 @@
|
|||||||
<a href="https://www.mozilla.org"><img class="mozilla-logo" src="/resources/mozilla-logo.svg"/></a>
|
<a href="https://www.mozilla.org"><img class="mozilla-logo" src="/resources/mozilla-logo.svg"/></a>
|
||||||
<a href="https://www.mozilla.org/about/legal" data-l10n-id="footerLinkLegal"></a>
|
<a href="https://www.mozilla.org/about/legal" data-l10n-id="footerLinkLegal"></a>
|
||||||
<a href="https://testpilot.firefox.com/about" data-l10n-id="footerLinkAbout"></a>
|
<a href="https://testpilot.firefox.com/about" data-l10n-id="footerLinkAbout"></a>
|
||||||
<a href="https://testpilot.firefox.com/privacy" data-l10n-id="footerLinkPrivacy"></a>
|
<a href="/legal" data-l10n-id="footerLinkPrivacy"></a>
|
||||||
<a href="https://testpilot.firefox.com/terms" data-l10n-id="footerLinkTerms"></a>
|
<a href="/legal" data-l10n-id="footerLinkTerms"></a>
|
||||||
<a href="https://www.mozilla.org/en-US/privacy/websites/#cookies" data-l10n-id="footerLinkCookies"></a>
|
<a href="https://www.mozilla.org/en-US/privacy/websites/#cookies" data-l10n-id="footerLinkCookies"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="social-links">
|
<div class="social-links">
|
||||||
|
12
views/legal.handlebars
Normal file
12
views/legal.handlebars
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<div id="legal">
|
||||||
|
<div class="title" data-l10n-id="legalHeader"></div>
|
||||||
|
<div class="description" data-l10n-id="legalNoticeTestPilot">
|
||||||
|
<a href="https://testpilot.firefox.com/terms"></a>
|
||||||
|
<a href="https://testpilot.firefox.com/privacy"></a>
|
||||||
|
<a href="https://testpilot.firefox.com/experiments/send"></a>
|
||||||
|
</div>
|
||||||
|
<div class="description" data-l10n-id="legalNoticeMozilla">
|
||||||
|
<a href="https://www.mozilla.org/privacy/websites/"></a>
|
||||||
|
<a href="https://www.mozilla.org/about/legal/terms/mozilla/"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
Reference in New Issue
Block a user