diff --git a/customize.dist/pages.js b/customize.dist/pages.js index d5ea5fbf4..153eccd39 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -165,5 +165,24 @@ define([ ); }; + Pages.crowdfundingButton = function (onClick) { + var _link = h('a', { + href: "https://opencollective.com/cryptpad/", + target: '_blank', + rel: 'noopener', + }); + + var crowdFunding = h('button', [ + Msg.crowdfunding_button + ]); + + $(crowdFunding).click(function () { + _link.click(); + if (typeof(onClick) === 'function') { onClick(); } + }); + + return crowdFunding; + }; + return Pages; }); diff --git a/customize.dist/pages/contact.js b/customize.dist/pages/contact.js index 19fab881c..b5454f3c6 100644 --- a/customize.dist/pages/contact.js +++ b/customize.dist/pages/contact.js @@ -6,10 +6,6 @@ define([ '/common/outer/local-store.js' ], function (Config, h, Msg, Pages, LocalStore) { - // XXX translations - Msg.contact_adminHint = "For any issues related to your account, storage limit, or availability of the service."; // existing key - - return function () { var adminEmail = Config.adminEmail && Config.adminEmail !== 'i.did.not.read.my.config@cryptpad.fr'; var adminMailbox = Config.supportMailbox; diff --git a/customize.dist/pages/features.js b/customize.dist/pages/features.js index 4a4950d94..839c6a4a3 100644 --- a/customize.dist/pages/features.js +++ b/customize.dist/pages/features.js @@ -10,53 +10,10 @@ define([ var origin = encodeURIComponent(window.location.hostname); var accounts = { donateURL: AppConfig.donateURL || "https://opencollective.com/cryptpad/", - upgradeURL: AppConfig.upgradeURL || 'https://accounts.cryptpad.fr/#/?on=' + origin, + upgradeURL: AppConfig.upgradeURL || 'https://accounts.cryptpad.fr/#/?on=' + origin, // XXX }; - // XXX translations - Msg.features_title = "Features"; - return function () { - // Non-registered column - Msg.features_anon = "Non-registered"; - Msg.features_f_apps = "Access to all the applications"; - // Msg.features_f_apps_note = ""; - Msg.features_f_core = "Common features"; - // Msg.features_f_core_note = ""; - Msg.features_f_file0 = "Open documents"; - Msg.features_f_file0_note = "View and download documents shared by other users"; - // Msg.features_f_cryptdrive0 = ""; - // Msg.features_f_cryptdrive0_note = ""; - // Msg.features_f_storage0 = ""; - Msg.features_f_storage0_note = "Documents are deleted after {0} days of inactivity"; - // Registered column - Msg.features_registered = "Registered"; // - // Msg.features_f_anon = ""; - Msg.features_f_anon_note = "With additional functionality"; - Msg.features_f_social = "Social Features"; - Msg.features_f_social_note = "Add contacts for secure collaboration, create a profile, fine-grained access controls"; - // Msg.features_f_file1 = ""; - Msg.features_f_file1_note = "Store files in your CryptDrive: images, PDFs, videos, and more. Share them with your contacts or embed them in your documents. (up to {0}MB)"; - // Msg.features_f_cryptdrive1 = ""; - // Msg.features_f_cryptdrive1_note = ""; - // Msg.features_f_devices = ""; - // Msg.features_f_devices_note = ""; - Msg.features_f_storage1 = "Permanent Storage ({0}GB)"; - Msg.features_f_storage1_note = "Documents stored in your CryptDrive are never deleted for inactivity"; - // Premium column - Msg.features_premium = "Premium"; - Msg.features_pricing = "{0} to {2}€ per month"; - // Msg.features_f_reg = "" - Msg.features_f_reg_note = "With additional benefits"; - // Msg.features_f_storage2 = "" - Msg.features_f_storage2_note = "From 5GB to 50GB depending on the plan. Increased limit of {0}MB for file uploads."; - // Msg.features_f_support = "" - Msg.features_f_support_note = "Priority response from the administration team via email and built in ticket system."; - Msg.features_f_supporter = "Support privacy"; - Msg.features_f_supporter_note = "Help CryptPad financially sustainable and show that privacy-enhancing software willingly funded by users should be the norm"; - Msg.features_f_subscribe = "Subscribe"; - Msg.features_f_subscribe_note = "Registered account needed to subscribe"; - Msg.features_f_apps_note = AppConfig.availablePadTypes.map(function (app) { if (AppConfig.registeredOnlyTypes.indexOf(app) !== -1) { return; } return Msg.type[app]; @@ -164,7 +121,7 @@ define([ h('ul.list-group.list-group-flush', ['reg', 'storage2', 'support', 'supporter'].map(groupItem)), h('div.card-body',[ h('div.cp-features-register#cp-features-subscribe', [ - premiumButton + premiumButton // XXX ]), LocalStore.isLoggedIn() ? undefined : h('div.cp-note', Msg.features_f_subscribe_note) ]), diff --git a/customize.dist/pages/index.js b/customize.dist/pages/index.js index 687624db5..dc100c554 100644 --- a/customize.dist/pages/index.js +++ b/customize.dist/pages/index.js @@ -72,33 +72,10 @@ define([ }); UI.addTooltips(); - - // XXX move this button to pages.js to make it available to other pages - var _link = h('a', { - href: "https://opencollective.com/cryptpad/", - target: '_blank', - rel: 'noopener', - }); - - var crowdFunding = h('button', [ - Msg.crowdfunding_button - ]); - - $(crowdFunding).click(function () { - _link.click(); + var crowdFunding = Pages.crowdfundingButton(function () { Feedback.send('HOME_SUPPORT_CRYPTPAD'); }); - // XXX translations - Msg.home_privacy_title = "Private by design"; - Msg.home_privacy_text = "CryptPad is built to enable collaboration while keeping data private. All information including documents, chats, and files is encrypted and decrypted by your browser. This means nothing is readable outside of the session where you are logged in. Even the service administrators do not have access to your information."; - Msg.home_host_title = "About this instance"; - Msg.home_host = "This is an independent community instance of CryptPad."; // existing key - Msg.home_opensource_title = "Open Source"; - Msg.home_opensource = 'Anyone can host CryptPad and offer the service in a personal or professional capacity. The source code is available on Github.'; - Msg.home_support_title = "Support CryptPad"; - Msg.home_support = "

CryptPad does not profit from user's data. This is part of a vision for online services that respect privacy. Instead of pretending to be \"free\" like the big platforms, CryptPad aims to build a sustainable model: funded willingly by users instead of making profits from personal information.

You can support the project by making a one-time or recurring donation through our Open Collective. Our budget is transparent and updates are published regularly. There are also a number of non-financial ways to contribute.

"; - var blocks = [ h('div.row.cp-index-section', [ h('div.col-sm-6', @@ -136,8 +113,6 @@ define([ ]) ]; - // XXX translation - Msg.main_catch_phrase = "Collaboration suite,
encrypted and open-source"; return [ h('div#cp-main', [ Pages.infopageTopbar(), diff --git a/customize.dist/pages/register.js b/customize.dist/pages/register.js index 6f2b21020..c9e28bed4 100644 --- a/customize.dist/pages/register.js +++ b/customize.dist/pages/register.js @@ -9,12 +9,6 @@ define([ return function () { var urlArgs = Config.requireConf.urlArgs; - // XXX translations - Msg.register_header = "Register"; // existing key - Msg.register_notes_title = "Important notes"; - Msg.register_notes = ''; - Msg.register_importRecent = "Import documents from your anonymous session"; // existing key - return [h('div#cp-main', [ Pages.infopageTopbar(), h('div.container.cp-container', [ diff --git a/customize.dist/pages/what-is-cryptpad.js b/customize.dist/pages/what-is-cryptpad.js index e5d6c689b..4fb0677d4 100644 --- a/customize.dist/pages/what-is-cryptpad.js +++ b/customize.dist/pages/what-is-cryptpad.js @@ -2,20 +2,11 @@ define([ '/api/config', '/common/hyperscript.js', '/customize/messages.js', - '/customize/pages.js' -], function (Config, h, Msg, Pages) { + '/customize/pages.js', + '/common/common-feedback.js', +], function (Config, h, Msg, Pages, Feedback) { var urlArgs = Config.requireConf.urlArgs; - // XXX translations - Msg.whatis_collaboration = "Private Collaboration"; // existing key - Msg.whatis_collaboration_info = '

CryptPad is built to enable collaboration, synchronizing in real time between users editing the same document, but has no access to the content of the document or data about users. Because all data is encrypted, the service and its administrators have no way of seeing the content being edited and stored.

Collaborating in real time on online documents is now a common thing. A range of well known internet platforms offer this service. In order to enable collaboration, these services synchronize changes between all users. In the process they gain access to the content of the document and to data about the behaviour of users. While these services are often advertised as "free", platforms monetise user data by using it to profile users and selling advertising.

'; - Msg.whatis_apps = "A full suite of applications"; - Msg.whatis_apps_info = "

CryptPad provides a full-fledged office suite, with all the tools necessary for productive collaboration. Applications include: Rich Text, Spreadsheets, Code/Markdown, Kanban, Slides, Whiteboard and Polls.

A secure chat is available in each document for secure communication, [continue ...]

"; - Msg.whatis_drive_info = "

Manage documents with CryptDrive. Create folders, shared folders, tags, [continue ...]

"; - Msg.whatis_model = "Business model"; - Msg.whatis_model_info = "

CryptPad is open source [continue ...]

CryptPad does not profit from its users data. This is because being fully encrypted it does not gather any useful data that could be sold to profile users. This lack of data is a feature, not a bug, it is part of a vision for online services that respect users privacy. Instead of pretending to be \"free\" like the big platforms CryptPad aims to build a financially sustainable model: funded willingly by users instead of profiting form personal information.

Since 2016, CryptPad is supported by French and European research grants such as BPI France, NLNet Foundation, NGI Trust, Mozilla Open Source Support, as well as donations and subscriptions to the service. Now that the feasibility of the project has been established, the next goal is to make financially sustainable through user funding. If you would like to support CryptPad and help make it a sustainable alternative to the big platforms, please consider making a donation.

"; - Msg.whatis_xwiki = "Made at XWiki"; - Msg.whatis_xwiki_info = "

CryptPad is made at XWiki, a company based in Paris that has been making open-source software for over 15 years. [continue ...]

"; return function () { return h('div#cp-main', [ Pages.infopageTopbar(), @@ -66,9 +57,9 @@ define([ h('div.col-md-6.order-md-2', [ Pages.setHTML(h('h2'), Msg.whatis_model), Pages.setHTML(h('span'), Msg.whatis_model_info), - h('button', [ - Msg.crowdfunding_button // XXX not functional - ]) + Pages.crowdfundingButton(function () { + Feedback.send('WHATIS_SUPPORT_CRYPTPAD'); + }), // XXX add link to subscription here on cryptpad.fr ]), h('div.col-md-6.order-md-1.small-logos', [ diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index c0afeab10..7f080d9df 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -1531,9 +1531,6 @@ define([ var legalLine = template(Messages.info_imprintFlavour, Pages.imprintLink); var privacyLine = template(Messages.info_privacyFlavour, Pages.privacyLink); - // XXX translation - Messages.help.generic.more = "Learn more about how CryptPad can work for you by reading our Documentation."; - var faqLine = template(Messages.help.generic.more, Pages.docsLink); var content = h('div.cp-info-menu-container', [ @@ -2110,14 +2107,9 @@ define([ }; // Title - var colorClass = 'cp-icon-color-'+type; - colorClass = colorClass; // XXX - //$creation.append(h('h2.cp-creation-title', Messages.newButtonTitle)); var newPadH3Title = Messages['button_new' + type]; - // XXX translation - Messages.creation_helperText = "Learn more..."; var title = h('div.cp-creation-title', [ UI.getFileIcon({type: type})[0], h('div.cp-creation-title-text', [ @@ -2126,6 +2118,7 @@ define([ ]) ]); $creation.append(title); + //var colorClass = 'cp-icon-color-'+type; //$creation.append(h('h2.cp-creation-title.'+colorClass, Messages.newButtonTitle)); // Deleted pad warning @@ -2192,10 +2185,6 @@ define([ ]); // Life time - - // XXX translations - Messages.creation_expiration = "Expiration date"; - Messages.creation_expiresIn = "Expires in"; var expire = h('div.cp-creation-expire', [ UI.createCheckbox('cp-creation-expire', Messages.creation_expiration, false, { labelAlt: Messages.creation_expiresIn @@ -2219,8 +2208,6 @@ define([ ]); // Password - // XXX translation - Messages.creation_password = "Password"; var password = h('div.cp-creation-password', [ UI.createCheckbox('cp-creation-password', Messages.creation_password, false), h('span.cp-creation-password-picker.cp-creation-slider', [ diff --git a/www/register/main.js b/www/register/main.js index 2e112de74..95849e193 100644 --- a/www/register/main.js +++ b/www/register/main.js @@ -99,11 +99,6 @@ define([ return void UI.alert(Messages.register_mustAcceptTerms); } - // XXX translations - Messages.register_warning = " Warning"; // existing key - Messages.register_warning_note = "Due to the encrypted nature of CrytpPad even the the service administrators will not be able to recover data in case the username and/or password are forgotten. Please save them in a safe place."; - Messages.register_cancel = "Cancel"; // existing key - setTimeout(function () { UI.confirm("

" + Messages.register_warning + "

" + Messages.register_warning_note, function (yes) {