diff --git a/config.example.js b/config.example.js
index a075b7bb2..fd7b45f96 100644
--- a/config.example.js
+++ b/config.example.js
@@ -123,7 +123,8 @@ module.exports = {
'terms',
'about',
'contact',
- 'what-is-cryptpad'
+ 'what-is-cryptpad',
+ 'features'
],
/* Limits, Donations, Subscriptions and Contact
diff --git a/customize.dist/features.html b/customize.dist/features.html
new file mode 100644
index 000000000..31d4c99f8
--- /dev/null
+++ b/customize.dist/features.html
@@ -0,0 +1,16 @@
+
+
+
+
+ CryptPad: Zero Knowledge, Collaborative Real Time Editing
+
+
+
+
+
+
+
+
diff --git a/customize.dist/index.html b/customize.dist/index.html
index 55891ecc4..31d4c99f8 100644
--- a/customize.dist/index.html
+++ b/customize.dist/index.html
@@ -4,7 +4,6 @@
CryptPad: Zero Knowledge, Collaborative Real Time Editing
-
diff --git a/customize.dist/pages.js b/customize.dist/pages.js
index b44940116..40ea81467 100644
--- a/customize.dist/pages.js
+++ b/customize.dist/pages.js
@@ -228,6 +228,116 @@ define([
]);
};
+ Pages['/features.html'] = function () {
+ return h('div#cp-main', [
+ infopageTopbar(),
+ h('div.container.cp-container', [
+ h('center', h('h1', Msg.features_title)),
+ h('table#cp-features-table', [
+ h('thead', h('tr', [
+ h('th', Msg.features_feature),
+ h('th', Msg.features_anon),
+ h('th', Msg.features_registered),
+ h('th', Msg.features_notes)
+ ])),
+ h('tbody', [
+ h('tr', [
+ h('td', Msg.features_f_pad),
+ h('td.yes', '✔'),// u2714, u2715
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_pad_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_history),
+ h('td.yes', '✔'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_history_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_export),
+ h('td.yes', '✔'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_export_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_todo),
+ h('td.yes', '✔'),
+ h('td.yes', '✔'),
+ h('td')
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_viewFiles),
+ h('td.yes', '✔'),
+ h('td.yes', '✔'),
+ h('td')
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_drive),
+ h('td.part', '~'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_drive_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_uploadFiles),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td')
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_embedFiles),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td')
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_multiple),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_multiple_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_logoutEverywhere),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_logoutEverywhere_notes || '')
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_templates),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_templates_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_profile),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_profile_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_tags),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_tags_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_contacts),
+ h('td.no', '✕'),
+ h('td.yes', '✔'),
+ h('td', Msg.features_f_contacts_notes)
+ ]),
+ h('tr', [
+ h('td', Msg.features_f_storage),
+ h('td.no', Msg.features_f_storage_anon),
+ setHTML(h('td.yes.left'), Msg.features_f_storage_registered),
+ h('td')
+ ]),
+ ])
+ ])
+ ]),
+ infopageFooter()
+ ]);
+ };
+
Pages['/privacy.html'] = function () {
return h('div#cp-main', [
infopageTopbar(),
diff --git a/customize.dist/src/less2/main.less b/customize.dist/src/less2/main.less
index a2e0e89bd..c1bb5bba4 100644
--- a/customize.dist/src/less2/main.less
+++ b/customize.dist/src/less2/main.less
@@ -9,6 +9,7 @@ body.cp-page-register { @import "./pages/page-register.less"; }
body.cp-page-what-is-cryptpad { @import "./pages/page-what-is-cryptpad.less"; }
body.cp-page-about { @import "./pages/page-about.less"; }
body.cp-page-privacy { @import "./pages/page-privacy.less"; }
+body.cp-page-features { @import "./pages/page-features.less"; }
body.cp-page-terms { @import "./pages/page-terms.less"; }
// Set the HTML style for the apps which shouldn't have a body scrollbar
diff --git a/customize.dist/src/less2/pages/page-features.less b/customize.dist/src/less2/pages/page-features.less
new file mode 100644
index 000000000..cc44bc89d
--- /dev/null
+++ b/customize.dist/src/less2/pages/page-features.less
@@ -0,0 +1,52 @@
+@import (once) "../include/infopages.less";
+@import (once) "../include/colortheme-all.less";
+
+.infopages_main();
+.infopages_topbar();
+
+@features_th-bg: #555;
+@features_th-fg: #fff;
+@features_tr-bg-alt: #ddd;
+@features_notes: #333;
+@features_yes: #c4ffca;
+@features_no: #ffc4bc;
+@features_part: #faffd3;
+
+table#cp-features-table {
+ width: 100%;
+ th {
+ background-color: @features_th-bg;
+ color: @features_th-fg;
+ padding: 10px;
+ border: 1px solid @features_th-bg;
+ }
+ tbody {
+ td {
+ height: 32px;
+ line-height: 32px;
+ padding: 5px;
+ border: 1px solid @features_th-bg;
+ }
+ tr:nth-child(odd) {
+ background-color: @features_tr-bg-alt;
+ }
+ }
+ td:nth-child(4) {
+ color: @features_notes;
+ font-size: 14px;
+ font-style: italic;
+ }
+ td:first-child {
+ font-weight: bold;
+ }
+ .yes, .no, .part {
+ text-align: center;
+ }
+ .yes { background-color: @features_yes; }
+ .no { background-color: @features_no; }
+ .part { background-color: @features_part; }
+ .left {
+ text-align: left;
+ }
+}
+
diff --git a/customize.dist/translations/messages.fr.js b/customize.dist/translations/messages.fr.js
index 6a28b43ae..f28fdbbd9 100644
--- a/customize.dist/translations/messages.fr.js
+++ b/customize.dist/translations/messages.fr.js
@@ -704,6 +704,42 @@ define(function () {
out.policy_choices_vpn = 'Si vous souhaitez utiliser notre instance hébergée (cryptpad.fr) mais que vous ne souhaitez pas exposer votre adresse IP, vous pouvez la protéger en utilisant le navigateur Tor, ou un VPN.';
out.policy_choices_ads = 'Si vous souhaitez uniquement bloquer notre plateforme d\'analytique, vous pouvez utiliser un bloqueur de publicités tel que Privacy Badger.';
+ // features.html
+
+ out.features_title = "Tableau des fonctionnalités";
+ out.features_feature = "Fonctionnalité";
+ out.features_anon = "Utilisateur anonyme";
+ out.features_registered = "Utilisateur enregistré";
+ out.features_notes = "Notes";
+ out.features_f_pad = "Créer/modifier/voir un pad";
+ out.features_f_pad_notes = "Texte, Code, Présentation, Sondage et Tableau blanc";
+ out.features_f_history = "Historique";
+ out.features_f_history_notes = "Voir et restaurer n'importe quelle version d'un pad";
+ out.features_f_todo = "Créer une TODO-list";
+ out.features_f_drive = "CryptDrive";
+ out.features_f_drive_notes = "Fonctionnalités basiques pour les utilisateurs anonymes";
+ out.features_f_export = "Export/Import";
+ out.features_f_export_notes = "Pour les pads et CryptDrive";
+ out.features_f_viewFiles = "Voir des fichiers";
+ out.features_f_uploadFiles = "Importer des fichiers";
+ out.features_f_embedFiles = "Intégrer des fichiers";
+ out.features_f_embedFiles_notes = "Intégrer un fichier de CryptDrive dans un pad";
+ out.features_f_multiple = "Appareils multiples";
+ out.features_f_multiple_notes = "Moyen facile de voir vos pads depuis n'importe quel appareil";
+ out.features_f_logoutEverywhere = "Se déconnecter partout";
+ out.features_f_logoutEverywhere_notes = "Se déconnecter des autres appareils utilisés";
+ out.features_f_templates = "Modèles";
+ out.features_f_templates_notes = "Créer des modèles et créer des pads basés sur ces modèles";
+ out.features_f_profile = "Créer un profil";
+ out.features_f_profile_notes = "Page personnelle contenant un avatar et une description";
+ out.features_f_tags = "Utiliser les tags";
+ out.features_f_tags_notes = "Permet la recherche de documents par tags dans CryptDrive";
+ out.features_f_contacts = "Application Contacts";
+ out.features_f_contacts_notes = "Ajouter des contacts et discuter avec eux de manière sécurisée";
+ out.features_f_storage = "Stockage";
+ out.features_f_storage_anon = "Pads supprimés après 3 mois";
+ out.features_f_storage_registered = "Gratuit: 50Mo
Premium: 5Go/20Go/50Go";
+
// terms.html
out.tos_title = "Conditions d'utilisation de CryptPad";
diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js
index cd58bc9fb..ffe96f79a 100644
--- a/customize.dist/translations/messages.js
+++ b/customize.dist/translations/messages.js
@@ -714,6 +714,41 @@ define(function () {
out.policy_choices_vpn = 'If you want to use our hosted instance, but don\'t want to expose your IP address, you can protect your IP using the Tor browser bundle, or a VPN.';
out.policy_choices_ads = 'If you just want to block our analytics platform, you can use adblocking tools like Privacy Badger.';
+ // features.html
+
+ out.features_title = "Features table";
+ out.features_feature = "Feature";
+ out.features_anon = "Anonymous user";
+ out.features_registered = "Registered user";
+ out.features_notes = "Notes";
+ out.features_f_pad = "Create/edit/view a pad";
+ out.features_f_pad_notes = "Rich Text, Code, Slide, Poll and Whiteboard applications";
+ out.features_f_history = "History";
+ out.features_f_history_notes = "View and restore any version of your pads";
+ out.features_f_todo = "Create a TODO-list";
+ out.features_f_drive = "CryptDrive";
+ out.features_f_drive_notes = "Basic features for anonymous users";
+ out.features_f_export = "Export/Import";
+ out.features_f_export_notes = "For pads and CryptDrive";
+ out.features_f_viewFiles = "View files";
+ out.features_f_uploadFiles = "Upload files";
+ out.features_f_embedFiles = "Embed files";
+ out.features_f_embedFiles_notes = "Embed a file stored in CryptDrive in a pad";
+ out.features_f_multiple = "Use on multiple devices";
+ out.features_f_multiple_notes = "Easy way to access your pads from any device";
+ out.features_f_logoutEverywhere = "Log out from other devices";
+ out.features_f_templates = "Use templates";
+ out.features_f_templates_notes = "Create templates and create new pads from your templates";
+ out.features_f_profile = "Create a profile";
+ out.features_f_profile_notes = "Personal page including an avatar and a description";
+ out.features_f_tags = "Use tags";
+ out.features_f_tags_notes = "Allow users to search by tags in CryptDrive";
+ out.features_f_contacts = "Contacts application";
+ out.features_f_contacts_notes = "Add contacts and chat with them in an encrypted session";
+ out.features_f_storage = "Storage";
+ out.features_f_storage_anon = "Pads deleted after 3 months";
+ out.features_f_storage_registered = "Free: 50MB
Premium: 5GB/20GB/50GB";
+
// terms.html
out.tos_title = "CryptPad Terms of Service";
diff --git a/package.json b/package.json
index dd03426ce..b9cac6c82 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,6 @@
"lint:less": "./node_modules/lesshint/bin/lesshint -c ./.lesshintrc ./customize.dist/src/less2/",
"flow": "./node_modules/.bin/flow",
"test": "node TestSelenium.js",
- "template": "cd customize.dist/src && for page in ../index.html ../privacy.html ../terms.html ../about.html ../contact.html ../what-is-cryptpad.html ../../www/login/index.html ../../www/register/index.html ../../www/settings/index.html ../../www/user/index.html;do echo $page; cp template.html $page; done;"
+ "template": "cd customize.dist/src && for page in ../index.html ../privacy.html ../terms.html ../about.html ../contact.html ../what-is-cryptpad.html ../features.html ../../www/login/index.html ../../www/register/index.html ../../www/user/index.html;do echo $page; cp template.html $page; done;"
}
}