diff --git a/config.example.js b/config.example.js
index 2c234aee4..3aace0d4a 100644
--- a/config.example.js
+++ b/config.example.js
@@ -126,7 +126,8 @@ module.exports = {
'about',
'contact',
'what-is-cryptpad',
- 'features'
+ 'features',
+ 'faq'
],
/* Limits, Donations, Subscriptions and Contact
@@ -248,6 +249,14 @@ module.exports = {
*/
pinPath: './pins',
+ /* Pads that are not 'pinned' by any registered user can be set to expire
+ * after a configurable number of days of inactivity (default 90 days).
+ * The value can be changed or set to false to remove expiration.
+ * Expired pads can then be removed using a cron job calling the
+ * `delete-inactive.js` script with node
+ */
+ inactiveTime: 90, // days
+
/* CryptPad allows logged in users to upload encrypted files. Files/blobs
* are stored in a 'blob-store'. Set its location here.
*/
diff --git a/customize.dist/faq.html b/customize.dist/faq.html
new file mode 100644
index 000000000..d485505dd
--- /dev/null
+++ b/customize.dist/faq.html
@@ -0,0 +1,17 @@
+
+
+
+
',
'Αυτό είναι CryptPad, ο συνεργατικός επεξεργαστής πραγματικού χρόνου Zero Knowledge. Τα πάντα αποθηκεύονται καθώς πληκτρολογείτε.',
' ',
- 'Μοιραστείτε τον σύνδεσμο σε αυτό το pad για να το επεξεργαστείτε με φίλους ή χρησιμοποιήστε το κουμπί Share για να μοιραστείτε ένα κείμενο με δικαιώματα read-only link το οποίο επιτρέπει να το αναγνώσει κάποιος αλλά όχι να το επεξεργαστεί.',
+ 'Μοιραστείτε τον σύνδεσμο σε αυτό το pad για να το επεξεργαστείτε με φίλους ή χρησιμοποιήστε το κουμπί για να μοιραστείτε ένα κείμενο με δικαιώματα read-only link το οποίο επιτρέπει να το αναγνώσει κάποιος αλλά όχι να το επεξεργαστεί.',
'
',
-
- '
',
- 'Εμπρός, απλά ξεκινήστε να πληκτρολογείτε...',
- '
',
- '
'
].join('');
out.codeInitialState = [
@@ -732,14 +727,6 @@ define(function () {
out.slideInitialState = [
'# CryptSlide\n',
- '* Αυτός είναι ένας συνεργατικός επεξεργαστής πραγματικού χρόνου με τεχνολογία zero knowledge.\n',
- '* Ό,τι πληκτρολογείτε εδώ είναι κρυπτογραφημένο έτσι ώστε μόνο οι άνθρωποι που έχουν τον σύνδεσμο να μπορούν να έχουν πρόσβαση.\n',
- '* Ακόμη κι ο διακομιστής δεν μπορεί να δει τι πληκτρολογείτε.\n',
- '* Ό,τι δείτε εδώ, ό,τι ακούσετε εδώ, όταν φύγετε από εδώ, θα παραμείνει εδώ.\n',
- '\n',
- '---',
- '\n',
- '# Πως να το χρησιμοποιήσετε\n',
'1. Γράψτε τα περιεχόμενα των slides σας χρησιμοποιώντας σύνταξη markdown\n',
' - Μάθετε περισσότερα για την σύνταξη markdown [εδώ](http://www.markdowntutorial.com/)\n',
'2. Διαχωρίστε τα slides σας με ---\n',
diff --git a/customize.dist/translations/messages.es.js b/customize.dist/translations/messages.es.js
index 6df44d691..9e246294f 100644
--- a/customize.dist/translations/messages.es.js
+++ b/customize.dist/translations/messages.es.js
@@ -294,17 +294,12 @@ define(function () {
'
',
'Esto es CryptPad, el editor colaborativo en tiempo real Zero Knowledge. Todo está guardado cuando escribes.',
' ',
- 'Comparte el enlace a este pad para editar con amigos o utiliza el botón Compartir para obtener un enlace sólo lectura que permite leer pero no escribir.',
+ 'Comparte el enlace a este pad para editar con amigos o utiliza el botón para obtener un enlace sólo lectura que permite leer pero no escribir.',
'
',
-
- '
',
- 'Vamos, empieza a escribir...',
- '
',
- '
'
].join('');
out.codeInitialState = "/*\n Esto es CryptPad, el editor colaborativo en tiempo real zero knowledge.\n Lo que escribes aquí está cifrado de manera que sólo las personas con el enlace pueden acceder a ello.\n Incluso el servidor no puede ver lo que escribes.\n Lo que ves aquí, lo que escuchas aquí, cuando sales, se queda aquí\n*/";
- out.slideInitialState = "# CryptSlide\n* Esto es CryptPad, el editor colaborativo en tiempo real zero knowledge.\n* Lo que escribes aquí está cifrado de manera que sólo las personas con el enlace pueden acceder a ello.\n* Incluso el servidor no puede ver lo que escribes.\n* Lo que ves aquí, lo que escuchas aquí, cuando sales, se queda aquí\n\n---\n# Cómo utilizarlo\n1. Escribe tu contenido en Markdown\n - Puedes aprender más sobre Markdown [aquí](http://www.markdowntutorial.com/)\n2. Separa tus diapositivas con ---\n3. Haz clic en \"Presentar\" para ver el resultado - Tus diapositivas se actualizan en tiempo real";
+ out.slideInitialState = "# CryptSlide\n1. Escribe tu contenido en Markdown\n - Puedes aprender más sobre Markdown [aquí](http://www.markdowntutorial.com/)\n2. Separa tus diapositivas con ---\n3. Haz clic en \"Presentar\" para ver el resultado - Tus diapositivas se actualizan en tiempo real";
out.driveReadmeTitle = "¿Qué es CryptPad?";
out.readme_welcome = "¡Bienvenido a CryptPad!";
out.readme_p1 = "Bienvenido a CryptPad, aquí podrás anotar cosas solo o con otra gente.";
diff --git a/customize.dist/translations/messages.fr.js b/customize.dist/translations/messages.fr.js
index 2d21cf9a6..145d50720 100644
--- a/customize.dist/translations/messages.fr.js
+++ b/customize.dist/translations/messages.fr.js
@@ -29,11 +29,12 @@ define(function () {
out.typeError = "Ce pad n'est pas compatible avec l'application sélectionnée";
out.onLogout = 'Vous êtes déconnecté de votre compte utilisateur, cliquez ici pour vous authentifier ou appuyez sur Échap pour accéder au pad en mode lecture seule.';
out.wrongApp = "Impossible d'afficher le contenu de ce document temps-réel dans votre navigateur. Vous pouvez essayer de recharger la page.";
- out.padNotPinned = 'Ce pad va expirer dans 3 mois, {0}connectez-vous{1} ou {2}enregistrez-vous{3} pour le préserver.';
+ out.padNotPinned = 'Ce pad va expirer après 3 mois d\'inactivité, {0}connectez-vous{1} ou {2}enregistrez-vous{3} pour le préserver.';
out.anonymousStoreDisabled = "L'administrateur de cette instance de CryptPad a désactivé le drive pour les utilisateurs non enregistrés. Vous devez vous connecter pour pouvoir utiliser CryptDrive.";
out.expiredError = "Ce pad a atteint sa date d'expiration est n'est donc plus disponible.";
out.expiredErrorCopy = ' Vous pouvez toujours copier son contenu ailleurs en appuyant sur Échap. Dés que vous aurez quitté la page, il sera impossible de le récupérer.';
out.deletedError = 'Ce pad a été supprimé par son propriétaire et n\'est donc plus disponible.';
+ out.inactiveError = 'Ce pad a été supprimé en raison de son inactivité. Appuyez sur Échap pour créer un nouveau pad.';
out.loading = "Chargement...";
out.error = "Erreur";
@@ -217,6 +218,10 @@ define(function () {
out.cancelButton = 'Annuler (Échap)';
out.doNotAskAgain = "Ne plus demander (Échap)";
+ out.show_help_button = "Afficher l'aide";
+ out.hide_help_button = "Cacher l'aide";
+ out.help_button = "Aide";
+
out.historyText = "Historique";
out.historyButton = "Afficher l'historique du document";
out.history_next = "Voir la version suivante";
@@ -277,9 +282,6 @@ define(function () {
out.poll_locked = "Verrouillé";
out.poll_unlocked = "Déverrouillé";
- out.poll_show_help_button = "Afficher l'aide";
- out.poll_hide_help_button = "Cacher l'aide";
-
out.poll_bookmark_col = "Marquer cette colonne comme favorite pour qu'elle soit toujours déverouillée et affichée en première position.";
out.poll_bookmarked_col = "Voici votre colonne favorite; elle sera toujours dévérouillée et affichée en première position.";
out.poll_total = 'TOTAL';
@@ -779,13 +781,8 @@ define(function () {
'
',
'Voici CryptPad, l\'éditeur collaboratif en temps-réel Zero Knowledge. Tout est sauvegardé dés que vous le tapez.',
' ',
- 'Partagez le lien vers ce pad avec des amis ou utilisez le bouton Partager pour obtenir le lien de lecture-seule, qui permet la lecture mais non la modification.',
+ 'Partagez le lien vers ce pad avec des amis ou utilisez le bouton pour obtenir le lien de lecture-seule, qui permet la lecture mais non la modification.',
'
',
- '
',
- '',
- 'Lancez-vous, commencez à taper...',
- '
',
- '
'
].join('');
out.codeInitialState = [
@@ -797,14 +794,6 @@ define(function () {
out.slideInitialState = [
'# CryptSlide\n',
- '* Voici CryptPad, l\'éditeur collaboratif en temps-réel Zero Knowledge.\n',
- '* Ce que vous tapez ici est chiffré de manière que seules les personnes avec le lien peuvent y accéder.\n',
- '* Même le serveur est incapable de voir ce que vous tapez.\n',
- '* Ce que vous voyez ici, ce que vous entendez, quand vous partez, ça reste ici.\n',
- '\n',
- '---',
- '\n',
- '# Comment l\'utiliser\n',
'1. Écrivez le contenu de votre présentation avec la syntaxe Markdown\n',
' - Apprenez à utiliser markdown en cliquant [ici](http://www.markdowntutorial.com/)\n',
'2. Séparez vos slides avec ---\n',
@@ -869,6 +858,7 @@ define(function () {
out.creation_createFromTemplate = "Depuis un modèle";
out.creation_createFromScratch = "Nouveau pad vide";
out.creation_settings = "Préférences des nouveaux pads";
+ out.creation_saveSettings = "Sauver les préférences";
// Properties about creation data
out.creation_owners = "Propriétaires";
out.creation_ownedByOther = "Possédé par un autre utilisateur";
@@ -876,7 +866,8 @@ define(function () {
out.creation_expiration = "Date d'expiration";
out.creation_propertiesTitle = "Disponibilité";
out.creation_appMenuName = "Mode avancé (Ctrl + E)";
- out.creation_newPadModalDescription = "Cliquez sur un type de pad pour le créer. Vous pouvez cocher la case pour afficher l'écran de création de pads";
+ out.creation_newPadModalDescription = "Cliquez sur un type de pad pour le créer. Vous pouvez aussi appuyer sur Tab pour sélectionner un type et appuyer sur Entrée pour valider.";
+ out.creation_newPadModalDescriptionAdvanced = "Cochez la case si vous souhaitez voir l'écran de création de pads (pour les pads possédés ou à date d'expiration). Vous pouvez appuyer sur Espace pour changer sa valeur.";
out.creation_newPadModalAdvanced = "Afficher l'écran de création de pads";
// New share modal
diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js
index 956aa2147..92702a339 100644
--- a/customize.dist/translations/messages.js
+++ b/customize.dist/translations/messages.js
@@ -30,11 +30,12 @@ define(function () {
out.typeError = "This pad is not compatible with the selected application";
out.onLogout = 'You are logged out, click here to log in or press Escape to access your pad in read-only mode.';
out.wrongApp = "Unable to display the content of that realtime session in your browser. Please try to reload that page.";
- out.padNotPinned = 'This pad will expire in 3 months, {0}login{1} or {2}register{3} to preserve it.';
+ out.padNotPinned = 'This pad will expire after 3 months of inactivity, {0}login{1} or {2}register{3} to preserve it.';
out.anonymousStoreDisabled = "The webmaster of this CryptPad instance has disabled the store for anonymous users. You have to log in to be able to use CryptDrive.";
out.expiredError = 'This pad has reached its expiration time and is no longer available.';
out.expiredErrorCopy = ' You can still copy the content to another location by pressing Esc. Once you leave this page, it will disappear forever!';
out.deletedError = 'This pad has been deleted by its owner and is no longer available.';
+ out.inactiveError = 'This pad has been deleted due to inactivity. Press Esc to create a new pad.';
out.loading = "Loading...";
out.error = "Error";
@@ -219,6 +220,10 @@ define(function () {
out.cancelButton = 'Cancel (esc)';
out.doNotAskAgain = "Don't ask me again (Esc)";
+ out.show_help_button = "Show help";
+ out.hide_help_button = "Hide help";
+ out.help_button = "Help";
+
out.historyText = "History";
out.historyButton = "Display the document history";
out.history_next = "Go to the next version";
@@ -279,9 +284,6 @@ define(function () {
out.poll_locked = "Locked";
out.poll_unlocked = "Unlocked";
- out.poll_show_help_button = "Show help";
- out.poll_hide_help_button = "Hide help";
-
out.poll_bookmark_col = 'Bookmark this column so that it is always unlocked and displayed at the beginning for you';
out.poll_bookmarked_col = 'This is your bookmarked column. It will always be unlocked and displayed at the beginning for you.';
out.poll_total = 'TOTAL';
@@ -759,6 +761,30 @@ define(function () {
out.features_f_storage_anon = "Pads deleted after 3 months";
out.features_f_storage_registered = "Free: 50MB Premium: 5GB/20GB/50GB";
+ // faq.html
+
+ out.faq_link = "FAQ";
+ out.faq_title = "Frequently Asked Questions";
+ out.faq = {};
+ out.faq.cat1 = {
+ title: 'Category 1',
+ q1: {
+ q: 'What is a pad?',
+ a: 'A realtime collaborative document...'
+ },
+ q2: {
+ q: 'Question 2?',
+ a: '42'
+ }
+ };
+ out.faq.cat2 = {
+ title: 'Category 2',
+ q1: {
+ q: 'A new question?',
+ a: 'The answer'
+ }
+ };
+
// terms.html
out.tos_title = "CryptPad Terms of Service";
@@ -791,13 +817,8 @@ define(function () {
'
',
'This is CryptPad, the Zero Knowledge realtime collaborative editor. Everything is saved as you type.',
' ',
- 'Share the link to this pad to edit with friends or use the Share button to share a read-only link which allows viewing but not editing.',
+ 'Share the link to this pad to edit with friends or use the button to share a read-only link which allows viewing but not editing.',
'
',
-
- '
',
- 'Go ahead, just start typing...',
- '
',
- '
'
].join('');
out.codeInitialState = [
@@ -809,14 +830,6 @@ define(function () {
out.slideInitialState = [
'# CryptSlide\n',
- '* This is a zero knowledge realtime collaborative editor.\n',
- '* What you type here is encrypted so only people who have the link can access it.\n',
- '* Even the server cannot see what you type.\n',
- '* What you see here, what you hear here, when you leave here, let it stay here.\n',
- '\n',
- '---',
- '\n',
- '# How to use\n',
'1. Write your slides content using markdown syntax\n',
' - Learn more about markdown syntax [here](http://www.markdowntutorial.com/)\n',
'2. Separate your slides with ---\n',
@@ -883,6 +896,7 @@ define(function () {
out.creation_createFromTemplate = "From template";
out.creation_createFromScratch = "From scratch";
out.creation_settings = "New Pad settings";
+ out.creation_saveSettings = "Save settings";
// Properties about creation data
out.creation_owners = "Owners";
out.creation_ownedByOther = "Owned by another user";
@@ -890,7 +904,8 @@ define(function () {
out.creation_expiration = "Expiration time";
out.creation_propertiesTitle = "Availability";
out.creation_appMenuName = "Advanced mode (Ctrl + E)";
- out.creation_newPadModalDescription = "Click on a pad type to create it. You can check the box if you want to display the pad creation screen (for owned pads, expiring pads, etc.).";
+ out.creation_newPadModalDescription = "Click on a pad type to create it. You can also press Tab to select the type and press Enter to confirm.";
+ out.creation_newPadModalDescriptionAdvanced = "You can check the box (or press Space to change its value) if you want to display the pad creation screen (for owned pads, expiring pads, etc.).";
out.creation_newPadModalAdvanced = "Display the pad creation screen";
// New share modal
diff --git a/customize.dist/translations/messages.pt-br.js b/customize.dist/translations/messages.pt-br.js
index 79ba513c3..fbf63d067 100644
--- a/customize.dist/translations/messages.pt-br.js
+++ b/customize.dist/translations/messages.pt-br.js
@@ -486,13 +486,8 @@ define(function () {
'
',
'This is CryptPad, the Zero Knowledge realtime collaborative editor. Everything is saved as you type.',
' ',
- 'Share the link to this pad to edit with friends or use the Share button to share a read-only link which allows viewing but not editing.',
+ 'Share the link to this pad to edit with friends or use the button to share a read-only link which allows viewing but not editing.',
'
',
-
- '
',
- 'Go ahead, just start typing...',
- '
',
- '
'
].join('');
out.codeInitialState = [
@@ -504,14 +499,6 @@ define(function () {
out.slideInitialState = [
'# CryptSlide\n',
- '* This is a zero knowledge realtime collaborative editor.\n',
- '* What you type here is encrypted so only people who have the link can access it.\n',
- '* Even the server cannot see what you type.\n',
- '* What you see here, what you hear here, when you leave here, let it stay here.\n',
- '\n',
- '---',
- '\n',
- '# How to use\n',
'1. Write your slides content using markdown syntax\n',
' - Learn more about markdown syntax [here](http://www.markdowntutorial.com/)\n',
'2. Separate your slides with ---\n',
diff --git a/customize.dist/translations/messages.ro.js b/customize.dist/translations/messages.ro.js
index 14a55f8ab..56ec8b05d 100644
--- a/customize.dist/translations/messages.ro.js
+++ b/customize.dist/translations/messages.ro.js
@@ -4,16 +4,6 @@ define(function () {
out.main_title = "CryptPad: Zero Knowledge, Colaborare în timp real";
out.main_slogan = "Puterea stă în cooperare - Colaborarea este cheia";
- out.type = {};
- out.pad = "Rich text";
- out.code = "Code";
- out.poll = "Poll";
- out.slide = "Presentation";
- out.drive = "Drive";
- out.whiteboard = "Whiteboard";
- out.file = "File";
- out.media = "Media";
-
out.button_newpad = "Filă Text Nouă";
out.button_newcode = "Filă Cod Nouă";
out.button_newpoll = "Sondaj Nou";
@@ -330,9 +320,9 @@ define(function () {
out.header_france = "With from by ";
out.header_support = "";
out.header_logoTitle = "Mergi la pagina principală";
- out.initialState = "
Acesta este CryptPad, editorul colaborativ bazat pe tehnologia Zero Knowledge în timp real. Totul este salvat pe măsură ce scrii. Partajează link-ul către acest pad pentru a edita cu prieteni sau folosește Share butonul pentru a partaja read-only link permițând vizualizarea dar nu și editarea.
Îndrăznește, începe să scrii...
";
+ out.initialState = "
Acesta este CryptPad, editorul colaborativ bazat pe tehnologia Zero Knowledge în timp real. Totul este salvat pe măsură ce scrii. Partajează link-ul către acest pad pentru a edita cu prieteni sau folosește butonul pentru a partaja read-only link permițând vizualizarea dar nu și editarea.
";
out.codeInitialState = "/*\n Acesta este editorul colaborativ de cod bazat pe tehnologia Zero Knowledge CryptPad.\n Ce scrii aici este criptat, așa că doar oamenii care au link-ul pot să-l acceseze.\n Poți să alegi ce limbaj de programare pus n evidență și schema de culori UI n dreapta sus.\n*/";
- out.slideInitialState = "# CryptSlide\n* Acesta este un editor colaborativ bazat pe tehnologia Zero Knowledge.\n* Ce scrii aici este criptat, așa că doar oamenii care au link-ul pot să-l acceseze.\n* Nici măcar serverele nu au acces la ce scrii tu.\n* Ce vezi aici, ce auzi aici, atunci când pleci, lași aici.\n\n-\n# Cum se folosește\n1. Scrie-ți conținutul slide-urilor folosind sintaxa markdown\n - Află mai multe despre sintaxa markdown [aici](http://www.markdowntutorial.com/)\n2. Separă-ți slide-urile cu -\n3. Click pe butonul \"Play\" pentru a vedea rezultatele - Slide-urile tale sunt actualizate în timp real.";
+ out.slideInitialState = "# CryptSlide\n1. Scrie-ți conținutul slide-urilor folosind sintaxa markdown\n - Află mai multe despre sintaxa markdown [aici](http://www.markdowntutorial.com/)\n2. Separă-ți slide-urile cu ---\n3. Click pe butonul \"Play\" pentru a vedea rezultatele - Slide-urile tale sunt actualizate în timp real.";
out.driveReadmeTitle = "Ce este CryptPad?";
out.readme_welcome = "Bine ai venit n CryptPad !";
out.readme_p1 = "Bine ai venit în CryptPad, acesta este locul unde îți poți lua notițe, singur sau cu prietenii.";
diff --git a/customize.dist/translations/messages.zh.js b/customize.dist/translations/messages.zh.js
index c7ac7915a..25b7fe8c8 100644
--- a/customize.dist/translations/messages.zh.js
+++ b/customize.dist/translations/messages.zh.js
@@ -469,13 +469,8 @@ define(function () {
'