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

pull/1/head
ansuz 8 years ago
commit c8c44d3bfc

@ -119,6 +119,7 @@ module.exports = {
'terms', 'terms',
'about', 'about',
'contact', 'contact',
'what-is-cryptpad'
], ],
/* Limits, Donations, Subscriptions and Contact /* Limits, Donations, Subscriptions and Contact

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

@ -2,7 +2,8 @@ define([
'/api/config', '/api/config',
'/common/hyperscript.js', '/common/hyperscript.js',
'/common/cryptpad-common.js', '/common/cryptpad-common.js',
], function (Config, h, Cryptpad) { 'jquery'
], function (Config, h, Cryptpad, $) {
var Pages = {}; var Pages = {};
var Msg = Cryptpad.Messages; var Msg = Cryptpad.Messages;
var urlArgs = Config.requireConf.urlArgs; var urlArgs = Config.requireConf.urlArgs;
@ -12,168 +13,207 @@ define([
return e; return e;
}; };
var indexContent = function () { var footerCol = function (title, L, literal) {
return [ return h('div.col', [
h('div.page.category.first#knowmore', [ h('ul.list-unstyled', [
h('center', [ h('li.title', {
h('h1', Msg.main_howitworks) 'data-localization': title,
]) }, title? Msg[title]: literal )
]), ].concat(L.map(function (l) {
h('div.page', [ return h('li', [ l ]);
h('div.info-container', [ }))
h('div.left.image', [ )
h('img', { ]);
src: '/customize/images/zeroknowledge_small.png?' + urlArgs , };
alt: 'Zero Knowledge'
}) var footLink = function (ref, loc, text) {
]), var attrs = {
h('div.right', [ href: ref,
h('h2', Msg.main_zeroKnowledge), };
setHTML(h('p'), Msg.main_zeroKnowledge_p) if (!/^\//.test(ref)) {
]) attrs.target = '_blank';
]) attrs.rel = 'noopener noreferrer';
]), }
h('div.page.even', [ if (loc) {
h('div.info-container', [ attrs['data-localization'] = loc;
h('div.left', [ text = Msg[loc];
h('h2', Msg.main_writeItDown), }
h('p', Msg.main_writeItDown_p) return h('a', attrs, text);
};
var infopageFooter = function () {
return h('footer', [
h('div.container', [
h('div.row', [
footerCol(null, [
footLink('/about.html', 'about'),
footLink('/terms.html', 'terms'),
footLink('/privacy.html', 'privacy'),
], 'CryptPad'),
footerCol('footer_applications', [
footLink('/drive/', 'main_drive'),
footLink('/pad/', 'main_richText'),
footLink('/code/', 'main_code'),
footLink('/slide/', 'main_slide'),
footLink('/poll/', 'main_poll'),
footLink('/whiteboard/', null, Msg.type.whiteboard)
]), ]),
h('div.right.image', [ footerCol('footer_aboutUs', [
h('img', { footLink('https://blog.cryptpad.fr', 'blog'),
alt: "User account", footLink('https://labs.xwiki.com', null, 'XWiki Labs'),
src: '/customize/images/realtime_small.png?' + urlArgs, footLink('http://www.xwiki.com', null, 'XWiki SAS'),
}) footLink('https://www.open-paas.org', null, 'OpenPaaS')
])
])
]),
h('div.page', [
h('div.info-container', [
h('div.left.image', [
h('img', {
src: '/customize/images/key_small.png?' + urlArgs,
alt: 'User account'
})
]), ]),
h('div.right', [ footerCol('footer_contact', [
h('h2', Msg.main_share), footLink('https://riot.im/app/#/room/#cryptpad:matrix.org', null, 'Chat'),
h('p', Msg.main_share_p) footLink('https://twitter.com/cryptpad', null, 'Twitter'),
footLink('https://github.com/xwiki-labs/cryptpad', null, 'GitHub'),
footLink('/contact.html', null, 'Email')
]) ])
]) ])
]), ]),
h('div.page.even', [ h('div.cp-version-footer', "CryptPad v1.13.0 (Naiad)")
h('div.info-container', [ ]);
h('div.left', [
h('h2', Msg.main_organize),
h('p', Msg.main_organize_p)
]),
h('div.right.image', [
h('img', {
src: '/customize/images/organize.png?' + urlArgs,
alt: 'User account'
})
])
])
])
];
}; };
Pages['/about.html'] = function () { Pages['/about.html'] = function () {
return h('div#main_other', [ return h('div#cp-main.cp-page-about', [
h('center', [ infopageTopbar(),
h('h1', Msg.about) h('div.container.cp-container', [
h('center', [
h('h1', Msg.about)
]),
setHTML(h('p'), '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.'),
h('h2', 'Core Developers'),
h('div.row', [
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/aaron.jpg'}),
h('h3', "Aaron MacSween"),
setHTML(h('div#bio'), '<p>Aaron transitioned into distributed systems development from a background in jazz and live stage performance.</p><p>He appreciates the elegance of biological systems and functional programming, and focused on both as a student at the University of Toronto, where he studied cognitive and computer sciences.</p><p>He moved to Paris in 2015 to work as a research engineer at XWiki SAS, after having dedicated significant time to various cryptography-related software projects.</p><p>He spends his spare time experimenting with guitars, photography, science fiction, and spicy food.</p>')
]),
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/caleb.jpg'}),
h('h3', "Caleb James Delisle"),
setHTML(h('div#bio'), '<p>Caleb is a cryptography developer, Machine Technology graduate of the Franklin County Technical School and lifelong tinkerer.</p><p>In 2011, he started the cjdns Open Source project to show that secure networking could be invisible and easily deployed.</p><p>After joining XWiki SAS in 2014, he started the CryptPad project with the intent of bringing the same transparent security to collaborative editing.</p><p>He\'s always trying to learn from more experienced colleagues and when someone passes through the Research Team office, his favorite words are "Pull up a chair!".</p>')
]),
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/yann.jpg'}),
h('h3', "Yann Flory"),
setHTML(h('div#bio'), '<p>Yann is a mysterious person.</p>')
]),
]),
h('h2', 'Key Contributors'),
h('div.row', [
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/pierre.jpg'}),
h('h3', "Pierre Bondoerffer"),
setHTML(h('div#bio'), '<p>Resident CSS wizard and emoji extraordinaire, Pierre is passionate about anything related to technology. He loves to hack around computers and put parts together.</p><p>He is currently studying at 42, where he learns about algorithms, networking, kernel programming and graphics.</p><p>As a part of an internship, he joined XWiki SAS and worked on CryptPad to improve user experience. He also maintains the Spanish translation.</p>')
]),
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/avatar.png'}),
h('h3', "Catalin Scripcariu"),
setHTML(h('div#bio'), '')
]),
h('div.col-md-4', [
h('img.bio-avatar', {'src': '/customize/images/avatar.png'}),
h('h3', "Ludovic Dubost"),
setHTML(h('div#bio'), '')
])
]),
]), ]),
setHTML(h('p'), Msg.main_p2), infopageFooter()
h('h2', Msg.main_howitworks), ]);
setHTML(h('p'), Msg.main_howitworks_p1)
].concat(indexContent()));
}; };
Pages['/privacy.html'] = function () { Pages['/privacy.html'] = function () {
return h('div#main_other', [ return h('div#cp-main.cp-page-privacy', [
h('center', h('h1', Msg.policy_title)), infopageTopbar(),
h('h2', Msg.policy_whatweknow), h('div.container.cp-container', [
h('p', Msg.policywhatweknow_p1), h('center', h('h1', Msg.policy_title)),
h('h2', Msg.policy_whatweknow),
h('p', Msg.policywhatweknow_p1),
h('h2', Msg.policy_howweuse), h('h2', Msg.policy_howweuse),
h('p', Msg.policy_howweuse_p1), h('p', Msg.policy_howweuse_p1),
h('p', Msg.policy_howweuse_p2), h('p', Msg.policy_howweuse_p2),
h('h2', Msg.policy_whatwetell), h('h2', Msg.policy_whatwetell),
h('p', Msg.policy_whatwetell_p1), h('p', Msg.policy_whatwetell_p1),
h('h2', Msg.policy_links), h('h2', Msg.policy_links),
h('p', Msg.policy_links_p1), h('p', Msg.policy_links_p1),
h('h2', Msg.policy_ads), h('h2', Msg.policy_ads),
h('p', Msg.policy_ads_p1), h('p', Msg.policy_ads_p1),
h('h2', Msg.policy_choices), h('h2', Msg.policy_choices),
h('p', Msg.policy_choices_open), h('p', Msg.policy_choices_open),
setHTML(h('p'), Msg.policy_choices_vpn), setHTML(h('p'), Msg.policy_choices_vpn),
]),
h('br') infopageFooter()
]); ]);
}; };
Pages['/terms.html'] = function () { Pages['/terms.html'] = function () {
return h('div#main_other', [ return h('div#cp-main.cp-page-terms', [
h('center', h('h1', Msg.tos_title)), infopageTopbar(),
h('p', Msg.tos_legal), h('div.container.cp-container', [
h('p', Msg.tos_availability), h('center', h('h1', Msg.tos_title)),
h('p', Msg.tos_e2ee), h('p', Msg.tos_legal),
h('p', Msg.tos_logs), h('p', Msg.tos_availability),
h('p', Msg.tos_3rdparties), h('p', Msg.tos_e2ee),
h('p', Msg.tos_logs),
h('p', Msg.tos_3rdparties),
]),
infopageFooter()
]); ]);
}; };
Pages['/contact.html'] = function () { Pages['/contact.html'] = function () {
return h('div#main_other', [ return h('div#cp-main.cp-page-contact', [
h('center', h('h1', Msg.contact)), infopageTopbar(),
setHTML(h('p'), Msg.main_about_p2) h('div.container.cp-container', [
h('center', h('h1', Msg.contact)),
setHTML(h('p'), Msg.main_about_p2)
]),
infopageFooter(),
]); ]);
}; };
var userForm = function () { Pages['/what-is-cryptpad.html'] = function () {
return h('div#userForm.form-group.hidden', [ return h('div#cp-main.cp-page-what-is-cryptpad', [
h('input#name.form-control', { infopageTopbar(),
name: 'name', h('div.container.cp-container', [
type: 'text', h('center', h('h1', Msg.whatis_title)),
placeholder: Msg.login_username setHTML(h('h2'), Msg.whatis_collaboration),
}), setHTML(h('p'), Msg.whatis_collaboration_p1),
h('input#password.form-control', { h('img', { src: '/customize/images/pad_screenshot.png?' + urlArgs }),
name: 'password', setHTML(h('p'), Msg.whatis_collaboration_p2),
type: 'password', setHTML(h('p'), Msg.whatis_collaboration_p3),
placeholder: Msg.login_password setHTML(h('h2'), Msg.whatis_zeroknowledge),
}), h('div.row', [
h('div', { h('div.col-md-4.align-self-center', [
style: { display: 'none' } h('img#zeroknowledge', { src: '/customize/images/zeroknowledge_small.png?' + urlArgs }),
}, [ ]),
h('span.remember.form-check', [ h('div.col-md-8', [
h('label.form-check-label', { setHTML(h('p'), Msg.whatis_zeroknowledge_p1),
'for': 'rememberme', setHTML(h('p'), Msg.whatis_zeroknowledge_p2),
placeholder: Msg.login_remember, setHTML(h('p'), Msg.whatis_zeroknowledge_p3),
}, [ ]),
h('input#rememberme.form-check-input', { ]),
type: 'checkbox', setHTML(h('h2'), Msg.whatis_drive),
checked: true setHTML(h('p'), Msg.whatis_drive_p1),
}) h('img', { src: '/customize/images/drive_screenshot.png?' + urlArgs }),
]) setHTML(h('p'), Msg.whatis_drive_p2),
]) setHTML(h('p'), Msg.whatis_drive_p3),
setHTML(h('h2'), Msg.whatis_business),
setHTML(h('p'), Msg.whatis_business_p1),
setHTML(h('p'), Msg.whatis_business_p2),
]), ]),
h('button.btn.btn-secondary.login.half.first', Msg.login_login), infopageFooter(),
h('button.btn.btn-success.register.half', Msg.login_register),
h('p.separator', Msg.login_orNoLogin),
h('p#buttons.buttons'),
h('p.driveLink', [
h('a.gotodrive', {
href: '/drive/'
}, Msg.login_nologin)
])
]); ]);
}; };
var appButton = function (alt, h2, img, p, url, btn, id) { var appButton = function (alt, h2, img, p, url, btn, id) {
return h('div.app', [ return h('div.app', [
h('center', [ h('center', [
@ -194,84 +234,95 @@ define([
]); ]);
}; };
var tryIt = function () { var infopageTopbar = function () {
return [ return h('div.cp-topbar',
h('div.class.category#tryit', [ h('div',
h('center', [ h('a.navbar-brand', { href: 'index.html'}, [
h('h1', Msg.tryIt) h( 'img', { src: '/customize/CryptPad-white-logo.svg' })
])
]),
h('div.page', [
h('div.app-container', [
h('div.app-row', [
appButton("Rich Text application",
Msg.main_richText,
'/customize/images/pad.png?' + urlArgs,
Msg.main_richText_p,
'/pad/',
Msg.button_newpad,
'create-pad'),
appButton('Code application',
Msg.main_code,
'/customize/images/code.png?' + urlArgs,
Msg.main_code_p,
'/code/',
Msg.button_newcode,
'create-code'),
appButton('Slide application',
Msg.main_slide,
'/customize/images/slide.png?' + urlArgs,
Msg.main_slide_p,
'/slide/',
Msg.button_newslide,
'create-slide'),
appButton('Poll application',
Msg.main_poll,
'/customize/images/poll.png?' + urlArgs,
Msg.main_poll_p,
'/poll/',
Msg.button_newpoll,
'create-poll')
])
])
]) ])
]; ),
h('div.navbar.navbar-toggleable-md.navbar-light.navbar-inverse',
h('button.navbar-toggler.navbar-toggler-right', {'type':'button'}, {'data-toggle':'collapse'}, {'data-target':'#menuCollapse'}, {'aria-controls': 'menuCollapse'}, {'aria-expanded':'false'}, {'aria-label':'Toggle navigation'},
[h('i.fa.fa-bars ')
]),
h('div.collapse.navbar-collapse.justify-content-end.flex-column#menuCollapse', [
h('a.nav-item.nav-link', { href: '/what-is-cryptpad.html'}, Msg.topbar_whatIsCryptpad),
h('a.nav-item.nav-link', { href: 'https://blog.cryptpad.fr/'}, Msg.blog),
h('a.nav-item.nav-link', { href: '/contact.html'}, Msg.contact),
h('a.nav-item.nav-link', { href: '/about.html'}, Msg.about),
h('a.cp-login-btn', { href: '/login'}, Msg.login_login),
h('a.cp-register-btn', { href: '/register'}, Msg.login_register)
])
)
);
}; };
Pages['/'] = Pages['/index.html'] = function () { Pages['/'] = Pages['/index.html'] = function () {
var showingMore = false;
return [ return [
h('div#main', [ h('div#cp-main.cp-page-index', [
h('div.mainOverlay'), infopageTopbar(),
h('div#align-container', [ h('div.container.cp-container', [
h('div#main-container', [ h('div.row', [
h('div#data.hidden', [ h('div.cp-title.col-12.col-sm-6', [
setHTML(h('p.left'), Msg.main_info), h('img', { src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs }),
h('h1', 'CryptPad'),
h('p', Msg.main_catch_phrase)
]), ]),
userForm(), h('div.col-12.col-sm-6', [
h('div#loggedIn.hidden', [ [
h('p#loggedInHello'), [ 'pad', '/pad/', Msg.main_richTextPad, 'fa-file-word-o' ],
h('p', [ [ 'code', '/code/', Msg.main_codePad, 'fa-file-code-o' ],
h('button.btn.btn-primary.gotodrive', Msg.login_accessDrive), [ 'slide', '/slide/', Msg.main_slidePad, 'fa-file-powerpoint-o' ],
]), [ 'poll.cp-more.cp-hidden', '/poll/', Msg.main_pollPad, 'fa-calendar' ],
h('p', [ [ 'whiteboard.cp-more.cp-hidden', '/whiteboard/', Msg.main_whiteboardPad, 'fa-paint-brush' ],
h('button#loggedInLogout.btn.btn-secondary', Msg.logoutButton) [ 'recent.cp-more.cp-hidden', '/drive/', Msg.main_recentPads, 'fa-hdd-o' ]
].map(function (x) {
return h('a', [
{ href: x[1] },
h('div.bs-callout.cp-callout-' + x[0], [
h('i.fa.' + x[3]),
h('div', [ h('h4', x[2]) ])
])
]);
}),
h('div.bs-callout.cp-callout-more', [
h('div.cp-callout-more-lessmsg.cp-hidden', [
"see less ",
h('i.fa.fa-caret-up')
]),
h('div.cp-callout-more-moremsg', [
"see more ",
h('i.fa.fa-caret-down')
]),
{
onclick: function () {
if (showingMore) {
$('.cp-more, .cp-callout-more-lessmsg').addClass('cp-hidden');
$('.cp-callout-more-moremsg').removeClass('cp-hidden');
} else {
$('.cp-more, .cp-callout-more-lessmsg').removeClass('cp-hidden');
$('.cp-callout-more-moremsg').addClass('cp-hidden');
}
showingMore = !showingMore;
}
}
]) ])
]) ])
]) ])
]), ]),
]) ])
] ];
.concat(tryIt());
}; };
var loadingScreen = function () { var loadingScreen = function () {
return h('div#loading', return h('div#loading',
h('div.loadingContainer', [ h('div.loadingContainer', [
h('img.cryptofist', { h('img.cryptofist', {
src: '/customize/cryptofist_small.png?' + urlArgs src: '/customize/cryptpad-new-logo-colors-logoonly.png?' + urlArgs
}), }),
h('div.spinnerContainer', h('div.spinnerContainer',
h('span.fa.fa-spinner.fa-pulse.fa-4x.fa-fw')), h('span.fa.fa-circle-o-notch.fa-spin.fa-4x.fa-fw')),
h('p', Msg.loading) h('p', Msg.loading)
]) ])
); );
@ -283,15 +334,15 @@ define([
}; };
Pages['/register/'] = Pages['/register/index.html'] = function () { Pages['/register/'] = Pages['/register/index.html'] = function () {
return [h('div#main', [ return [h('div#cp-main.cp-page-register', [
h('div.mainOverlay'), infopageTopbar(),
h('div#align-container', [ h('div.container.cp-container', [
h('div#data.hidden', [ h('div.row.align-items-center', [
h('div#data.hidden.col-md-6', [
h('h1', Msg.register_header), h('h1', Msg.register_header),
h('br'), setHTML(h('p.register-explanation'), Msg.register_explanation)
setHTML(h('p.left.register-explanation'), Msg.register_explanation)
]), ]),
h('div#userForm.form-group.hidden', [ h('div#userForm.form-group.hidden.col-md-6', [
h('input.form-control#username', { h('input.form-control#username', {
type: 'text', type: 'text',
autocomplete: 'off', autocomplete: 'off',
@ -309,34 +360,38 @@ define([
type: 'password', type: 'password',
placeholder: Msg.login_confirm, placeholder: Msg.login_confirm,
}), }),
h('input#import-recent', { h('div.checkbox-container', [
type: 'checkbox', h('input#import-recent', {
checked: true type: 'checkbox',
}), checked: true
h('label', { }),
'for': 'import-recent', h('label', {
}, Msg.register_importRecent), 'for': 'import-recent',
h('br'), }, Msg.register_importRecent),
h('input#accept-terms', { ]),
type: 'checkbox' h('div.checkbox-container', [
}), h('input#accept-terms', {
setHTML(h('label', { type: 'checkbox'
'for': 'accept-terms', }),
}), Msg.register_acceptTerms), setHTML(h('label', {
h('br'), 'for': 'accept-terms',
}), Msg.register_acceptTerms),
]),
h('button#register.btn.btn-primary', Msg.login_register) h('button#register.btn.btn-primary', Msg.login_register)
]) ])
]) ]),
]),
infopageFooter(),
])]; ])];
}; };
Pages['/login/'] = Pages['/login/index.html'] = function () { Pages['/login/'] = Pages['/login/index.html'] = function () {
return [h('div#main', [ return [h('div#cp-main.cp-page-login', [
h('div.mainOverlay'), infopageTopbar(),
h('div#align-container', h('div.container.cp-container', [
h('div#main-container', [ h('div.row.align-items-center', [
h('div#data.hidden', setHTML(h('p.left'), Msg.main_info)), h('div#data.hidden.col-md-6', setHTML(h('p.left'), Msg.main_info)),
h('div#userForm.form-group.hidden', [ h('div#userForm.form-group.hidden.col-md-6', [
h('input.form-control#name', { h('input.form-control#name', {
name: 'name', name: 'name',
type: 'text', type: 'text',
@ -352,14 +407,14 @@ define([
'name': 'password', 'name': 'password',
placeholder: Msg.login_password, placeholder: Msg.login_password,
}), }),
h('button.btn.btn-primary.login.first', Msg.login_login),
h('div.extra', [ h('div.extra', [
h('p', Msg.login_notRegistered), h('button.btn.btn-primary.login.first', Msg.login_login),
h('button#register.btn.btn-success.register', Msg.login_register) h('button#register.btn.btn-success.register', Msg.login_register)
]) ])
]) ])
]) ]),
) ]),
infopageFooter(),
])]; ])];
}; };

@ -19,6 +19,7 @@
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
height: 300px; height: 300px;
margin-bottom: 2em;
@media screen and (max-height: @media-short-screen) { @media screen and (max-height: @media-short-screen) {
display: none; display: none;
} }

@ -821,13 +821,16 @@ body .cryptpad-toolbar {
} }
a.cryptpad-logo { a.cryptpad-logo {
cursor: pointer; cursor: pointer;
font-size: 1em; display: inline-flex;
height: auto;
padding: 0px 5px;
text-decoration: none; text-decoration: none;
height: auto;
padding: 10px;
// hack because of whiteboard and poll img {
color: white !important; cursor: pointer;
height: 100%;
width: 100%;
}
} }
} }
.cryptpad-user { .cryptpad-user {

@ -1,3 +1,5 @@
@import (once) '../less2/include/colortheme.less';
@base: #fff; //#f5f5f5; @base: #fff; //#f5f5f5;
@dark-base: darken(@base, 20%); @dark-base: darken(@base, 20%);
@less-dark-base: darken(@base, 10%); @less-dark-base: darken(@base, 10%);
@ -62,7 +64,7 @@
@slide-default-bg: #000; @slide-default-bg: #000;
@bg-loading: @old-base; @bg-loading: #222;
@color-loading: @old-fore; @color-loading: @old-fore;
@media-not-big: 800px; @media-not-big: 800px;
@ -85,28 +87,28 @@
@toolbar-button-font: @dropdown-font; @toolbar-button-font: @dropdown-font;
@toolbar-pad-bg: #1c4fa0; @toolbar-pad-bg: @colortheme_pad-bg;
@toolbar-pad-color: #fff; @toolbar-pad-color: @colortheme_pad-color;
@toolbar-slide-bg: #e57614; @toolbar-slide-bg: @colortheme_slide-bg;
@toolbar-slide-color: #fff; @toolbar-slide-color: @colortheme_slide-color;
@toolbar-code-bg: #ffae00; @toolbar-code-bg: @colortheme_code-bg;
@toolbar-code-color: #000; @toolbar-code-color: @colortheme_code-color;
@toolbar-poll-bg: #006304; @toolbar-poll-bg: @colortheme_poll-bg;
@toolbar-poll-color: #fff; @toolbar-poll-color: @colortheme_poll-color;
@toolbar-whiteboard-bg: #800080; @toolbar-whiteboard-bg: @colortheme_whiteboard-bg;
@toolbar-whiteboard-color: #fff; @toolbar-whiteboard-color: @colortheme_whiteboard-color;
@toolbar-drive-bg: #0087ff; @toolbar-drive-bg: @colortheme_drive-bg;
@toolbar-drive-color: #fff; @toolbar-drive-color: @colortheme_drive-color;
@toolbar-file-bg: #cd2532; @toolbar-file-bg: @colortheme_file-bg;
@toolbar-file-color: #fff; @toolbar-file-color: @colortheme_file-color;
@toolbar-friends-bg: #607B8D; @toolbar-friends-bg: @colortheme_friends-bg;
@toolbar-friends-color: #fff; @toolbar-friends-color: @colortheme_friends-color;
@toolbar-default-bg: #ddd; @toolbar-default-bg: @colortheme_default-bg;
@toolbar-default-color: #000; @toolbar-default-color: @colortheme_default-color;
@toolbar-settings-bg: #0087ff; @toolbar-settings-bg: @colortheme_settings-bg;
@toolbar-settings-color: #fff; @toolbar-settings-color: @colortheme_settings-color;
@toolbar-profile-bg: #0087ff; @toolbar-profile-bg: @colortheme_profile-bg;
@toolbar-profile-color: #fff; @toolbar-profile-color: @colortheme_profile-color;
@toolbar-todo-bg: #7bccd1; @toolbar-todo-bg: #7bccd1;
@toolbar-todo-color: #000; @toolbar-todo-color: #000;
@ -124,7 +126,7 @@
@main-block-bg: rgba(200, 200, 200, 0.3); @main-block-bg: rgba(200, 200, 200, 0.3);
@main-color: #fff; @main-color: #fff;
@main-bg: url('/customize/bg3.jpg') no-repeat center center; @main-bg: url('/customize/bg4.jpg') no-repeat center center;
@category-bg: #f4f4f4; @category-bg: #f4f4f4;

@ -0,0 +1,37 @@
@colortheme_link-color: #0275D8;
@colortheme_link-color-visited: #005999;
@colortheme_info-background: #fafafa;
@colortheme_pad-bg: #1c4fa0;
@colortheme_pad-color: #fff;
@colortheme_slide-bg: #e57614;
@colortheme_slide-color: #fff;
@colortheme_code-bg: #ffae00;
@colortheme_code-color: #000;
@colortheme_poll-bg: #006304;
@colortheme_poll-color: #fff;
@colortheme_whiteboard-bg: #800080;
@colortheme_whiteboard-color: #fff;
@colortheme_drive-bg: #0087ff;
@colortheme_drive-color: #fff;
@colortheme_file-bg: #cd2532;
@colortheme_file-color: #fff;
@colortheme_friends-bg: #607B8D;
@colortheme_friends-color: #fff;
@colortheme_default-bg: #ddd;
@colortheme_default-color: #000;
@colortheme_settings-bg: #0087ff;
@colortheme_settings-color: #fff;
@colortheme_profile-bg: #0087ff;
@colortheme_profile-color: #fff;

@ -0,0 +1,161 @@
@import (once) "./colortheme.less";
@infopages_infobar-height: 64px;
@infopages_padding: 32px;
// Basic setup for info pages, this should be used at the global level
.infopages_main () {
background-color: @colortheme_info-background;
a {
color: @colortheme_link-color;
&:visited { color: @colortheme_link-color-visited; }
//opacity: 0.8;
//transition: opacity 0.2s;
}
a:hover {
opacity: 1;
}
border: 0;
padding: 0;
margin: 0;
font-size: 14px;
font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
.cp-container {
font-size: 16px;
margin-top: @infopages_infobar-height;
padding-top: @infopages_padding;
padding-bottom: @infopages_padding;
min-height: 75vh;
h1 {
font-size: 3em;
margin-bottom: 0.5em;
}
h2 {
font-size: 2em;
margin-top: 1em;
margin-bottom: 0.5em;
}
h3 {
font-size: 1.5em;
margin-top: 1em;
margin-bottom: 0.5em;
}
img {
&.left {
float: left;
}
max-width: 100%;
}
.form-group {
& > * {
margin-top: 0.5em;
}
display: flex;
flex-direction: column;
align-items: center;
.checkbox-container {
width: 100%;
display: flex;
align-items: center;
label {
margin: 0;
}
input {
margin-right: 0.5em;
}
}
}
}
footer {
background-color: white;
.container {
.col {
margin-top: 1em;
}
width: 100%;
text-align: center;
margin-bottom: 1em;
ul.list-unstyled {
margin: 0;
}
}
.cp-version-footer {
background-color: @colortheme_info-background;
color: black;
text-align: center;
padding: 0.5em;
}
}
};
.infopages_link () {
text-decoration: none;
color: #0275D8;
cursor: pointer;
display: inline-flex;
&:hover {
transform: scale(1.05);
}
}
// Apply this to the top bar div
.infopages_topbar () {
.cp-topbar {
background: #fff;
z-index: 9001;
position: fixed;
top: 0;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
height: @infopages_infobar-height;
padding-left: 0.5em;
padding-right: 0.5em;
vertical-align: middle;
font-size: 1.25em;
line-height: 1.25em;
cursor: default;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
.navbar-nav {
display: flex;
align-items: center;
}
a {
font-weight: 500;
padding: 0.6em;
.infopages_link()
}
.cp-logo {
img {
height: @infopages_infobar-height / 2;
}
margin-right: 0.5em;
}
}
}

@ -0,0 +1,12 @@
@font-face {
font-family: Neuropolitical;
src: url(./customize/fonts/neuropolitical.ttf)
}
div#cp-main.cp-page-index { @import "./pages/page-index.less"; }
div#cp-main.cp-page-contact { @import "./pages/page-contact.less"; }
div#cp-main.cp-page-login { @import "./pages/page-login.less"; }
div#cp-main.cp-page-register { @import "./pages/page-register.less"; }
div#cp-main.cp-page-what-is-cryptpad { @import "./pages/page-what-is-cryptpad.less"; }
div#cp-main.cp-page-about { @import "./pages/page-about.less"; }
div#cp-main.cp-page-privacy { @import "./pages/page-privacy.less"; }
div#cp-main.cp-page-terms { @import "./pages/page-terms.less"; }

@ -0,0 +1,12 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
.bio-avatar {
border-radius: 50%;
margin: 1em 0;
max-width: 300px;
max-height: 300px;
}

@ -0,0 +1,9 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
.fa {
padding-right: 0.25em;
}

@ -0,0 +1,229 @@
//@import (once) "./variables.less";
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
@background_lighter: rgba(0,0,0,0.1);
@background_darker: rgba(0,0,0,0.4);
&#cp-main {
color: #FFF;
background: linear-gradient( @background_darker, @background_lighter ), url('/customize/bg14.jpg');
background-size: cover;
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
.container {
@media only screen and (max-device-width : 576px) {
margin-top: 6em;
}
}
}
.cp-right {
.cp-register-btn {
padding: 0.5em 1em 0.7em 1em;
border: 2px solid #fff;
&:hover {
transform: scale(1.05);
}
}
.cp-login-btn {
color: #fff;
padding: 0.5em 1em 0.7em 1em;
&:hover {
transform: scale(1.05);
}
}
}
.cp-title {
display: flex;
align-items: center;
flex-direction: column;
margin-top: 1.5em;
img {
height: 20vh;
margin-bottom: 1.5em;
}
margin-left: 0;
h1 {
font-family: "Neuropolitical";
//font-family: Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", Times, serif;
//font-family: "Raleway";
font-size: 45px;
}
p {
//font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-size: 20px;
//font-style: italic;
}
}
.cp-topbar {
//position: absolute;
background: transparent;
a {
color: #fff;
padding: 0.5em 0.5em 0.5em 0.5em;
}
button:focus {
outline: none;
}
.collapse {
a {
display: block;
}
}
.navbar-toggler-left {
top: -0.59rem;
}
.cp-left {
.fa-bars {
font-size: 1.6rem;
}
}
a.cp-logo {
display: none;
}
img {
height: 5vh;
margin-top: -4px;
}
&:hover {
img {
transform: none;
}
};
a.cp-logo {
display: none;
}
}
@callout-padding: 15px;
a:hover {
text-decoration: none
}
.bs-callout {
display: flex;
align-items: stretch;
margin: 25px 0;
background:rgba(255,255,255,0.6);
color: black;
transition: all .1s ease-in-out;
box-sizing: border-box;
height: 5em;
position: relative;
a {
color: black;
&:hover { text-decoration-line: none; }
}
div {
@media only screen and (min-device-width: 576px) and (max-device-width: 767px) {
left: 4.5em !important;
}
}
}
h4 {
margin: 0;
}
.cp-callout-more-moremsg,.cp-callout-more-lessmsg {
transform: none !important;
}
.bs-callout div {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
position: absolute;
left: 5em;
}
.bs-callout+.bs-callout {
margin-top: -5px;
}
.bs-callout:hover {
//color: white;
transform: scale(1.05);
cursor: pointer;
}
.bs-callout:hover .fa {
//width: 100%;
}
.bs-callout:hover.cp-callout-more {
transform: none !important;
}
.bs-callout .fa {
display: flex;
align-items: center;
font-size: 2em;
padding-left: 0.57em;
width: 2em;
transition: width 0.1s;
color: #fff;
}
.cp-callout-pad .fa { background-color: @colortheme_pad-bg; }
.cp-callout-code .fa { background-color: @colortheme_code-bg; }
.cp-callout-slide .fa { background-color: @colortheme_slide-bg; }
.cp-callout-poll .fa { background-color: @colortheme_poll-bg; }
.cp-callout-whiteboard .fa { background-color: @colortheme_whiteboard-bg; }
.cp-callout-recent .fa { background-color: @colortheme_drive-bg; }
.cp-hidden { display: none !important; }
.cp-callout-more {
width: auto;
display: inline-block;
align-content: center;
height: 2em;
border-radius: 1em;
margin-left: auto;
margin-right: auto;
margin-top: 0;
background: none;
width: 100%;
div {
.infopages_link();
color: #fff;
.fa {
font-size: inherit;
padding: 0;
width: 1em;
padding-left: 5px;
}
}
}
.navbar-inverse .navbar-toggler {
border-color: transparent;
margin-top: -12px;
padding: 0;
}
@media (min-width: 576px) and (max-width: 767px) {
.container {
padding-left: 0;
padding-right: 0;
}
div#cp-main.cp-page-index .cp-topbar .navbar-toggler-left {
left: 5px;
}
}
@media (max-width: 991px) {
#menuCollapse {
/*position: absolute;
left: -131px;*/
margin-top: 0.5em;
text-align: right;
}
#menuCollapse a {
width: 100%;
text-align: right;
}
.navbar-nav a {
text-align: right !important;
}
.cp-right .cp-login-btn {
padding: 0.5em;
}
}
.collapsing a {
text-align: right !important;
}

@ -0,0 +1,17 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
.form-group {
.extra {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
.login {
}
}
}

@ -0,0 +1,5 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();

@ -0,0 +1,23 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
.cp-container {
.form-group {
.checkbox-container {
&:nth-of-type(1) {
margin-top: 2em;
}
&:last-of-type {
margin-bottom: 1em;
}
}
#register {
margin-top: 16px;
font-size: 1.25em;
width: 30%;
}
}
}

@ -0,0 +1,5 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();

@ -0,0 +1,9 @@
@import (once) "../include/infopages.less";
@import (once) "../include/colortheme.less";
.infopages_main();
.infopages_topbar();
img#zeroknowledge {
width: 100%;
}

@ -0,0 +1,20 @@
# CryptPad Styling
How it works:
* In this example, we use the index page, for each page we will have a corresponding class name and a corresponding less file.
* The index page has a main div containing everything `<div id="cp-main" class="cp-page-index">`
* There is a corresponding less file called `less2/pages/page-index.less`
* Finally there is a corresponding line in main.less which imports that less file: `div#main.cp-page-index { @import "./pages/page-index.less"; }`
* cp-page-index class means:
* cp -> cryptpad
* page -> this is a style for accessing a page's less file
* index -> the name of the page and of the less file (page-index.less)
* And everything which is standardized across pages is included from `page-index.less` as variables and mixins.
Rules:
* All of our new classes and ids should start with `cp-`.
* You may make as many files as you need, for different purposes, but they can only contain mixins and variables.
* All mixins and variables must be prefixed with the name of the file where they're defined and and underscore.
* e.g. `@colortheme_toolbar-poll-bg: #006304;` defined in `colortheme.less`
* All mixin / variable files go in an `/include/` directory.
* Document the meaning of your variable or mixin in a comment, consider that your mixin will be used by people other than you and if they do not have a definition of what it means, an update to it's style which seems logical to you might break their usage of it.

@ -177,10 +177,11 @@ $(function () {
} }
require([ require([
'less!/customize/src/less/cryptpad.less', 'less!/customize/src/less2/main.less',
'css!/bower_components/bootstrap/dist/css/bootstrap.min.css', 'css!/bower_components/bootstrap/dist/css/bootstrap.min.css',
'/bower_components/bootstrap/dist/js/bootstrap.min.js'
], function () { ], function () {
$body.append($topbar).append($main).append($footer); $body.append($main);
if (/^\/user\//.test(pathname)) { if (/^\/user\//.test(pathname)) {
require([ '/user/main.js'], function () {}); require([ '/user/main.js'], function () {});

@ -104,7 +104,11 @@ define(function () {
out.main_p2 = 'Este proyecto utiliza el editor de texto visual <a href="http://ckeditor.com/">CKEditor</a>, <a href="https://codemirror.net/">CodeMirror</a>, y el motor en tiempo real <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.'; out.main_p2 = 'Este proyecto utiliza el editor de texto visual <a href="http://ckeditor.com/">CKEditor</a>, <a href="https://codemirror.net/">CodeMirror</a>, y el motor en tiempo real <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
out.main_howitworks = '¿Cómo funciona?'; out.main_howitworks = '¿Cómo funciona?';
out.main_howitworks_p1 = "CryptPad utiliza una variante del algoritmo de <a href='https://en.wikipedia.org/wiki/Operational_transformation'>transformación operacional</a> (página en inglés) que es capaz de encontrar un consenso distribuido usando un <a href='https://bitcoin.org/bitcoin.pdf'>Blockchain Nakamoto</a> (página en inglés), popularizado por <a href='https://es.wikipedia.org/wiki/Bitcoin'>Bitcoin</a>. De esta manera el algoritmo puede evitar la necesidad de un servidor central para resolver conflictos de edición de la transformación operacional y sin necesidad de resolver conflictos, el servidor puede mantenerse inconsciente del contenido que se está editando en el pad."; out.main_howitworks_p1 = "CryptPad utiliza una variante del algoritmo de <a href='https://en.wikipedia.org/wiki/Operational_transformation'>transformación operacional</a> (página en inglés) que es capaz de encontrar un consenso distribuido usando un <a href='https://bitcoin.org/bitcoin.pdf'>Blockchain Nakamoto</a> (página en inglés), popularizado por <a href='https://es.wikipedia.org/wiki/Bitcoin'>Bitcoin</a>. De esta manera el algoritmo puede evitar la necesidad de un servidor central para resolver conflictos de edición de la transformación operacional y sin necesidad de resolver conflictos, el servidor puede mantenerse inconsciente del contenido que se está editando en el pad.";
<<<<<<< HEAD
out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes <a href="https://twitter.com/cryptpad"><i class="fa fa-twitter"></i>enviarnos un tweet</a>, abrir un issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="nuestro issue tracker">en <i class="fa fa-github"></i>GitHub</a>. saludarnos en <a href="https://riot.im/app/#/room/#cryptpad:matrix.org" title="Matrix">nuestro <i class="fa fa-comment"></i>canal Matrix</a> o en IRC (#cryptpad on irc.freenode.net), o <a href="mailto:research@xwiki.com"><i class="fa fa-envelope"></i>envianos un email</a>.';
=======
out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes <a href="https://twitter.com/cryptpad">enviarnos un tweet</a>, abrir un issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="nuestro issue tracker">en GitHub</a>, saludarnos en nuestro canal IRC (<a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" title="freenode webchat">irc.freenode.net</a>), o <a href="mailto:research@xwiki.com">envíanos un email</a>.'; out.main_about_p2 = 'Si tienes preguntas o comentarios, puedes <a href="https://twitter.com/cryptpad">enviarnos un tweet</a>, abrir un issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="nuestro issue tracker">en GitHub</a>, saludarnos en nuestro canal IRC (<a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" title="freenode webchat">irc.freenode.net</a>), o <a href="mailto:research@xwiki.com">envíanos un email</a>.';
>>>>>>> fb13e656b7b3ee611bf195a1f1ccf7475f2f1ee4
out.button_newpad = 'Crear nuevo pad de texto enriquecido'; out.button_newpad = 'Crear nuevo pad de texto enriquecido';
out.button_newcode = 'Crear nuevo pad de código'; out.button_newcode = 'Crear nuevo pad de código';
@ -542,6 +546,11 @@ define(function () {
out.settings_logoutEverywhereButton = "Cerrar sesión"; out.settings_logoutEverywhereButton = "Cerrar sesión";
out.upload_title = "Subir archivo"; out.upload_title = "Subir archivo";
<<<<<<< HEAD
// 1.13.0 - Naiad
out.topbar_whatIsCryptpad = "Qué es CryptPad";
=======
// 1.12.0 - Minotaur // 1.12.0 - Minotaur
out.userlist_pending = "Pendiente..."; out.userlist_pending = "Pendiente...";
out.contacts_typeHere = "Escribe un mensaje aquí..."; out.contacts_typeHere = "Escribe un mensaje aquí...";
@ -554,5 +563,6 @@ define(function () {
out.todo_markAsCompleteTitle = "Marcar esta tarea como completa"; out.todo_markAsCompleteTitle = "Marcar esta tarea como completa";
out.todo_markAsIncompleteTitle = "Marcar esta tarea como incompleta"; out.todo_markAsIncompleteTitle = "Marcar esta tarea como incompleta";
out.todo_removeTaskTitle = "Borrar esta tarea de la lista"; out.todo_removeTaskTitle = "Borrar esta tarea de la lista";
>>>>>>> fb13e656b7b3ee611bf195a1f1ccf7475f2f1ee4
return out; return out;
}); });

@ -486,7 +486,7 @@ define(function () {
out.main_p2 = 'Ce projet utilise l\'éditeur visuel (WYSIWYG) <a href="http://ckeditor.com/">CKEditor</a>, l\'éditeur de code source <a href="https://codemirror.net/">CodeMirror</a>, et le moteur temps-réel <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.'; out.main_p2 = 'Ce projet utilise l\'éditeur visuel (WYSIWYG) <a href="http://ckeditor.com/">CKEditor</a>, l\'éditeur de code source <a href="https://codemirror.net/">CodeMirror</a>, et le moteur temps-réel <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
out.main_howitworks_p1 = 'CryptPad utilise une variante de l\'algorithme d\'<a href="https://en.wikipedia.org/wiki/Operational_transformation">Operational transformation</a> qui est capable de trouver un consensus distribué en utilisant <a href="https://bitcoin.org/bitcoin.pdf">une chaîne de bloc Nakamoto</a>, un outil popularisé par le <a href="https://fr.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. De cette manière, l\'algorithme évite la nécessité d\'utiliser un serveur central pour résoudre les conflits d\'édition de l\'Operational Transformation, et sans ce besoin de résolution des conflits le serveur peut rester ignorant du contenu qui est édité dans le pad.'; out.main_howitworks_p1 = 'CryptPad utilise une variante de l\'algorithme d\'<a href="https://en.wikipedia.org/wiki/Operational_transformation">Operational transformation</a> qui est capable de trouver un consensus distribué en utilisant <a href="https://bitcoin.org/bitcoin.pdf">une chaîne de bloc Nakamoto</a>, un outil popularisé par le <a href="https://fr.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. De cette manière, l\'algorithme évite la nécessité d\'utiliser un serveur central pour résoudre les conflits d\'édition de l\'Operational Transformation, et sans ce besoin de résolution des conflits le serveur peut rester ignorant du contenu qui est édité dans le pad.';
//contact.html //contact.html
out.main_about_p2 = 'Si vous avez des questions ou commentaires, vous pouvez <a href="https://twitter.com/cryptpad">nous tweeter</a>, ouvrir une issue sur <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="our issue tracker">Github</a>, venir dire bonjour sur IRC (<a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" title="freenode webchat">irc.freenode.net</a>), ou <a href="mailto:research@xwiki.com">nous envoyer un email</a>.'; out.main_about_p2 = 'Si vous avez des questions ou commentaires, vous pouvez <a href="https://twitter.com/cryptpad"><i class="fa fa-twitter"></i>nous tweeter</a>, ouvrir une issue sur <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="our issue tracker"><i class="fa fa-github"></i>GitHub</a>, venir dire bonjour sur <a href="https://riot.im/app/#/room/#cryptpad:matrix.org" title="Matrix">notre <i class="fa fa-comment"></i>salle Matrix</a> ou IRC (#cryptpad sur irc.freenode.net), ou bien encore <a href="mailto:research@xwiki.com"><i class="fa fa-envelope"></i>nous envoyer un email</a>.';
out.main_info = "<h2>Collaborez avec confiance</h2><br>Développez vos idées en groupe avec des document partagés; la technologie <strong>Zero Knowledge</strong> sécurise vos données."; out.main_info = "<h2>Collaborez avec confiance</h2><br>Développez vos idées en groupe avec des document partagés; la technologie <strong>Zero Knowledge</strong> sécurise vos données.";
@ -520,6 +520,8 @@ define(function () {
out.terms = "Conditions"; out.terms = "Conditions";
out.blog = "Blog"; out.blog = "Blog";
out.topbar_whatIsCryptpad = "Qu'est-ce que CryptPad";
// privacy.html // privacy.html
out.policy_title = 'Politique de confidentialité de CryptPad'; out.policy_title = 'Politique de confidentialité de CryptPad';

@ -388,8 +388,6 @@ define(function () {
out.login_invalPass = 'Password required'; out.login_invalPass = 'Password required';
out.login_unhandledError = 'An unexpected error occurred :('; out.login_unhandledError = 'An unexpected error occurred :(';
out.login_notRegistered = 'Not registered?';
out.register_importRecent = "Import pad history (Recommended)"; out.register_importRecent = "Import pad history (Recommended)";
out.register_acceptTerms = "I accept <a href='/terms.html' tabindex='-1'>the terms of service</a>"; out.register_acceptTerms = "I accept <a href='/terms.html' tabindex='-1'>the terms of service</a>";
out.register_passwordsDontMatch = "Passwords do not match!"; out.register_passwordsDontMatch = "Passwords do not match!";
@ -496,9 +494,10 @@ define(function () {
out.main_howitworks_p1 = 'CryptPad uses a variant of the <a href="https://en.wikipedia.org/wiki/Operational_transformation">Operational transformation</a> algorithm which is able to find distributed consensus using a <a href="https://bitcoin.org/bitcoin.pdf">Nakamoto Blockchain</a>, a construct popularized by <a href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. This way the algorithm can avoid the need for a central server to resolve Operational Transform Edit Conflicts and without the need for resolving conflicts, the server can be kept unaware of the content which is being edited on the pad.'; out.main_howitworks_p1 = 'CryptPad uses a variant of the <a href="https://en.wikipedia.org/wiki/Operational_transformation">Operational transformation</a> algorithm which is able to find distributed consensus using a <a href="https://bitcoin.org/bitcoin.pdf">Nakamoto Blockchain</a>, a construct popularized by <a href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. This way the algorithm can avoid the need for a central server to resolve Operational Transform Edit Conflicts and without the need for resolving conflicts, the server can be kept unaware of the content which is being edited on the pad.';
// contact.html // contact.html
out.main_about_p2 = 'If you have any questions or comments, you can <a href="https://twitter.com/cryptpad">tweet us</a>, open an issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="our issue tracker">on github</a>, come say hi on irc (<a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" title="freenode webchat">irc.freenode.net</a>), or <a href="mailto:research@xwiki.com">send us an email</a>.'; out.main_about_p2 = 'If you have any questions or comments, feel free to reach out! You can <a href="https://twitter.com/cryptpad"><i class="fa fa-twitter"></i>tweet us</a>, open an issue <a href="https://github.com/xwiki-labs/cryptpad/issues/" title="our issue tracker">on <i class="fa fa-github"></i>GitHub</a>. Come say hi on <a href="https://riot.im/app/#/room/#cryptpad:matrix.org" title="Matrix">our <i class="fa fa-comment"></i>Matrix channel</a> or IRC (#cryptpad on irc.freenode.net), or <a href="mailto:research@xwiki.com"><i class="fa fa-envelope"></i>send us an email</a>.';
out.main_info = "<h1>Collaborate in Confidence</h1><br> Grow your ideas together with shared documents while <strong>Zero Knowledge</strong> technology secures your privacy; even from us."; out.main_info = "<h1>Collaborate in Confidence</h1><br> Grow your ideas together with shared documents while <strong>Zero Knowledge</strong> technology secures your privacy; even from us.";
out.main_catch_phrase = "The Zero Knowledge Cloud";
out.main_howitworks = 'How It Works'; out.main_howitworks = 'How It Works';
out.main_zeroKnowledge = 'Zero Knowledge'; out.main_zeroKnowledge = 'Zero Knowledge';
@ -521,6 +520,13 @@ define(function () {
out.main_poll_p = 'Plan your meeting or your event, or vote for the best solution regarding your problem.'; out.main_poll_p = 'Plan your meeting or your event, or vote for the best solution regarding your problem.';
out.main_drive = 'CryptDrive'; out.main_drive = 'CryptDrive';
out.main_richTextPad = 'Rich Text Pad';
out.main_codePad = 'Markdown/Code Pad';
out.main_slidePad = 'Markdown Presentation';
out.main_pollPad = 'Poll or Schedule';
out.main_whiteboardPad = 'Whiteboard';
out.main_recentPads = 'Recent Pads';
out.footer_applications = "Applications"; out.footer_applications = "Applications";
out.footer_contact = "Contact"; out.footer_contact = "Contact";
out.footer_aboutUs = "About us"; out.footer_aboutUs = "About us";
@ -531,6 +537,27 @@ define(function () {
out.terms = "ToS"; out.terms = "ToS";
out.blog = "Blog"; out.blog = "Blog";
out.topbar_whatIsCryptpad = "What is CryptPad";
// what-is-cryptpad.html
out.whatis_title = 'What is CryptPad';
out.whatis_collaboration = 'Fast, Easy Collaboration';
out.whatis_collaboration_p1 = 'With CryptPad, you can make quick collaborative documents for taking notes and writing down ideas together. When you sign up and log in, you get file upload capability and a CryptDrive where you can organize all of your pads. As a registered user you get 50MB of space for free.';
out.whatis_collaboration_p2 = 'You can share access to a CryptPad document simply by sharing the link. You can also share a link which provides <em>read only</em> access to a pad, allowing you to publicise your collaborative work while still being able to edit it.';
out.whatis_collaboration_p3 = 'You can make simple rich text documents with <a href="http://ckeditor.com/">CKEditor</a> as well as Markdown documents which are rendered in realtime while you type. You can also use the poll app for scheduling events with multiple participants.';
out.whatis_zeroknowledge = 'Zero Knowledge';
out.whatis_zeroknowledge_p1 = "We don't want to know what you're typing and with modern cryptography, you can be sure that we can't know. CryptPad uses <strong>100% client side encryption</strong> to protect the content that you type from us, the people who host the server.";
out.whatis_zeroknowledge_p2 = 'When you sign up and log in, your username and password are computed into a secret key using <a href="https://en.wikipedia.org/wiki/Scrypt">scrypt key derivation function</a>. Neither this key, nor the username and password are ever sent to the server. Instead they are used on the client side to decrypt the content of your CryptDrive, which contains the keys to all pads that you are able to access.';
out.whatis_zeroknowledge_p3 = 'When you share the link to a document, you\'re sharing the cryptographic key for accessing that document but since the key is in the <a href="https://en.wikipedia.org/wiki/Fragment_identifier">fragment identifier</a>, it is never directly sent to the server. Check out our <a href="https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/">privacy blog post</a> to learn more about what types of metadata we do and do not have access to.';
out.whatis_drive = 'Organization with CryptDrive';
out.whatis_drive_p1 = 'Whenever you access a pad in CryptPad, the pad is automatically added to your CryptDrive in the main folder. Later on, you can organize these pads into folders or you can put them in the trash bin. CryptDrive allows you to search through your pads and to organize them whenever you want, however you want.';
out.whatis_drive_p2 = 'With intuitive drag-and-drop, you can move pads around in your drive and the link to these pads will stay the same so your collaborators will never lose access.';
out.whatis_drive_p3 = 'You can also upload files in your CryptDrive and share them with colleagues. Uploaded files can be organized just like collaborative pads.';
out.whatis_business = 'CryptPad for Business';
out.whatis_business_p1 = 'CryptPad\'s Zero Knowledge encryption is excellent for multiplying the effectiveness of existing security protocols by mirroring organizational access controls in cryptography. Because sensitive assets can only be decrypted using employee access credentials, CryptPad removes the hacker jackpot which exists in traditional IT servers. Read the <a href="https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf">CryptPad Whitepaper</a> to learn more about how it can help your business.';
out.whatis_business_p2 = 'CryptPad is deployable on premises and the <a href="https://cryptpad.fr/about.html">CryptPad developers</a> at XWiki SAS are able to offer commercial support, customization and development. Reach out to <a href="mailto:sales@cryptpad.fr">sales@cryptpad.fr</a> for more information.';
// privacy.html // privacy.html
out.policy_title = 'CryptPad Privacy Policy'; out.policy_title = 'CryptPad Privacy Policy';

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html class="cp">
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
<head>
<title data-localization="main_title">CryptPad: Zero Knowledge, Collaborative Real Time Editing</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
<script async data-bootload="/customize/template.js" data-main="/common/boot.js?ver=1.0" src="/bower_components/requirejs/require.js?ver=2.1.15"></script>
</head>
<body class="html">
<noscript>
<p><strong>OOPS</strong> In order to do encryption in your browser, Javascript is really <strong>really</strong> required.</p>
<p><strong>OUPS</strong> Afin de pouvoir réaliser le chiffrement dans votre navigateur, Javascript est <strong>vraiment</strong> nécessaire.</p>
</noscript>
</html>

@ -18,6 +18,6 @@
"scripts": { "scripts": {
"lint": "jshint --config .jshintrc --exclude-path .jshintignore .", "lint": "jshint --config .jshintrc --exclude-path .jshintignore .",
"test": "node TestSelenium.js", "test": "node TestSelenium.js",
"template": "cd customize.dist/src && for page in ../index.html ../privacy.html ../terms.html ../about.html ../contact.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 ../../www/login/index.html ../../www/register/index.html ../../www/settings/index.html ../../www/user/index.html;do echo $page; cp template.html $page; done;"
} }
} }

@ -32,7 +32,7 @@ var setHeaders = (function () {
if (typeof(config.httpHeaders) !== 'object') { return function () {}; } if (typeof(config.httpHeaders) !== 'object') { return function () {}; }
const headers = clone(config.httpHeaders); const headers = clone(config.httpHeaders);
if (config.contentSecurity) { if (config.contentSecurity && false) {
headers['Content-Security-Policy'] = clone(config.contentSecurity); headers['Content-Security-Policy'] = clone(config.contentSecurity);
if (!/;$/.test(headers['Content-Security-Policy'])) { headers['Content-Security-Policy'] += ';' } if (!/;$/.test(headers['Content-Security-Policy'])) { headers['Content-Security-Policy'] += ';' }
if (headers['Content-Security-Policy'].indexOf('frame-ancestors') === -1) { if (headers['Content-Security-Policy'].indexOf('frame-ancestors') === -1) {

@ -626,8 +626,10 @@ define([
var $aTag = $('<a>', { var $aTag = $('<a>', {
href: "/drive/", href: "/drive/",
title: Messages.header_logoTitle, title: Messages.header_logoTitle,
'class': "cryptpad-logo fa fa-hdd-o" 'class': "cryptpad-logo"
}); }).append($('<img>', {
src: '/customize/images/logo_white.svg'
}));
var onClick = function (e) { var onClick = function (e) {
e.preventDefault(); e.preventDefault();
if (e.ctrlKey) { if (e.ctrlKey) {

Loading…
Cancel
Save