Merge branch 'staging' of github.com:xwiki-labs/cryptpad into staging

pull/1/head
ansuz 6 years ago
commit 82ac874ff3

@ -81,7 +81,7 @@ define([
footLink('https://cryptpad.fr/what-is-cryptpad.html', 'topbar_whatIsCryptpad'), footLink('https://cryptpad.fr/what-is-cryptpad.html', 'topbar_whatIsCryptpad'),
footLink('/faq.html', 'faq_link'), footLink('/faq.html', 'faq_link'),
footLink('https://github.com/xwiki-labs/cryptpad', null, 'GitHub'), footLink('https://github.com/xwiki-labs/cryptpad', null, 'GitHub'),
footLink('https://opencollective.com/cryptpad/contribute/', null, 'Donate'), footLink('https://opencollective.com/cryptpad/contribute/', 'footer_donate'),
]), ]),
footerCol('footer_aboutUs', [ footerCol('footer_aboutUs', [
/*footLink('https://blog.cryptpad.fr', 'blog'), /*footLink('https://blog.cryptpad.fr', 'blog'),

@ -15,7 +15,8 @@ define([
h('div.container.cp-container', [ h('div.container.cp-container', [
Config.adminEmail !== 'i.did.not.read.my.config@cryptpad.fr' ? h('div.row.cp-iconCont.align-items-center', [ Config.adminEmail !== 'i.did.not.read.my.config@cryptpad.fr' ? h('div.row.cp-iconCont.align-items-center', [
h('div.col-12', h('div.col-12',
Pages.setHTML(h('h4.text-center'), Msg.contact_admin) Pages.setHTML(h('h4.text-center'), Msg.contact_admin),
h('p', Msg.contact_adminHint)
), ),
h('div.col-12.col-sm-6.col-md-3.col-lg-3', h('div.col-12.col-sm-6.col-md-3.col-lg-3',
h('a.card', {href : "mailto:"+Config.adminEmail}, h('a.card', {href : "mailto:"+Config.adminEmail},
@ -30,14 +31,15 @@ define([
]) : undefined, ]) : undefined,
h('div.row.cp-iconCont.align-items-center', [ h('div.row.cp-iconCont.align-items-center', [
h('div.col-12', h('div.col-12',
Pages.setHTML(h('h4.text-center'), Msg.contact_dev) Pages.setHTML(h('h4.text-center'), Msg.contact_dev),
h('p', Msg.contact_devHint)
), ),
h('div.col-12.col-sm-6.col-md-3.col-lg-3', h('div.col-12.col-sm-6.col-md-3.col-lg-3',
h('a.card', {href : "https://twitter.com/cryptpad"}, h('a.card', {href : "https://twitter.com/cryptpad"},
h('div.card-body', h('div.card-body',
h('p', [ h('p', [
h('img', {src: '/customize/images/twitter.svg'}), h('img', {src: '/customize/images/twitter.svg'}),
Msg.contact_devTwitter || 'Twitter' 'Twitter'
]) ])
) )
) )
@ -47,7 +49,7 @@ define([
h('div.card-body', h('div.card-body',
h('p', [ h('p', [
h('img', {src: '/customize/images/mastodon.svg'}), h('img', {src: '/customize/images/mastodon.svg'}),
Msg.contact_devMastodon || 'Mastodon' 'Mastodon'
]) ])
) )
) )
@ -57,7 +59,7 @@ define([
h('div.card-body', h('div.card-body',
h('p', [ h('p', [
h('img', {src: '/customize/images/issue.svg'}), h('img', {src: '/customize/images/issue.svg'}),
Msg.contact_devBug || 'Bug report' Msg.contact_bug || 'Bug report'
]) ])
) )
) )
@ -67,7 +69,7 @@ define([
h('div.card-body', h('div.card-body',
h('p', [ h('p', [
h('img', {src: '/customize/images/sayhi.svg'}), h('img', {src: '/customize/images/sayhi.svg'}),
Msg.contact_devChat || 'Chat' Msg.contact_chat || 'Chat'
]) ])
) )
) )

@ -54,7 +54,7 @@ let data = [];
let pinned = []; let pinned = [];
nThen((waitFor) => { nThen((waitFor) => {
let f = './pins/' + edPublic.slice(0, 2) + '/' + edPublic + '.ndjson'; let f = '../pins/' + edPublic.slice(0, 2) + '/' + edPublic + '.ndjson';
Fs.readFile(f, waitFor((err, content) => { Fs.readFile(f, waitFor((err, content) => {
if (err) { throw err; } if (err) { throw err; }
pinned = hashesFromPinFile(content.toString('utf8'), f); pinned = hashesFromPinFile(content.toString('utf8'), f);

@ -1,7 +1,7 @@
/* globals Buffer */ /* globals Buffer */
var Https = require('https'); var Https = require('https');
var Config = require("./config.js"); var Config = require("../config/config.js");
var Package = require("./package.json"); var Package = require("../package.json");
var body = JSON.stringify({ var body = JSON.stringify({
domain: Config.myDomain, domain: Config.myDomain,

@ -5,9 +5,9 @@ const Saferphore = require("saferphore");
const PinnedData = require('./pinneddata'); const PinnedData = require('./pinneddata');
let config; let config;
try { try {
config = require('./config'); config = require('../config/config');
} catch (e) { } catch (e) {
config = require('./config.example'); config = require('../config/config.example');
} }
if (!config.inactiveTime || typeof(config.inactiveTime) !== "number") { return; } if (!config.inactiveTime || typeof(config.inactiveTime) !== "number") { return; }

@ -5,13 +5,13 @@ var nThen = require("nthen");
var config; var config;
try { try {
config = require('./config'); config = require('../config/config');
} catch (e) { } catch (e) {
config = require('./config.example'); config = require('../config/config.example');
} }
var FileStorage = require(config.storage || './storage/file'); var FileStorage = require('../' + config.storage || './storage/file');
var root = Path.resolve(config.taskPath || './tasks'); var root = Path.resolve('../' + config.taskPath || './tasks');
var dirs; var dirs;
var nt; var nt;

@ -35,7 +35,7 @@ const hashesFromPinFile = (pinFile, fileName) => {
module.exports.load = function (cb, config) { module.exports.load = function (cb, config) {
nThen((waitFor) => { nThen((waitFor) => {
Fs.readdir('./pins', waitFor((err, list) => { Fs.readdir('../pins', waitFor((err, list) => {
if (err) { if (err) {
if (err.code === 'ENOENT') { if (err.code === 'ENOENT') {
dirList = []; dirList = [];
@ -48,11 +48,11 @@ module.exports.load = function (cb, config) {
}).nThen((waitFor) => { }).nThen((waitFor) => {
dirList.forEach((f) => { dirList.forEach((f) => {
sema.take((returnAfter) => { sema.take((returnAfter) => {
Fs.readdir('./pins/' + f, waitFor(returnAfter((err, list2) => { Fs.readdir('../pins/' + f, waitFor(returnAfter((err, list2) => {
if (err) { throw err; } if (err) { throw err; }
list2.forEach((ff) => { list2.forEach((ff) => {
if (config && config.exclude && config.exclude.indexOf(ff) > -1) { return; } if (config && config.exclude && config.exclude.indexOf(ff) > -1) { return; }
fileList.push('./pins/' + f + '/' + ff); fileList.push('../pins/' + f + '/' + ff);
}); });
}))); })));
}); });

@ -65,7 +65,7 @@ const pinned = {}; // map of pinned files
module.exports.load = function (config, cb) { module.exports.load = function (config, cb) {
nThen((waitFor) => { nThen((waitFor) => {
// read the subdirectories in the datastore // read the subdirectories in the datastore
Fs.readdir('./datastore', waitFor((err, list) => { Fs.readdir('../datastore', waitFor((err, list) => {
if (err) { throw err; } if (err) { throw err; }
dirList = list; dirList = list;
})); }));
@ -76,15 +76,15 @@ module.exports.load = function (config, cb) {
sema.take((returnAfter) => { sema.take((returnAfter) => {
// get the list of files in every subdirectory // get the list of files in every subdirectory
// and push them to 'fileList' // and push them to 'fileList'
Fs.readdir('./datastore/' + f, waitFor(returnAfter((err, list2) => { Fs.readdir('../datastore/' + f, waitFor(returnAfter((err, list2) => {
if (err) { throw err; } if (err) { throw err; }
list2.forEach((ff) => { fileList.push('./datastore/' + f + '/' + ff); }); list2.forEach((ff) => { fileList.push('../datastore/' + f + '/' + ff); });
}))); })));
}); });
}); });
}).nThen((waitFor) => { }).nThen((waitFor) => {
// read the subdirectories in 'blob' // read the subdirectories in 'blob'
Fs.readdir('./blob', waitFor((err, list) => { Fs.readdir('../blob', waitFor((err, list) => {
if (err) { throw err; } if (err) { throw err; }
// overwrite dirList // overwrite dirList
dirList = list; dirList = list;
@ -96,9 +96,9 @@ module.exports.load = function (config, cb) {
sema.take((returnAfter) => { sema.take((returnAfter) => {
// get the list of files in every subdirectory // get the list of files in every subdirectory
// and push them to 'fileList' // and push them to 'fileList'
Fs.readdir('./blob/' + f, waitFor(returnAfter((err, list2) => { Fs.readdir('../blob/' + f, waitFor(returnAfter((err, list2) => {
if (err) { throw err; } if (err) { throw err; }
list2.forEach((ff) => { fileList.push('./blob/' + f + '/' + ff); }); list2.forEach((ff) => { fileList.push('../blob/' + f + '/' + ff); });
}))); })));
}); });
}); });
@ -118,7 +118,7 @@ module.exports.load = function (config, cb) {
}); });
}).nThen((waitFor) => { }).nThen((waitFor) => {
// read the subdirectories in the pinstore // read the subdirectories in the pinstore
Fs.readdir('./pins', waitFor((err, list) => { Fs.readdir('../pins', waitFor((err, list) => {
if (err) { throw err; } if (err) { throw err; }
dirList = list; dirList = list;
})); }));
@ -131,9 +131,9 @@ module.exports.load = function (config, cb) {
sema.take((returnAfter) => { sema.take((returnAfter) => {
// get the list of files in every subdirectory // get the list of files in every subdirectory
// and push them to 'fileList' (which is empty because we keep reusing it) // and push them to 'fileList' (which is empty because we keep reusing it)
Fs.readdir('./pins/' + f, waitFor(returnAfter((err, list2) => { Fs.readdir('../pins/' + f, waitFor(returnAfter((err, list2) => {
if (err) { throw err; } if (err) { throw err; }
list2.forEach((ff) => { fileList.push('./pins/' + f + '/' + ff); }); list2.forEach((ff) => { fileList.push('../pins/' + f + '/' + ff); });
}))); })));
}); });
}); });

@ -599,11 +599,6 @@
"about_intro": "CryptPad wurde erstellt im Forschungsteam von <a href=\"http://xwiki.com\">XWiki SAS</a>, einem kleinen Unternehmen in Paris (Frankreich) und Iasi (Rumänien). Im Kernteam arbeiten 3 Mitglieder an CryptPad, außerdem gibt es einige Mitwirkende innerhalb und außerhalb von XWiki SAS.", "about_intro": "CryptPad wurde erstellt im Forschungsteam von <a href=\"http://xwiki.com\">XWiki SAS</a>, einem kleinen Unternehmen in Paris (Frankreich) und Iasi (Rumänien). Im Kernteam arbeiten 3 Mitglieder an CryptPad, außerdem gibt es einige Mitwirkende innerhalb und außerhalb von XWiki SAS.",
"about_core": "Kernentwickler", "about_core": "Kernentwickler",
"about_contributors": "Wichtige Mitwirkende", "about_contributors": "Wichtige Mitwirkende",
"main_about_p22": "Uns antweeten",
"main_about_p23": "Einen Fehlerbericht auf GitHub erstellen",
"main_about_p24": "Hallo sagen (Matrix)",
"main_about_p25": "Uns eine E-Mail schicken",
"main_about_p26": "Wenn du Fragen oder Kommentare hast, freuen wir uns, von dir zu hören!",
"main_info": "<h2>Vertrauenswürdige Zusammenarbeit</h2> Lass deine Ideen gemeinsam wachsen, während die <strong>Zero-Knowledge</strong>-Technologie den Schutz deiner Daten <strong>sogar uns gegenüber</strong> sichert.", "main_info": "<h2>Vertrauenswürdige Zusammenarbeit</h2> Lass deine Ideen gemeinsam wachsen, während die <strong>Zero-Knowledge</strong>-Technologie den Schutz deiner Daten <strong>sogar uns gegenüber</strong> sichert.",
"main_catch_phrase": "Die Cloud ohne Preisgabe deiner Daten", "main_catch_phrase": "Die Cloud ohne Preisgabe deiner Daten",
"main_footerText": "Mit CryptPad kannst du schnell kollaborative Dokumente erstellen, um Notizen oder Ideen zusammen mit anderen zu bearbeiten.", "main_footerText": "Mit CryptPad kannst du schnell kollaborative Dokumente erstellen, um Notizen oder Ideen zusammen mit anderen zu bearbeiten.",

@ -435,11 +435,6 @@
"mdToolbar_list": "Λίστα με σημεία", "mdToolbar_list": "Λίστα με σημεία",
"mdToolbar_check": "Λίστα εργασιών", "mdToolbar_check": "Λίστα εργασιών",
"mdToolbar_code": "Κώδικας", "mdToolbar_code": "Κώδικας",
"main_about_p22": "Στείλτε μας ένα tweet",
"main_about_p23": "Δημιουργήστε ένα θέμα στο GitHub",
"main_about_p24": "Πείτε \"γεια\" στο Matrix",
"main_about_p25": "Στείλτε μας ένα email",
"main_about_p26": "Αν έχετε απορίες ή σχόλια, επικοινωνήστε μαζί μας!",
"main_info": "<h2>Συνεργαστείτε με ασφάλεια</h2> Αναπτύξτε τις ιδέες σας μαζί με κοινά αρχεία όσο η τεχνολογία <strong>Zero Knowledge</strong> εξασφαλίζει την ιδιωτικότητά σας; <strong>ακόμη κι από εμάς</strong>.", "main_info": "<h2>Συνεργαστείτε με ασφάλεια</h2> Αναπτύξτε τις ιδέες σας μαζί με κοινά αρχεία όσο η τεχνολογία <strong>Zero Knowledge</strong> εξασφαλίζει την ιδιωτικότητά σας; <strong>ακόμη κι από εμάς</strong>.",
"main_catch_phrase": "Το Zero Knowledge σύννεφο", "main_catch_phrase": "Το Zero Knowledge σύννεφο",
"main_footerText": "Με το CryptPad, μπορείτε να δημιουργήσετε γρήγορα συνεργατικά έγγραφα για κοινόχρηστες σημειώσεις και καταγραφή ιδεών.", "main_footerText": "Με το CryptPad, μπορείτε να δημιουργήσετε γρήγορα συνεργατικά έγγραφα για κοινόχρηστες σημειώσεις και καταγραφή ιδεών.",

@ -603,11 +603,6 @@
"about_intro": "CryptPad est développé au sein de l'équipe Recherche d'<a href=\"http://xwiki.com\">XWiki SAS</a>, une petite entreprise située à Paris en France et à Iasi en Roumanie. Il y a 3 développeurs principaux qui travaillent sur CryptPad, ainsi que quelques contributeurs à la fois dans et en dehors d'XWiki SAS.", "about_intro": "CryptPad est développé au sein de l'équipe Recherche d'<a href=\"http://xwiki.com\">XWiki SAS</a>, une petite entreprise située à Paris en France et à Iasi en Roumanie. Il y a 3 développeurs principaux qui travaillent sur CryptPad, ainsi que quelques contributeurs à la fois dans et en dehors d'XWiki SAS.",
"about_core": "Développeurs principaux", "about_core": "Développeurs principaux",
"about_contributors": "Contributeurs clés", "about_contributors": "Contributeurs clés",
"main_about_p22": "Tweetez-nous",
"main_about_p23": "Ouvrez un ticket (GitHub)",
"main_about_p24": "Dites Bonjour (Matrix)",
"main_about_p25": "Envoyez-nous un email",
"main_about_p26": "Si vous avez une question ou des remarques, n'hésitez pas à nous contacter !",
"main_info": "<h2>Collaborez avec confiance</h2>Développez vos idées en groupe avec des documents partagés; la technologie <strong>Zero Knowledge</strong> sécurise vos données.", "main_info": "<h2>Collaborez avec confiance</h2>Développez vos idées en groupe avec des documents partagés; la technologie <strong>Zero Knowledge</strong> sécurise vos données.",
"main_catch_phrase": "Le Cloud Zero Knowledge", "main_catch_phrase": "Le Cloud Zero Knowledge",
"main_footerText": "Avec CryptPad, vous pouvez créer des documents collaboratifs rapidement pour prendre des notes à plusieurs.", "main_footerText": "Avec CryptPad, vous pouvez créer des documents collaboratifs rapidement pour prendre des notes à plusieurs.",
@ -1016,5 +1011,35 @@
"debug_getGraphText": "Voici le code DOT permettant de générer un graphe de lhistorique de ce document :", "debug_getGraphText": "Voici le code DOT permettant de générer un graphe de lhistorique de ce document :",
"mdToolbar_toc": "Table des matières", "mdToolbar_toc": "Table des matières",
"fm_expirablePad": "Ce pad expirera le {0}", "fm_expirablePad": "Ce pad expirera le {0}",
"button_newsheet": "Nouveau tableur" "button_newsheet": "Nouveau tableur",
"admin_authError": "Seuls les administrateurs ont accès à cette page",
"admin_cat_general": "Général",
"admin_cat_stats": "Statistiques",
"adminPage": "Administration",
"admin_activeSessionsTitle": "Connexions actives",
"admin_activeSessionsHint": "Nombre de connexions websocket actives (et adresses IP uniques connectées)",
"admin_activePadsTitle": "Pads actifs",
"admin_activePadsHint": "Nombre de documents uniques actuellement ouverts (lus ou modifiés)",
"admin_registeredTitle": "Utilisateurs enregistrés",
"admin_registeredHint": "Nombre d'utilisateurs enregistrés sur votre instance",
"admin_updateLimitTitle": "Mettre à jour les quotas",
"admin_updateLimitHint": "Forcer la mise à jour des limites de stockage des utilisateurs peut être effectué à tout moment, mais cela n'est utile que lorsqu'une erreur survient",
"admin_updateLimitButton": "Mettre à jour les quotas",
"admin_updateLimitDone": "Mise à jour effectuée avec succès",
"admin_flushCacheTitle": "Vider le cache HTTP",
"admin_flushCacheHint": "Force les utilisateurs à utiliser la dernière version du site déployée sur le serveur (seulement si le serveur est en mode \"fresh\")",
"admin_flushCacheButton": "Vider le cache",
"admin_flushCacheDone": "Opération réalisée avec succès",
"footer_product": "Produit",
"footer_team": "L'équipe",
"footer_donate": "Faire un don",
"footer_legal": "Questions légales",
"footer_tos": "Conditions",
"contact_admin": "Contacter les administrateurs",
"contact_adminHint": "Pour tout problème lié à votre compte, votre limite de stockage ou la disponibilité du service.",
"contact_dev": "Contacter les développeurs",
"contact_devHint": "Pour les demandes de fonctionnalités, les améliorations d'ergonomie ou pour dire merci.",
"contact_bug": "Rapport de bug",
"contact_chat": "Chat",
"contact_email": "Email"
} }

@ -608,11 +608,6 @@
"about_intro": "CryptPad is created inside of the Research Team at <a href=\"http://xwiki.com\">XWiki SAS</a>, a small business located in Paris France and Iasi Romania. There are 3 core team members working on CryptPad plus a number of contributors both inside and outside of XWiki SAS.", "about_intro": "CryptPad is created inside of the Research Team at <a href=\"http://xwiki.com\">XWiki SAS</a>, a small business located in Paris France and Iasi Romania. There are 3 core team members working on CryptPad plus a number of contributors both inside and outside of XWiki SAS.",
"about_core": "Core Developers", "about_core": "Core Developers",
"about_contributors": "Key Contributors", "about_contributors": "Key Contributors",
"main_about_p22": "Tweet us",
"main_about_p23": "open an issue on GitHub",
"main_about_p24": "say Hello (Matrix)",
"main_about_p25": "send us an email",
"main_about_p26": "If you have any questions or comments, feel free to reach out!",
"main_info": "<h2>Collaborate in Confidence</h2> Grow your ideas together with shared documents while <strong>Zero Knowledge</strong> technology secures your privacy; <strong>even from us</strong>.", "main_info": "<h2>Collaborate in Confidence</h2> Grow your ideas together with shared documents while <strong>Zero Knowledge</strong> technology secures your privacy; <strong>even from us</strong>.",
"main_catch_phrase": "The Zero Knowledge Cloud", "main_catch_phrase": "The Zero Knowledge Cloud",
"main_footerText": "With CryptPad, you can make quick collaborative documents for taking notes and writing down ideas together.", "main_footerText": "With CryptPad, you can make quick collaborative documents for taking notes and writing down ideas together.",
@ -1016,5 +1011,35 @@
"crowdfunding_popup_no": "Not now", "crowdfunding_popup_no": "Not now",
"crowdfunding_popup_never": "Don't ask me again", "crowdfunding_popup_never": "Don't ask me again",
"markdown_toc": "Contents", "markdown_toc": "Contents",
"fm_expirablePad": "This pad will expire on {0}" "fm_expirablePad": "This pad will expire on {0}",
"admin_authError": "Only administrators can access this page",
"admin_cat_general": "General",
"admin_cat_stats": "Statistics",
"adminPage": "Administration",
"admin_activeSessionsTitle": "Active connections",
"admin_activeSessionsHint": "Number of active websocket connections (and unique IP addresses connected)",
"admin_activePadsTitle": "Active pads",
"admin_activePadsHint": "Number of unique documents currently being viewed or edited",
"admin_registeredTitle": "Registered users",
"admin_registeredHint": "Number of users registered on your instance",
"admin_updateLimitTitle": "Update user quotas",
"admin_updateLimitHint": "Forcing an update of user storage limits can be done any time, but is only necessary in the event of an error",
"admin_updateLimitButton": "Update quotas",
"admin_updateLimitDone": "Update completed successfully",
"admin_flushCacheTitle": "Flush HTTP cache",
"admin_flushCacheHint": "Force users to download the latest clientside assets (only if your server is in fresh mode)",
"admin_flushCacheButton": "Flush cache",
"admin_flushCacheDone": "Cache flushed successfully",
"footer_product": "Product",
"footer_team": "The team",
"footer_donate": "Donate",
"footer_legal": "Legal",
"footer_tos": "Terms",
"contact_admin": "Contact the administrators",
"contact_adminHint": "For any issues related to your account, storage limit, or availability of their service.",
"contact_dev": "Contact the developers",
"contact_devHint": "For feature requests, usability improvements, or to say thank you.",
"contact_bug": "Bug report",
"contact_chat": "Chat",
"contact_email": "Email"
} }

Loading…
Cancel
Save