Merge branch 'staging' into callback

pull/1/head
yflory 4 years ago
commit 287b80d4b8

@ -1,3 +1,52 @@
# 4.0.0 (A)
We're very happy to introduce CryptPad v4.0!
This release is the culmination of a great deal of work over the last year, in which we searched for the right metaphors and imagery to clearly represent what CryptPad is all about. We've reworked our logo, color theme, text on our static pages, and the icons throughout the platform to convey the calm and safety we want our users to feel.
Our release schedule typically follows an alphabetical naming scheme, ranging from A for the first (or zero-th) release of the cycle to Z for the last, with a thematic name for each letter. In the rush of preparing translations and double-checking all of our changes we never found time to settle on a theme for this release, but we do find there's some value in maintaining the otherwise arbitrary rhythm we've followed all this time. The progression through the alphabet gives a sense of pace to what can otherwise seem like a endless stream of problems that need solving, and the end of the alphabet prompts us to build towards major milestones like this one.
With that in mind, you can expect 25 more major releases in this cycle before version 5.0, roughly every three weeks or so depending on circumstances.
## Goals
The main intent of this release was to deploy our `rebrand` branch which had been in development for some time. Along the way we also made notable improvements to the sheet editor which will be mentioned below.
## Update notes
In the process of redesigning the platform we started using some new features of the LESS CSS pre-processor language that were not supported by the version of lesshint that we were using to scan for errors. We've updated that dev dependency to a newer version (4.5.0 => 6.3.7) which introduced a rather large number of minor dependencies. These are only used during development, not by the server itself, so this is unlikely to have any impact on the software itself.
Otherwise, this release includes lots of changes to the platform's style sheets and static pages. If you've applied heavy customizations to your instance you might notice errors due to incompatibilities with your local changes. We recommend that you test your customizations against the latest release locally before updating a public instance to avoid service outages.
To update from 3.25.1 to 4.0.0:
1. Stop your server
2. Get the latest code from the 4.0.0 tag
3. Install the latest dependencies with `bower update` and `npm i`
4. Restart your server
## Features
* We've built a new version of the web-assembly code used to convert between OnlyOffice's internal representation of spreadsheet data and standard formats like XLSX, ODS, and CSV. We've also improved the ability to print whole sheets and selections in the UI. This still depends on the host browser's support of the required web APIs, but it should work in common browsers except maybe Safari and Internet Explorer.
* We found that certain issues reported via the built-in support ticket system were not easy to debug without knowing the id of the user's drive. Support tickets now include a `driveChannel` attribute to simplify this process.
* We've added a variety of settings for the control of how your browser uses a local database to speed up loading times and display cached versions of documents even when disconnected from our server. These are available in the "confidentiality" section of the settings page (https://cryptpad.fr/settings/#security).
Finally, the "rebrand" part of this release:
* Our home page features our new logo, a cleaner layout, new text (notably dropping the use of "zero-knowledge" from our explanation), new app icons, softer colors, neater fonts, and a custom illustration of a document shredder that hints at how CryptPad works.
* We no longer include a FAQ page with each instance, and instead link to relevant parts of our dedicated documentation platform (https://docs.cryptpad.fr) from any place that previously referenced the FAQ. This will make it easier for translators to focus on text for the platform's interface if they wish. An updated Frequently Asked Questions will be added to the documentation in the near future.
* Each of our editors now features a dedicated favicon to make it easier to distinguish different CryptPad tabs in your browser.
* The contact page now points to _Element_ instead of Riot, since the Matrix team rebranded in the last while as well.
* The "pricing" or "features" page (features.html) reads the server's configured storage limits from a server endpoint and displays them, rather than hardcoding the default values in the text.
* There is now a custom illustration of a person swallowing a key on the registration page to convey that CryptPad admins cannot restore access to documents if users lose or forget their credentials. This is underscored by highlights to the explanatory text displayed to the left of the form.
* Our loading screen now features a much simpler color scheme instead of the vibrant blue blocks. This is part of an effort to pave the way for a _dark theme_ that we hope to introduce very soon.
* Lastly, we've added a number of semantic cues in various places to improve the experience of users that rely on screen-readers. There's still a lot to do in this regard, but this big rewrite was a good opportunity to review some easy pain-points to alleviate.
## Bug fixes
* We found andd fixed a regression in the slide app which caused newly created documents to be initialized without a title.
* Thanks to a helpful user-report we were able to identify an issue in our rich text editor's _comments_ system that prevented iOS users from typing.
# ZyzomysPedunculatus' revenge (3.25.1) # ZyzomysPedunculatus' revenge (3.25.1)
This minor release is primarily intended to fix some minor issues that were introduced or detected following our 3.25.0 release, but it also includes some major improvements that we want to test and stabilize before our upcoming 4.0.0 release. This minor release is primarily intended to fix some minor issues that were introduced or detected following our 3.25.0 release, but it also includes some major improvements that we want to test and stabilize before our upcoming 4.0.0 release.

@ -1,129 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="280" height="349" version="1.1" viewBox="0 0 74.083 92.34" xmlns="http://www.w3.org/2000/svg" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb">
<svg <g>
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" <g transform="translate(-640.42 -172.99)" style="fill:#ffffff">
xmlns:dc="http://purl.org/dc/elements/1.1/" <g style="fill:#ffffff">
xmlns:cc="http://creativecommons.org/ns#" <path d="m644.02 176.9h44.386l22.414 20.826v24.899c0 26.166-21.414 32.228-33.117 38.409-12.815-5.8945-32.794-12.329-33.117-38.409z" style="fill:#ffffff"/>
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" </g>
xmlns:svg="http://www.w3.org/2000/svg" <g style="fill:#ffffff">
xmlns="http://www.w3.org/2000/svg" <path d="m644.02 176.9h44.386l22.414 20.826v24.899c0 26.166-21.414 32.228-33.117 38.409-12.815-5.8945-32.794-12.329-33.117-38.409z" style="fill:#ffffff"/>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" </g>
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="144.92999"
inkscape:export-xdpi="144.92999"
inkscape:export-filename="/home/david/Dropbox/__active/CryptPad/2020 new identity/cp-static-pages/theme/static/favicon.png"
width="280"
height="349"
viewBox="0 0 74.083368 92.339644"
version="1.1"
id="svg3107"
inkscape:version="1.0.1 (1.0.1+r73)"
sodipodi:docname="logo_grey.svg">
<defs
id="defs3101">
<linearGradient
id="linearGradient835"
osb:paint="solid">
<stop
style="stop-color:#4591c4;stop-opacity:1;"
offset="0"
id="stop833" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.5847433"
inkscape:cx="139.75433"
inkscape:cy="174.32986"
inkscape:document-units="mm"
inkscape:current-layer="g1682"
inkscape:document-rotation="0"
showgrid="false"
units="px"
inkscape:window-width="1058"
inkscape:window-height="1233"
inkscape:window-x="1930"
inkscape:window-y="50"
inkscape:window-maximized="0" />
<metadata
id="metadata3104">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g1627"
transform="translate(-640.42404,-172.98951)"
style="fill:#ffffff;fill-opacity:1;stroke:none">
<g
style="fill:#ffffff;fill-opacity:1;stroke:none"
id="g1619">
<path
sodipodi:nodetypes="cccccsc"
id="path1617"
d="m 644.01713,176.89554 h 44.38617 l 22.41393,20.82643 v 24.89856 c 0,26.16643 -21.41404,32.2278 -33.11715,38.40882 -12.81518,-5.89452 -32.79444,-12.3291 -33.11715,-38.40882 z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.2922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g1623"
style="fill:#ffffff;fill-opacity:1;stroke:none">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.2922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 644.01713,176.89554 h 44.38617 l 22.41393,20.82643 v 24.89856 c 0,26.16643 -21.41404,32.2278 -33.11715,38.40882 -12.81518,-5.89452 -32.79444,-12.3291 -33.11715,-38.40882 z"
id="path1621"
sodipodi:nodetypes="cccccsc" />
</g>
</g>
<g
transform="translate(-125.38236,-26.44934)"
id="g1682">
<path
id="path1169"
style="fill:#949494;fill-opacity:0.39607844;stroke:none;stroke-width:5.2922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 128.97542,30.355489 0.55499,39.644084 h 33.14062 l 0.004,-39.644084 z" />
<path
sodipodi:nodetypes="ccccc"
id="path1171"
style="fill:#949494;fill-opacity:0.39607844;stroke:none;stroke-width:5.2922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 162.69429,69.999573 0.003,43.945647 C 175.52196,108.0656 195.459,96.867853 195.82394,70.788683 l 0.0108,-0.78911 z" />
<path
sodipodi:nodetypes="cccccsc"
id="path1173"
d="m 128.97545,30.355368 h 44.38617 l 22.41393,20.82643 v 24.898565 c 0,26.166427 -21.41404,32.227797 -33.11715,38.408817 -12.81518,-5.89452 -32.79444,-12.3291 -33.11715,-38.408817 z"
style="fill:none;stroke:#949494;stroke-width:5.2922;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccc"
id="path1175"
d="m 171.321,29.810508 v 23.04035 h 24.57459"
style="fill:none;stroke:#949494;stroke-width:5.292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="matrix(1.1107111,0,0,1.1107111,18.926083,21.931586)"
id="g1181"
style="fill:#949494;fill-opacity:1">
<path
id="path1177"
style="fill:#949494;fill-opacity:1;stroke:none;stroke-width:5.29167;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.324432"
d="m 137.23305,42.718548 a 8.1185341,8.1185341 0 0 1 -8.11853,8.118534 8.1185341,8.1185341 0 0 1 -8.11854,-8.118534 8.1185341,8.1185341 0 0 1 8.11854,-8.118534 8.1185341,8.1185341 0 0 1 8.11853,8.118534 z" />
<path
id="path1179"
style="fill:#949494;fill-opacity:1;stroke:none;stroke-width:5.29167;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.324432"
d="m 127.00125,42.651196 h 4.22652 l 4.23333,22.354181 h -12.69318 z"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g> </g>
<g transform="translate(-125.38 -26.449)">
<path d="m128.98 30.355 0.55499 39.644h33.141l4e-3 -39.644z" style="fill-opacity:.39608;fill:#949494"/>
<path d="m162.69 70 3e-3 43.946c12.825-5.8796 32.762-17.077 33.127-43.157l0.0108-0.78911z" style="fill-opacity:.39608;fill:#949494"/>
<path d="m128.98 30.355h44.386l22.414 20.826v24.899c0 26.166-21.414 32.228-33.117 38.409-12.815-5.8945-32.794-12.329-33.117-38.409z" style="fill:none;stroke-width:5.2922;stroke:#949494"/>
<path d="m171.32 29.811v23.04h24.575" style="fill:none;stroke-width:5.292;stroke:#949494"/>
<g transform="matrix(1.1107 0 0 1.1107 18.926 21.932)" style="fill:#949494">
<path d="m137.23 42.719a8.1185 8.1185 0 0 1-8.1185 8.1185 8.1185 8.1185 0 0 1-8.1185-8.1185 8.1185 8.1185 0 0 1 8.1185-8.1185 8.1185 8.1185 0 0 1 8.1185 8.1185z" style="fill:#949494"/>
<path d="m127 42.651h4.2265l4.2333 22.354h-12.693z" style="fill:#949494"/>
</g>
</g>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -3,6 +3,29 @@ Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license For licensing, see LICENSE.md or http://ckeditor.com/license
*/ */
html {
scrollbar-color: rgba(0,0,0,0.2) transparent;
scrollbar-width: thin;
}
body::-webkit-scrollbar {
width: 6px;
background-color: #FFF !important;
}
body::-webkit-scrollbar-thumb {
width: 6px;
background-color: rgba(0,0,0,0.2) !important;
}
html.cp-dark {
scrollbar-color: rgba(255,255,255,0.2) transparent;
}
html.cp-dark ::-webkit-scrollbar {
background-color: #222 !important; /* should match the value un pad/inner.js */
}
html.cp-dark ::-webkit-scrollbar-thumb {
background-color: rgba(255,255,255,0.2) !important;
}
body body
{ {
/* Font */ /* Font */
@ -10,10 +33,10 @@ body
font-size: 13px; font-size: 13px;
/* Text color */ /* Text color */
color: #333; color: inherit;
/* Remove the background color to make it transparent */ /* Remove the background color to make it transparent */
background-color: #fff; background-color: inherit !important;
margin: 0; margin: 0;
padding: 20px; padding: 20px;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

@ -1,279 +1,14 @@
// bg #e7e7e7 // bg #e7e7e7
// blue #0087FF // blue #0087FF
// text #3F4141 // text #3F4141
define(['/customize/messages.js'], function (Messages) { define([
var loadingStyle = (function(){/* '/customize/messages.js',
@font-face { 'less!/customize/src/less2/include/loading.less'
font-family: 'Open Sans'; ], function (Messages) {
src: url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.eot');
src: url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.woff') format('woff'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.ttf') format('truetype'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg');
font-weight: normal;
font-style: normal;
}
#cp-loading {
visibility: visible;
position: fixed;
z-index: 10000000;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
background-color: #e7e7e7;
color: #3F4141;
font-size: 1.3em;
line-height: 120%;
opacity: 1;
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
font: 20px 'Open Sans', 'Helvetica Neue', sans-serif !important;
}
#cp-loading.cp-loading-transparent {
background-color: rgba(231, 231, 231, 0.7);
}
#cp-loading.cp-loading-hidden {
opacity: 0;
visibility: hidden;
transition: opacity 0.75s, visibility 0s 0.75s;
}
#cp-loading .cp-loading-logo {
height: 300px;
width: 300px;
margin-top: 50px;
flex: 0 1 auto;
min-height: 0;
text-align: center;
}
#cp-loading .cp-loading-logo img {
max-width: 100%;
max-height: 100%;
}
#cp-loading .cp-loading-container {
width: 700px;
max-width: 90vw;
height: 236px;
max-height: calc(100vh - 20px);
margin: 50px;
flex-shrink: 0;
display: flex;
flex-flow: column;
align-items: center;
}
#cp-loading .cp-loading-cryptofist {
margin-left: auto;
margin-right: auto;
max-width: 90vw;
max-height: 300px;
width: auto;
height: auto;
margin-bottom: 2em;
}
@media screen and (max-width: 500px) {
#cp-loading {
font-size: 16px !important;
}
#cp-loading .cp-loading-container {
height: 206px;
}
}
@media screen and (max-height: 700px) {
#cp-loading {
font-size: 16px !important;
}
#cp-loading .cp-loading-container {
height: 206px;
}
}
@media screen and (max-height: 500px) {
#cp-loading .cp-loading-logo {
display: none;
}
}
#cp-loading-message {
background: #FFF;
padding: 20px;
width: 100%;
color: #3F4141;
text-align: left;
display: none;
}
#cp-loading-password-prompt p.cp-password-error {
color: white;
background: #9e0000;
padding: 5px;
margin-bottom: 15px;
}
#cp-loading-password-prompt .cp-password-info {
text-align: left;
margin-bottom: 15px;
}
#cp-loading-burn-after-reading .cp-password-info {
margin-bottom: 15px;
}
p.cp-password-info{
text-align: left;
}
#cp-loading-password-prompt .cp-password-form {
display: flex;
flex-wrap: wrap;
}
#cp-loading-password-prompt .cp-password-form button{
background-color: #4591c4;
color: white;
border: 1px solid #4591c4;
}
.cp-password-input{
font-size:16px;
border: 1px solid #4591c4;
background-color: white;
border-radius 0;
}
.cp-password-form button{
padding: 8px 12px;
font-weight: bold;
text-transform: uppercase;
}
#cp-loading-password-prompt .cp-password-form{
width: 100%;
}
#cp-loading-password-prompt .cp-password-form .cp-password-container {
flex-shrink: 1;
min-width: 0;
}
#cp-loading-password-prompt .cp-password-form .cp-password-container .cp-password-reveal{
color: #4591c4;
padding: 0px 24px;
}
#cp-loading-password-prompt .cp-password-form input {
flex: 1;
padding: 12px;
min-width: 0;
text-overflow: ellipsis;
}
#cp-loading-password-prompt .cp-password-form button:hover {
background-color: #326599;
}
#cp-loading-password-prompt ::placeholder {
color: #999999;
opacity: 1;
}
#cp-loading-password-prompt :-ms-input-placeholder {
color: #d9d9d9;
}
#cp-loading-password-prompt ::-ms-input-placeholder {
color: #d9d9d9;
}
#cp-loading .cp-loading-spinner-container {
position: relative;
height: 80px;
margin-bottom: 50px;
}
.cp-loading-progress {
width: 100%;
text-align: center;
}
.cp-loading-progress p {
margin: 5px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.cp-loading-progress-list {
text-align: left;
display: inline-block;
margin-bottom: 50px;
max-width: 100%;
}
.cp-loading-progress-list ul {
list-style: none;
padding-left: 0;
margin: 0;
}
.cp-loading-progress-list li {
padding: 0px 5px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.cp-loading-progress-list li i {
width: 22px;
}
.cp-loading-progress-list li span{
margin-left: 10px;
}
.cp-loading-progress-list li span.percent {
position: absolute;
}
.cp-loading-progress-bar {
height: 24px;
background: white;
border: 1px solid #0087FF;
}
.cp-loading-progress-bar-value {
height: 100%;
background: #0087FF;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(1800deg);
}
}
.cp-spinner {
display: inline-block;
box-sizing: border-box;
width: 80px;
height: 80px;
border: 11px solid #999999;
border-radius: 50%;
border-top-color: transparent;
animation: spin infinite 3s;
animation-timing-function: cubic-bezier(.6,0.15,0.4,0.85);
}
button:not(.btn).primary{
border: 1px solid #4591c4;
padding: 8px 12px;
text-transform: uppercase;
background-color: #4591c4;
color: white;
font-weight: bold;
}
button:not(.btn).primary:hover{
background-color: rgb(52, 118, 162);
}
*/}).toString().slice(14, -3);
var urlArgs = window.location.href.replace(/^.*\?([^\?]*)$/, function (all, x) { return x; }); var urlArgs = window.location.href.replace(/^.*\?([^\?]*)$/, function (all, x) { return x; });
var elem = document.createElement('div'); var elem = document.createElement('div');
elem.setAttribute('id', 'cp-loading'); elem.setAttribute('id', 'cp-loading');
elem.innerHTML = [ elem.innerHTML = [
'<style>',
loadingStyle,
'</style>',
'<div class="cp-loading-logo">', '<div class="cp-loading-logo">',
'<img class="cp-loading-cryptofist" src="/customize/CryptPad_logo.svg?' + urlArgs + '">', '<img class="cp-loading-cryptofist" src="/customize/CryptPad_logo.svg?' + urlArgs + '">',
'</div>', '</div>',

@ -179,5 +179,22 @@ define([
return crowdFunding; return crowdFunding;
}; };
Pages.subscribeButton = function (onClick) {
var _link = h('a', {
href: "/accounts/",
});
var subscribe = h('button', [
Msg.subscribe_button
]);
$(subscribe).click(function () {
_link.click();
if (typeof(onClick) === 'function') { onClick(); }
});
return subscribe;
};
return Pages; return Pages;
}); });

@ -1,12 +1,13 @@
define([ define([
'jquery', 'jquery',
'/common/hyperscript.js', '/common/hyperscript.js',
'/common/common-util.js',
'/customize/messages.js', '/customize/messages.js',
'/customize/application_config.js', '/customize/application_config.js',
'/common/outer/local-store.js', '/common/outer/local-store.js',
'/customize/pages.js', '/customize/pages.js',
'/api/config', '/api/config',
], function ($, h, Msg, AppConfig, LocalStore, Pages, Config) { ], function ($, h, Util, Msg, AppConfig, LocalStore, Pages, Config) {
var accounts = { var accounts = {
donateURL: AppConfig.donateURL || "https://opencollective.com/cryptpad/", donateURL: AppConfig.donateURL || "https://opencollective.com/cryptpad/",
upgradeURL: AppConfig.upgradeURL upgradeURL: AppConfig.upgradeURL
@ -55,7 +56,7 @@ define([
}; };
SPECIAL_GROUP_ITEMS.storage1 = function (f) { SPECIAL_GROUP_ITEMS.storage1 = function (f) {
return groupItemTemplate( return groupItemTemplate(
Msg._getKey('features_f_' + f, [Config.defaultStorageLimit / 1024 / 1024]), Msg._getKey('features_f_' + f, [Util.getPrettySize(Config.defaultStorageLimit, Msg)]),
Msg['features_f_' + f + '_note'] Msg['features_f_' + f + '_note']
); );
}; };

@ -72,14 +72,10 @@ define([
}); });
UI.addTooltips(); UI.addTooltips();
var crowdFunding = Pages.crowdfundingButton(function () {
Feedback.send('HOME_SUPPORT_CRYPTPAD');
});
var blocks = [ var blocks = [
h('div.row.cp-index-section', [ h('div.row.cp-page-section', [
h('div.col-sm-6', h('div.col-sm-6',
h('img.img-fluid', { h('img.img-fluid.cp-img-invert', {
src:'/customize/images/shredder.png', src:'/customize/images/shredder.png',
alt:'', alt:'',
'aria-hidden': 'true' 'aria-hidden': 'true'
@ -90,17 +86,17 @@ define([
h('p', Msg.home_privacy_text) h('p', Msg.home_privacy_text)
]) ])
]), ]),
h('div.row.cp-index-section', h('div.row.cp-page-section',
h('div.col-sm-12', [ h('div.col-sm-12', [
h('h2', Msg.home_host_title), h('h2', Msg.home_host_title),
h('p'), Msg.home_host h('p'), Msg.home_host
]) ])
), ),
h('div.row.cp-index-section', [ h('div.row.cp-page-section', [
h('div.col-sm-6', [ h('div.col-sm-6', [
h('h2', Msg.home_opensource_title), h('h2', Msg.home_opensource_title),
Pages.setHTML(h('p'), Msg.home_opensource), Pages.setHTML(h('p'), Msg.home_opensource),
h('img.small-logo', { h('img.small-logo.cp-img-invert', {
src: '/customize/images/logo_AGPLv3.svg', src: '/customize/images/logo_AGPLv3.svg',
alt: 'APGL3 License Logo' alt: 'APGL3 License Logo'
}) })
@ -108,7 +104,9 @@ define([
h('div.col-sm-6', [ h('div.col-sm-6', [
h('h2', Msg.home_support_title), h('h2', Msg.home_support_title),
Pages.setHTML(h('span'), Msg.home_support), Pages.setHTML(h('span'), Msg.home_support),
crowdFunding Pages.crowdfundingButton(function () {
Feedback.send('HOME_SUPPORT_CRYPTPAD');
}),
]) ])
]) ])
]; ];
@ -131,7 +129,7 @@ define([
icons, icons,
]) ])
]), ]),
blocks, blocks
]), ]),
Pages.infopageFooter(), Pages.infopageFooter(),
]), ]),

@ -20,7 +20,7 @@ define([
Pages.setHTML(h('span'), Msg.whatis_collaboration_info), Pages.setHTML(h('span'), Msg.whatis_collaboration_info),
]), ]),
h('div.col-md-6', [ h('div.col-md-6', [
h('img', { h('img.cp-img-invert', {
src: '/customize/images/collaboration.png?' + urlArgs, src: '/customize/images/collaboration.png?' + urlArgs,
alt: '', alt: '',
'aria-hidden': 'true' 'aria-hidden': 'true'
@ -57,16 +57,20 @@ define([
h('div.col-md-6.order-md-2', [ h('div.col-md-6.order-md-2', [
Pages.setHTML(h('h2'), Msg.whatis_model), Pages.setHTML(h('h2'), Msg.whatis_model),
Pages.setHTML(h('span'), Msg.whatis_model_info), Pages.setHTML(h('span'), Msg.whatis_model_info),
Config.allowSubscriptions ?
Pages.subscribeButton(function () {
Feedback.send('WHATIS_SUBSCRIBE_CRYPTPAD');
}) : undefined,
Pages.crowdfundingButton(function () { Pages.crowdfundingButton(function () {
Feedback.send('WHATIS_SUPPORT_CRYPTPAD'); Feedback.send('WHATIS_SUPPORT_CRYPTPAD');
}), }),
]), ]),
h('div.col-md-6.order-md-1.small-logos', [ h('div.col-md-6.order-md-1.small-logos', [
h('img', { h('img.cp-img-invert', {
src: '/customize/images/logo_ngi.png?' + urlArgs, src: '/customize/images/logo_ngi.png?' + urlArgs,
alt: 'NGI Award 2019' alt: 'NGI Award 2019'
}), }),
h('img', { h('img.cp-img-invert', {
src: '/customize/images/logo_nlnet.svg?' + urlArgs, src: '/customize/images/logo_nlnet.svg?' + urlArgs,
alt: 'NLNet Foundation logo' alt: 'NLNet Foundation logo'
}), }),

@ -10,20 +10,8 @@
}; };
& { & {
@max-z-index: 2147483647; @max-z-index: 2147483647;
@alertify-fore: @colortheme_modal-fg;
@alertify-base: @colortheme_modal-bg;
@alertify-dialog-bg: @alertify-base; @alertify-light-bg: fade(@cp_alertify-fg, 25%);
@alertify-dialog-fg: @alertify-fore;
@alertify-btn-fg: @alertify-fore;
@alertify-light-bg: fade(@alertify-fore, 25%);
@alertify-bg: @colortheme_modal-dim;
@alertify-fg: @alertify-fore;
@alertify-input-bg: @colortheme_modal-input;
@alertify-input-fg: @colortheme_modal-input-fg;
@alertify_padding-base: @variables_padding; @alertify_padding-base: @variables_padding;
@alertify_box-shadow: @variables_shadow; @alertify_box-shadow: @variables_shadow;
@ -39,7 +27,7 @@
} }
> * { > * {
padding: @alertify_padding-base @alertify_padding-base * 4; padding: @alertify_padding-base @alertify_padding-base * 4;
color: @colortheme_notification-color; color: @cp_alertify-log-fg;
font-family: @colortheme_font; font-family: @colortheme_font;
font-size: large; font-size: large;
@ -47,22 +35,22 @@
box-shadow: @alertify_box-shadow; box-shadow: @alertify_box-shadow;
&, &.default { &, &.default {
// FIXME // FIXME
background: @colortheme_notification-log; background: @cp_alertify-log-bg;
} }
&.error { &.error {
font-weight: bold; font-weight: bold;
background: @colortheme_notification-warn; background: @cp_alertify-warn-bg;
} }
&.success { &.success {
background: @colortheme_notification-log; background: @cp_alertify-log-bg;
} }
} }
} }
.alertify { .alertify {
position: fixed; position: fixed;
background-color: @alertify-bg; background-color: @cp_alertify-overlay;
color: @alertify-fg; color: @cp_alertify-fg;
left: 0; left: 0;
right: 0; right: 0;
top: 0; top: 0;
@ -86,7 +74,7 @@
.message { .message {
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
color: @alertify-fg; color: @cp_alertify-fg;
} }
} }
@ -118,17 +106,17 @@
} }
color: @colortheme_light-base; color: @colortheme_light-base;
background-color: @alertify-dialog-bg; background-color: @cp_alertify-bg;
input[id$="tokenfield"][type="text"].token-input { input[id$="tokenfield"][type="text"].token-input {
background-color: @alertify-dialog-bg !important; background-color: @cp_alertify-bg !important;
} }
}*/ }*/
} }
.dialog { .dialog {
& > div { & > div {
background-color: @alertify-dialog-bg; background-color: @cp_alertify-bg;
&.half { &.half {
width: 50%; width: 50%;
max-width: 50%; max-width: 50%;
@ -154,7 +142,7 @@
max-width: 500px; max-width: 500px;
margin: 0 auto; margin: 0 auto;
text-align: left; text-align: left;
background: #fff; background: @cp_alertify-bg;
box-shadow: @alertify_box-shadow; box-shadow: @alertify_box-shadow;
&.wide { &.wide {
max-width: 850px; max-width: 850px;
@ -169,6 +157,10 @@
&:last-child { &:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
a {
color: @cryptpad_text_col;
text-decoration: underline;
}
.cp-info-menu-container { .cp-info-menu-container {
.logo-block { .logo-block {
text-align: center; text-align: center;
@ -181,10 +173,6 @@
max-width: 100px; max-width: 100px;
} }
} }
a {
color: @colortheme_logo-2;
text-decoration: underline;
}
} }
} }
.cp-alertify-type-container { .cp-alertify-type-container {
@ -198,7 +186,7 @@
.alertify-tabs-titles { .alertify-tabs-titles {
height: 40px; height: 40px;
display: flex; display: flex;
border-bottom: 1px solid @alertify-fore; border-bottom: 1px solid @cp_alertify-fg;
margin-bottom: 10px; margin-bottom: 10px;
box-sizing: content-box; box-sizing: content-box;
.alertify-tabs-title { .alertify-tabs-title {
@ -208,14 +196,12 @@
line-height: 40px; line-height: 40px;
box-sizing: border-box; box-sizing: border-box;
padding: 0 15px; padding: 0 15px;
border-left: 1px solid lighten(@alertify-base, 10%);
border-right: 1px solid lighten(@alertify-base, 10%);
cursor: pointer; cursor: pointer;
&:not(.disabled):hover { &:not(.disabled):hover {
background-color: @alertify-light-bg; background-color: @cp_alertify-hover;
} }
&.disabled { &.disabled {
color: @colortheme_alertify-cancel-border; color: @cp_alertify-disable-border;
cursor: not-allowed; cursor: not-allowed;
} }
&:not(.alertify-tabs-active) { &:not(.alertify-tabs-active) {
@ -227,10 +213,8 @@
} }
} }
span.alertify-tabs-active { span.alertify-tabs-active {
background-color: @alertify-fore !important; background-color: @cp_alertify-fg !important;
border-left: 1px solid @alertify-fore; color: @cp_alertify-bg;
border-right: 1px solid @alertify-fore;
color: @alertify-base;
cursor: default; cursor: default;
} }
} }
@ -251,7 +235,9 @@
} }
} }
.tools_placeholder-color(@cryptpad_color_grey); input {
.tools_placeholder-color();
}
span.cp-password-container { span.cp-password-container {
display: flex; display: flex;
@ -267,7 +253,7 @@
} }
.fa-question-circle { // help links to Docs .fa-question-circle { // help links to Docs
color: @colortheme_logo-2; color: @cp_alertify-fg;
&:hover { &:hover {
text-decoration: none; text-decoration: none;
} }
@ -485,36 +471,5 @@
overflow-x: auto; overflow-x: auto;
} }
} }
// Bootstrap Alerts
.alert {
margin: 0px 0px @alertify_padding-base 0px;
font-size: 12px;
padding: 5px;
border-radius: 0px;
i {
margin-right: 10px;
}
&.cp-alert-top {
margin-top: @alertify_padding-base;
}
&.alert-primary {
background-color: @alertify-base;
color: @alertify-fg;
border-color: @alertify-fg;
a {
color: @alertify-fg;
text-decoration: underline;
}
}
&.dismissable {
display: flex;
align-items: center;
span.fa-times {
font-size: @colortheme_app-font-size;
margin-left: 20px;
cursor: pointer;
}
}
}
} }

@ -1,8 +1,21 @@
@import (reference) "./colortheme-all.less";
.app-noscroll_main() { .app-noscroll_main() {
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
} }
& { & {
.cp-app-noscroll { .cp-app-noscroll {
scrollbar-color: @scrollbar_color;
* {
scrollbar-width: thin;
}
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-thumb {
background-color: @cp_scrollbar-fg;
width: 6px;
}
height: 100%; height: 100%;
width: 100%; width: 100%;
padding: 0px; padding: 0px;

@ -5,8 +5,6 @@
) { ) {
@avatar-width: @width; @avatar-width: @width;
@avatar-font-size: @width / 1.2; @avatar-font-size: @width / 1.2;
@avatar-default-bg: #D9D8D8;
@avatar-default-fg: darken(@avatar-default-bg, 40%);
} }
.avatar_main(@width: 30px) { .avatar_main(@width: 30px) {
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
@ -38,8 +36,8 @@
} }
.cp-avatar-default { .cp-avatar-default {
.tools_unselectable(); .tools_unselectable();
background: @avatar-default-bg; background: @cp_avatar-bg;
color: @avatar-default-fg; color: @cp_avatar-fg;
font-size: @avatar-font-size; font-size: @avatar-font-size;
font-size: var(--avatar-font-size); font-size: var(--avatar-font-size);
text-transform: capitalize; text-transform: capitalize;

@ -1,4 +1,5 @@
@import (reference) "./colortheme-all.less"; @import (reference) "./colortheme-all.less";
@import (reference) "./tools.less";
.checkmark_vars( .checkmark_vars(
@size: 20px @size: 20px
@ -22,6 +23,14 @@
--checkmark-radio-size: @checkmark-radio-size; --checkmark-radio-size: @checkmark-radio-size;
} }
& { & {
@cp_checkmark-back0: @cp_forms-bg;
@cp_checkmark-back0-active: @cp_forms-disabled;
@cp_checkmark-back1: @cp_forms-border;
@cp_checkmark-col1: @cp_forms-bg;
@cp_checkmark-back2: @cp_forms-bg;
@cp_checkmark-col2: @cp_forms-border;
@cp_checkmark-disabled: @cp_forms-disabled;
.checkmark_vars(); .checkmark_vars();
// <label.cp-checkmark><input><span.cp-checkmark-mark></span>Text</label> // <label.cp-checkmark><input><span.cp-checkmark-mark></span>Text</label>
.cp-checkmark { .cp-checkmark {
@ -29,10 +38,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; position: relative;
-webkit-user-select: none; .tools_unselectable();
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
& > a { & > a {
margin-left: 0.25em; margin-left: 0.25em;
@ -41,40 +47,40 @@
&.cp-checkmark-secondary { &.cp-checkmark-secondary {
.cp-checkmark-mark { .cp-checkmark-mark {
&:after { &:after {
border-color: @colortheme_checkmark-col2; border-color: @cp_checkmark-col2;
} }
} }
input { input {
&:checked ~ .cp-checkmark-mark { &:checked ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-back2; background-color: @cp_checkmark-back2;
border-color: @colortheme_checkmark-back2; border-color: @cp_checkmark-back2;
} }
&:disabled ~ .cp-checkmark-mark { &:disabled ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-disabled; background-color: @cp_checkmark-disabled;
} }
&:disabled ~ .cp-checkmark-label { &:disabled ~ .cp-checkmark-label {
color: @colortheme_checkmark-disabled; color: @cp_checkmark-disabled;
} }
} }
} }
&:hover .cp-checkmark-mark { &:hover .cp-checkmark-mark {
background-color: @colortheme_checkmark-back0-active; background-color: @cp_checkmark-back0-active;
} }
input { input {
display: none; display: none;
&:checked ~ .cp-checkmark-mark { &:checked ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-back1; background-color: @cp_checkmark-back1;
border-color: @colortheme_checkmark-back1; border-color: @cp_checkmark-back1;
&:after { &:after {
display: block; display: block;
} }
} }
&:disabled ~ .cp-checkmark-mark { &:disabled ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-disabled; background-color: @cp_checkmark-disabled;
} }
&:disabled ~ .cp-checkmark-label { &:disabled ~ .cp-checkmark-label {
color: @colortheme_checkmark-disabled; color: @cp_checkmark-disabled;
} }
} }
@ -91,10 +97,10 @@
height: var(--checkmark-size); height: var(--checkmark-size);
width: @checkmark-size; width: @checkmark-size;
width: var(--checkmark-size); width: var(--checkmark-size);
background-color: @colortheme_checkmark-back0; background-color: @cp_checkmark-back0;
display: flex; display: flex;
justify-content: center; justify-content: center;
border: 1px solid @colortheme_form-border; border: 1px solid @cp_checkmark-disabled;
flex-shrink: 0; flex-shrink: 0;
&:after { &:after {
content: ""; content: "";
@ -106,14 +112,13 @@
height: @checkmark-dim2; height: @checkmark-dim2;
height: var(--checkmark-dim2); height: var(--checkmark-dim2);
transform: rotate(45deg); transform: rotate(45deg);
border: solid @colortheme_checkmark-col1; border: solid @cp_checkmark-col1;
border-width: 0 @checkmark-width @checkmark-width 0; border-width: 0 @checkmark-width @checkmark-width 0;
border-width: 0 var(--checkmark-width) var(--checkmark-width) 0; border-width: 0 var(--checkmark-width) var(--checkmark-width) 0;
position: absolute; position: absolute;
} }
&:focus { &:focus {
//border-color: #FF007C !important; box-shadow: 0px 0px 5px @cp_checkmark-back1;
box-shadow: 0px 0px 5px @colortheme_checkmark-back1;
outline: none; outline: none;
} }
} }
@ -133,39 +138,39 @@
&.cp-radio-secondary { &.cp-radio-secondary {
.cp-radio-mark { .cp-radio-mark {
&:after { &:after {
border-color: @colortheme_checkmark-col2; border-color: @cp_checkmark-col2;
} }
} }
input { input {
&:checked ~ .cp-radio-mark { &:checked ~ .cp-radio-mark {
background-color: @colortheme_checkmark-back2; background-color: @cp_checkmark-back2;
} }
&:disabled ~ .cp-checkmark-mark { &:disabled ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-disabled; background-color: @cp_checkmark-disabled;
} }
&:disabled ~ .cp-checkmark-label { &:disabled ~ .cp-checkmark-label {
color: @colortheme_checkmark-disabled; color: @cp_checkmark-disabled;
} }
} }
} }
&:hover .cp-radio-mark { &:hover .cp-radio-mark {
background-color: @colortheme_checkmark-back0-active; background-color: @cp_checkmark-back0-active;
} }
input { input {
display: none; display: none;
&:checked ~ .cp-radio-mark { &:checked ~ .cp-radio-mark {
background-color: @colortheme_checkmark-back1; background-color: @cp_checkmark-back1;
border-color: @colortheme_checkmark-back1; border-color: @cp_checkmark-back1;
&:after { &:after {
display: block; display: block;
} }
} }
&:disabled ~ .cp-checkmark-mark { &:disabled ~ .cp-checkmark-mark {
background-color: @colortheme_checkmark-disabled; background-color: @cp_checkmark-disabled;
} }
&:disabled ~ .cp-checkmark-label { &:disabled ~ .cp-checkmark-label {
color: @colortheme_checkmark-disabled; color: @cp_checkmark-disabled;
} }
} }
@ -183,30 +188,25 @@
height: var(--checkmark-radio-size); height: var(--checkmark-radio-size);
width: @checkmark-radio-size; width: @checkmark-radio-size;
width: var(--checkmark-radio-size); width: var(--checkmark-radio-size);
background-color: @colortheme_checkmark-back0; background-color: @cp_checkmark-back0;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border: 1px solid @colortheme_form-border; border: 1px solid @cp_checkmark-disabled;
flex-shrink: 0; flex-shrink: 0;
&:after { &:after {
display: none; display: none;
content: ""; content: "";
border-radius: 50%; border-radius: 50%;
background: white; background: @cp_checkmark-back0;
width: @checkmark-dim1; width: @checkmark-dim1;
width: var(--checkmark-dim1); width: var(--checkmark-dim1);
height: @checkmark-dim1; height: @checkmark-dim1;
height: var(--checkmark-dim1); height: var(--checkmark-dim1);
//transform: rotate(45deg);
//border: solid @colortheme_checkmark-col1;
//border-width: 0 var(--checkmark-width) var(--checkmark-width) 0;
} }
&:focus { &:focus {
//border-color: #FF007C !important; box-shadow: 0px 0px 5px @cp_checkmark-back1;
box-shadow: 0px 0px 5px @colortheme_checkmark-back1;
outline: none; outline: none;
} }
} }

@ -2,5 +2,4 @@
// create a file: customize/src/less2/include/colortheme.less // create a file: customize/src/less2/include/colortheme.less
// override whatever colors you want. When you update, the new colors will be // override whatever colors you want. When you update, the new colors will be
// added ok because the original file is pulled in first. // added ok because the original file is pulled in first.
@import (reference) "/customize.dist/src/less2/include/colortheme.less";
@import (reference) "/customize/src/less2/include/colortheme.less"; @import (reference) "/customize/src/less2/include/colortheme.less";

@ -0,0 +1,427 @@
@colortheme_font: 'Open Sans', 'Helvetica Neue', sans-serif;
@colortheme_app-font-size: 16px;
@colortheme_app-font-size-small: 13px;
@colortheme_app-font: @colortheme_app-font-size @colortheme_font;
@colortheme_apps: {
default: #0087FF;
drive: #0087FF; // Used as icon color in index.js (index.html)
pad: #256ad5;
code: #EAA000;
slide: #e57614;
poll: #2c9e98;
whiteboard: #a72ba7;
kanban: #8C4;
sheet: #40865c;
oodoc: #5170B5;
ooslide: #C65D27;
file: #CD2532;
}
@colortheme_static_apps: {
default: #0087FF;
teams: #4A3BBD;
contacts: #607B8D;
}
// Colors
@cryptpad_color_brand: #0087FF;
@cryptpad_color_brand_300: lighten(@cryptpad_color_brand, 30%);
@cryptpad_color_brand_fade: fade(@cryptpad_color_brand, 75%);
@cryptpad_color_brand_fader: fade(@cryptpad_color_brand, 50%);
@cryptpad_color_brand_fadest: fade(@cryptpad_color_brand, 25%);
// XXX this whole block was copy-pasted from colortheme.less to avoid a reference error --ansuz
@cryptpad_color_hint_grey: #777;
@cryptpad_color_dark_grey: #999999;
@cryptpad_color_neutral_grey: #aaaaaa;
@cryptpad_color_neutral2_grey: #cccccc;
@cryptpad_color_help_grey: #dddddd;
@cryptpad_color_grey: #e0e0e0;
@cryptpad_color_toolbar_grey: #EEEEEE;
@cryptpad_color_light_grey: #f1f1f1;
@cryptpad_color_lighter_grey: #f9f9f9;
@cryptpad_color_white: #FFF;
@cryptpad_color_grey_50: #FAFAFA;
@cryptpad_color_grey_100: #F5F5F5;
@cryptpad_color_grey_200: #EEEEEE;
@cryptpad_color_grey_300: #E0E0E0;
@cryptpad_color_grey_400: #BDBDBD;
@cryptpad_color_grey_500: #9E9E9E;
@cryptpad_color_grey_600: #757575;
@cryptpad_color_grey_700: #616161;
@cryptpad_color_grey_800: #424242;
@cryptpad_color_grey_850: #323232;
@cryptpad_color_grey_900: #212121;
@cryptpad_color_grey_950: #121212;
@cryptpad_color_black: #000;
@cryptpad_text_col: @cryptpad_color_grey_200;
@cryptpad_color_blue: #326599; // former logo-1
@cryptpad_color_light_blue: #00b7d8;
@cryptpad_color_red: #ff1100;
@cryptpad_color_red_fade: fade(@cryptpad_color_red, 50%);
@cryptpad_color_red_fader: fade(@cryptpad_color_red, 25%);
@cryptpad_color_warn_red: @cryptpad_color_red_fade;
@cryptpad_color_dark_red: #9e0000;
@cryptpad_color_light_red: #FFD4D4;
@cryptpad_color_light_red_fade: fade(@cryptpad_color_light_red, 20%);
@cryptpad_color_orange: #f49842;
@cryptpad_color_green: #5cb85c;
@cryptpad_color_green_fade: fade(@cryptpad_color_green, 50%);
@cryptpad_color_light_green: #c5ffa8;
@cryptpad_color_light_green_fade: fade(@cryptpad_color_light_green, 20%);
@cryptpad_color_light_yellow: #FFE69C;
@cryptpad_color_yellow_fade: fade(#FFE69C, 15%);
@cryptpad_color_lighter_blue: #d2e1f2; // XXX replace with @cryptpad_color_brand_fadest
@cryptpad_color_link:@cryptpad_color_brand_300;
// Premium plans colors
@cryptpad_color_basic: darken(desaturate(#DDEFFF, 70%), 75%);
@cryptpad_color_pro: darken(desaturate(#E4FFDD, 70%), 75%);
@cryptpad_color_power: darken(desaturate(#F6DDFF, 70%), 75%);
@cp_scrollbar-fg: hsla(0,0%,100%,.2);
@scrollbar_color: @cp_scrollbar-fg transparent;
// Loading screen
@cp_loading-bg: @cryptpad_color_grey_900;
@cp_loading-fg: @cryptpad_text_col;
@cp_loading-msg-bg: @cryptpad_color_grey_700;
@cp_loading-link: @cryptpad_color_brand_300;
@cp_loading-error-bg: @cryptpad_color_warn_red;
@cp_loading-error-fg: @cryptpad_text_col;
@cp_loading-progress-bg: @cryptpad_color_grey_800;
@cp_loading-progress-bar-bg: @cryptpad_color_brand;
@cp_loading-spinner: @cryptpad_color_grey_600;
// Chat
@cp_messenger-bg: @cryptpad_color_grey_900;
@cp_messenger-fg: @cryptpad_text_col;
@cp_messenger-notif: @cryptpad_color_black;
@cp_messenger-friend: @cryptpad_color_black;
@cp_messenger-online: @cryptpad_color_light_green;
// Alertify
@cp_alertify-bg: @cryptpad_color_grey_800;
@cp_alertify-fg: lighten(@cryptpad_color_brand, 30%);
@cp_alertify-hover: fade(@cp_alertify-fg, 25%);
@cp_alertify-overlay: fade(@cryptpad_color_grey_900, 50%);
@cp_alertify-log-bg: fade(@cryptpad_color_brand_300, 90%);
@cp_alertify-log-fg: @cryptpad_color_grey_900;
@cp_alertify-warn-bg: rgba(205, 37, 50);
@cp_alertify-disable-border: @cryptpad_color_grey_600;
// Forms
@cp_forms-fg: @cryptpad_text_col;
@cp_forms-bg: @cryptpad_color_grey_700;
@cp_forms-border: lighten(@cryptpad_color_brand, 30%);
@cp_forms-placeholder: fade(@cryptpad_text_col, 75%);
@cp_forms-readonly: @cryptpad_color_brand_fadest;
@cp_forms-readonly-border: @cryptpad_color_brand;
@cp_forms-disabled: @cryptpad_color_grey_500;
// Bootstrap alerts
@cp_alerts-warning-bg: @cryptpad_color_yellow_fade;
@cp_alerts-warning-fg: @cryptpad_color_light_yellow;
@cp_alerts-warning-text: @cryptpad_color_light_yellow;
@cp_alerts-danger-bg: @cryptpad_color_red_fader;
@cp_alerts-danger-fg: @cryptpad_color_light_red;
@cp_alerts-danger-text: @cryptpad_color_light_red;
@cp_alerts-info-bg: @cryptpad_color_brand_fadest;
@cp_alerts-info-text: @cryptpad_color_brand_300;
@cp_alerts-info-fg: @cryptpad_color_brand_300;
@cp_alerts-success-bg: @cryptpad_color_light_green_fade;
@cp_alerts-success-fg: @cryptpad_color_green;
@cp_alerts-success-text: @cryptpad_color_light_green;
// Buttons
@cp_buttons-fg: @cryptpad_color_brand_300;
@cp_buttons-hover: @cryptpad_color_brand_fadest;
@cp_buttons-default: @cryptpad_color_grey_700;
@cp_buttons-default-color: @cryptpad_text_col;
@cp_buttons-default-border: @cryptpad_text_col;
@cp_buttons-red: #E55236;
@cp_buttons-red-text: @cryptpad_color_light_red;
@cp_buttons-red-color: #FFF;
@cp_buttons-red-border: transparent;
@cp_buttons-primary: @cryptpad_color_brand;
@cp_buttons-primary-text: #FFFFFF;
@cp_buttons-primary-border: transparent;
@cp_buttons-disabled: #6c757d;
@cp_buttons-disabled-text: #ffffff;
@cp_buttons-disabled-border: #6c757d;
@cp_buttons-cancel: transparent;
@cp_buttons-cancel-border: @cryptpad_color_grey_400;
// Sidebar layout
@cp_sidebar-left-bg: @cryptpad_color_grey_800;
@cp_sidebar-left-fg: @cryptpad_text_col;
@cp_sidebar-right-bg: @cryptpad_color_grey_900;
@cp_sidebar-right-fg: @cryptpad_text_col; // XXX was black
@cp_sidebar-left-active: @cp_sidebar-right-bg;
@cp_sidebar-hint: fade(@cryptpad_text_col, 80%);
// Drive
@cp_drive-bg: @cp_sidebar-right-bg;
@cp_drive-fg: @cp_sidebar-right-fg;
@cp_drive-header-fg: fade(@cryptpad_text_col, 70%);
@cp_drive-icon-hover: fade(@cryptpad_text_col, 5%);
@cp_drive-icon-border: fade(@cryptpad_text_col, 20%);
@cp_drive-thumb-bg: transparent;
@cp_drive-selected-bg: fade(@cryptpad_text_col, 10%);
@cp_drive-selected-fg: @cryptpad_text_col;
@cp_drive-selection-overlay: fade(@cryptpad_text_col, 5%);
@cp_drive-selection-bg: @cryptpad_color_grey_800;
@cp_drive-selection-fg: @cryptpad_text_col;
@cp_drive-droppable-bg: @cryptpad_color_grey_700;
@cp_drive-droppable-fg: @cryptpad_text_col;
@cp_drive-infobox-bg: @cryptpad_color_brand_fadest;
@cp_drive-infobox-fg: @cryptpad_text_col;
@cp_drive-warnbox-bg: @cryptpad_color_warn_red;
@cp_drive-warnbox-fg: @cryptpad_text_col;
@cp_drive-tree-branch: @cryptpad_text_col;
// Contextmenu
@cp_context-bg: @cryptpad_color_grey_800;
@cp_context-border: @cryptpad_color_grey_600;
@cp_context-bg-hover: @cryptpad_color_grey_700;
@cp_context-bg-active: @cryptpad_color_grey_600;
@cp_context-fg: @cryptpad_text_col;
@cp_context-icon: @cryptpad_text_col;
@cp_context-disabled: @cryptpad_color_grey_600;
// Tooltip background
@cp_tooltip-bg: @cryptpad_color_grey_700;
@cp_tooltip-fg: @cryptpad_text_col;
// Dropdown
@cp_dropdown-fg: @cryptpad_text_col;
@cp_dropdown-bg: @cryptpad_color_grey_800;
@cp_dropdown-bg-hover: @cryptpad_color_grey_700;
@cp_dropdown-bg-active: @cryptpad_color_grey_600;
// Rendered Markdown
@cp_markdown-bg: @cryptpad_color_grey_900;
@cp_markdown-border: @cryptpad_color_grey_700;
@cp_markdown-contrast-fg: white; // XXX
@cp_markdown-contrast-bg: @cryptpad_color_grey; // XXX
// Avatar
@cp_avatar-bg: @cryptpad_color_grey_700;
@cp_avatar-fg: @cryptpad_text_col;
// Corner
@cp_corner-bg: @cryptpad_color_grey_800;
@cp_corner-fg: @cryptpad_color_brand_300;
@cp_corner-text: @cryptpad_text_col;
// Pad Creation Screen
@cp_creation-bg: @cryptpad_color_grey_800;
@cp_creation-fg: @cryptpad_text_col;
@cp_creation-button-bg: @cryptpad_color_brand;
@cp_creation-button-fg: @cryptpad_color_white;
@cp_creation-error-bg: @cryptpad_color_blue;
@cp_creation-error-fg: @cryptpad_color_grey_100; // XXX
// Export
@cp_export-bg: @cryptpad_color_grey_900;
@cp_export-fg: @cryptpad_text_col;
@cp_export-hint: fade(@cryptpad_text_col, 80%);
@cp_export-error-bg: @cryptpad_color_grey_800;
@cp_export-error-bg2: @cryptpad_color_red_fader;
// File upload
@cp_upload-fg: @cryptpad_color_brand_300;
@cp_upload-header: @cryptpad_color_grey_700;
@cp_upload-progress: @cryptpad_color_grey_700;
// Help
@cp_help-bg: @cryptpad_color_grey_800;
@cp_help-fg: @cryptpad_text_col;
@cp_help-link: @cryptpad_color_link;
// Static pages
@cp_static-bg: @cryptpad_color_grey_900;
@cp_static-fg: @cryptpad_text_col;
@cp_static-link: @cryptpad_color_brand_300;
@cp_static-title: @cryptpad_color_brand;
@cp_static-footer: @cryptpad_color_grey_950;
@cp_static-footer-border: @cryptpad_color_grey_600;
@cp_static-topbar-fg: @cryptpad_color_brand_300;
@cp_static-card-bg: @cryptpad_color_grey_800;
@cp_static-img-invert-filter: hue-rotate(200grad) invert();
// Limit
@cp_limit-fg: @cryptpad_text_col;
@cp-limit-bar-bg: @cryptpad_color_grey_600;
@cp-limit-bar-normal: @cryptpad_color_green;
@cp-limit-bar-warning: @cryptpad_color_orange;
@cp-limit-bar-above: @cryptpad_color_red;
// Mentions
@cp_mentions-bg: @cryptpad_color_grey_700;
@cp_mentions-hover: @cryptpad_color_grey_900;
// Autocomplete
@cp_autocomplete-bg: @cryptpad_color_grey_900;
@cp_autocomplete-fg: @cryptpad_text_col;
@cp_autocomplete-border: @cryptpad_color_grey_700;
@cp_autocomplete-hover: @cryptpad_color_brand_fadest;
// Modals
@cp_access-overlay: fade(@cp_alertify-bg, 50%);
@cp_snapshots-hover: @cryptpad_color_grey_850;
// Support
@cp_support-bg: @cryptpad_color_grey_800;
@cp_support-msg-fg: @cryptpad_text_col;
@cp_support-msg-bg: @cryptpad_color_grey_900;
@cp_support-header-bg: @cryptpad_color_grey_800;
// Toolbar
@cp_toolbar-bg: @cryptpad_color_grey_900;
@cp_toolbar-fg: @cryptpad_text_col;
@cp_toolbar-bottom-fg: @cryptpad_text_col;
@cp_toolbar-logo-bg: @cryptpad_color_grey_200;
@cp_toolbar-fade1: fade(@cryptpad_text_col, 10%);
@cp_toolbar-fade3: fade(@cryptpad_text_col, 30%);
@cp_toolbar-warn: @cp_buttons-red;
@cp_history-line-bg: @cryptpad_color_grey_900;
@cp_history-bg1: @cryptpad_color_grey_600;
@cp_history-bg2: @cryptpad_color_grey_800;
@cp_history-fg: @cp_toolbar-bottom-fg;
// Tokenfield
@cp_token-bg: @cryptpad_color_grey_700;
@cp_token-fg: @cryptpad_text_col;
@cp_token-bg-hover: @cryptpad_color_grey_600;
@cp_token-invalid: @cryptpad_color_warn_red;
// Usergrid
@cp_usergrid-fg: @cryptpad_text_col;
@cp_usergrid-selected-bg: @cryptpad_color_brand;
@cp_usergrid-selected-fg: @cryptpad_color_white;
// Other
@cp_shadow-color: fade(@cryptpad_color_black, 60%);
// Apps
@cp_app-bg: @cryptpad_color_grey_900;
@cp_app-fg: @cryptpad_text_col;
// Accounts
@cp_accounts-basic: @cryptpad_color_basic;
@cp_accounts-pro: @cryptpad_color_pro;
@cp_accounts-power: @cryptpad_color_power;
@cp_accounts-active: @cryptpad_color_green_fade;
@cp_accounts-inactive: @cryptpad_color_red_fade;
@cp_accounts-mysubs-alert: @cryptpad_color_grey_700;
@cp_accounts-mysubs-bg: @cryptpad_color_grey_800;
@cp_accounts-mysubs-fg: @cryptpad_text_col;
@cp_accounts-contact-hover: fade(@cryptpad_color_black, 20%);
@cp_accounts-tab-bg: @cryptpad_color_grey_800;
@cp_accounts-tab-hover: @cryptpad_color_grey_700;
@cp_accounts-tab-border: @cryptpad_color_grey_600;
// Admin
@cp_admin-isadmin-fg: @cryptpad_color_brand;
@cp_admin-isadmin-bg: @cryptpad_color_white;
@cp_admin-premium-fg: @cryptpad_color_warn_red;
@cp_admin-premium-bg: lighten(@cryptpad_color_warn_red, 25%);
@cp_admin-last-fg: @cryptpad_color_warn_red;
@cp_admin-last-bg: lighten(@cryptpad_color_orange, 25%);
// Code
@cp_preview-bg: @cryptpad_color_grey_900;
@cp_preview-fg: @cryptpad_text_col;
@cp_preview-link: @cryptpad_color_brand_300;
// Debug
@cp_debug-hover: fade(@cryptpad_color_black, 10%);
@cp_debug-icon-hover: @cryptpad_color_grey_500;
// Mediatag
@cp_mediatag-text-bg: @cryptpad_color_white;
@cp_mediatag-text-fg: @cryptpad_text_col;
// File
@cp_file-progress-bg: @cryptpad_color_brand;
@cp_file-progress-fg: @cryptpad_text_col;
// Kanban
@cp_kanban-fg: @cryptpad_text_col;
@cp_kanban-item-bg: @cryptpad_color_grey_800;
@cp_kanban-link: @cryptpad_color_brand_300;
@cp_kanban-board-bg: @cryptpad_color_grey_700;
@cp_kanban-conflict-bg: @cryptpad_color_grey_700;
@cp_kanban-tags-bg: @cryptpad_color_grey_700;
@cp_kanban-add-hover: fade(@cryptpad_color_black, 10%);
@cp_kanban-trash-bg: @cryptpad_color_warn_red;
@cp_kanban-color0: @cryptpad_color_grey_600;
@cp_kanban-colors:
darken(desaturate(#FFD4D4,60%), 60%),
darken(desaturate(#FFDECA,60%), 60%),
darken(desaturate(#FFE69C,55%), 60%),
darken(desaturate(#DBFFB7,55%), 70%),
darken(desaturate(#AFFDC2,60%), 65%),
darken(desaturate(#C9FFFE,60%), 70%),
darken(desaturate(#C8D6FF,60%), 60%),
darken(desaturate(#E4CAFF,70%), 60%);
// Notifications
@cp_notif-hover: fade(@cryptpad_color_black, 10%);
@cp_notif-header-bg: @cryptpad_color_grey_700;
@cp_notif-header-fg: @cryptpad_text_col;
@cp_notif-table-border: @cryptpad_color_grey_900;
@cp_notif-bg: @cryptpad_color_grey_800;
@cp_notif-fg: @cryptpad_text_col;
// OO
@cp_oo-offline-overlay: fade(@cryptpad_color_white, 50%);
// Rich text
@cp_pad-fg: @cryptpad_text_col;
@cp_pad-icon-filter: invert();
// Comments
@cp_comments-fg: @cryptpad_text_col;
@cp_comments-bg: @cryptpad_color_grey_800;
@cp_comments-header: @cryptpad_color_grey_500;
// Poll
@cp_poll-th-bg: @cryptpad_color_brand_fadest;
@cp_poll-th-fg: @cryptpad_text_col;
@cp_poll-uncommitted-bg: @cryptpad_color_grey_800;
@cp_poll-border-color: @cryptpad_color_grey_600;
@cp_poll-cell-fg: @cryptpad_text_col;
@cp_poll-unset: @cryptpad_color_grey_700;
@cp_poll-yes: @cryptpad_color_green_fade;
@cp_poll-no: @cryptpad_color_red_fade;
@cp_poll-maybe: @cryptpad_color_grey_600;
@cp_poll-hint: @cryptpad_color_grey_500;
// Profile
@cp_profile-border: @cryptpad_color_grey_500;
@cp_profile-hint: @cryptpad_color_grey_400;
// SLide
@cp_slide-fg: @cp_app-fg;
@cp_slide-css-error: @cryptpad_color_red_fader;
// Teams
@cp_teams-card-bg: @cryptpad_color_grey_800;
@cp_teams-leftside-bg: darken(@cryptpad_color_grey_800, 5%);
@cp_teams-invite-bg: fade(@cryptpad_color_brand, 50%);
@cp_teams-invite-fg: @cryptpad_text_col;
@cp_teams-roster-odd: fade(@cryptpad_text_col, 15%);
// Whiteboard
@cp_whiteboard-board-bg: @cryptpad_color_grey_950;
@cp_whiteboard-board-border: @cryptpad_color_grey_800;
@cp_whiteboard-bg: @cp_app-bg;
@cp_whiteboard-fg: @cryptpad_text_col;

@ -3,82 +3,9 @@
@colortheme_app-font-size-small: 13px; @colortheme_app-font-size-small: 13px;
@colortheme_app-font: @colortheme_app-font-size @colortheme_font; @colortheme_app-font: @colortheme_app-font-size @colortheme_font;
@colortheme_logo-1: #326599;
@colortheme_logo-2: #0087FF;
@colortheme_logo_2_light: lighten(@colortheme_logo-2, 40%);
@colortheme_loading_bg: #E7E7E7;
@colortheme_link-color: #0275D8;
@colortheme_link-color-visited: #005999;
@colortheme_info-background: #eeeeee;
@colortheme_old-base: #302B28;
@colortheme_old-fore: #fafafa;
@colortheme_base: #fff;
@colortheme_light-base: lighten(@colortheme_base, 20%);
@colortheme_cp-red: #FA5858; // remove red
@colortheme_cp-green: #46E981;
@colortheme_form-border: #bbbbbb;
@colortheme_form-bg: @colortheme_logo-2;
@colortheme_form-color: #ffffff;
@colortheme_form-bg-alt: #ffffff;
@colortheme_form-color-alt: @colortheme_logo-2;
@colortheme_form-warning: #f49842;
@colortheme_form-warning-hov: darken(@colortheme_form-warning, 5%);
@colortheme_context-menu-icon-color: #7b7b7b;
@colortheme_modal-bg: @colortheme_form-bg-alt; // TODO Modals bg
@colortheme_modal-fg: @colortheme_form-color-alt;
@colortheme_modal-link: @colortheme_link-color;
@colortheme_modal-link-visited: lighten(@colortheme_modal-link, 10%);
@colortheme_modal-dim: fade(@cryptpad_text_col, 50%); // TODO transparent background behind modals
@colortheme_modal-input: @colortheme_form-bg;
@colortheme_modal-input-fg: @colortheme_form-color;
@colortheme_loading-bg: @colortheme_logo-1;
@colortheme_loading-bg-alt: @colortheme_logo-2;
@colortheme_loading-color: @colortheme_old-fore;
// TODO modals buttons
@colortheme_alertify-red: #E55236;
@colortheme_alertify-red-color: #FFF;
@colortheme_alertify-red-border: transparent;
@colortheme_alertify-green: #77C825;
@colortheme_alertify-green-color: #FFF;
@colortheme_alertify-green-border: transparent;
@colortheme_alertify-primary: @colortheme_form-bg;
@colortheme_alertify-primary-text: @colortheme_form-color;
@colortheme_alertify-primary-border: transparent;
@colortheme_alertify-disabled: #6c757d;
@colortheme_alertify-disabled-text: #ffffff;
@colortheme_alertify-disabled-border: #6c757d;
@colortheme_alertify-cancel: @colortheme_modal-bg;
@colortheme_alertify-cancel-border: #949494;
@colortheme_notification-log: fade(@colortheme_logo-2, 90%);
@colortheme_notification-color: #fff;;
@colortheme_notification-warn: rgba(205, 37, 50, 0.8);
@colortheme_dropdown-bg: #f9f9f9;
@colortheme_dropdown-color: black;
@colortheme_dropdown-bg-hover: #f1f1f1;
@colortheme_dropdown-bg-active: #e8e8e8;
// Apps, these colors are used for customizing the toolbar for the apps.
@colortheme_toolbar-warn: @colortheme_alertify-red;
@colortheme_pad-toolbar-bg: #eeeeee;
@colortheme_help-bg: #ddd;
@colortheme_userlist-bg: #eee;
@colortheme_pad-chat-bg: #AAA;
@colortheme_apps: { @colortheme_apps: {
default: #0087FF; default: #0087FF;
drive: #0087FF; drive: #0087FF; // Used as icon color in index.js (index.html)
pad: #256ad5; pad: #256ad5;
code: #EAA000; code: #EAA000;
slide: #e57614; slide: #e57614;
@ -97,34 +24,403 @@
contacts: #607B8D; contacts: #607B8D;
} }
@colortheme_poll-color: #fff; // Colors
@colortheme_poll-help-bg: #bbffbb; @cryptpad_color_brand: #0087FF;
@colortheme_poll-th-bg: #005bef; @cryptpad_color_brand_300: lighten(@cryptpad_color_brand, 30%);
@colortheme_poll-th-fg: #fff; @cryptpad_color_brand_fade: fade(@cryptpad_color_brand, 75%);
@cryptpad_color_brand_fader: fade(@cryptpad_color_brand, 50%);
// Sidebar layout (profile / settings) @cryptpad_color_brand_fadest: fade(@cryptpad_color_brand, 25%);
@colortheme_sidebar-active: #fff;
@colortheme_sidebar-left-bg: #eee; @cryptpad_color_hint_grey: #777;
@colortheme_sidebar-left-fg: #000; @cryptpad_color_dark_grey: #999999;
@colortheme_sidebar-left-branch: #888; @cryptpad_color_neutral_grey: #aaaaaa;
@colortheme_sidebar-right-bg: #fff; @cryptpad_color_neutral2_grey: #cccccc;
@colortheme_sidebar-right-fg: #000; @cryptpad_color_help_grey: #dddddd;
@colortheme_sidebar-description: #777; @cryptpad_color_grey: #e0e0e0;
@colortheme_sidebar-button-bg: #3066e5; @cryptpad_color_toolbar_grey: #EEEEEE;
@colortheme_sidebar-button-red-bg: #e54e4e; @cryptpad_color_light_grey: #f1f1f1;
@colortheme_sidebar-button-alt-bg: #fff; @cryptpad_color_lighter_grey: #f9f9f9;
@cryptpad_color_blue: #4591C4; @cryptpad_color_white: #FFF;
@cryptpad_color_grey: #999999; @cryptpad_color_grey_50: #FAFAFA;
@cryptpad_color_light_grey: #e0e0e0; @cryptpad_color_grey_100: #F5F5F5;
@cryptpad_header_col: #1E1F1F; @cryptpad_color_grey_200: #EEEEEE;
@cryptpad_text_col: #3F4141; @cryptpad_color_grey_300: #E0E0E0;
@cryptpad_color_grey_400: #BDBDBD;
@cryptpad_color_grey_500: #9E9E9E;
@cryptpad_color_grey_600: #757575;
@cryptpad_color_grey_700: #616161;
@cryptpad_color_grey_800: #424242;
@cryptpad_color_grey_850: #323232;
@cryptpad_color_grey_900: #212121;
@cryptpad_color_grey_950: #121212;
@cryptpad_color_black: #000;
@cryptpad_text_col:@cryptpad_color_grey_800;
@cryptpad_color_blue: #326599; // former logo-1
@cryptpad_color_light_blue: #00b7d8; @cryptpad_color_light_blue: #00b7d8;
@cryptpad_color_red: #ff1100;
@cryptpad_color_red_fade: fade(@cryptpad_color_red, 50%);
@cryptpad_color_red_fader: fade(@cryptpad_color_red, 25%);
@cryptpad_color_warn_red: @cryptpad_color_red_fade;
@cryptpad_color_dark_red: #9e0000;
@cryptpad_color_light_red: #FFD4D4;
@cryptpad_color_light_red_fade: fade(@cryptpad_color_light_red, 75%);
@cryptpad_color_orange: #f49842;
@cryptpad_color_green: #5cb85c;
@cryptpad_color_green_fade: fade(@cryptpad_color_green, 50%);
@cryptpad_color_light_green: #c5ffa8;
@cryptpad_color_light_green_fade: fade(@cryptpad_color_light_green, 20%);
@cryptpad_color_light_yellow: #FFE69C;
@cryptpad_color_yellow_fade: fade(#FFE69C, 50%); // XXX diff from dark
@cryptpad_color_lighter_blue: #d2e1f2;
@cryptpad_color_link: #0275D8;
// Premium plans colors
@cryptpad_color_basic: #DDEFFF;
@cryptpad_color_pro: #E4FFDD;
@cryptpad_color_power: #F6DDFF;
@cp_scrollbar-fg: fade(@cryptpad_color_black, 20%);
@scrollbar_color: @cp_scrollbar-fg transparent;
// Loading screen
@cp_loading-bg: @cryptpad_color_grey_200;
@cp_loading-fg: @cryptpad_text_col;
@cp_loading-msg-bg: @cryptpad_color_white;
@cp_loading-link: @cryptpad_color_brand;
@cp_loading-error-bg: @cryptpad_color_warn_red;
@cp_loading-error-fg: @cryptpad_text_col;
@cp_loading-progress-bg: @cryptpad_color_white;
@cp_loading-progress-bar-bg: @cryptpad_color_brand;
@cp_loading-spinner: @cryptpad_color_grey_500;
// Chat
@cp_messenger-bg: @cryptpad_color_grey_200;
@cp_messenger-fg: @cryptpad_text_col;
@cp_messenger-notif: @cryptpad_color_black;
@cp_messenger-friend: @cryptpad_color_black;
@cp_messenger-online: @cryptpad_color_light_green;
// Alertify
@cp_alertify-bg: @cryptpad_color_white;
@cp_alertify-fg: @cryptpad_color_brand;
@cp_alertify-hover: fade(@cp_alertify-fg, 25%);
@cp_alertify-overlay: fade(@cryptpad_text_col, 50%);
@cp_alertify-log-bg: fade(@cryptpad_color_brand, 90%);
@cp_alertify-log-fg: @cryptpad_color_white;
@cp_alertify-warn-bg: rgba(205, 37, 50);
@cp_alertify-disable-border: @cryptpad_color_dark_grey;
// Forms
@cp_forms-fg: @cryptpad_text_col;
@cp_forms-bg: @cryptpad_color_grey_100;
@cp_forms-border: @cryptpad_color_brand;
@cp_forms-placeholder: fade(@cryptpad_text_col, 75%);
@cp_forms-readonly: @cryptpad_color_brand_fadest;
@cp_forms-readonly-border: @cryptpad_color_brand;
@cp_forms-disabled: @cryptpad_color_grey_500;
// Bootstrap alerts
@cp_alerts-warning-bg: @cryptpad_color_yellow_fade;
@cp_alerts-warning-fg: @cryptpad_color_light_yellow;
@cp_alerts-warning-text: darken(@cp_alerts-warning-fg, 55%);
@cp_alerts-danger-bg: @cryptpad_color_light_red_fade;
@cp_alerts-danger-fg: @cryptpad_color_light_red;
@cp_alerts-danger-text: darken(@cp_alerts-danger-fg, 55%);
@cp_alerts-info-bg: fade(@cryptpad_color_brand, 15%);
@cp_alerts-info-text: @cryptpad_color_brand;
@cp_alerts-info-fg: @cryptpad_color_brand;
@cp_alerts-success-bg: @cryptpad_color_light_green_fade;
@cp_alerts-success-fg: @cryptpad_color_green;
@cp_alerts-success-text: darken(@cryptpad_color_green, 20%);
// Buttons
@cp_buttons-fg: @cryptpad_color_brand;
@cp_buttons-hover: @cryptpad_color_brand_fadest;
@cp_buttons-default: #CCC;
@cp_buttons-default-color: @cryptpad_text_col;
@cp_buttons-default-border: @cryptpad_text_col;
@cp_buttons-red: #E55236;
@cp_buttons-red-text: @cp_buttons-red;
@cp_buttons-red-color: #FFF;
@cp_buttons-red-border: transparent;
@cp_buttons-primary: @cryptpad_color_brand;
@cp_buttons-primary-text: #FFFFFF;
@cp_buttons-primary-border: transparent;
@cp_buttons-disabled: #6c757d;
@cp_buttons-disabled-text: #ffffff;
@cp_buttons-disabled-border: #6c757d;
@cp_buttons-cancel: #ffffff;
@cp_buttons-cancel-border: #949494;
// Sidebar layout
@cp_sidebar-left-bg: @cryptpad_color_toolbar_grey;
@cp_sidebar-left-fg: @cryptpad_text_col;
@cp_sidebar-right-bg: @cryptpad_color_white;
@cp_sidebar-right-fg: @cryptpad_text_col; // XXX was black
@cp_sidebar-left-active: @cp_sidebar-right-bg;
@cp_sidebar-hint: @cryptpad_color_hint_grey;
// Drive
@cp_drive-bg: @cp_sidebar-right-bg;
@cp_drive-fg: @cp_sidebar-right-fg;
@cp_drive-header-fg: fade(@cryptpad_text_col, 70%);
@cp_drive-icon-hover: fade(@cryptpad_text_col, 5%);
@cp_drive-icon-border: fade(@cryptpad_text_col, 20%);
@cp_drive-thumb-bg: transparent;
@cp_drive-selected-bg: fade(@cryptpad_text_col, 10%);
@cp_drive-selected-fg: @cryptpad_text_col;
@cp_drive-selection-overlay: fade(@cryptpad_text_col, 5%);
@cp_drive-selection-bg: @cryptpad_color_grey_200;
@cp_drive-selection-fg: @cryptpad_text_col;
@cp_drive-droppable-bg: @cryptpad_color_grey_400;
@cp_drive-droppable-fg: @cryptpad_text_col;
@cp_drive-infobox-bg: @cryptpad_color_brand_fadest;
@cp_drive-infobox-fg: @cryptpad_text_col;
@cp_drive-warnbox-bg: @cryptpad_color_warn_red;
@cp_drive-warnbox-fg: @cryptpad_text_col;
@cp_drive-tree-branch: @cryptpad_text_col;
// Contextmenu
@cp_context-bg: @cryptpad_color_white;
@cp_context-border: @cryptpad_color_grey_400;
@cp_context-bg-hover: @cryptpad_color_grey_300;
@cp_context-bg-active: @cryptpad_color_grey_400;
@cp_context-fg: @cryptpad_text_col;
@cp_context-icon: @cryptpad_text_col;
@cp_context-disabled: @cryptpad_color_grey_400;
// Tooltip background
@cp_tooltip-bg: @cryptpad_color_grey_300;
@cp_tooltip-fg: @cryptpad_text_col;
// Dropdown
@cp_dropdown-fg: @cryptpad_text_col;
@cp_dropdown-bg: @cryptpad_color_lighter_grey;
@cp_dropdown-bg-hover: @cryptpad_color_light_grey;
@cp_dropdown-bg-active: @cryptpad_color_grey;
// Rendered Markdown
@cp_markdown-bg: @cryptpad_color_lighter_grey;
@cp_markdown-border: @cryptpad_color_grey;
@cp_markdown-contrast-fg: @cryptpad_text_col; // XXX
@cp_markdown-contrast-bg: transparent; // XXX
// Avatar
@cp_avatar-bg: @cryptpad_color_grey;
@cp_avatar-fg: @cryptpad_text_col;
// Corner
@cp_corner-bg: @cryptpad_color_grey_100;
@cp_corner-fg: @cryptpad_color_brand;
@cp_corner-text: @cryptpad_text_col;
// Pad Creation Screen
@cp_creation-bg: @cryptpad_color_white;
@cp_creation-fg: @cryptpad_text_col;
@cp_creation-button-bg: @cryptpad_color_brand;
@cp_creation-button-fg: @cryptpad_color_white;
@cp_creation-error-bg: @cryptpad_color_blue;
@cp_creation-error-fg: @cryptpad_color_light_grey;
// Export
@cp_export-bg: @cryptpad_color_grey_200;
@cp_export-fg: @cryptpad_text_col;
@cp_export-hint: fade(@cryptpad_text_col, 80%);
@cp_export-error-bg: @cryptpad_color_grey_300;
@cp_export-error-bg2: @cryptpad_color_red_fader;
// File upload
@cp_upload-fg: @cryptpad_color_brand;
@cp_upload-header: @cryptpad_color_help_grey;
@cp_upload-progress: @cryptpad_color_help_grey;
// Help
@cp_help-bg: @cryptpad_color_help_grey;
@cp_help-fg: @cryptpad_text_col;
@cp_help-link: @cryptpad_color_link;
// Static pages
@cp_static-bg: @cryptpad_color_toolbar_grey;
@cp_static-fg: @cryptpad_text_col;
@cp_static-link: @cryptpad_color_brand;
@cp_static-title: @cryptpad_color_brand;
@cp_static-footer: @cryptpad_color_help_grey;
@cp_static-footer-border: @cryptpad_color_white;
@cp_static-topbar-fg: @cryptpad_color_brand;
@cp_static-card-bg: @cryptpad_color_white;
@cp_static-img-invert-filter: none;
// Limit
@cp_limit-fg: @cryptpad_text_col;
@cp-limit-bar-bg: @cryptpad_color_white;
@cp-limit-bar-normal: @cryptpad_color_green;
@cp-limit-bar-warning: @cryptpad_color_orange;
@cp-limit-bar-above: @cryptpad_color_red;
// Mentions
@cp_mentions-bg: @cryptpad_color_grey;
@cp_mentions-hover: @cryptpad_color_help_grey;
// Autocomplete
@cp_autocomplete-bg: @cryptpad_color_grey_100;
@cp_autocomplete-fg: @cryptpad_text_col;
@cp_autocomplete-border: @cryptpad_color_grey_300;
@cp_autocomplete-hover: @cryptpad_color_brand_fadest;
// Modals
@cp_access-overlay: fade(@cryptpad_color_white, 50%);
@cp_snapshots-hover: @cryptpad_color_help_grey;
// Support
@cp_support-bg: @cryptpad_color_lighter_grey;
@cp_support-msg-fg: @cryptpad_text_col;
@cp_support-msg-bg: @cryptpad_color_grey;
@cp_support-header-bg: @cryptpad_color_help_grey;
// Toolbar
@cp_toolbar-bg: @cryptpad_color_grey_200;
@cp_toolbar-fg: @cryptpad_text_col;
@cp_toolbar-bottom-fg: @cryptpad_text_col;
@cp_toolbar-logo-bg: @cryptpad_color_white;
@cp_toolbar-fade1: fade(@cryptpad_color_black, 10%);
@cp_toolbar-fade3: fade(@cryptpad_color_black, 30%);
@cp_toolbar-warn: @cp_buttons-red;
@cp_history-line-bg: @cryptpad_color_white;
@cp_history-bg1: #DDD;
@cp_history-bg2: #BBB;
@cp_history-fg: @cp_toolbar-bottom-fg;
// Tokenfield
@cp_token-bg: @cryptpad_color_neutral2_grey;
@cp_token-fg: @cryptpad_text_col;
@cp_token-bg-hover: @cryptpad_color_neutral_grey;
@cp_token-invalid: @cryptpad_color_warn_red;
// Usergrid
@cp_usergrid-fg: @cryptpad_text_col;
@cp_usergrid-selected-bg: @cryptpad_color_brand;
@cp_usergrid-selected-fg: @cryptpad_color_white;
// Other
@cp_shadow-color: fade(@cryptpad_color_black, 40%);
// Apps
@cp_app-bg: @cryptpad_color_light_grey;
@cp_app-fg: @cryptpad_text_col;
// Accounts
@cp_accounts-basic: @cryptpad_color_basic;
@cp_accounts-pro: @cryptpad_color_pro;
@cp_accounts-power: @cryptpad_color_power;
@cp_accounts-active: @cryptpad_color_light_green;
@cp_accounts-inactive: @cryptpad_color_light_red;
@cp_accounts-mysubs-alert: @cryptpad_color_white;
@cp_accounts-mysubs-bg: @cryptpad_color_toolbar_grey;
@cp_accounts-mysubs-fg: @cryptpad_text_col;
@cp_accounts-contact-hover: fade(@cryptpad_color_black, 20%);
@cp_accounts-tab-bg: @cryptpad_color_toolbar_grey;
@cp_accounts-tab-hover: @cryptpad_color_grey;
@cp_accounts-tab-border: @cryptpad_color_neutral_grey;
// Admin
@cp_admin-isadmin-fg: @cryptpad_color_brand;
@cp_admin-isadmin-bg: @cryptpad_color_white;
@cp_admin-premium-fg: @cryptpad_color_warn_red;
@cp_admin-premium-bg: lighten(@cryptpad_color_warn_red, 25%);
@cp_admin-last-fg: @cryptpad_color_warn_red;
@cp_admin-last-bg: lighten(@cryptpad_color_orange, 25%);
// Code
@cp_preview-bg: @cryptpad_color_white;
@cp_preview-fg: @cryptpad_text_col;
@cp_preview-link: @cryptpad_color_brand;
// Debug
@cp_debug-hover: fade(@cryptpad_color_black, 10%);
@cp_debug-icon-hover: @cryptpad_color_dark_grey;
// Mediatag
@cp_mediatag-text-bg: @cryptpad_color_white;
@cp_mediatag-text-fg: @cryptpad_text_col;
// File
@cp_file-progress-bg: @cryptpad_color_brand;
@cp_file-progress-fg: @cryptpad_text_col;
// Kanban
@cp_kanban-fg: @cryptpad_text_col;
@cp_kanban-item-bg: @cryptpad_color_grey_50;
@cp_kanban-link: @cryptpad_color_brand;
@cp_kanban-board-bg: @cryptpad_color_grey_300;
@cp_kanban-conflict-bg: @cryptpad_color_grey_200;
@cp_kanban-tags-bg: @cryptpad_color_grey_300;
@cp_kanban-add-hover: fade(@cryptpad_color_black, 10%);
@cp_kanban-trash-bg: @cryptpad_color_warn_red;
@cp_kanban-color0: @cryptpad_color_grey_400;
@cp_kanban-colors:
#FFD4D4,
#FFDECA,
#FFE69C,
#DBFFB7,
#AFFDC2,
#C9FFFE,
#C8D6FF,
#E4CAFF;
// Notifications
@cp_notif-hover: fade(@cryptpad_color_black, 10%);
@cp_notif-header-bg: @cryptpad_color_grey_200;
@cp_notif-header-fg: @cryptpad_text_col;
@cp_notif-table-border: @cryptpad_color_white;
@cp_notif-bg: @cryptpad_color_grey_100;
@cp_notif-fg: @cryptpad_text_col;
// OO
@cp_oo-offline-overlay: fade(@cryptpad_color_white, 50%);
// Rich text
@cp_pad-fg: @cryptpad_text_col;
@cp_pad-icon-filter: none;
// Comments
@cp_comments-fg: @cryptpad_text_col;
@cp_comments-bg: @cryptpad_color_white;
@cp_comments-header: @cryptpad_color_grey_600;
// Poll
@cp_poll-th-bg: @cryptpad_color_lighter_blue;
@cp_poll-th-fg: @cryptpad_text_col;
@cp_poll-uncommitted-bg: @cryptpad_color_toolbar_grey;
@cp_poll-border-color: @cryptpad_color_hint_grey;
@cp_poll-cell-fg: @cryptpad_text_col;
@cp_poll-unset: @cryptpad_color_help_grey;
@cp_poll-yes: @cryptpad_color_light_green;
@cp_poll-no: @cryptpad_color_light_red;
@cp_poll-maybe: @cryptpad_color_light_yellow;
@cp_poll-hint: @cryptpad_color_dark_grey;
// Profile
@cp_profile-border: @cryptpad_color_grey_400;
@cp_profile-hint: @cryptpad_color_grey_600;
// SLide
@cp_slide-fg: @cp_app-fg;
@cp_slide-css-error: @cryptpad_color_red_fader;
// Teams
@cp_teams-card-bg: @cryptpad_color_grey_300;
@cp_teams-leftside-bg: darken(@cryptpad_color_grey_200, 5%);
@cp_teams-invite-bg: fade(@cryptpad_color_brand, 50%);
@cp_teams-invite-fg: @cryptpad_text_col;
@cp_teams-roster-odd: fade(@cryptpad_text_col, 15%);
@colortheme_checkmark-back0: @colortheme_form-bg-alt; // Whiteboard
@colortheme_checkmark-back0-active: @colortheme_form-border; @cp_whiteboard-board-bg: @cryptpad_color_white;
@colortheme_checkmark-back1: @colortheme_form-bg; @cp_whiteboard-board-border: @cryptpad_color_hint_grey;
@colortheme_checkmark-col1: @colortheme_form-color; @cp_whiteboard-bg: @cp_app-bg;
@colortheme_checkmark-back2: @colortheme_form-bg-alt; @cp_whiteboard-fg: @cryptpad_text_col;
@colortheme_checkmark-col2: @colortheme_form-color-alt;
@colortheme_checkmark-disabled: #AAA;

@ -4,9 +4,8 @@
@import (reference) "./tools.less"; @import (reference) "./tools.less";
.comments_main() { .comments_main() {
@data-color: #888;
overflow-y: auto; overflow-y: auto;
color: @cryptpad_text_col; color: @cp_comments-fg;
&:empty { &:empty {
display: none !important; display: none !important;
@ -29,7 +28,7 @@
margin-left: 30px; margin-left: 30px;
} }
.cp-comment-deleted { .cp-comment-deleted {
background: white; background-color: @cp_comments-bg;
font-size: 14px; font-size: 14px;
padding: 5px; padding: 5px;
} }
@ -96,7 +95,7 @@
height: 40px; height: 40px;
align-items: center; align-items: center;
display: flex; display: flex;
background-color: white; background-color: @cp_comments-bg;
position: relative; position: relative;
padding: 5px; padding: 5px;
box-sizing: content-box; box-sizing: content-box;
@ -108,7 +107,7 @@
margin-left: 5px; margin-left: 5px;
.cp-comment-time { .cp-comment-time {
font-size: 13px; font-size: 13px;
color: @data-color; color: @cp_comments-header;
} }
} }
.cp-comment-edit { .cp-comment-edit {
@ -127,15 +126,15 @@
} }
} }
.cp-comment-content { .cp-comment-content {
background-color: white; background-color: @cp_comments-bg;
padding: 0px 5px 5px 5px; padding: 0px 5px 5px 5px;
white-space: pre-wrap; white-space: pre-wrap;
word-break: break-word; word-break: break-word;
} }
.cp-comment-edited { .cp-comment-edited {
background-color: white; background-color: @cp_comments-bg;
font-size: 13px; font-size: 13px;
color: @data-color; color: @cp_comments-header;
padding: 0 5px; padding: 0 5px;
} }
.cp-comment-actions { .cp-comment-actions {

@ -6,8 +6,16 @@
& { & {
.cp-contextmenu { .cp-contextmenu {
display: none; display: none;
position: absolute; position: absolute !important;
z-index: 50000; z-index: 50000;
& > ul {
border: 1px solid @cp_context-border;
background-color: @cp_context-bg;
border-radius: 0px;
.dropdown-divider {
border-top: 1px solid @cp_context-border;
}
}
li { li {
padding: 0; padding: 0;
font-size: @colortheme_app-font-size; font-size: @colortheme_app-font-size;
@ -29,20 +37,33 @@
.dropdown-menu { .dropdown-menu {
top: -0.7rem; top: -0.7rem;
left: 100%; left: 100%;
background-color: @cp_context-bg;
border-radius: 0px;
border: 1px solid @cp_context-border;
} }
} }
a { a {
cursor: pointer; cursor: pointer;
color: @cp_context-fg;
padding-left: 10px;
&:hover {
background-color: @cp_context-bg-hover;
color: @cp_context-fg;
}
&:active {
background-color: @cp_context-bg-active;
color: @cp_context-fg;
}
.fa, .cptools { .fa, .cptools {
margin-right: 1rem; margin-right: 10px;
color: @colortheme_context-menu-icon-color; color: @cp_context-icon;
width: 16px; width: 16px;
} }
} }
} }
.cp-app-drive-context-noAction { .cp-app-drive-context-noAction {
font-style: italic; font-style: italic;
color: #aaa; color: @cp_context-disabled;
cursor: default; cursor: default;
display: none; display: none;
} }

@ -4,9 +4,12 @@
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
}; };
& { & {
@corner-link: #ffff7a; @corner-bg: @cp_corner-bg;
@corner-blue: @colortheme_logo-1; @corner-fg: @cp_corner-fg;
@corner-white: @colortheme_base; @corner-text: @cp_corner-text;
@corner-bg-alt: darken(@corner-bg, 10%);
@corner-fg-alt: darken(@corner-fg, 10%);
@keyframes appear { @keyframes appear {
0% { 0% {
@ -31,18 +34,18 @@
bottom: 10px; bottom: 10px;
width: 350px; width: 350px;
padding: 10px; padding: 10px;
background-color: fade(@corner-blue, 95%); background-color: fade(@corner-bg, 95%);
border: 1px solid @corner-blue; color: @corner-text;
color: @corner-white;
z-index: 9999; z-index: 9999;
transform-origin: bottom right; transform-origin: bottom right;
animation: appear 0.8s ease-in-out; animation: appear 0.8s ease-in-out;
//box-shadow: 0 0 10px 0 @corner-blue; border: 1px solid @corner-fg;
box-shadow: 0 0 10px 0 @cp_shadow-color;
&.cp-corner-alt { &.cp-corner-alt {
background-color: fade(@corner-white, 95%); background-color: fade(@corner-bg, 95%);
border: 1px solid @corner-blue; color: @corner-fg;
color: @corner-blue; border-color: @corner-fg;
} }
h1, h2, h3 { h1, h2, h3 {
@ -54,39 +57,6 @@
clear: left; clear: left;
height: 21px; height: 21px;
} }
.cp-corner-minimize, .cp-corner-maximize {
position: absolute;
height: 15px;
width: 20px;
top: 0;
right: 0;
font-size: 12px;
text-align: left;
cursor: pointer;
line-height: 15px;
display: none;
&:hover {
color: darken(@corner-white, 15%);
}
}
.cp-corner-minimize {
display: inline;
}
&.cp-minimized {
transition: transform 0.8s ease-in-out;
transform: scale(0.1);
animation: none;
.cp-corner-text, .cp-corner-actions, .cp-corner-footer {
display: none;
}
.cp-corner-maximize {
display: inline;
font-size: 130px;
width: 180px;
height: 200px;
line-height: 200px;
}
}
&.cp-corner-big { &.cp-corner-big {
width: 500px; width: 500px;
max-width: 95%; max-width: 95%;
@ -99,13 +69,16 @@
font-size: 1.1em; font-size: 1.1em;
} }
&:hover { &:hover {
color: darken(@corner-white, 10%); color: @corner-fg-alt;
} }
} }
&.cp-corner-alt { &.cp-corner-alt {
.cp-corner-dontshow { .cp-corner-dontshow {
display: inline-block;
color: @corner-text;
&:hover { &:hover {
color: lighten(@corner-blue, 10%); color: @corner-fg;
} }
} }
} }
@ -121,63 +94,44 @@
} }
.cp-corner-footer, .cp-corner-text { .cp-corner-footer, .cp-corner-text {
a { a {
color: @corner-white; color: @corner-fg;
text-decoration: underline; text-decoration: underline;
&:hover { &:hover {
color: darken(@corner-white, 10%); color: @corner-fg-alt;
} }
} }
} }
&.cp-corner-alt a { &.cp-corner-alt a {
color: @corner-blue; color: @corner-text;
&:hover { &:hover {
color: lighten(@corner-blue, 10%); color: @corner-fg;
} }
} }
button { button {
padding: 5px; padding: 5px;
color: @corner-white; color: @corner-fg;
&:not(:first-child) { &:not(:first-child) {
margin-left: 10px; margin-left: 10px;
} }
outline: none;
text-transform: uppercase; text-transform: uppercase;
border: 1px solid @corner-white; border: 1px solid @corner-fg;
.fa, .cptools { .fa, .cptools {
margin-right: 0.3em; margin-right: 0.3em;
} }
&.cp-corner-primary { &.cp-corner-primary {
background-color: @corner-white; background-color: @corner-fg;
color: @corner-blue; color: @corner-bg;
&:hover {
background-color: lighten(@corner-blue, 50%);
border-color: lighten(@corner-blue, 50%);
}
}
&.cp-corner-cancel {
background-color: @corner-blue;
color: @corner-white;
&:hover {
background-color: darken(@corner-blue, 10%);
}
}
}
&.cp-corner-alt button {
border-color: @corner-blue;
&.cp-corner-primary {
background-color: @corner-blue;
color: @corner-white;
&:hover { &:hover {
background-color: darken(@corner-blue, 10%); background-color: @corner-fg-alt;
border-color: darken(@corner-blue, 10%); border-color: @corner-fg-alt;
} }
} }
&.cp-corner-cancel { &.cp-corner-cancel {
background-color: @corner-white; background-color: @corner-bg;
color: @corner-blue; color: @corner-fg;
&:hover { &:hover {
background-color: lighten(@corner-blue, 50%); background-color: @corner-bg-alt;
} }
} }
} }

@ -7,9 +7,10 @@
.creation_vars( .creation_vars(
@bg-color: @colortheme_apps[default] @bg-color: @colortheme_apps[default]
) { ) {
@creation-color: @cryptpad_text_col; @creation-color: @cp_creation-fg;
@creation-bg-color: @bg-color; @creation-bg-color: @bg-color;
@creation-bg-color-light: lighten(@bg-color, 30%); @desat-color: desaturate(@bg-color, 20%);
@creation-bg-color-light: contrast(@creation-color, lighten(@bg-color, 30%), darken(@desat-color, 20%));
}; };
.creation_main( .creation_main(
@ -17,23 +18,18 @@
) { ) {
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
.creation_vars(@bg-color); .creation_vars(@bg-color);
--creation-color: @cryptpad_text_col; --creation-color: @cp_creation-fg;
--creation-bg-color: @bg-color; --creation-bg-color: @bg-color;
--creation-bg-color-light: @creation-bg-color-light; --creation-bg-color-light: @creation-bg-color-light;
} }
& { & {
.creation_vars(); .creation_vars();
@colortheme_creation-modal-bg: #fff;
@colortheme_creation-modal: #666;
@colortheme_creation-modal-title: @colortheme_loading-bg;
#cp-creation-container { #cp-creation-container {
position: absolute; position: absolute;
z-index: 100000000; // #loading * 10 z-index: 100000000; // #loading * 10
top: 0px; top: 0px;
//background: @colortheme_loading-bg; background: @cp_loading-bg;
background: @colortheme_loading_bg;
color: @colortheme_loading-color;
display: flex; display: flex;
flex-flow: column; /* we need column so that the child can shrink vertically */ flex-flow: column; /* we need column so that the child can shrink vertically */
justify-content: center; justify-content: center;
@ -60,8 +56,8 @@
#cp-creation { #cp-creation {
overflow: auto; overflow: auto;
text-align: center; text-align: center;
background: @colortheme_creation-modal-bg; background: @cp_creation-bg;
color: @colortheme_creation-modal; color: @cp_creation-fg;
font: @colortheme_app-font; font: @colortheme_app-font;
outline: none; outline: none;
width: 700px; width: 700px;
@ -127,16 +123,16 @@
button { button {
.tools_unselectable(); .tools_unselectable();
padding: 6px; padding: 6px;
background: @colortheme_logo-2; background: @cp_creation-button-bg;
font-size: 20px; font-size: 20px;
color: #FFF; color: @cp_creation-button-fg;
margin: 3px 10px; margin: 3px 10px;
border: none; border: none;
cursor: pointer; cursor: pointer;
outline: none; outline: none;
text-transform: uppercase; text-transform: uppercase;
&:hover { &:hover {
background: lighten(@colortheme_logo-2, 5%); background: contrast(@cp_creation-button-fg, lighten(@cp_creation-button-bg, 5%), darken(@cp_creation-button-bg, 5%));
} }
} }
} }
@ -171,10 +167,9 @@
} }
} }
.cp-creation-help, .cp-creation-warning { .cp-creation-help, .cp-creation-warning {
font-size: 18px; font-size: 16px;
color: @colortheme_form-warning; color: @cp_creation-fg;
&:hover { &:hover {
color: @colortheme_form-warning-hov;
text-decoration: none; text-decoration: none;
} }
} }
@ -196,11 +191,11 @@
input, select { input, select {
font-size: 14px; font-size: 14px;
border: 1px solid @colortheme_form-bg; background: @cp_forms-bg;
border: 1px solid @cp_forms-border;
height: 26px; height: 26px;
line-height: 26px; line-height: 26px;
//background-color: @colortheme_form-bg; color: @cp_forms-fg;
color: @cryptpad_text_col;
} }
.cp-creation-teams { .cp-creation-teams {
@ -221,14 +216,13 @@
padding: 5px; padding: 5px;
cursor: default; cursor: default;
font: @colortheme_app-font; font: @colortheme_app-font;
color: @colortheme_modal-fg;
margin: 0 1px; margin: 0 1px;
.tools_unselectable(); .tools_unselectable();
&.cp-selected { &.cp-selected {
background-color: @colortheme_alertify-primary; background-color: @cp_creation-button-bg;
color: @colortheme_alertify-primary-text; color: @cp_creation-button-fg;
} }
.cp-creation-team-avatar { .cp-creation-team-avatar {
.fa { .fa {
@ -243,7 +237,7 @@
text-align: center; text-align: center;
line-height: 18px; line-height: 18px;
} }
border: 1px solid @colortheme_alertify-primary; border: 1px solid @cp_creation-button-bg;
} }
} }
@ -294,19 +288,6 @@
.cp-filler { flex: 1; } .cp-filler { flex: 1; }
} }
div.cp-creation-remember {
.cp-creation-remember-help {
width: 100%;
//font-style: italic;
font-size: 12px;
font-weight: bold;
color: @colortheme_form-bg;
line-height: 20px;
.fa {
margin-right: 10px;
}
}
}
div.cp-creation-template { div.cp-creation-template {
width: 100%; width: 100%;
//flex: 1 0 auto; //flex: 1 0 auto;
@ -341,7 +322,7 @@
max-height: 159px; max-height: 159px;
align-items: center; align-items: center;
.cp-creation-template-element { .cp-creation-template-element {
box-shadow: 2px 2px 7px @colortheme_form-border; box-shadow: 2px 2px 7px @cp_shadow-color;
width: 300px; width: 300px;
max-width: calc(100% - 10px); max-width: calc(100% - 10px);
padding: 2px; padding: 2px;
@ -404,8 +385,8 @@
text-align: center; text-align: center;
.cp-creation-deleted { .cp-creation-deleted {
margin: 0 10px; margin: 0 10px;
background: @colortheme_loading-bg; background: @cp_creation-error-bg;
color: @colortheme_loading-color; color: @cp_creation-error-fg;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;

@ -13,23 +13,6 @@
.tokenfield_main(); .tokenfield_main();
@colortheme_drive-bg-active: lighten(@colortheme_static_apps[default], 20%); @colortheme_drive-bg-active: lighten(@colortheme_static_apps[default], 20%);
@colortheme_drive-color: @cryptpad_text_col;
@drive_hover: #eee;
@drive_hover-light: lighten(@drive_hover, 20%);
@drive_info-box-bg: #d2e1f2;
@drive_info-box-border: #bbb;
@drive_table-header-fg: #555;
@drive_table-header-bg: #e8e8e8;
@drive_mobile-tree-border-col: #ccc;
@drive_content-fg: @colortheme_sidebar-right-fg;
@drive_content-bg: @colortheme_sidebar-right-bg;
@drive_content-bg-ro: darken(@drive_content-bg, 10%);
@drive_selected-bg: #888;
@drive_droppable-bg: #FE9A2E;
/* PAGE */ /* PAGE */
@ -59,7 +42,7 @@
border: 1px solid transparent; border: 1px solid transparent;
&:not(.cp-app-drive-element-selected):not(.cp-app-drive-element-selected-tmp) { &:not(.cp-app-drive-element-selected):not(.cp-app-drive-element-selected-tmp) {
border: 1px solid #CCC; border: 1px solid @cp_drive-icon-border;
} }
.cp-app-drive-element-name { .cp-app-drive-element-name {
width: 100%; width: 100%;
@ -126,7 +109,6 @@
min-width: unset; min-width: unset;
max-width: unset; max-width: unset;
max-height: unset; max-height: unset;
border-bottom: 1px solid @drive_mobile-tree-border-col;
.cp-app-drive-tree-category { .cp-app-drive-tree-category {
margin-top: 0.5em; margin-top: 0.5em;
} }
@ -152,35 +134,34 @@
li { li {
padding: 0px 5px; padding: 0px 5px;
-webkit-user-select: none; .tools_unselectable();
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
} }
.cp-app-drive-element-restricted { .cp-app-drive-element-restricted {
color: #939393; color: @cp_drive-header-fg;
} }
.cp-app-drive-element-droppable { .cp-app-drive-element-droppable {
background-color: @drive_droppable-bg; background-color: @cp_drive-droppable-bg;
color: #222; color: @cp_drive-droppable-fg;
} }
.cp-app-drive-element-selected { .cp-app-drive-element-selected {
background: @drive_selected-bg !important; background: @cp_drive-selected-bg !important;
color: #eee; color: @cp_drive-selected-fg;
.fa-minus-square-o, .fa-plus-square-o { .fa-minus-square-o, .fa-plus-square-o {
color: @colortheme_sidebar-left-fg; color: @cp_sidebar-left-fg;
}
.cptools {
color: @cp_drive-selected-fg;
} }
} }
.cp-app-drive-element-selected-tmp { .cp-app-drive-element-selected-tmp {
border: 1px dotted #bbb; background: @cp_drive-selection-bg;
background: #AAA; color: @cp_drive-selection-fg;
color: #ddd;
.fa-minus-square-o, .fa-plus-square-o { .fa-minus-square-o, .fa-plus-square-o {
color: @colortheme_sidebar-left-fg; color: @cp_sidebar-left-fg;
} }
} }
@ -202,19 +183,20 @@
font-size: 50px; font-size: 50px;
} }
.cptools-folder-no-color { .cptools-folder-no-color {
color: #bbb; color: #bbb; // XXX
} }
.fa-check { .fa-check {
position: absolute; position: absolute;
top: 40%; left: 35%; top: 40%; left: 35%;
color: transparent; color: transparent;
} }
// XXX Check colors in the "change folder color" modal
&.cp-app-drive-current-color > .fa-check { &.cp-app-drive-current-color > .fa-check {
color: white; color: @cryptpad_color_white;
} }
&.cp-app-drive-current-color:first-child > .fa-check { &.cp-app-drive-current-color:first-child > .fa-check {
color: black; color: @cryptpad_color_black;
} }
} }
} }
@ -228,13 +210,13 @@
margin: 15px; margin: 15px;
input { input {
background: transparent; background: transparent;
color: @colortheme_drive-color; color: @cp_drive-fg;
.tools_placeholder-color(@cryptpad_color_grey); .tools_placeholder-color();
outline-width: 0px; outline-width: 0px;
border-radius: 0; border-radius: 0;
width: 100%; width: 100%;
border: 0; border: 0;
border-bottom: 3px solid @colortheme_drive-color; border-bottom: 3px solid @cp_drive-fg;
margin: 0 5px; margin: 0 5px;
flex: 1; flex: 1;
min-width: 0; min-width: 0;
@ -252,12 +234,12 @@
cursor: pointer; cursor: pointer;
} }
.cp-app-drive-tree-search-icon, .cp-app-drive-search-cancel { .cp-app-drive-tree-search-icon, .cp-app-drive-search-cancel {
color: @colortheme_drive-color; color: @cp_drive-fg;
} }
} }
.cp-app-drive-search-spinner { .cp-app-drive-search-spinner {
display: inline-flex; display: inline-flex;
color: @colortheme_drive-color; color: @cp_drive-fg;
font-size: 40px; font-size: 40px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -266,7 +248,7 @@
font-size: 30px; font-size: 30px;
padding: 15px; padding: 15px;
font-style: italic; font-style: italic;
color: @cryptpad_color_grey; color: fade(@cryptpad_text_col, 80%);
} }
@ -277,7 +259,7 @@
font-size: @colortheme_app-font-size; font-size: @colortheme_app-font-size;
//border-right: 1px solid #ccc; //border-right: 1px solid #ccc;
box-sizing: border-box; box-sizing: border-box;
background: @colortheme_sidebar-left-bg; background: @cp_sidebar-left-bg;
overflow: auto; overflow: auto;
resize: horizontal; resize: horizontal;
width: auto; width: auto;
@ -285,26 +267,11 @@
max-width: 500px; max-width: 500px;
min-width: 200px; min-width: 200px;
padding: 0px; padding: 0px;
color: @colortheme_sidebar-left-fg; color: @cp_sidebar-left-fg;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
max-height: 100%; max-height: 100%;
position: relative; position: relative;
.cp-close-button {
position: absolute;
cursor: pointer;
right: 5px;
top: 5px;
font-size: 18px;
padding: 3px;
margin: 0;
border: 0;
background-color: transparent;
outline: none;
&:hover {
color: #000;
}
}
.cp-app-drive-tree-categories-container { .cp-app-drive-tree-categories-container {
flex: 1; flex: 1;
overflow: auto; overflow: auto;
@ -327,7 +294,6 @@
width: ~"calc(100% - 30px)"; width: ~"calc(100% - 30px)";
padding: 0 10px; padding: 0 10px;
border: 0; border: 0;
color: lighten(@colortheme_sidebar-left-fg, 40%);
height: auto; height: auto;
} }
& > span.cp-app-drive-element-row { & > span.cp-app-drive-element-row {
@ -386,9 +352,9 @@
top: 10px; top: 10px;
width: 11px !important; width: 11px !important;
height: 11px !important; height: 11px !important;
background-color: @cp_sidebar-left-bg;
padding: 0; padding: 0;
margin: 0; margin: 0;
background: white;
z-index: 10; z-index: 10;
cursor: default; cursor: default;
&:before { &:before {
@ -428,9 +394,9 @@
top: -11px; top: -11px;
content: ''; content: '';
display: block; display: block;
border-left: 1px solid @colortheme_sidebar-left-branch; border-left: 1px solid @cp_drive-tree-branch;
height: ~"calc(1em + 11px)"; height: ~"calc(1em + 11px)";
border-bottom: 1px solid @colortheme_sidebar-left-branch; border-bottom: 1px solid @cp_drive-tree-branch;
width: 15px; width: 15px;
} }
&:after { &:after {
@ -439,7 +405,7 @@
bottom: -7px; bottom: -7px;
content: ''; content: '';
display: block; display: block;
border-left: 1px solid @colortheme_sidebar-left-branch; border-left: 1px solid @cp_drive-tree-branch;
height: 100%; height: 100%;
} }
&.cp-app-drive-tree-root { &.cp-app-drive-tree-root {
@ -467,8 +433,8 @@
} }
#cp-app-drive-content { #cp-app-drive-content {
box-sizing: border-box; box-sizing: border-box;
background: @drive_content-bg; background: @cp_sidebar-right-bg;
color: @drive_content-fg; color: @cp_sidebar-right-fg;
overflow-y: auto; overflow-y: auto;
flex: 1; flex: 1;
display: flex; display: flex;
@ -476,12 +442,12 @@
position: relative; position: relative;
.cp-app-drive-content-select-box { .cp-app-drive-content-select-box {
display: none; display: none;
background-color: rgba(100, 100, 100, 0.7); background-color: @cp_drive-selection-overlay;
position: absolute; position: absolute;
z-index: 50; z-index: 50;
} }
&.cp-app-drive-readonly { &.cp-app-drive-readonly {
background: @drive_content-bg-ro; background: contrast(@cp_sidebar-right-bg, darken(@cp_sidebar-right-bg, 10%), lighten(@cp_sidebar-right-bg, 10%));
} }
h1 { h1 {
padding-left: 10px; padding-left: 10px;
@ -492,7 +458,8 @@
line-height: 2em; line-height: 2em;
padding: 0.25em 0.75em; padding: 0.25em 0.75em;
margin: 1em; margin: 1em;
background: @drive_info-box-bg; background: @cp_drive-infobox-bg;
color: @cp_drive-infobox-fg;
cursor: default; cursor: default;
span { span {
cursor: pointer; cursor: pointer;
@ -505,7 +472,7 @@
&:not(.cp-app-drive-element-header) { &:not(.cp-app-drive-element-header) {
&:hover { &:hover {
&:not(.-cp-app-drive-element-selected, .cp-app-drive-element-selected-tmp) { &:not(.-cp-app-drive-element-selected, .cp-app-drive-element-selected-tmp) {
background-color: @drive_hover; background-color: @cp_drive-icon-hover;
} }
} }
} }
@ -532,13 +499,13 @@
.cp-app-drive-path-clickable { .cp-app-drive-path-clickable {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: #eee; color: @cp_drive-fg;
} }
} }
} }
font-size: 12px; font-size: 12px;
line-height: 16px; line-height: 16px;
color: @drive_table-header-fg; color: @cp_drive-header-fg;
} }
} }
&.cp-app-drive-tags-list { &.cp-app-drive-tags-list {
@ -600,7 +567,7 @@
margin: 0; margin: 0;
padding: 0; padding: 0;
border-radius: 0; border-radius: 0;
border: 1px solid #ddd; border: 1px solid transparent;
font-size: 14px; font-size: 14px;
height: auto; height: auto;
} }
@ -616,6 +583,7 @@
.cp-app-drive-element-thumbnail { .cp-app-drive-element-thumbnail {
max-width: 100px; max-width: 100px;
max-height: 100px; max-height: 100px;
background: @cp_drive-thumb-bg;
& ~ .fa, & ~ .cptools { & ~ .fa, & ~ .cptools {
display: inline; display: inline;
font-size: 17px; font-size: 17px;
@ -655,7 +623,7 @@
li { li {
display: flex; display: flex;
input { input {
border: 1px solid #ddd; border: 1px solid transparent;
margin: 0; margin: 0;
padding: 0 4px; padding: 0 4px;
flex: 1; flex: 1;
@ -731,7 +699,7 @@
} }
&.cp-app-drive-element-header { &.cp-app-drive-element-header {
cursor: default; cursor: default;
color: @drive_table-header-fg; color: @cp_drive-header-fg;
span { span {
&:not(.fa):not(.cptools) { &:not(.fa):not(.cptools) {
text-align: left; text-align: left;
@ -745,7 +713,7 @@
&.cp-app-drive-sort-clickable { &.cp-app-drive-sort-clickable {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background: @drive_table-header-bg; background: @cp_drive-icon-hover;
} }
} }
} }
@ -818,7 +786,7 @@
font-size: @colortheme_app-font-size; font-size: @colortheme_app-font-size;
padding: 0 5px; padding: 0 5px;
border: 0; border: 0;
color: @colortheme_drive-color; color: @cp_drive-fg;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -829,7 +797,7 @@
} }
&.cp-app-drive-path-separator { &.cp-app-drive-path-separator {
color: #ccc; color: @cp_drive-header-fg;
cursor: default; cursor: default;
} }
@ -838,7 +806,8 @@
} }
&.cp-app-drive-element-droppable { &.cp-app-drive-element-droppable {
background-color: @drive_droppable-bg; background-color: @cp_drive-droppable-bg;
color: @cp_drive-droppable-fg;
} }
&.cp-app-drive-path-clickable { &.cp-app-drive-path-clickable {
cursor: pointer; cursor: pointer;
@ -864,13 +833,8 @@
#cp-app-drive-new-ghost-dialog.cp-modal-container { #cp-app-drive-new-ghost-dialog.cp-modal-container {
.drive_fileIcon; .drive_fileIcon;
border: 1px solid @colortheme_modal-fg;
li:not(.cp-app-drive-element-selected):hover { li:not(.cp-app-drive-element-selected):hover {
background: @colortheme_logo_2_light; background: @cp_drive-icon-hover;
color: @cryptpad_text_col;
.cptools {
color: @cryptpad_text_col;
}
} }
.cp-modal { .cp-modal {
display: flex; display: flex;
@ -897,7 +861,7 @@
} }
.cp-app-drive-new-name { .cp-app-drive-new-name {
color: @cryptpad_text_col; color: @cp_drive-fg;
white-space: nowrap; white-space: nowrap;
} }
@ -951,8 +915,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: @colortheme_drive-bg-active; background-color: @cp_drive-infobox-bg;
color: black; color: @cp_drive-infobox-fg;
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
cursor: default; cursor: default;
@ -962,8 +926,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: #eb675e; background-color: @cp_drive-warnbox-bg;
color: white; color: @cp_drive-warnbox-fg;
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
cursor: default; cursor: default;

@ -7,6 +7,18 @@
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
} }
& { & {
.ui-autocomplete {
background-color: @cp_autocomplete-bg;
color: @cp_autocomplete-fg;
}
ul.ui-menu {
border: 1px solid @cp_autocomplete-border; // XXX doesn't work
.ui-state-active {
background-color: @cp_autocomplete-hover;
color: @cp_autocomplete-fg;
border-color: @cp_autocomplete-hover;
}
}
.cp-autocomplete-value { .cp-autocomplete-value {
display: flex; display: flex;
align-items: center; align-items: center;
@ -46,7 +58,7 @@
.cp-dropdown-content { .cp-dropdown-content {
display: none; display: none;
position: absolute; position: absolute;
background-color: @colortheme_dropdown-bg; background-color: @cp_dropdown-bg;
min-width: 250px; min-width: 250px;
box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.2); box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.2);
z-index: 1000; //Z dropdown content z-index: 1000; //Z dropdown content
@ -64,7 +76,7 @@
} }
& > a, & > span { & > a, & > span {
color: @colortheme_dropdown-color; color: @cp_dropdown-fg;
padding: 5px 16px; padding: 5px 16px;
text-decoration: none; text-decoration: none;
display: flex; display: flex;
@ -100,13 +112,13 @@
} }
&:hover { &:hover {
background-color: @colortheme_dropdown-bg-hover; background-color: @cp_dropdown-bg-hover;
color: @colortheme_dropdown-color; color: @cp_dropdown-fg;
} }
&.cp-dropdown-element-active { &.cp-dropdown-element-active {
background-color: @colortheme_dropdown-bg-active; background-color: @cp_dropdown-bg-active;
color: @colortheme_dropdown-color; color: @cp_dropdown-fg;
} }
} }
&> span { &> span {
@ -138,7 +150,7 @@
hr { hr {
margin: 5px 0px; margin: 5px 0px;
height: 1px; height: 1px;
background: #bbb; background: @cp_dropdown-bg-active;
& + hr { & + hr {
display: none; display: none;
} }
@ -150,21 +162,11 @@
margin: 0; margin: 0;
white-space: normal; white-space: normal;
text-align: left; text-align: left;
color: black; color: @cp_dropdown-fg;
font-size: 14px; font-size: 14px;
* { * {
font-size: 14px; font-size: 14px;
} }
h2 {
color: black;
font-weight: bold;
text-align: center;
background-color: #EEEEEE;
padding: 5px 0px;
margin: 5px 0px;
font-size: 16px;
white-space: normal;
}
} }
} }
} }

@ -6,19 +6,22 @@
min-height: 0; min-height: 0;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: @cp_export-bg;
color: @cp_export-fg;
.cp-export-block { .cp-export-block {
width: 800px; width: 800px;
max-width: 90vw; max-width: 90vw;
// XXX Keep hardcoded progress bar colors for now...
.cp-export-progress-bar-container { .cp-export-progress-bar-container {
height: 24px; height: 24px;
background: white; background: @cp_loading-progress-bg;
border: 1px solid #DDD; border: 1px solid @cp_loading-progress-bar-bg;
width: 80%; width: 80%;
margin: auto; margin: auto;
position: relative; position: relative;
.cp-export-progress-bar { .cp-export-progress-bar {
height: 100%; height: 100%;
background: #5cb85c; // Same color as loading screen bar background: @cp_loading-progress-bar-bg; // Same color as loading screen bar
width: 0%; width: 0%;
display: inline-block; display: inline-block;
} }
@ -33,7 +36,7 @@
} }
} }
& > p { & > p {
color: #777; color: @cp_export-hint;
} }
.cp-export-progress { .cp-export-progress {
margin-bottom: 1rem; margin-bottom: 1rem;
@ -58,8 +61,7 @@
display: none; display: none;
overflow-x: auto; overflow-x: auto;
max-height: 300px; max-height: 300px;
background: #ededed; background: @cp_export-error-bg;
border: 1px solid #777;
padding: 5px 20px; padding: 5px 20px;
margin-top: 1rem; margin-top: 1rem;
& > p { & > p {
@ -69,17 +71,20 @@
& > div { & > div {
padding: 5px 10px; padding: 5px 10px;
margin: 5px 0; margin: 5px 0;
background: #dedede; background: @cp_export-error-bg2;
.title { .title {
font-weight: bold; font-weight: bold;
} }
.link { .link {
padding: 0 20px; padding: 0 20px;
font-size: 14px; font-size: 14px;
a {
color: @cp_loading-link;
}
} }
.reason { .reason {
padding: 0 20px; padding: 0 20px;
color: #777; color: @cp_export-hint;
} }
} }
} }

@ -16,7 +16,7 @@
box-sizing: border-box; box-sizing: border-box;
z-index: 100001; //Z file upload table container: just above the file picker z-index: 100001; //Z file upload table container: just above the file picker
display: none; display: none;
color: darken(@colortheme_static_apps[default], 10%); color: @cp_upload-fg;
max-height: 180px; max-height: 180px;
overflow-y: auto; overflow-y: auto;
@ -26,7 +26,7 @@
.cp-fileupload-header { .cp-fileupload-header {
display: flex; display: flex;
background-color: darken(@colortheme_modal-bg, 10%); background-color: @cp_upload-header;
font-weight: bold; font-weight: bold;
position: sticky; position: sticky;
top: 0; top: 0;
@ -39,7 +39,7 @@
padding: 0.25em 0.5em; padding: 0.25em 0.5em;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.1); color: lighten(@cp_upload-fg, 10%);
} }
} }
} }
@ -86,7 +86,7 @@
position: absolute; position: absolute;
width: 0px; width: 0px;
height: 100%; height: 100%;
background-color: #dddddd; background-color: @cp_upload-progress;
z-index: -1; //Z file upload progress container z-index: -1; //Z file upload progress container
} }
.cp-fileupload-table-cancel { .cp-fileupload-table-cancel {

@ -6,24 +6,20 @@
} }
& { & {
@alertify-fore: @colortheme_modal-fg;
@alertify-btn-fg: @alertify-fore;
@alertify-light-bg: fade(@alertify-fore, 25%);
@alertify_padding-base: @variables_padding; @alertify_padding-base: @variables_padding;
@alertify-input-bg: @colortheme_modal-input;
@alertify-input-fg: @colortheme_modal-input-fg;
input:not(.form-control):not([type="checkbox"]), textarea, div.cp-textarea { input:not(.form-control):not([type="checkbox"]), textarea, div.cp-textarea {
// background-color: @alertify-input-fg; // background-color: @alertify-input-fg;
color: @cryptpad_text_col; color: @cp_forms-fg;
border: 1px solid @alertify-input-bg; background-color: @cp_forms-bg;
border: 1px solid @cp_forms-border;
width: 100%; width: 100%;
font-size: 100%; font-size: 100%;
padding: @alertify_padding-base; padding: @alertify_padding-base;
&[readonly] { &[readonly] {
background-color: @alertify-light-bg; background-color: @cp_forms-readonly;
color: @cryptpad_text_col; border-color: @cp_forms-readonly-border;
border-color: @alertify-input-fg; color: @cp_forms-fg;
} }
} }
@ -58,7 +54,6 @@
div.cp-textarea { div.cp-textarea {
height: 60px; height: 60px;
width: 100%; width: 100%;
background-color: white;
cursor: text; cursor: text;
outline: none; outline: none;
white-space: pre-wrap; white-space: pre-wrap;
@ -76,9 +71,9 @@
height: 3px; height: 3px;
& > div { & > div {
height: 100%; height: 100%;
background-color: @colortheme_alertify-primary; background-color: @cp_buttons-primary;
&.danger, &.btn-danger, &.danger-alt, &.btn-danger-alt { &.danger, &.btn-danger, &.danger-alt, &.btn-danger-alt {
background-color: @colortheme_alertify-red; background-color: @cp_buttons-red;
} }
} }
} }
@ -89,7 +84,7 @@
button.btn { button.btn {
background-color: @colortheme_alertify-cancel; background-color: @cp_buttons-cancel;
box-sizing: border-box; box-sizing: border-box;
outline: 0; outline: 0;
align-items: center; align-items: center;
@ -105,86 +100,69 @@
transition: none; transition: none;
.fa, .cptools { .fa, .cptools {
margin-right: 0.2em; margin-right: 5px;
} }
.cptools { .cptools {
vertical-align: middle; vertical-align: middle;
} }
color: @alertify-btn-fg; color: @cp_buttons-fg;
border: 1px solid @alertify-btn-fg; border: 1px solid @cp_buttons-fg;
&.no-margin { &.no-margin {
margin: 0; margin: 0;
} }
&:hover, &:not(:disabled):not(.disabled):active, &:focus { &:hover, &:not(:disabled):not(.disabled):active, &:focus {
color: @alertify-btn-fg; color: @cp_buttons-fg;
border: 1px solid @alertify-btn-fg; border: 1px solid @cp_buttons-fg;
background-color: lighten(@alertify-fore, 35%); background-color: @cp_buttons-hover;
}
&.safe, &.danger, &.btn-safe, &.btn-danger {
color: @colortheme_old-base;
white-space: normal;
font-weight: bold;
} }
&.btn-default { &.btn-default {
border-color: @cryptpad_text_col; border-color: @cp_buttons-default-border;
color: @cryptpad_text_col; color: @cp_buttons-default-color;
&:hover, &:not(:disabled):active, &:focus { &:hover, &:not(:disabled):active, &:focus {
border-color: @cryptpad_text_col; border-color: @cp_buttons-default-border;
color: @cryptpad_text_col; color: @cp_buttons-default-color;
background-color: #ccc; background-color: @cp_buttons-default;
} }
} }
&.danger, &.btn-danger { &.danger, &.btn-danger {
background-color: @colortheme_alertify-red; background-color: @cp_buttons-red;
border-color: @colortheme_alertify-red-border; border-color: @cp_buttons-red-border;
color: @colortheme_alertify-red-color; color: @cp_buttons-red-color;
&:hover, &:not(:disabled):active, &:focus { &:hover, &:not(:disabled):active, &:focus {
border-color: @colortheme_alertify-red-border; border-color: @cp_buttons-red-border;
color: @colortheme_alertify-red-color; color: @cp_buttons-red-color;
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-red, 10%), lighten(@colortheme_alertify-red, 10%)); background-color: contrast(@cp_buttons-red-color, darken(@cp_buttons-red, 10%), lighten(@cp_buttons-red, 10%));
} }
} }
&.danger-alt, &.btn-danger-alt, &.btn-danger-outline { &.danger-alt, &.btn-danger-alt, &.btn-danger-outline {
border-color: @colortheme_alertify-red; border-color: @cp_buttons-red;
color: @colortheme_alertify-red; color: @cp_buttons-red-text;
&:hover, &:not(:disabled):active, &:focus {
border-color: @colortheme_alertify-red;
color: @colortheme_alertify-red-color;
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-red, 10%), lighten(@colortheme_alertify-red, 10%));
}
}
&.safe, &.btn-safe {
background-color: @colortheme_alertify-green;
border-color: @colortheme_alertify-green-border;
color: @colortheme_alertify-green-color;
&:hover, &:not(:disabled):active, &:focus { &:hover, &:not(:disabled):active, &:focus {
border-color: @colortheme_alertify-green-border; border-color: @cp_buttons-red;
color: @colortheme_alertify-green-color; color: @cp_buttons-red-color;
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-green, 10%), lighten(@colortheme_alertify-green, 10%)); background-color: @cp_buttons-red;
} }
} }
&.primary, &.btn-primary, &.btn-success { &.primary, &.btn-primary, &.btn-success {
background-color: @colortheme_alertify-primary; background-color: @cp_buttons-primary;
color: @colortheme_alertify-primary-text; color: @cp_buttons-primary-text;
border-color: @colortheme_alertify-primary-border; border-color: @cp_buttons-primary-border;
font-weight: bold; font-weight: bold;
&:hover, &:not(:disabled):active, &:focus { &:hover, &:not(:disabled):active, &:focus {
color: @colortheme_alertify-primary-text; color: @cp_buttons-primary-text;
border-color: @colortheme_alertify-primary-border; border-color: @cp_buttons-primary-border;
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-primary, 10%), lighten(@colortheme_alertify-primary, 10%)); background-color: contrast(@cp_buttons-primary-text, darken(@cp_buttons-primary, 10%), lighten(@cp_buttons-primary, 10%));
} }
} }
&.btn-light { &.btn-light { // XXX DARK
border-color: @cryptpad_text_col; border-color: @cryptpad_text_col;
color: @cryptpad_text_col; color: @cryptpad_text_col;
background-color: transparent; background-color: transparent;
@ -196,12 +174,12 @@
} }
&.cancel, &.btn-cancel { &.cancel, &.btn-cancel {
border-color: @colortheme_alertify-cancel-border; border-color: @cp_buttons-cancel-border;
color: @colortheme_alertify-cancel-border; color: @cp_buttons-cancel-border;
&:hover, &:not(:disabled):active, &:focus { &:hover, &:not(:disabled):active, &:focus {
border-color: @colortheme_alertify-cancel-border; border-color: @cp_buttons-cancel-border;
color: @colortheme_alertify-cancel-border; color: @cp_buttons-cancel-border;
background-color: fade(@colortheme_alertify-cancel-border, 25%); background-color: fade(@cp_buttons-cancel-border, 25%);
} }
} }
&.btn-register { &.btn-register {
@ -212,7 +190,7 @@
&:focus { &:focus {
//border: 1px dotted @alertify-base; //border: 1px dotted @alertify-base;
box-shadow: 0px 0px 5px @colortheme_alertify-primary !important; box-shadow: 0px 0px 5px @cp_buttons-primary !important;
outline: none; outline: none;
} }
&::-moz-focus-inner { &::-moz-focus-inner {
@ -221,11 +199,66 @@
&:disabled { &:disabled {
cursor: not-allowed !important; cursor: not-allowed !important;
background-color: @colortheme_alertify-disabled; background-color: @cp_buttons-disabled;
color: @colortheme_alertify-disabled-text; color: @cp_buttons-disabled-text;
border-color: @colortheme_alertify-disabled-border; border-color: @cp_buttons-disabled-border;
&:hover, &:active { &:hover, &:active {
background-color: @colortheme_alertify-disabled; background-color: @cp_buttons-disabled;
}
}
}
// Bootstrap Alerts
.alert {
margin: 0px 0px @alertify_padding-base 0px;
font-size: 12px;
padding: 5px;
border-radius: 0px;
i {
margin-right: 10px;
}
&.cp-alert-top {
margin-top: @alertify_padding-base;
}
a {
color: @cryptpad_text_col;
text-decoration: underline;
}
&.alert-primary {
background-color: fade(@cryptpad_color_brand, 15%);
color: @cp_alertify-fg;
border-color: @cp_alertify-fg;
a {
color: @cp_alertify-fg;
text-decoration: underline;
}
}
&.alert-warning {
background-color: @cp_alerts-warning-bg;
color: @cp_alerts-warning-text;
border-color: @cp_alerts-warning-fg;
}
&.alert-danger {
background-color: @cp_alerts-danger-bg;
color: @cp_alerts-danger-text;
border-color: @cp_alerts-danger-fg;
}
&.alert-info {
background-color: @cp_alerts-info-bg;
color: @cp_alerts-info-text;
border-color: @cp_alerts-info-fg;
}
&.alert-success {
background-color: @cp_alerts-success-bg;
color: @cp_alerts-success-text;
border-color: @cp_alerts-success-fg;
}
&.dismissable {
display: flex;
align-items: center;
span.fa-times {
font-size: @colortheme_app-font-size;
margin-left: 20px;
cursor: pointer;
} }
} }
} }

@ -44,7 +44,7 @@
.checkmark_main(20px); .checkmark_main(20px);
.password_main(); .password_main();
.messenger_main( .messenger_main(
@bg-color: @colortheme_pad-chat-bg @bg-color: @cp_messenger-bg
); );
.cursor_main(); .cursor_main();
.usergrid_main(); .usergrid_main();

@ -7,7 +7,7 @@
.cp-help-container { .cp-help-container {
position: relative; position: relative;
background-color: @colortheme_help-bg; background-color: @cp_help-bg;
max-height: 50%; max-height: 50%;
overflow-y: auto; overflow-y: auto;
&.cp-help-hidden { &.cp-help-hidden {
@ -16,16 +16,18 @@
.cp-help-close { .cp-help-close {
position: absolute; position: absolute;
color: @cryptpad_text_col;
top: 5px; top: 5px;
right: 5px; right: 5px;
cursor: pointer; cursor: pointer;
} }
.cp-help-text { .cp-help-text {
color: @cryptpad_text_col; color: @cp_help-fg;
margin: 0; margin: 0;
padding: 5px 15px; padding: 5px 15px;
a { a {
color: @colortheme_link-color; color: @cp_help-link;
text-decoration: underline;
} }
h1 { h1 {
font-size: 20px; font-size: 20px;

@ -10,6 +10,7 @@
text-overflow: ellipsis; text-overflow: ellipsis;
padding-top: 5px; padding-top: 5px;
padding-bottom: 5px; padding-bottom: 5px;
border: 1px solid transparent;
.cp-icons-name { .cp-icons-name {
width: 100%; width: 100%;
@ -22,11 +23,11 @@
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
word-wrap: break-word; word-wrap: break-word;
color: @cryptpad_text_col; color: @cp_drive-fg;
} }
&.cp-icons-element-selected { &.cp-icons-element-selected {
background-color: rgba(0,0,0,0.2); background: @cp_drive-icon-hover;
color: #666; color: @cp_drive-fg;
} }
.fa, .cptools { .fa, .cptools {
display: block; display: block;
@ -39,4 +40,3 @@
} }
} }
} }

@ -3,7 +3,7 @@
.infopages_link () { .infopages_link () {
text-decoration: none; text-decoration: none;
color: #0275D8; color: @cryptpad_color_link;
cursor: pointer; cursor: pointer;
display: inline-flex; display: inline-flex;
&:hover { &:hover {
@ -11,23 +11,23 @@
} }
} }
.cp-shadow() { .cp-shadow() {
box-shadow: 0px 0px 25px 0px rgba(0, 0, 0, 0.34); box-shadow: 0px 0px 25px 0px @cp_shadow-color;
} }
.infopages_main () { .infopages_main () {
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
} }
body { body.html {
.font_main(); .font_main();
@infopages_infobar-height: 64px; @infopages_infobar-height: 64px;
@infopages_padding: 32px; @infopages_padding: 32px;
// Basic setup for info pages, this should be used at the global level // Basic setup for info pages, this should be used at the global level
background-color: @colortheme_info-background; background-color: @cp_static-bg;
color: @cryptpad_text_col; color: @cp_static-fg;
a { a {
color: @colortheme_logo-2; color: @cp_static-link;
&:visited { color: darken(@colortheme_logo-2, 5%); } &:visited { color: darken(@cp_static-link, 5%); }
} }
a:hover { a:hover {
opacity: 1; opacity: 1;
@ -77,33 +77,48 @@ body {
.cp-page-title { .cp-page-title {
h1 { h1 {
font-family: "IBM Plex Mono"; font-family: "IBM Plex Mono";
color: @colortheme_logo-2; color: @cp_static-title;
margin: 50px auto; margin: 50px auto;
} }
} }
p {
a {
text-decoration: underline;
}
}
.row.cp-page-section { .row.cp-page-section {
margin: 50px 0px; margin: 50px 0px;
a {
text-decoration: underline;
}
.small-logo {
max-width: 40%;
}
} }
img.cp-shadow { img.cp-shadow {
.cp-shadow(); .cp-shadow();
} }
img.cp-img-invert {
filter: @cp_static-img-invert-filter;
}
button { button {
outline: none; outline: none;
background-color: @colortheme_logo-2; background-color: @cp_buttons-primary;
color: @colortheme_base; color: @cp_buttons-primary-text;
border: none; border: none;
padding: 10px 20px; padding: 10px 20px;
margin-right: 10px;
border-radius: 0px; border-radius: 0px;
cursor: pointer; cursor: pointer;
&:hover, &:focus { &:hover, &:focus {
background-color: darken(@colortheme_logo-2, 5%); background-color: contrast(@cp_buttons-primary-text, darken(@cp_buttons-primary, 10%), lighten(@cp_buttons-primary, 10%));
} }
} }
button.cp-secondary { button.cp-secondary {
background-color: white; background-color: @cp_buttons-cancel;
color: @colortheme_logo-2; color: @cp_buttons-fg;
border: 1px solid @colortheme_logo-2; border: 1px solid @cp_buttons-fg;
} }
.form-group { .form-group {
@ -127,19 +142,18 @@ body {
} }
} }
footer { footer {
@footer-color: #d9d9d9; // XXX use/make variable
background-color: @footer-color; background-color: @cp_static-footer;
padding-top: 20px; padding-top: 20px;
align-self: normal; // override align-items:center from parent in index.html align-self: normal; // override align-items:center from parent in index.html
.container { .container {
margin-bottom: 20px; margin-bottom: 20px;
a { a {
color: @colortheme_logo-2; color: @cp_static-link;
&:visited { &:visited {
color: @colortheme_logo-2; color: @cp_static-link;
}; }
} }
} }
.cp-logo-foot { .cp-logo-foot {
@ -155,18 +169,18 @@ body {
display: block; display: block;
font-family: "IBM Plex Mono"; font-family: "IBM Plex Mono";
font-size: 1.5rem; font-size: 1.5rem;
color: @colortheme_logo-2; color: @cp_static-title;
margin-bottom: 10px; margin-bottom: 10px;
} }
} }
.cp-version-footer { .cp-version-footer {
background-color: @footer-color; background-color: @cp_static-footer;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
align-items: center; align-items: center;
padding: 0.5em; padding: 0.5em;
border-top: 1px solid #fff; border-top: 1px solid @cp_static-footer-border;
select { select {
min-width: 0; min-width: 0;
margin-bottom: 10px; margin-bottom: 10px;
@ -174,47 +188,10 @@ body {
} }
} }
// Apply this to the top bar div
.cp-topbar {
background: #fff;
z-index: 10000; //Z infopage toolbar
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 {
margin-right: 0.5em;
}
}
// navigation top bar // navigation top bar
.navbar { .navbar {
width: 100%; width: 100%;
color: @colortheme_logo-2; color: @cp_static-topbar-fg;
.navbar-brand { .navbar-brand {
display: block; display: block;
height: 50px; height: 50px;
@ -233,18 +210,17 @@ body {
a { a {
border: 2px solid transparent; border: 2px solid transparent;
white-space: nowrap; white-space: nowrap;
&:visited { color: @cp_static-title;
color: @colortheme_logo-2;
}
} }
.nav-link { .nav-link {
padding: 0.5em 0.7em; padding: 0.5em 0.7em;
color: @cp_static-link;
&:hover { &:hover {
color: @cryptpad_text_col; color: @cryptpad_text_col;
} }
} }
.cp-register-btn { .cp-register-btn {
border: 2px solid @colortheme_logo-2; border: 2px solid @cp_static-topbar-fg;
display: inline-block; display: inline-block;
} }
button:focus { button:focus {
@ -252,7 +228,7 @@ body {
} }
.navbar-toggler { .navbar-toggler {
margin-top: 10px; margin-top: 10px;
color: @colortheme_logo-2; color: @cp_static-topbar-fg;
} }
} }
@media (max-width: 1000px) { @media (max-width: 1000px) {

@ -18,6 +18,6 @@
background: rgba(0,0,0,0.05); background: rgba(0,0,0,0.05);
} }
&.cp-leftside-active { &.cp-leftside-active {
background: @colortheme_sidebar-active; background: @cp_sidebar-left-active;
} }
} }

@ -18,7 +18,7 @@
margin: 5px; margin: 5px;
box-sizing: border-box; box-sizing: border-box;
border-radius: 3px; border-radius: 3px;
background: white; background: @cp-limit-bar-bg;
position: relative; position: relative;
text-align: center; text-align: center;
width: ~"calc(100% - 10px)"; width: ~"calc(100% - 10px)";
@ -32,20 +32,21 @@
left: 0; left: 0;
top: 0; top: 0;
z-index: 1; // .usage z-index: 1; // .usage
// XXX Check if we can keep the same colors in dark themes
&.cp-limit-usage-normal { &.cp-limit-usage-normal {
background: @colortheme_green; background: @cp-limit-bar-normal;
} }
&.cp-limit-usage-warning { &.cp-limit-usage-warning {
background: orange; background: @cp-limit-bar-warning;
} }
&.cp-limit-usage-above { &.cp-limit-usage-above {
background: red; background: @cp-limit-bar-above;
} }
} }
} }
.cp-limit-usage-text { .cp-limit-usage-text {
color: @cryptpad_text_col; color: @cp_limit-fg;
margin-left: 5px; margin-left: 5px;
z-index: 2; // .usageText z-index: 2; // .usageText
font-size: @colortheme_app-font-size-small; font-size: @colortheme_app-font-size-small;
@ -66,6 +67,7 @@
padding-bottom: 0; padding-bottom: 0;
justify-content: center; justify-content: center;
flex: 1; flex: 1;
border-radius: 0px;
} }
} }
} }

@ -0,0 +1,212 @@
@import (reference) "./colortheme-all.less";
@import (reference) "./password-input.less";
@import (reference) "./forms.less";
@import (reference) "./tools.less";
#cp-loading {
@font-face {
font-family: 'Open Sans';
src: url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.eot');
src: url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.woff') format('woff'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.ttf') format('truetype'),
url('/bower_components/open-sans-fontface/fonts/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg');
font-weight: normal;
font-style: normal;
}
.password_main();
.forms_main();
visibility: visible;
position: fixed;
z-index: 10000000;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
background-color: @cp_loading-bg;
color: @cp_loading-fg;
font-size: 1.3em;
line-height: 120%;
opacity: 1;
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
font: 20px 'Open Sans', 'Helvetica Neue', sans-serif !important;
&.cp-loading-transparent {
background-color: fade(@cp_loading-bg, 70%);
}
&.cp-loading-hidden {
opacity: 0;
visibility: hidden;
transition: opacity 0.75s, visibility 0s 0.75s;
}
.cp-loading-logo {
height: 300px;
width: 300px;
margin-top: 50px;
flex: 0 1 auto;
min-height: 0;
text-align: center;
}
.cp-loading-logo img {
max-width: 100%;
max-height: 100%;
}
.cp-loading-container {
width: 700px;
max-width: 90vw;
height: 236px;
max-height: calc(100vh - 20px);
margin: 50px;
flex-shrink: 0;
display: flex;
flex-flow: column;
align-items: center;
}
.cp-loading-cryptofist {
margin-left: auto;
margin-right: auto;
max-width: 90vw;
max-height: 300px;
width: auto;
height: auto;
margin-bottom: 2em;
}
@media screen and (max-width: 500px) {
font-size: 16px !important;
.cp-loading-container {
height: 206px;
}
}
@media screen and (max-height: 700px) {
font-size: 16px !important;
.cp-loading-container {
height: 206px;
}
}
@media screen and (max-height: 500px) {
.cp-loading-logo {
display: none;
}
}
#cp-loading-message {
background: @cp_loading-msg-bg;
padding: 20px;
width: 100%;
color: @cp_loading-fg;
text-align: left;
display: none;
a {
color: @cp_loading-link;
}
}
#cp-loading-password-prompt {
p.cp-password-error {
color: @cp_loading-error-fg;
background: @cp_loading-error-bg;
padding: 5px;
margin-bottom: 15px;
}
.cp-password-form {
display: flex;
flex-wrap: wrap;
width: 100%;
.cp-password-container {
flex-shrink: 1;
min-width: 0;
}
.cp-password-reveal {
padding: 0px 24px;
}
}
.cp-password-input {
font-size: 16px;
}
.tools_placeholder-color();
}
p.cp-password-info {
text-align: left;
margin-bottom: 15px;
}
.cp-loading-spinner-container {
position: relative;
height: 80px;
margin-bottom: 50px;
}
.cp-loading-progress {
width: 100%;
text-align: center;
p {
margin: 5px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.cp-loading-progress-list {
text-align: left;
display: inline-block;
margin-bottom: 50px;
max-width: 100%;
ul {
list-style: none;
padding-left: 0;
margin: 0;
}
li {
padding: 0px 5px;
.tools_unselectable();
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
i {
width: 22px;
}
span {
margin-left: 10px;
&.percent {
position: absolute;
}
}
}
}
.cp-loading-progress-bar {
height: 24px;
background: @cp_loading-progress-bg;
border: 1px solid @cp_loading-progress-bar-bg;
}
.cp-loading-progress-bar-value {
height: 100%;
background: @cp_loading-progress-bar-bg;
}
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(1800deg);
}
}
.cp-spinner {
display: inline-block;
box-sizing: border-box;
width: 80px;
height: 80px;
border: 11px solid @cp_loading-spinner;
border-radius: 50%;
border-top-color: transparent;
animation: spin infinite 3s;
animation-timing-function: cubic-bezier(.6,0.15,0.4,0.85);
}
}

@ -1,16 +1,13 @@
@import (reference) "./tools.less"; @import (reference) "./tools.less";
.markdown_main() { .markdown_main() {
@nice-grey: #f3f3f3;
@accent-grey: rgba(0, 0, 0, 0.2);
hr { hr {
border-top: 1px solid @accent-grey; border-top: 1px solid @cp_markdown-border;
} }
blockquote { blockquote {
background: @nice-grey; background: @cp_markdown-bg;
background: rgba(144, 144, 144, 0.2);
padding: 10px; padding: 10px;
border-left: 2px solid @accent-grey; border-left: 2px solid @cp_markdown-border;
padding-right: 0; padding-right: 0;
p { margin: 0; } p { margin: 0; }
blockquote { margin: 0; } blockquote { margin: 0; }
@ -21,7 +18,7 @@
// todo ul, ol // todo ul, ol
// TOC // TOC
div.cp-md-toc { div.cp-md-toc {
background: @nice-grey; background: @cp_markdown-bg;
padding: 20px; padding: 20px;
* { * {
margin: 5px; margin: 5px;
@ -57,7 +54,7 @@
} }
div.plain-text-reader { div.plain-text-reader {
background: #f3f3f3; background: @cp_markdown-bg;
padding: 10px; padding: 10px;
color: black; color: black;
text-align: left; text-align: left;
@ -111,7 +108,7 @@
width: 100px; width: 100px;
height: 100px; height: 100px;
display: inline-block; display: inline-block;
border: 1px solid #BBB; border: 1px solid @cp_markdown-border;
} }
} }
@ -121,7 +118,7 @@
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
font-weight: bold; font-weight: bold;
padding-bottom: 0.3em; padding-bottom: 0.3em;
border-bottom: 1px solid #eee; border-bottom: 1px solid @cp_markdown-border;
} }
li { li {
min-height: 22px; min-height: 22px;
@ -139,7 +136,7 @@
.mediatag_cryptpad(); .mediatag_cryptpad();
pre.markmap { pre.markmap {
border: 1px solid #ddd; border: 1px solid @cp_markdown-border;
svg { svg {
height: 400px; height: 400px;
} }
@ -151,31 +148,56 @@
.tools_unselectable(); .tools_unselectable();
} }
} }
// XXX apply the styles below in modals-ui-elements.less
pre.mermaid[mermaid-source^="pie"] { // XXX
g.legend text, text.pieTitleText {
fill: @cp_markdown-contrast-fg;
}
}
pre.mermaid[mermaid-source^="gantt"] { // XXX
background-color: @cp_markdown-contrast-bg;
background-color: #444;
text.titleText {
fill: @cp_markdown-contrast-fg;
}
}
/* make sure markmap text shows up in dark mode */
pre.markmap svg { // XXX
color: @cp_markdown-contrast-fg;
}
pre.mathjax { // XXX
background-color: @cp_markdown-contrast-bg;
}
} }
.markdown_preformatted-code (@color: #333) { .markdown_preformatted-code () {
pre > code { pre > code {
display: block; display: block;
position: relative; position: relative;
border: 1px solid @color; border: 1px solid @cp_markdown-border;
width: 90%; width: 90%;
margin: auto; margin: auto;
padding-left: .25vw; padding-left: .25vw;
overflow-x: auto; overflow-x: auto;
overflow-y: hidden; overflow-y: hidden;
background-color: @cp_markdown-contrast-bg; // XXX
} }
} }
.markdown_gfm-table (@color: black) { .markdown_gfm-table () {
table { table {
border-collapse: collapse; border-collapse: collapse;
tr { tr {
th { th {
border: 1px solid @color;
padding: 15px; padding: 15px;
} }
td { th, td {
border: 1px solid @color; border: 1px solid @cp_markdown-border; // XXX
} }
} }
} }

@ -12,7 +12,7 @@
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
vertical-align: bottom; vertical-align: bottom;
background-color: #eee; background-color: @cp_mentions-bg;
span.cp-mentions-name { span.cp-mentions-name {
max-width: 150px; max-width: 150px;
@ -25,7 +25,7 @@
outline: none; outline: none;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: #ddd; background-color: @cp_mentions-hover;
} }
} }
} }

@ -2,17 +2,20 @@
@import (reference) "./colortheme-all.less"; @import (reference) "./colortheme-all.less";
.messenger_vars ( .messenger_vars (
@bg-color: @colortheme_static_apps[contacts], // color of the toolbar background @bg-color: @cp_messenger-bg,
) { ) {
@msg-color: @cryptpad_text_col; @msg-color: @cryptpad_text_col;
@msg-color-hover: contrast(@msg-color, lighten(@msg-color, 10%), darken(@msg-color, 10%));
@msg-bg-color: @bg-color; @msg-bg-color: @bg-color;
@msg-bg-color-light: lighten(@bg-color, 15%); @invert: @bg-color;
@msg-bg-color-lighter: lighten(@bg-color, 20%); // XXX Adjust chat colors
@msg-bg-color-dark: darken(@bg-color, 10%); @msg-bg-color-light: contrast(@invert, lighten(@bg-color, 5%), darken(@bg-color, 5%));
@msg-bg-color-darker: darken(@bg-color, 20%); @msg-bg-color-lighter: contrast(@invert, lighten(@bg-color, 10%), darken(@bg-color, 10%));
@msg-bg-color-dark: contrast(@bg-color, lighten(@bg-color, 5%), darken(@bg-color, 5%));
@msg-bg-color-darker: contrast(@bg-color, lighten(@bg-color, 10%), darken(@bg-color, 10%));
}; };
.messenger_main( .messenger_main(
@bg-color: @colortheme_static_apps[contacts], // color of the toolbar background @bg-color: @cp_messenger-bg,
) { ) {
--LessLoader_require: LessLoader_currentFile(); --LessLoader_require: LessLoader_currentFile();
.messenger_vars(@bg-color); .messenger_vars(@bg-color);
@ -26,13 +29,13 @@
& { & {
@keyframes notif { @keyframes notif {
0% { 0% {
background: rgba(0,0,0,0.1); background: fade(@cp_messenger-notif, 10%);
} }
50% { 50% {
background: rgba(0,0,0,0.3); background: fade(@cp_messenger-notif, 30%);
} }
100% { 100% {
background: rgba(0,0,0,0.1); background: fade(@cp_messenger-notif, 10%);
} }
} }
@ -46,6 +49,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
min-height: 0; min-height: 0;
color: @cp_messenger-fg;
&.ready { &.ready {
background-size: cover; background-size: cover;
background-position: center; background-position: center;
@ -58,7 +62,7 @@
.cp-app-contacts-initializing { .cp-app-contacts-initializing {
.cp-app-contacts-spinner { .cp-app-contacts-spinner {
color: white; color: @cp_messenger-fg;
display: block; display: block;
} }
.cp-app-contacts-info { .cp-app-contacts-info {
@ -77,11 +81,14 @@
height: 100%; height: 100%;
background-color: @msg-bg-color; background-color: @msg-bg-color;
background-color: var(--msg-bg-color); background-color: var(--msg-bg-color);
color: @msg-color;
color: var(--msg-color);
overflow-y: auto; overflow-y: auto;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
.cp-app-contacts-friend { .cp-app-contacts-friend {
background: rgba(0,0,0,0.1); background-color: @msg-bg-color-dark;
background-color: var(--msg-bg-color-dark);
padding: 5px; padding: 5px;
margin: 10px; margin: 10px;
margin-bottom: 0; margin-bottom: 0;
@ -94,16 +101,19 @@
flex-flow: column; flex-flow: column;
flex: 1; flex: 1;
min-width: 0; min-width: 0;
color: @colortheme_base;
.cp-app-contacts-name { .cp-app-contacts-name {
white-space: nowrap; white-space: nowrap;
} }
.cp-app-contacts-icons { .cp-app-contacts-icons {
text-align: right; text-align: right;
& > span:hover {
color: @msg-color-hover;
}
} }
} }
&:hover { &:hover {
background-color: rgba(0,0,0,0.3); background-color: @msg-bg-color-darker;
background-color: var(--msg-bg-color-darker);
} }
&.cp-app-contacts-notify { &.cp-app-contacts-notify {
animation: notif 2s ease-in-out infinite; animation: notif 2s ease-in-out infinite;
@ -114,7 +124,7 @@
width: 20px; width: 20px;
text-align: center; text-align: center;
&:hover { &:hover {
color: @cryptpad_text_col; color: @msg-color-hover;
} }
} }
@ -128,7 +138,8 @@
font-size: 18px; font-size: 18px;
margin: 0px 5px; margin: 0px 5px;
text-align: center; text-align: center;
background: rgba(0,0,0,0.1); background-color: @msg-bg-color-dark;
background-color: var(--msg-bg-color-dark);
font-weight: bold; font-weight: bold;
height: 22px; height: 22px;
line-height: 22px; line-height: 22px;
@ -172,28 +183,6 @@
#cp-app-contacts-container.cp-app-contacts-inapp { #cp-app-contacts-container.cp-app-contacts-inapp {
#cp-app-contacts-friendlist { #cp-app-contacts-friendlist {
display: none; display: none;
/*
transition: width 0.2s ease-in-out 0.2s;
width: 68px;
.cp-app-contacts-friend {
.cp-app-contacts-right-col {
overflow: hidden;
}
}
.cp-app-contacts-category-title {
transition: font-size 0.2s ease-in-out 0.2s;
margin: 0px 2px;
font-size: 16px;
}
&:hover {
transition-delay: 1.5s;
width: 200px !important;
.cp-app-contacts-category-title {
transition-delay: 1.5s;
font-size: 18px;
}
}
*/
} }
} }
@ -216,21 +205,8 @@
margin: 4px; margin: 4px;
} }
.cp-app-contacts-status { .cp-app-contacts-status {
//width: 5px;
display: inline-block; display: inline-block;
position: absolute; position: absolute;
//right: 0;
//top: 0;
//bottom: 0;
//opacity: 0.7;
//background-color: #777;
/* width: (@room-height - 6px);
top: 3px;
bottom: 3px;
left: 3px;
border-radius: 100%;
*/
width: 10px; width: 10px;
height: 10px; height: 10px;
top: 0; top: 0;
@ -238,50 +214,27 @@
border-bottom-left-radius: 100%; border-bottom-left-radius: 100%;
&.cp-app-contacts-online { &.cp-app-contacts-online {
//background-color: green; background-color: @cp_messenger-online;
//background-color: white;
background-color: #c5ffa8;
} }
&.cp-app-contacts-offline { &.cp-app-contacts-offline {
display: none; display: none;
//background-color: red;
} }
} }
} }
.placeholder (@color: #bbb) {
&::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: @color;
}
&:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: @color;
opacity: 1;
}
&::-moz-placeholder { /* Mozilla Firefox 19+ */
color: @color;
opacity: 1;
}
&:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: @color;
}
&::-ms-input-placeholder { /* Microsoft Edge */
color: @color;
}
}
#cp-app-contacts-messaging { #cp-app-contacts-messaging {
flex: 1; flex: 1;
height: 100%; height: 100%;
background-color: @msg-bg-color-lighter; background-color: @msg-bg-color-light;
background-color: var(--msg-bg-color-lighter); background-color: var(--msg-bg-color-light);
min-width: 0; min-width: 0;
.cp-app-contacts-info { .cp-app-contacts-info {
padding: 20px; padding: 20px;
} }
.cp-app-contacts-header { .cp-app-contacts-header {
background-color: @msg-bg-color; background-color: @msg-bg-color-dark;
background-color: var(--msg-bg-color); background-color: var(--msg-bg-color-dark);
padding: 0; padding: 0;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -293,7 +246,8 @@
line-height: 30px; line-height: 30px;
padding: 10px; padding: 10px;
&:hover { &:hover {
background-color: rgba(50,50,50,0.3); background-color: @msg-bg-color-darker;
background-color: var(--msg-color-darker);
} }
} }
@ -409,23 +363,20 @@
border: none; border: none;
height: 54px; // 2 lines (22px height) + 2 margins (5px) height: 54px; // 2 lines (22px height) + 2 margins (5px)
flex: 1; flex: 1;
background-color: white; background-color: @cp_forms-bg;
color: @cryptpad_text_col; color: @cp_forms-fg;
//background-color: @msg-bg-color-dark;
//background-color: var(--msg-bg-color-dark);
//color: @msg-color;
resize: none; resize: none;
overflow-y: auto; overflow-y: auto;
.placeholder(#999); .tools_placeholder-color();
&[disabled="true"] { &[disabled="true"] {
.placeholder(#666); .tools_placeholder-color();
} }
} }
button { button {
height: 54px !important; height: 54px !important;
border-radius: 0; border-radius: 0;
border: none; border: none;
color: #eee; color: @cp_messenger-fg;
background-color: @msg-bg-color-darker; background-color: @msg-bg-color-darker;
background-color: var(--msg-bg-color-darker); background-color: var(--msg-bg-color-darker);
&:hover { &:hover {

@ -4,15 +4,15 @@
.modal_base() { .modal_base() {
font-family: @colortheme_font; font-family: @colortheme_font;
background-color: @colortheme_modal-bg; background-color: @cp_alertify-bg;
color: @colortheme_modal-fg; color: @cp_alertify-fg;
box-shadow: @variables_shadow; box-shadow: @variables_shadow;
a { a {
color: @colortheme_modal-link; color: @cryptpad_color_link;
&:visited { &:visited {
color: @colortheme_modal-link-visited; color: @cryptpad_color_link;
} }
} }
} }
@ -33,11 +33,11 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
background-color: @colortheme_modal-dim; background-color: @cp_alertify-overlay;
.cp-modal { .cp-modal {
background-color: @colortheme_modal-bg; background-color: @cp_alertify-bg;
color: @colortheme_modal-fg; color: @cp_alertify-fg;
box-shadow: @variables_shadow; box-shadow: @variables_shadow;
padding: @variables_padding; padding: @variables_padding;
@ -71,16 +71,10 @@
} }
input { input {
background-color: @colortheme_modal-input;
color: @colortheme_modal-input-fg;
border: 0;
padding: 8px 12px; padding: 8px 12px;
margin: 1em; margin: 1em;
width: 300px; width: 300px;
&[type="text"] { &[type="text"] {
background-color: @colortheme_modal-input-fg;
color: @cryptpad_text_col;
border: 1px solid @colortheme_modal-input;
width: auto; width: auto;
} }
} }

@ -38,25 +38,19 @@
// Properties modal // Properties modal
.cp-app-prop { .cp-app-prop {
margin-bottom: 10px; margin-bottom: 10px;
.cp-app-prop-hint {
color: @cryptpad_text_col;
font-size: 0.8em;
margin-bottom: 5px;
}
.cp-app-prop-size-container { .cp-app-prop-size-container {
height: 20px; height: 20px;
background-color: @colortheme_logo-2; background-color: @cryptpad_color_brand;
margin: 10px 0; margin: 10px 0;
padding: 0; padding: 0;
div { div {
height: 20px; height: 20px;
margin: 0; margin: 0;
padding: 0; padding: 0;
background-color: #CCCCCC; background-color: @cryptpad_color_grey_500;
} }
} }
.cp-app-prop-size-legend { .cp-app-prop-size-legend {
color: @colortheme_modal-fg;
display: flex; display: flex;
margin: 10px 0; margin: 10px 0;
& > div { & > div {
@ -73,10 +67,10 @@
margin-right: 10px; margin-right: 10px;
} }
.cp-app-prop-history-size-color { .cp-app-prop-history-size-color {
background-color: #CCCCCC; background-color: @cryptpad_color_grey_500;
} }
.cp-app-prop-contents-size-color { .cp-app-prop-contents-size-color {
background-color: @colortheme_logo-2; background-color: @cryptpad_color_brand;
} }
} }
} }
@ -108,7 +102,7 @@
position: relative; position: relative;
.cp-overlay { .cp-overlay {
position: absolute; position: absolute;
background-color: rgba(255,255,255,0.5); background-color: @cp_access-overlay;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
@ -200,7 +194,7 @@
.cp-snapshot-buttons { .cp-snapshot-buttons {
display: flex; display: flex;
} }
background-color: #DDD; background-color: @cp_snapshots-hover;
} }
} }
} }
@ -255,7 +249,7 @@
} }
} }
.cp-spinner { .cp-spinner {
border-color: @colortheme_logo-1; border-color: @cryptpad_color_brand;
border-top-color: transparent; border-top-color: transparent;
} }
} }

@ -22,7 +22,7 @@
padding: 0 5px; padding: 0 5px;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.1); background-color: @cp_dropdown-bg-hover;
} }
} }
.cp-notification-content { .cp-notification-content {
@ -35,19 +35,19 @@
&.cp-clickable { &.cp-clickable {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.1); background-color: @cp_dropdown-bg-hover;
} }
} }
} }
.cp-notification-dismiss { .cp-notification-dismiss {
color: black; color: @cp_dropdown-fg;
width: 25px; width: 25px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.1); background-color: @cp_dropdown-bg-hover;
} }
} }
} }
@ -59,7 +59,7 @@
font-weight: bold; font-weight: bold;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.1); background-color: @cp_dropdown-bg-hover;
} }
} }
} }

@ -18,7 +18,7 @@
justify-content: center; justify-content: center;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: darken(@colortheme_alertify-primary, 10%); color: darken(@cryptpad_color_brand, 10%);
} }
} }
} }

@ -13,20 +13,15 @@
} }
} }
& { & {
@leftside-bg: @colortheme_sidebar-left-bg;
@leftside-color: @colortheme_sidebar-left-fg;
@rightside-color: @colortheme_sidebar-right-fg;
@description-color: @colortheme_sidebar-description;
#cp-sidebarlayout-container { #cp-sidebarlayout-container {
font-size: 16px; font-size: 16px;
display: flex; display: flex;
flex: 1; flex: 1;
min-height: 0; min-height: 0;
#cp-sidebarlayout-leftside { #cp-sidebarlayout-leftside {
color: @leftside-color; color: @cp_sidebar-left-fg;
width: 250px; width: 250px;
background: @leftside-bg; background: @cp_sidebar-left-bg;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
.cp-sidebarlayout-categories { .cp-sidebarlayout-categories {
@ -71,12 +66,16 @@
#cp-sidebarlayout-rightside { #cp-sidebarlayout-rightside {
flex: 1; flex: 1;
padding: 5px 20px; padding: 5px 20px;
color: @rightside-color; background: @cp_sidebar-right-bg;
color: @cp_sidebar-right-fg;
overflow: auto; overflow: auto;
padding-bottom: 200px; padding-bottom: 200px;
// Following rules are only in settings // Following rules are only in settings
.cp-sidebarlayout-element { .cp-sidebarlayout-element {
pre {
color: @cryptpad_text_col; // XXX
}
label:not(.noTitle), .label { label:not(.noTitle), .label {
display: block; display: block;
font-weight: bold; font-weight: bold;
@ -84,7 +83,7 @@
} }
.cp-sidebarlayout-description { .cp-sidebarlayout-description {
display: block; display: block;
color: @description-color; color: @cp_sidebar-hint;
margin-bottom: 5px; margin-bottom: 5px;
p { p {
margin-bottom: 0; margin-bottom: 0;
@ -111,7 +110,7 @@
input { input {
flex: 1; flex: 1;
//border-radius: 0.25em 0 0 0.25em; //border-radius: 0.25em 0 0 0.25em;
border: 1px solid #adadad; border: 1px solid @cryptpad_color_neutral_grey;
border-right: 0px; border-right: 0px;
} }
button { button {
@ -131,38 +130,6 @@
span.cp-password-container { span.cp-password-container {
margin-bottom: 1px; margin-bottom: 1px;
} }
/*
button.btn {
@button-bg: @colortheme_sidebar-button-bg;
@button-red-bg: @colortheme_sidebar-button-red-bg;
@button-alt-bg: @colortheme_sidebar-button-alt-bg;
background-color: @button-bg;
border-color: darken(@button-bg, 10%);
color: white;
.fa {
margin-right: 0.2em;
}
&:hover {
background-color: darken(@button-bg, 10%);
}
&.btn-secondary {
background-color: @button-alt-bg;
border-color: darken(@button-alt-bg, 10%);
color: black;
&:hover {
background-color: darken(@button-alt-bg, 10%);
}
}
&.btn-danger {
background-color: @button-red-bg;
border-color: darken(@button-red-bg, 10%);
color: white;
&:hover {
background-color: darken(@button-red-bg, 10%);
}
}
}
*/
} }
@media screen and (max-width: @browser_media-medium-screen) { @media screen and (max-width: @browser_media-medium-screen) {
flex-flow: column; flex-flow: column;

@ -1,8 +1,8 @@
@import (reference) "./colortheme-all.less"; @import (reference) "./colortheme-all.less";
.support_main () { .support_main () {
@ticket-bg: #F7F7F7; @ticket-bg: @cp_support-bg;
@msg-bg: #eee; @msg-bg: @cp_support-msg-bg;
@fromme-bg: #ddd; @fromme-bg: @cp_support-header-bg;
.cp-support-form-container { .cp-support-form-container {
div { div {
margin-bottom: 10px; margin-bottom: 10px;
@ -11,6 +11,9 @@
width: @sidebar_button-width; width: @sidebar_button-width;
margin-bottom: 10px; margin-bottom: 10px;
} }
hr {
border-color: @msg-bg;
}
textarea { textarea {
width: 2*@sidebar_button-width; width: 2*@sidebar_button-width;
max-width: 90%; max-width: 90%;
@ -25,7 +28,7 @@
margin-right: 10px; margin-right: 10px;
} }
&> span { &> span {
border: 1px solid #ddd; border: 1px solid @fromme-bg;
margin-right: 5px; margin-right: 5px;
padding: 10px; padding: 10px;
} }
@ -58,6 +61,7 @@
float: right; float: right;
} }
pre { pre {
color: @cp_support-msg-fg;
margin-bottom: 0; margin-bottom: 0;
white-space: pre-wrap; white-space: pre-wrap;
&.cp-support-message-content { &.cp-support-message-content {

@ -5,19 +5,16 @@
} }
& { & {
.tippy-tooltip.cryptpad-theme { .tippy-tooltip.cryptpad-theme {
/* Your styling here. Example: */ background-color: @cp_tooltip-bg;
background-color: @cryptpad_color_light_grey;
border-radius: 0px; border-radius: 0px;
// box-shadow: 2px 2px 10px #000; color: @cp_tooltip-fg;
// font-weight: bold;
color: #333;
overflow-wrap: break-word; overflow-wrap: break-word;
[x-circle] { [x-circle] {
background-color: unset; background-color: unset;
} }
} }
.tippy-popper { .tippy-popper {
@arrow-color: @cryptpad_color_light_grey; @arrow-color: @cp_tooltip-bg;
&[x-placement^='top'] .tippy-arrow { &[x-placement^='top'] .tippy-arrow {
border-top-color: @arrow-color; border-top-color: @arrow-color;
} }

@ -40,28 +40,23 @@
box-sizing: border-box; box-sizing: border-box;
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
background-color: rgba(0, 0, 0, 0.1); background-color: @cp_token-bg;
white-space: nowrap; white-space: nowrap;
margin: 2px 0; margin: 2px 0;
margin-right: 5px; margin-right: 5px;
height: 24px; height: 24px;
vertical-align: middle; vertical-align: middle;
cursor: default; cursor: default;
color: @cryptpad_text_col; color: @cp_token-fg;
&:hover { &:hover {
background-color: rgba(0, 0, 0, 0.2); background-color: @cp_token-bg-hover;
} }
&.invalid { &.invalid {
background: none; background: none;
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 0; border-radius: 0;
border-bottom: 1px dotted #d9534f; border-bottom: 1px dotted @cp_token-invalid;
}
&.invalid.active {
background: #ededed;
border: 1px solid #ededed;
border-radius: 3px;
} }
.token-label { .token-label {
display: inline-block; display: inline-block;
@ -74,6 +69,7 @@
opacity: 1; opacity: 1;
font-family: Arial; font-family: Arial;
display: inline-block; display: inline-block;
text-decoration: none !important;
line-height: 1.49em; line-height: 1.49em;
font-size: 1.1em; font-size: 1.1em;
margin-left: 5px; margin-left: 5px;
@ -81,16 +77,13 @@
height: 100%; height: 100%;
vertical-align: middle; vertical-align: middle;
padding-right: 4px; padding-right: 4px;
} color: @cp_token-fg;
&.active { &:hover {
border-color: rgba(82, 168, 236, 0.8); color: contrast(@cp_token-fg, darken(@cp_token-fg, 10%), lighten(@cp_token-fg, 10%));
} }
&.duplicate {
border-color: #ebccd1;
} }
} }
.token-input { .token-input {
background: none;
flex: 1; flex: 1;
border: 0; border: 0;
padding: 0; padding: 0;

@ -6,10 +6,10 @@
& { & {
.cp-toolbar-history { .cp-toolbar-history {
@history_lineBg: #FFFFFF; @history_lineBg: @cp_history-line-bg;
@history_userBg1: #DDD; @history_userBg1: @cp_history-bg1;
@history_userBg2: #BBB; @history_userBg2: @cp_history-bg2;
@pos-color: @cryptpad_text_col; @pos-color: @cp_history-fg;
@fill-width: 40px; @fill-width: 40px;
display: none; display: none;
@ -17,7 +17,7 @@
padding: 10px 0 0; padding: 10px 0 0;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: @cryptpad_text_col; color: @cp_history-fg;
* { * {
font: @colortheme_app-font; font: @colortheme_app-font;
} }

@ -15,8 +15,9 @@
@bg-color: @colortheme_apps[default], // color of the toolbar background @bg-color: @colortheme_apps[default], // color of the toolbar background
) { ) {
@toolbar-bg-color: @bg-color; @toolbar-bg-color: @bg-color;
@toolbar-bg-color-light: lighten(@bg-color, 30%); @desat-color: desaturate(@bg-color, 20%);
@toolbar-bg-color-active: lighten(@bg-color, 20%); @toolbar-bg-color-light: contrast(@cp_toolbar-fg, lighten(@bg-color, 30%), darken(@desat-color, 20%));
@toolbar-bg-color-active: contrast(@cp_toolbar-fg, lighten(@bg-color, 20%), darken(@desat-color, 10%));
}; };
.toolbar_main ( .toolbar_main (
@ -37,11 +38,10 @@
.modal_main(); .modal_main();
}; };
& { & {
@toolbar-color: @cryptpad_text_col; @toolbar-color: @cp_toolbar-fg;
@toolbar-color-light: lighten(@cryptpad_text_col, 10%);
.toolbar_vars(); .toolbar_vars();
@toolbar-top-bg: #eee; @toolbar-top-bg: @cp_toolbar-bg;
@toolbar_line-height: 32px; @toolbar_line-height: 32px;
@toolbar_top-height: 76px; @toolbar_top-height: 76px;
@toolbar_button-font: @colortheme_app-font; @toolbar_button-font: @colortheme_app-font;
@ -60,7 +60,8 @@
.cp-markdown-toolbar { .cp-markdown-toolbar {
height: @toolbar_line-height; height: @toolbar_line-height;
background-color: @colortheme_pad-toolbar-bg; background-color: @cp_toolbar-bg;
color: @cp_toolbar-fg;
display: none; display: none;
button { button {
height: @toolbar_line-height !important; height: @toolbar_line-height !important;
@ -69,7 +70,7 @@
.toolbar_button; .toolbar_button;
font: normal normal normal 14px/1 FontAwesome; font: normal normal normal 14px/1 FontAwesome;
&:hover { &:hover {
background-color: darken(@colortheme_pad-toolbar-bg, 5%); background-color: contrast(@cp_toolbar-bg, darken(@cp_toolbar-bg, 5%), lighten(@cp_toolbar-bg, 5%));
} }
&.cp-markdown-help { float: right; } &.cp-markdown-help { float: right; }
} }
@ -102,7 +103,7 @@
} }
background: transparent; background: transparent;
&:hover { &:hover {
background-color: rgba(50,50,50,0.3); background-color: @cp_toolbar-fade3;
} }
} }
@ -174,7 +175,7 @@
.cp-toolbar-userlist-viewer { .cp-toolbar-userlist-viewer {
font-style: italic; font-style: italic;
padding: 5px; padding: 5px;
background: rgba(0,0,0,0.1); background: @cp_toolbar-fade1;
margin: 2px 0; margin: 2px 0;
} }
@ -194,7 +195,7 @@
height: 48px; height: 48px;
padding: 5px; padding: 5px;
margin: 2px 0; margin: 2px 0;
background: rgba(0,0,0,0.1); background: @cp_toolbar-fade1;
border-right: 3px solid transparent; border-right: 3px solid transparent;
.avatar_main(30px); .avatar_main(30px);
.cp-avatar-default, media-tag { .cp-avatar-default, media-tag {
@ -203,7 +204,7 @@
&.cp-userlist-clickable { &.cp-userlist-clickable {
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: rgba(0,0,0,0.3); background: @cp_toolbar-fade3;
} }
} }
.cp-toolbar-userlist-rightcol { .cp-toolbar-userlist-rightcol {
@ -263,14 +264,11 @@
.icons_main(); .icons_main();
li { li {
border: 1px solid @colortheme_modal-fg; color: @cp_drive-fg;
border: 1px solid @cp_drive-icon-border;
&:hover { &:hover {
//border: 1px solid @colortheme_modal-fg; background: @cp_drive-icon-hover;
background: @colortheme_logo_2_light; color: @cp_drive-fg;
color: @cryptpad_text_col;
.cptools {
color: @cryptpad_text_col;
}
} }
} }
.cp-modal { .cp-modal {
@ -339,7 +337,7 @@
} }
.cp-toolbar-userlist-drawer { .cp-toolbar-userlist-drawer {
background-color: @colortheme_userlist-bg; background-color: @cp_toolbar-bg;
color: @toolbar-color; color: @toolbar-color;
.cp-toolbar-userlist-drawer-close { .cp-toolbar-userlist-drawer-close {
color: @toolbar-color; color: @toolbar-color;
@ -348,12 +346,13 @@
color: @toolbar-color; color: @toolbar-color;
} }
.cp-toolbar-userlist-name-input { .cp-toolbar-userlist-name-input {
background-color: rgba(0,0,0,0.1); background: @cp_toolbar-fade1;
} }
.cp-toolbar-userlist-button { .cp-toolbar-userlist-button {
background: transparent; background: transparent;
color: @cryptpad_text_col;
&:hover { &:hover {
color: @toolbar-color-light; color: contrast(@cp_toolbar-bg, darken(@cp_toolbar-fg, 10%), lighten(@cp_toolbar-fg, 10%));
} }
} }
} }
@ -366,8 +365,6 @@
} }
} }
@toolbar-green: #5cb85c;
box-sizing: border-box; box-sizing: border-box;
padding: 0px; padding: 0px;
display: flex; display: flex;
@ -431,6 +428,7 @@
margin: 0; margin: 0;
}*/ }*/
// XXX I don't think we still use any select in the toolbar
select { select {
margin-left: 5px; margin-left: 5px;
margin-right: 5px; margin-right: 5px;
@ -568,10 +566,7 @@
} }
.cp-toolbar-limit { .cp-toolbar-limit {
color: @colortheme_toolbar-warn; color: @cp_toolbar-warn;
}
.cp-dropdown-content.cp-dropdown-left a {
color: black;
} }
} }
@ -594,7 +589,7 @@
padding: 0; padding: 0;
margin: 0 5px; margin: 0 5px;
font-size: @colortheme_app-font-size; font-size: @colortheme_app-font-size;
color: @colortheme_toolbar-warn; color: @cp_toolbar-warn;
.cp-pnp-msg { .cp-pnp-msg {
padding-left: 5px; padding-left: 5px;
font-family: @colortheme_font; font-family: @colortheme_font;
@ -603,7 +598,7 @@
font-size: @colortheme_app-font-size; font-size: @colortheme_app-font-size;
font-family: @colortheme_font; font-family: @colortheme_font;
font-weight: bold; font-weight: bold;
color: @colortheme_toolbar-warn; color: @cp_toolbar-warn;
&:hover { &:hover {
text-decoration: underline; text-decoration: underline;
} }
@ -624,7 +619,7 @@
//flex: 1; //flex: 1;
} }
.cp-toolbar-title { .cp-toolbar-title {
color: @cryptpad_text_col; color: @cp_toolbar-fg;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -759,7 +754,7 @@
} }
&:hover { &:hover {
border-color: transparent; border-color: transparent;
background-color: rgba(50,50,50,0.1); background-color: @cp_toolbar-fade1;
} }
span { span {
vertical-align: top; vertical-align: top;
@ -769,7 +764,7 @@
} }
} }
.cp-notifications-empty { .cp-notifications-empty {
color: black; color: @cp_dropdown-fg;
padding: 5px; padding: 5px;
} }
button { button {
@ -809,8 +804,13 @@
padding: 10px; padding: 10px;
svg { svg {
fill: @toolbar-bg-color; #outline, #squares {
fill: var(--toolbar-bg-color); fill: @toolbar-bg-color;
fill: var(--toolbar-bg-color);
}
#background {
fill: @cp_toolbar-logo-bg;
}
} }
img { img {
@ -852,6 +852,7 @@
.cp-dropdown-content { .cp-dropdown-content {
margin: 0; margin: 0;
padding-bottom: 10px;
} }
& > button { & > button {
display: flex; display: flex;
@ -862,7 +863,7 @@
padding: 0; padding: 0;
&:hover { &:hover {
border-color: transparent; border-color: transparent;
background-color: rgba(50,50,50,0.1); background-color: @cp_toolbar-fade1;
} }
span { span {
text-align: center; text-align: center;
@ -891,7 +892,7 @@
border-radius: 0; border-radius: 0;
background: transparent; background: transparent;
&:hover { &:hover {
background-color: rgba(0,0,0,0.2); background-color: @cp_toolbar-fade1;
} }
} }
} }
@ -900,7 +901,7 @@
.cp-toolbar-history, .cp-toolbar-snapshots { .cp-toolbar-history, .cp-toolbar-snapshots {
background-color: @toolbar-bg-color-light; background-color: @toolbar-bg-color-light;
background-color: var(--toolbar-bg-color-light); background-color: var(--toolbar-bg-color-light);
color: @cryptpad_text_col; color: @toolbar-color;
} }
.cp-toolbar-snapshots { .cp-toolbar-snapshots {
display: none; display: none;
@ -928,7 +929,7 @@
.cp-toolbar-snapshots-actions { .cp-toolbar-snapshots-actions {
button { button {
margin: 0 5px; margin: 0 5px;
border: 1px solid @cryptpad_text_col; border: 1px solid @toolbar-color;
text-transform: uppercase; text-transform: uppercase;
i:not(:last-child) { i:not(:last-child) {
margin-right: 5px; margin-right: 5px;
@ -939,7 +940,7 @@
.cp-toolbar-bottom { .cp-toolbar-bottom {
background-color: @toolbar-bg-color-light; background-color: @toolbar-bg-color-light;
background-color: var(--toolbar-bg-color-light); background-color: var(--toolbar-bg-color-light);
color: @cryptpad_text_col; color: @cp_toolbar-bottom-fg;
button:hover, button.cp-toolbar-button-active { button:hover, button.cp-toolbar-button-active {
background-color: @toolbar-bg-color-active; background-color: @toolbar-bg-color-active;
background-color: var(--toolbar-bg-color-active); background-color: var(--toolbar-bg-color-active);
@ -1065,7 +1066,7 @@
display: none; display: none;
} }
.cp-toolbar-drawer-content { .cp-toolbar-drawer-content {
box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.2); box-shadow: 0px 1px 5px 0px @cp_shadow-color;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
&.cp-dropdown-visible { &.cp-dropdown-visible {
@ -1076,11 +1077,11 @@
top: @toolbar_line-height; top: @toolbar_line-height;
margin: -1px; margin: -1px;
min-width: 50px; min-width: 50px;
background: @colortheme_dropdown-bg; background: @cp_dropdown-bg;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
z-index: 10000; //Z cp-toolbar-drawer-content z-index: 10000; //Z cp-toolbar-drawer-content
color: black; color: @cp_dropdown-fg;
.tools_unselectable(); .tools_unselectable();
.fa { .fa {
font-size: 17px; font-size: 17px;
@ -1111,8 +1112,8 @@
vertical-align: baseline; vertical-align: baseline;
} }
&:hover { &:hover {
background-color: @colortheme_dropdown-bg-hover !important; background-color: @cp_dropdown-bg-hover !important;
color: @colortheme_dropdown-color; color: @cp_dropdown-fg;
} }
} }
} }
@ -1120,7 +1121,7 @@
} }
.cp-toolbar-spinner { .cp-toolbar-spinner {
color: @cryptpad_text_col; color: @cp_toolbar-fg;
font-family: "Open Sans"; font-family: "Open Sans";
font-size: 14px; font-size: 14px;
padding: 0 8px; padding: 0 8px;

@ -1,6 +1,9 @@
.tools_placeholder-color (@color) { @import (reference) "./colortheme-all.less";
.tools_placeholder-color () {
@color: @cp_forms-placeholder;
&::-webkit-input-placeholder { /* WebKit, Blink, Edge */ &::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: @color;; color: @color;
} }
&::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ &::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
color: @color; color: @color;

@ -33,10 +33,7 @@
margin: 0; margin: 0;
margin-bottom: 0 !important; margin-bottom: 0 !important;
height: 38px; height: 38px;
&::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ .tools_placeholder-color();
color: @cryptpad_color_grey;
opacity: 1; /* Firefox */
}
} }
margin-bottom: 10px; margin-bottom: 10px;
&:empty { &:empty {
@ -62,8 +59,8 @@
.tools_unselectable(); .tools_unselectable();
&.cp-selected { &.cp-selected {
background-color: @colortheme_alertify-primary; background-color: @cp_usergrid-selected-bg;
color: @colortheme_alertify-primary-text; color: @cp_usergrid-selected-fg;
order: -1 !important; order: -1 !important;
.cp-usergrid-avatar { .cp-usergrid-avatar {
media-tag, .cp-avatar-default { media-tag, .cp-avatar-default {
@ -101,12 +98,12 @@
margin-left: 5px; margin-left: 5px;
text-align: left; text-align: left;
line-height: 150%; line-height: 150%;
color: @cryptpad_text_col; color: @cp_usergrid-fg;
} }
} }
&.cp-selected { &.cp-selected {
.cp-usergrid-user-name { .cp-usergrid-user-name {
color: @colortheme_alertify-primary-text; color: @cp_usergrid-selected-fg;
} }
} }
.fa-times { .fa-times {
@ -114,9 +111,9 @@
cursor: pointer; cursor: pointer;
height: 100%; height: 100%;
line-height: 25px; line-height: 25px;
color: @cryptpad_text_col; color: @cp_usergrid-fg;
&:hover { &:hover {
color: lighten(@cryptpad_text_col, 10%); color: lighten(@cp_usergrid-fg, 10%);
} }
} }
} }

@ -1,3 +1,5 @@
@import (reference) "./colortheme-all.less";
// This is a file for generic constants which we didn't want to hardcode everywhere. // This is a file for generic constants which we didn't want to hardcode everywhere.
// However, unlike colortheme, customizing these variables will cause breakage. // However, unlike colortheme, customizing these variables will cause breakage.
@ -7,4 +9,4 @@
// Used in modal.less and alertify.less // Used in modal.less and alertify.less
@variables_padding: 12px; @variables_padding: 12px;
@variables_shadow: 0 8px 32px 0 rgba(0,0,0,.4); @variables_shadow: 0 8px 32px 0 @cp_shadow-color;

@ -5,7 +5,7 @@ html, body {
.font_main(); .font_main();
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
background-color: @colortheme_info-background; background-color: @cp_static-bg;
color: @cryptpad_text_col; color: @cryptpad_text_col;
font-family: "IBM Plex Mono"; font-family: "IBM Plex Mono";
#cp-main { #cp-main {
@ -29,6 +29,9 @@ html, body {
#cp-scramble, #cp-link { #cp-scramble, #cp-link {
font-size: 20px; font-size: 20px;
} }
#cp-link {
color: @cryptpad_color_link;
}
} }
} }

@ -21,9 +21,11 @@
border-radius: 0; border-radius: 0;
margin-bottom: 1em; margin-bottom: 1em;
border: 0; border: 0;
background-color: @cp_static-card-bg;
&:hover, &:focus { &:hover, &:focus {
text-decoration: none; text-decoration: none;
background-color: @colortheme_logo_2_light; color: @cryptpad_text_col;
background-color: @cryptpad_color_brand_fadest;
} }
@media (max-width: 1200px) and (min-width: 769px) { @media (max-width: 1200px) and (min-width: 769px) {
min-height: 139px; min-height: 139px;

@ -10,8 +10,8 @@
} }
.cp-features-register-button { .cp-features-register-button {
font-size: 20px; font-size: 20px;
color: #fff; color: @cryptpad_color_white;
background: @colortheme_logo-2; background: @cryptpad_color_brand;
border-radius: 0; border-radius: 0;
&:hover { &:hover {
cursor: pointer; cursor: pointer;
@ -21,8 +21,10 @@
.card { .card {
.cp-shadow(); .cp-shadow();
border: none; border: none;
background-color: @cp_static-card-bg;
border-radius: 0px;;
.title-card { .title-card {
background-color: @colortheme_logo-2; background-color: @cryptpad_color_brand;
padding: 20px; padding: 20px;
} }
.card-body, .title-card { .card-body, .title-card {
@ -37,7 +39,10 @@
&.cp-pricing { &.cp-pricing {
div { div {
font-size: 1.2em; font-size: 1.2em;
color: @colortheme_logo-2; color: @cp_static-link;
a {
text-decoration: underline;
}
&:first-child { &:first-child {
font-weight: bold; font-weight: bold;
} }
@ -46,10 +51,13 @@
} }
} }
} }
&:last-child {
border-top: 1px solid fade(@cryptpad_text_col, 30%);
}
} }
} }
h3 { h3 {
color: #fff; color: @cryptpad_color_white;
} }
.list-group { .list-group {
li { li {
@ -67,7 +75,7 @@
content: "\f00c"; content: "\f00c";
font-family: "FontAwesome"; font-family: "FontAwesome";
font-size: 14px; font-size: 14px;
color: @colortheme_logo-2; color: @cryptpad_color_brand;
} }
} }
&.cp-content { &.cp-content {
@ -84,13 +92,12 @@
font-size: 0.8em; font-size: 0.8em;
} }
.list-group-item { .list-group-item {
border-bottom: 1px solid rgba(0,0,0,0.125); background-color: transparent;
&:first-child { &:first-child {
border-top: 1px solid rgba(0,0,0,0.125); border-top: 1px solid fade(@cryptpad_text_col, 30%);
} }
&:last-child { &:not(:last-child) {
border-bottom-right-radius: 0px; border-bottom: 1px solid fade(@cryptpad_text_col, 30%);
border-bottom-left-radius: 0px;
} }
} }
} }

@ -21,28 +21,17 @@
flex-flow: column; flex-flow: column;
justify-content: space-around; justify-content: space-around;
justify-content: space-evenly; justify-content: space-evenly;
.alert-info {
font-size: 16px;
border-radius: 0px;
}
} }
} }
body { body {
font-family: "Open Sans", Helvetica; font-family: "Open Sans", Helvetica;
color: @cryptpad_text_col; color: @cryptpad_text_col;
} }
.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-home-hero { .cp-home-hero {
width: 100%; width: 100%;
margin-bottom: 50px; margin-bottom: 50px;
@ -54,7 +43,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
color: @colortheme_logo-2; color: @cryptpad_color_brand;
margin-top: 1.5em; margin-top: 1.5em;
img { img {
max-width: 200px; max-width: 200px;
@ -71,7 +60,7 @@
.tag-line { .tag-line {
text-align: center; text-align: center;
font-size: 1.4em; font-size: 1.4em;
//font-style: italic; color: @cp_static-link;
} }
} }
@ -86,6 +75,7 @@
justify-content: space-around; justify-content: space-around;
a { a {
margin: 10px; margin: 10px;
text-decoration: none;
} }
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
margin-top: 40px; margin-top: 40px;
@ -158,7 +148,8 @@
.cp-callout-@{key} { .cp-callout-@{key} {
i { color: @value; } i { color: @value; }
&:hover { &:hover {
background-color: lighten(@value, 30%); @desat: desaturate(@value, 15%);
background-color: contrast(@cryptpad_text_col, lighten(@value, 30%), darken(@desat, 20%));
i { color: @cryptpad_text_col; } i { color: @cryptpad_text_col; }
} }
} }
@ -177,7 +168,7 @@
width: 100%; width: 100%;
div { div {
.infopages_link(); .infopages_link();
color: #fff; color: @cryptpad_color_white;
.fa, .cptools { .fa, .cptools {
font-size: inherit; font-size: inherit;
padding: 0; padding: 0;
@ -187,17 +178,6 @@
} }
} }
#cp-main {
.cp-container {
.row.cp-index-section {
margin: 50px 0px;
.small-logo {
max-width: 40%;
}
}
}
}
@media (min-width: 576px) and (max-width: 767px) { @media (min-width: 576px) and (max-width: 767px) {
.container { .container {
padding-left: 0; padding-left: 0;

@ -21,33 +21,36 @@
.cp-container { .cp-container {
#userForm { #userForm {
.cp-shadow(); .cp-shadow();
background-color: white; background-color: @cp_static-card-bg;
padding: 10px; padding: 10px;
.form-control { .form-control {
border-radius: 0; border-radius: 0;
color: @cryptpad_text_col; color: @cryptpad_text_col;
background-color: @cp_forms-bg;
margin-bottom: 5px; margin-bottom: 5px;
&:focus { &:focus {
border-color: @colortheme_logo-2; border-color: @cryptpad_color_brand;
} }
.tools_placeholder-color();
} }
.checkbox-container { .checkbox-container {
color: @cryptpad_text_col; color: @cryptpad_text_col;
} }
} }
.align-items-center { .align-items-center {
box-shadow: 0 5px 15px rgba(69,145,196, 0.3); box-shadow: 0 5px 15px @cp_shadow-color;
background: #fff; background: @cryptpad_color_white;
} }
.extra { .extra {
margin-top: 1em; margin-top: 1em;
#register { #register {
border-color: @colortheme_logo-2; border-color: @cryptpad_color_brand;
background: #fff; background: @cryptpad_color_white;
color: @colortheme_logo-2; color: @cryptpad_color_brand;
padding: 10px; padding: 10px;
border-radius: 0; border-radius: 0;
margin: 0px;
} }
} }
} }

@ -78,7 +78,7 @@
} }
#userForm { #userForm {
padding: 15px; padding: 15px;
background-color: white; background-color: @cp_static-card-bg;
position: relative; position: relative;
z-index: 2; z-index: 2;
margin-bottom: 100px; margin-bottom: 100px;
@ -86,14 +86,19 @@
.form-control { .form-control {
border-radius: 0; border-radius: 0;
color: @cryptpad_text_col; color: @cryptpad_text_col;
background-color: @cp_forms-bg;
margin-top: 5px; margin-top: 5px;
&:focus { &:focus {
border-color: @cryptpad_color_blue; border-color: @cryptpad_color_brand;
} }
.tools_placeholder-color();
} }
.checkbox-container { .checkbox-container {
color: @cryptpad_text_col; color: @cryptpad_text_col;
} }
button#register {
margin: 0px;
}
} }
.cp-register-notes { .cp-register-notes {
@ -111,7 +116,7 @@
content: "\f071"; content: "\f071";
} }
.red { .red {
color: #ff0000; color: @cryptpad_color_red;
} }
} }
} }

@ -6,33 +6,10 @@
.small-logos { .small-logos {
img { img {
max-width: 40%; max-width: 40% !important;
padding: 10px; padding: 10px;
margin-top: 0px; margin-top: 0px;
} }
} }
// .cp-container {
// padding-top: 3em;
// padding-bottom: 3em;
// h2 {
// margin-top: 0;
// font-weight: 700;
// color: @cryptpad_header_col;
// }
// p {
// color: @cryptpad_text_col;
// }
// #zeroknowledge {
// width: 65%;
// }
// .row {
// margin-bottom: 1.5em;
// }
// img {
// display: block;
// margin: 0 auto;
// }
// }
} }

@ -2,7 +2,12 @@ html, body {
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
} }
#sbox-iframe, #sbox-secure-iframe { @media (prefers-color-scheme: dark) {
html, body {
background: black;
}
}
iframe-placeholder, #sbox-iframe, #sbox-secure-iframe {
position: fixed; position: fixed;
top:0; left:0; top:0; left:0;
bottom:0; right:0; bottom:0; right:0;

@ -52,8 +52,6 @@ $(function () {
} else if (/^\/($|^\/index\.html$)/.test(pathname)) { } else if (/^\/($|^\/index\.html$)/.test(pathname)) {
// TODO use different top bar // TODO use different top bar
require([ '/customize/main.js', ], function () {}); require([ '/customize/main.js', ], function () {});
} else if (/invite/.test(pathname)) {
require([ '/invite/main.js'], function () {});
} else { } else {
require([ '/customize/main.js', ], function () {}); require([ '/customize/main.js', ], function () {});
} }

@ -5,6 +5,7 @@ const getFolderSize = require("get-folder-size");
const Util = require("../common-util"); const Util = require("../common-util");
const Ulimit = require("ulimit"); const Ulimit = require("ulimit");
const Decrees = require("../decrees"); const Decrees = require("../decrees");
const Pinning = require("./pin-rpc");
var Fs = require("fs"); var Fs = require("fs");
@ -324,6 +325,13 @@ var getLimits = function (Env, Server, cb) {
cb(void 0, Env.limits); cb(void 0, Env.limits);
}; };
// CryptPad_AsyncStore.rpc.send('ADMIN', ['GET_USER_TOTAL_SIZE', "CrufexqXcY/z+eKJlEbNELVy5Sb7E/EAAEFI8GnEtZ0="], console.log)
var getUserTotalSize = function (Env, Server, cb, data) {
var signingKey = Array.isArray(data) && data[1];
if (typeof(signingKey) !== 'string' || signingKey.length < 44) { return void cb("EINVAL"); } // FIXME use a standard check for this
Pinning.getTotalSize(Env, signingKey, cb);
};
var commands = { var commands = {
ACTIVE_SESSIONS: getActiveSessions, ACTIVE_SESSIONS: getActiveSessions,
ACTIVE_PADS: getActiveChannelCount, ACTIVE_PADS: getActiveChannelCount,
@ -349,6 +357,7 @@ var commands = {
GET_LIMITS: getLimits, GET_LIMITS: getLimits,
SET_LAST_EVICTION: setLastEviction, SET_LAST_EVICTION: setLastEviction,
GET_WORKER_PROFILES: getWorkerProfiles, GET_WORKER_PROFILES: getWorkerProfiles,
GET_USER_TOTAL_SIZE: getUserTotalSize,
}; };
Admin.command = function (Env, safeKey, data, _cb, Server) { Admin.command = function (Env, safeKey, data, _cb, Server) {

@ -50,7 +50,6 @@ Default.httpHeaders = function () {
"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Origin": "*",
}; };
}; };
// XXX check here for any deleted pages
Default.mainPages = function () { Default.mainPages = function () {
return [ return [
'index', 'index',

@ -653,7 +653,15 @@ const handleGetHistory = function (Env, Server, seq, userId, parsed) {
Server.send(userId, [0, HISTORY_KEEPER_ID, 'MSG', userId, JSON.stringify(msg)], readMore); Server.send(userId, [0, HISTORY_KEEPER_ID, 'MSG', userId, JSON.stringify(msg)], readMore);
}, (err) => { }, (err) => {
if (err && err.code !== 'ENOENT') { if (err && err.code !== 'ENOENT') {
if (err.message !== 'EINVAL') { Log.error("HK_GET_HISTORY", { if (err.message === "EUNKNOWN") {
Log.error("HK_GET_HISTORY", {
channel: channelName,
lastKnownHash: lastKnownHash,
userId: userId,
sessions: Object.keys(HK.getNetfluxSession(Env, userId) || {}),
err: err && err.message || err,
});
} else if (err.message !== 'EINVAL') { Log.error("HK_GET_HISTORY", {
channel: channelName, channel: channelName,
err: err && err.message || err, err: err && err.message || err,
stack: err && err.stack, stack: err && err.stack,

2
package-lock.json generated

@ -1,6 +1,6 @@
{ {
"name": "cryptpad", "name": "cryptpad",
"version": "3.25.1", "version": "4.0.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

@ -1,7 +1,7 @@
{ {
"name": "cryptpad", "name": "cryptpad",
"description": "realtime collaborative visual editor with zero knowlege server", "description": "realtime collaborative visual editor with zero knowlege server",
"version": "3.25.1", "version": "4.0.0",
"license": "AGPL-3.0+", "license": "AGPL-3.0+",
"repository": { "repository": {
"type": "git", "type": "git",

@ -1,22 +0,0 @@
```javascript
CryptPad_AsyncStore.rpc.send('ADMIN',
['GET_WORKER_PROFILES'],
(e, _o) => {
var o = _o[0];
// console.log(o[0])
var sorted = Object.keys(o).sort(function (a, b) {
if (o[b] - o[a] <= 0) { return -1; }
return 1;
});
var x = {};
//console.log(sorted);
var total = 0;
sorted.forEach(function (k) { total += o[k]; });
sorted.forEach(function (k) {
console.log("[%s] %ss running time (%s%)", k, o[k], Math.floor((o[k] / total) * 100));
});
}
)
```

@ -104,8 +104,8 @@
color: #666; color: #666;
.cp-support-ispremium { .cp-support-ispremium {
padding: 0 5px; padding: 0 5px;
color: @colortheme_cp-red; color: @cp_admin-premium-fg;
background-color: lighten(@colortheme_cp-red, 25%); background-color: @cp_admin-premium-bg;
} }
} }
} }
@ -119,18 +119,18 @@
} }
.cp-support-list-message { .cp-support-list-message {
&:last-child:not(.cp-support-fromadmin) { &:last-child:not(.cp-support-fromadmin) {
color: @colortheme_cp-red; color: @cp_admin-last-fg;
background-color: lighten(@colortheme_form-warning, 25%); background-color: @cp_admin-last-bg;
.cp-support-showdata { .cp-support-showdata {
background-color: lighten(@colortheme_form-warning, 30%); background-color: lighten(@cp_admin-last-bg, 5%);
} }
} }
&:last-child { &:last-child {
&.cp-support-frompremium { &.cp-support-frompremium {
background-color: lighten(@colortheme_cp-red, 25%); background-color: @cp_admin-premium-bg;
.cp-support-showdata { .cp-support-showdata {
background-color: lighten(@colortheme_cp-red, 30%); background-color: lighten(@cp_admin-premium-bg, 30%);
} }
} }
} }
@ -160,10 +160,18 @@
} }
.cp-support-fromadmin { .cp-support-fromadmin {
color: @colortheme_logo-2; color: @cp_admin-isadmin-fg;
background-color: #FFF; background-color: @cp_admin-isadmin-bg;
.cp-support-message-content { .cp-support-message-content {
color: @colortheme_logo-2; color: @cp_admin-isadmin-fg;
}
}
table#cp-performance-table {
td, th {
padding: 5px;
color: @cryptpad_text_col;
border: 1px solid @cryptpad_text_col;
} }
} }

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer" /> <meta name="referrer" content="no-referrer" />
<script async data-bootload="main.js" data-main="/common/boot.js?ver=1.0" src="/bower_components/requirejs/require.js?ver=2.3.5"></script> <script async data-bootload="main.js" data-main="/common/boot.js?ver=1.0" src="/bower_components/requirejs/require.js?ver=2.3.5"></script>
<link href="/customize/src/outer.css?ver=1.1" rel="stylesheet" type="text/css"> <link href="/customize/src/outer.css?ver=1.3.2" rel="stylesheet" type="text/css">
</head> </head>
<body> <body>
<iframe id="sbox-iframe"> <iframe-placeholder>

@ -50,9 +50,11 @@ define([
'quota': [ 'quota': [
'cp-admin-defaultlimit', 'cp-admin-defaultlimit',
'cp-admin-setlimit', 'cp-admin-setlimit',
'cp-admin-getquota',
'cp-admin-getlimits', 'cp-admin-getlimits',
], ],
'stats': [ 'stats': [
'cp-admin-refresh-stats',
'cp-admin-active-sessions', 'cp-admin-active-sessions',
'cp-admin-active-pads', 'cp-admin-active-pads',
'cp-admin-open-files', 'cp-admin-open-files',
@ -62,6 +64,9 @@ define([
'support': [ 'support': [
'cp-admin-support-list', 'cp-admin-support-list',
'cp-admin-support-init' 'cp-admin-support-init'
],
'performance': [
'cp-admin-performance-profiling',
] ]
}; };
@ -463,49 +468,123 @@ define([
return $div; return $div;
}; };
create['getquota'] = function () {
var key = 'getquota';
var $div = makeBlock(key, true);
var input = h('input#cp-admin-getquota', {
type: 'text'
});
var $input = $(input);
var $button = $div.find('button');
$button.before(h('div.cp-admin-setlimit-form', [
input,
]));
$button.click(function () {
var val = $input.val();
if (!val || !val.trim()) { return; }
var key = Keys.canonicalize(val);
if (!key) { return; }
$input.val('');
sFrameChan.query('Q_ADMIN_RPC', {
cmd: 'GET_USER_TOTAL_SIZE',
data: key
}, function (e, obj) {
if (e || (obj && obj.error)) {
console.error(e || obj.error);
return void UI.warn(Messages.error);
}
var size = Array.isArray(obj) && obj[0];
if (typeof(size) !== "number") { return; }
UI.alert(Util.getPrettySize(size, Messages));
});
});
return $div;
};
var onRefreshStats = Util.mkEvent();
create['refresh-stats'] = function () {
var key = 'refresh-stats';
var $div = $('<div>', {'class': 'cp-admin-' + key + ' cp-sidebarlayout-element'});
var $btn = $(h('button.btn.btn-primary', Messages.oo_refresh));
$btn.click(function () {
onRefreshStats.fire();
});
$div.append($btn);
return $div;
};
create['active-sessions'] = function () { create['active-sessions'] = function () {
var key = 'active-sessions'; var key = 'active-sessions';
var $div = makeBlock(key); var $div = makeBlock(key);
sFrameChan.query('Q_ADMIN_RPC', { var onRefresh = function () {
cmd: 'ACTIVE_SESSIONS', $div.find('pre').remove();
}, function (e, data) { sFrameChan.query('Q_ADMIN_RPC', {
var total = data[0]; cmd: 'ACTIVE_SESSIONS',
var ips = data[1]; }, function (e, data) {
$div.append(h('pre', total + ' (' + ips + ')')); var total = data[0];
}); var ips = data[1];
$div.find('pre').remove();
$div.append(h('pre', total + ' (' + ips + ')'));
});
};
onRefresh();
onRefreshStats.reg(onRefresh);
return $div; return $div;
}; };
create['active-pads'] = function () { create['active-pads'] = function () {
var key = 'active-pads'; var key = 'active-pads';
var $div = makeBlock(key); var $div = makeBlock(key);
sFrameChan.query('Q_ADMIN_RPC', { var onRefresh = function () {
cmd: 'ACTIVE_PADS', $div.find('pre').remove();
}, function (e, data) { sFrameChan.query('Q_ADMIN_RPC', {
console.log(e, data); cmd: 'ACTIVE_PADS',
$div.append(h('pre', String(data))); }, function (e, data) {
}); console.log(e, data);
$div.find('pre').remove();
$div.append(h('pre', String(data)));
});
};
onRefresh();
onRefreshStats.reg(onRefresh);
return $div; return $div;
}; };
create['open-files'] = function () { create['open-files'] = function () {
var key = 'open-files'; var key = 'open-files';
var $div = makeBlock(key); var $div = makeBlock(key);
sFrameChan.query('Q_ADMIN_RPC', { var onRefresh = function () {
cmd: 'GET_FILE_DESCRIPTOR_COUNT', $div.find('pre').remove();
}, function (e, data) { sFrameChan.query('Q_ADMIN_RPC', {
console.log(e, data); cmd: 'GET_FILE_DESCRIPTOR_COUNT',
$div.append(h('pre', String(data))); }, function (e, data) {
}); console.log(e, data);
$div.find('pre').remove();
$div.append(h('pre', String(data)));
});
};
onRefresh();
onRefreshStats.reg(onRefresh);
return $div; return $div;
}; };
create['registered'] = function () { create['registered'] = function () {
var key = 'registered'; var key = 'registered';
var $div = makeBlock(key); var $div = makeBlock(key);
sFrameChan.query('Q_ADMIN_RPC', { var onRefresh = function () {
cmd: 'REGISTERED_USERS', $div.find('pre').remove();
}, function (e, data) { sFrameChan.query('Q_ADMIN_RPC', {
console.log(e, data); cmd: 'REGISTERED_USERS',
$div.append(h('pre', String(data))); }, function (e, data) {
}); console.log(e, data);
$div.find('pre').remove();
$div.append(h('pre', String(data)));
});
};
onRefresh();
onRefreshStats.reg(onRefresh);
return $div; return $div;
}; };
create['disk-usage'] = function () { create['disk-usage'] = function () {
@ -618,7 +697,7 @@ define([
var premium = t.some(function (msg) { var premium = t.some(function (msg) {
var _ed = Util.find(msg, ['content', 'msg', 'content', 'sender', 'edPublic']); var _ed = Util.find(msg, ['content', 'msg', 'content', 'sender', 'edPublic']);
if (ed !== _ed) { return; } if (ed !== _ed) { return; }
return Util.find(t[0], ['content', 'msg', 'content', 'sender', 'plan']); return Util.find(msg, ['content', 'msg', 'content', 'sender', 'plan']);
}); });
var lastMsg = t[t.length - 1]; var lastMsg = t[t.length - 1];
var lastMsgEd = Util.find(lastMsg, ['content', 'msg', 'content', 'sender', 'edPublic']); var lastMsgEd = Util.find(lastMsg, ['content', 'msg', 'content', 'sender', 'edPublic']);
@ -852,6 +931,54 @@ define([
return; return;
}; };
create['performance-profiling'] = function () {
var $div = makeBlock('performance-profiling');
var body = h('tbody');
var table = h('table#cp-performance-table', [
h('thead', [
h('th', Messages.admin_performanceKeyHeading),
h('th', Messages.admin_performanceTimeHeading),
h('th', Messages.admin_performancePercentHeading),
]),
body,
]);
$div.append(table);
var appendRow = function (key, time, percent) {
console.log("[%s] %ss running time (%s%)", key, time, percent);
body.appendChild(h('tr', [ key, time, percent ].map(function (x) {
return h('td', x);
})));
};
var process = function (_o) {
var o = _o[0];
var sorted = Object.keys(o).sort(function (a, b) {
if (o[b] - o[a] <= 0) { return -1; }
return 1;
});
var total = 0;
sorted.forEach(function (k) { total += o[k]; });
sorted.forEach(function (k) {
var percent = Math.floor((o[k] / total) * 1000) / 10;
appendRow(k, o[k], percent);
});
};
sFrameChan.query('Q_ADMIN_RPC', {
cmd: 'GET_WORKER_PROFILES',
}, function (e, data) {
if (e) { return void console.error(e); }
//console.info(data);
process(data);
});
return $div;
};
var hideCategories = function () { var hideCategories = function () {
APP.$rightside.find('> div').hide(); APP.$rightside.find('> div').hide();
}; };
@ -861,6 +988,15 @@ define([
APP.$rightside.find('.'+c).show(); APP.$rightside.find('.'+c).show();
}); });
}; };
var SIDEBAR_ICONS = {
general: 'fa fa-user-o',
stats: 'fa fa-line-chart',
quota: 'fa fa-hdd-o',
support: 'fa fa-life-ring',
performance: 'fa fa-heartbeat',
};
var createLeftside = function () { var createLeftside = function () {
var $categories = $('<div>', {'class': 'cp-sidebarlayout-categories'}) var $categories = $('<div>', {'class': 'cp-sidebarlayout-categories'})
.appendTo(APP.$leftside); .appendTo(APP.$leftside);
@ -873,10 +1009,10 @@ define([
common.setHash(active); common.setHash(active);
Object.keys(categories).forEach(function (key) { Object.keys(categories).forEach(function (key) {
var $category = $('<div>', {'class': 'cp-sidebarlayout-category'}).appendTo($categories); var $category = $('<div>', {'class': 'cp-sidebarlayout-category'}).appendTo($categories);
if (key === 'general') { $category.append($('<span>', {'class': 'fa fa-user-o'})); } var iconClass = SIDEBAR_ICONS[key];
if (key === 'stats') { $category.append($('<span>', {'class': 'fa fa-line-chart'})); } if (iconClass) {
if (key === 'quota') { $category.append($('<span>', {'class': 'fa fa-hdd-o'})); } $category.append($('<span>', {'class': iconClass}));
if (key === 'support') { $category.append($('<span>', {'class': 'fa fa-life-ring'})); } }
if (key === active) { if (key === active) {
$category.addClass('cp-leftside-active'); $category.addClass('cp-leftside-active');

@ -11,6 +11,7 @@
flex-flow: column; flex-flow: column;
max-height: 100%; max-height: 100%;
min-height: auto; min-height: auto;
background-color: @cp_preview-bg;
#cp-app-code-container { #cp-app-code-container {
display: inline-flex; display: inline-flex;
@ -98,17 +99,23 @@
} }
#cp-app-code-preview-content { #cp-app-code-preview-content {
background-color: @cp_preview-bg;
color: @cp_preview-fg;
max-width: 40vw; max-width: 40vw;
margin: 1em auto; margin: 1em auto;
.markdown_preformatted-code; .markdown_preformatted-code;
.markdown_gfm-table(black); .markdown_gfm-table();
table { table {
margin-bottom: 1rem; margin-bottom: 1rem;
} }
media-tag > * { media-tag > * {
margin-bottom: 1rem; margin-bottom: 1rem;
} }
a {
color: @cp_preview-link;
text-decoration: underline;
}
} }
.cp-splitter { .cp-splitter {
@ -135,7 +142,7 @@
position: relative; position: relative;
display: none; display: none;
.markdown_preformatted-code; .markdown_preformatted-code;
.markdown_gfm-table(black); .markdown_gfm-table();
} }
} }

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="no-referrer" /> <meta name="referrer" content="no-referrer" />
<script async data-bootload="/common/sframe-app-outer.js" data-main="/common/boot.js?ver=1.0" src="/bower_components/requirejs/require.js?ver=2.3.5"></script> <script async data-bootload="/common/sframe-app-outer.js" data-main="/common/boot.js?ver=1.0" src="/bower_components/requirejs/require.js?ver=2.3.5"></script>
<link href="/customize/src/outer.css?ver=1.1" rel="stylesheet" type="text/css"> <link href="/customize/src/outer.css?ver=1.3.2" rel="stylesheet" type="text/css">
</head> </head>
<body> <body>
<iframe id="sbox-iframe"> <iframe-placeholder>

@ -93,6 +93,17 @@ define([
xhr.send(null); xhr.send(null);
}; };
var COLORTHEME = '/customize/src/less2/include/colortheme.less';
var COLORTHEME_DARK = '/customize/src/less2/include/colortheme-dark.less';
//COLORTHEME_DARK = '/customize/src/less2/include/colortheme.less'; // XXX
var getColortheme = function () {
return window.CryptPad_theme;
};
var getColorthemeURL = function () {
if (window.CryptPad_theme === 'dark') { return COLORTHEME_DARK; }
return COLORTHEME;
};
var lessEngine; var lessEngine;
var tempCache = { key: Math.random() }; var tempCache = { key: Math.random() };
var getLessEngine = function (cb) { var getLessEngine = function (cb) {
@ -108,15 +119,33 @@ define([
}); });
var doXHR = lessEngine.FileManager.prototype.doXHR; var doXHR = lessEngine.FileManager.prototype.doXHR;
lessEngine.FileManager.prototype.doXHR = function (url, type, callback, errback) { lessEngine.FileManager.prototype.doXHR = function (url, type, callback, errback) {
//console.error(url, COLORTHEME);
var col = false;
var _url = url;
if (url === COLORTHEME) {
col = true;
url = getColorthemeURL();
//console.warn(url);
}
url = fixURL(url); url = fixURL(url);
var cached = tempCache[url]; var cached = tempCache[_url];
if (cached && cached.res) { if (cached && cached.res) {
var res = cached.res; var res = cached.res;
return void setTimeout(function () { callback(res[0], res[1]); }); return void setTimeout(function () { callback(res[0], res[1]); });
} }
if (cached) { return void cached.queue.push(callback); } if (cached) { return void cached.queue.push(callback); }
cached = tempCache[url] = { queue: [ callback ], res: undefined }; cached = tempCache[_url] = { queue: [ callback ], res: undefined };
return doXHR(url, type, function (text, lastModified) { return doXHR(url, type, function (text, lastModified) {
if (col) {
//console.warn(text, lastModified);
if (getColortheme() === "custom") {
// XXX COLOR: append custom theme here
var custom = [
'@cryptpad_text_col: #FF0000;'
].join('\n');
text += '\n'+custom;
}
}
cached.res = [ text, lastModified ]; cached.res = [ text, lastModified ];
var queue = cached.queue; var queue = cached.queue;
cached.queue = []; cached.queue = [];

@ -1,3 +1,35 @@
(function () {
try {
var isDarkOS = function () {
try {
return window.matchMedia('(prefers-color-scheme: dark)').matches;
} catch (e) { return false; }
};
var flush = window.CryptPad_flushCache = function () {
Object.keys(localStorage).forEach(function (k) {
if (k.indexOf('CRYPTPAD_CACHE|') !== 0 && k.indexOf('LESS_CACHE') !== 0) { return; }
delete localStorage[k];
});
};
var os = isDarkOS() ? 'dark' : 'light';
var key = 'CRYPTPAD_STORE|colortheme';
window.CryptPad_theme = localStorage[key] || os;
if (!localStorage[key]) {
// We're using OS theme, check if we need to change
if (os !== localStorage[key+'_default']) {
console.warn('New OS theme, flush cache');
flush();
localStorage[key+'_default'] = os;
}
}
if (window.CryptPad_theme === 'dark') {
var s = document.createElement('style');
s.innerHTML = 'body { background: black; }';
document.body.appendChild(s);
}
} catch (e) { console.error(e); }
})();
// This is stage 1, it can be changed but you must bump the version of the project. // This is stage 1, it can be changed but you must bump the version of the project.
define([ define([
'/common/requireconfig.js' '/common/requireconfig.js'

@ -388,6 +388,7 @@ define([
})); }));
}; };
$t.closest('.tokenfield').removeClass('form-control');
t.focus = function () { t.focus = function () {
var $temp = $t.closest('.tokenfield').find('.token-input'); var $temp = $t.closest('.tokenfield').find('.token-input');
$temp.css('width', '20%'); $temp.css('width', '20%');
@ -1265,9 +1266,6 @@ define([
var $popup = $(popup); var $popup = $(popup);
if (opts.hidden) {
$popup.addClass('cp-minimized');
}
if (opts.big) { if (opts.big) {
$popup.addClass('cp-corner-big'); $popup.addClass('cp-corner-big');
} }

@ -24,10 +24,10 @@ define([
UIElements.getSvgLogo = function () { UIElements.getSvgLogo = function () {
var svg = (function(){/* var svg = (function(){/*
<svg width="45" height="50" version="1.1" viewBox="0 0 11.906 13.229" xmlns="http://www.w3.org/2000/svg" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"> <svg width="45" height="50" version="1.1" viewBox="0 0 11.906 13.229" xmlns="http://www.w3.org/2000/svg">
<path id="squares" d="m1.1842 0.63976 0.078593 5.614h4.693l5.844e-4 -5.614zm4.7749 5.614 4.383e-4 6.2231c1.8161-0.83261 4.6393-2.4183 4.691-6.1113l0.0016-0.11174z" fill-opacity=".39608"/> <path id="background" d="m1.0914 0.43939h6.464l3.2642 3.0329v3.6261c0 3.8106-3.1186 4.6934-4.8229 5.5936-1.8663-0.85843-4.7759-1.7955-4.8229-5.5936z" style="stroke-width:0"/>
<path id="outline" d="m0.80493 0.26501 0.004684 0.37943 0.079911 6.475c0.024028 1.9418 0.81004 3.2247 1.8144 4.0729 1.0043 0.84824 2.2063 1.2937 3.0935 1.7018l0.16787 0.0775 0.16377-0.08657c0.7899-0.41719 1.9998-0.86054 3.028-1.6991 1.0282-0.83852 1.8614-2.1164 1.8614-4.0713v-3.689l-3.4016-3.1607zm0.75864 0.74949h5.2426v3.1854h3.4628v2.9148c0 1.7505-0.68311 2.7546-1.5854 3.4905-0.84909 0.69243-1.8906 1.1058-2.7348 1.5342-0.89552-0.40429-1.9335-0.8206-2.7611-1.5196-0.87538-0.73932-1.5269-1.7585-1.5485-3.5098zm5.9918 0.21646 2.3888 2.2196h-2.3888z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stop-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/> <path id="squares" transform="matrix(.26458 0 0 .26458 -5.37e-5 0)" d="m4.125 1.6582 0.30469 21.82h18.242l0.001953-21.82h-18.549zm18.555 21.822 0.001953 24.188c7.0591-3.2362 18.032-9.399 18.232-23.754l0.007813-0.43359h-18.242z" style="fill-opacity:.4;stroke-width:.55042"/>
<path id="keyhole" d="m5.9073 4.8889a1.2769 1.2769 0 0 0-1.276 1.277 1.2769 1.2769 0 0 0 0.72454 1.1513l-0.4458 2.3541h1.9965l-0.4458-2.3541a1.2769 1.2769 0 0 0 0.72447-1.1512 1.2769 1.2769 0 0 0-1.2769-1.277 1.2769 1.2769 0 0 0-9.488e-4 0z" /> <path id="outline" transform="matrix(.26458 0 0 .26458 -5.37e-5 0)" d="m2.6504 0.19922 0.021484 1.4766 0.31055 25.172c0.093479 7.5478 3.1451 12.529 7.0488 15.826 3.9038 3.297 8.5769 5.029 12.025 6.6152l0.65039 0.30274 0.63477-0.33984c3.0702-1.6216 7.7769-3.3403 11.773-6.5996 3.9966-3.2593 7.2344-8.2277 7.2344-15.826v-14.336l-13.221-12.291zm2.9453 2.916h20.381v12.379h13.457v11.332c0 6.8038-2.6491 10.706-6.1562 13.566-3.2982 2.6898-7.3426 4.2502-10.623 5.9141-3.4806-1.5714-7.5236-3.1369-10.74-5.8535-3.4025-2.8737-5.9391-6.8355-6.0234-13.643zm23.289 0.83789 9.2871 8.6328h-9.2871zm-6.5176 14.223a4.9632 4.9632 0 0 0-4.8496 4.9629 4.9632 4.9632 0 0 0 2.8184 4.4746l-1.7324 9.1504h7.7598l-1.7324-9.1523a4.9632 4.9632 0 0 0 2.8145-4.4727 4.9632 4.9632 0 0 0-4.9629-4.9629 4.9632 4.9632 0 0 0-0.11523 0z" style="color-rendering:auto;color:#000000;dominant-baseline:auto;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;font-variation-settings:normal;image-rendering:auto;inline-size:0;isolation:auto;mix-blend-mode:normal;shape-margin:0;shape-padding:0;shape-rendering:auto;solid-color:#000000;stop-color:#000000;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</svg> </svg>
*/}).toString().slice(14,-3); */}).toString().slice(14,-3);
return svg; return svg;
@ -1179,7 +1179,18 @@ define([
// getPinnedUsage updates common.account.usage, and other values // getPinnedUsage updates common.account.usage, and other values
// so we can just use those and only check for errors // so we can just use those and only check for errors
var $container = $('<span>', {'class':'cp-limit-container'}); var $container = $('<span>', {'class':'cp-limit-container'});
var to;
var todo = function (err, data) { var todo = function (err, data) {
if (to) {
clearTimeout(to);
to = undefined;
}
if (err === 'RPC_NOT_READY') {
to = setTimeout(function () {
common.getPinUsage(teamId, todo);
}, 1000);
return;
}
if (err || !data) { return void console.error(err || 'No data'); } if (err || !data) { return void console.error(err || 'No data'); }
var usage = data.usage; var usage = data.usage;
@ -1849,6 +1860,13 @@ define([
var oldUrl = ''; var oldUrl = '';
var updateButton = function () { var updateButton = function () {
var myData = metadataMgr.getUserData(); var myData = metadataMgr.getUserData();
var privateData = metadataMgr.getPrivateData();
if (!priv.plan && privateData.plan) {
config.$initBlock.empty();
metadataMgr.off('change', updateButton);
UIElements.createUserAdminMenu(Common, config);
return;
}
if (!myData) { return; } if (!myData) { return; }
if (loadingAvatar) { if (loadingAvatar) {
// Try again in 200ms // Try again in 200ms
@ -2087,6 +2105,18 @@ define([
var sframeChan = common.getSframeChannel(); var sframeChan = common.getSframeChannel();
var metadataMgr = common.getMetadataMgr(); var metadataMgr = common.getMetadataMgr();
var privateData = metadataMgr.getPrivateData(); var privateData = metadataMgr.getPrivateData();
if (privateData.offline) {
var onChange = function () {
var privateData = metadataMgr.getPrivateData();
if (privateData.offline) { return; }
UIElements.getPadCreationScreen(common, cfg, appCfg, cb);
metadataMgr.off('change', onChange);
};
metadataMgr.onChange(onChange);
return;
}
var type = metadataMgr.getMetadataLazy().type || privateData.app; var type = metadataMgr.getMetadataLazy().type || privateData.app;
var fromFileData = privateData.fromFileData; var fromFileData = privateData.fromFileData;
@ -2130,6 +2160,7 @@ define([
// Team pad // Team pad
var team; var team;
// FIXME: broken wen cache is enabled
var teamExists = privateData.teams && Object.keys(privateData.teams).length; var teamExists = privateData.teams && Object.keys(privateData.teams).length;
var teamValue; var teamValue;
// storeInTeam can be // storeInTeam can be
@ -2545,7 +2576,7 @@ define([
var info = h('p.cp-password-info', Messages.password_info); var info = h('p.cp-password-info', Messages.password_info);
var password = UI.passwordInput({placeholder: Messages.password_placeholder}); var password = UI.passwordInput({placeholder: Messages.password_placeholder});
var $password = $(password); var $password = $(password);
var button = h('button', Messages.password_submit); var button = h('button.btn.btn-primary', Messages.password_submit);
cfg = cfg || {}; cfg = cfg || {};
if (cfg.value && !isError) { if (cfg.value && !isError) {
@ -2586,7 +2617,7 @@ define([
UIElements.displayBurnAfterReadingPage = function (common, cb) { UIElements.displayBurnAfterReadingPage = function (common, cb) {
var info = h('p.cp-password-info', Messages.burnAfterReading_warningAccess); var info = h('p.cp-password-info', Messages.burnAfterReading_warningAccess);
var button = h('button.primary', Messages.burnAfterReading_proceed); var button = h('button.btn.primary', Messages.burnAfterReading_proceed);
$(button).on('click', function () { $(button).on('click', function () {
cb(); cb();

@ -272,6 +272,14 @@
else if (bytes >= oneMegabyte) { return 'MB'; } else if (bytes >= oneMegabyte) { return 'MB'; }
}; };
Util.getPrettySize = function (bytes, Messages) {
var unit = Util.magnitudeOfBytes(bytes);
if (unit === 'GB') {
return Messages._getKey('formattedGB', [Util.bytesToGigabytes(bytes)]);
}
return Messages._getKey('formattedMB', [Util.bytesToMegabytes(bytes)]);
};
// given a path, asynchronously return an arraybuffer // given a path, asynchronously return an arraybuffer
var getCacheKey = function (src) { var getCacheKey = function (src) {

@ -11,7 +11,7 @@ define([
'/common/highlight/highlight.pack.js', '/common/highlight/highlight.pack.js',
'/bower_components/diff-dom/diffDOM.js', '/bower_components/diff-dom/diffDOM.js',
'/bower_components/tweetnacl/nacl-fast.min.js', '/bower_components/tweetnacl/nacl-fast.min.js',
'css!/common/highlight/styles/github.css' 'css!/common/highlight/styles/'+ (window.CryptPad_theme === 'dark' ? 'dark.css' : 'github.css')
],function ($, ApiConfig, Marked, Hash, Util, h, MT, MediaTag, Messages) { ],function ($, ApiConfig, Marked, Hash, Util, h, MT, MediaTag, Messages) {
var DiffMd = {}; var DiffMd = {};
@ -40,6 +40,7 @@ define([
Mermaid = _Mermaid; Mermaid = _Mermaid;
Mermaid.initialize({ Mermaid.initialize({
gantt: { axisFormat: '%m-%d', }, gantt: { axisFormat: '%m-%d', },
theme: (window.CryptPad_theme === 'dark') ? 'dark' : undefined,
"themeCSS": mermaidThemeCSS, "themeCSS": mermaidThemeCSS,
}); });
} }

@ -124,7 +124,7 @@ define([
var $gridIcon = $('<button>', {"class": "fa fa-th-large"}); var $gridIcon = $('<button>', {"class": "fa fa-th-large"});
var $sortAscIcon = $('<span>', {"class": "fa fa-angle-up sortasc"}); var $sortAscIcon = $('<span>', {"class": "fa fa-angle-up sortasc"});
var $sortDescIcon = $('<span>', {"class": "fa fa-angle-down sortdesc"}); var $sortDescIcon = $('<span>', {"class": "fa fa-angle-down sortdesc"});
var $closeIcon = $('<span>', {"class": "fa fa-window-close"}); var $closeIcon = $('<span>', {"class": "fa fa-times"});
//var $backupIcon = $('<span>', {"class": "fa fa-life-ring"}); //var $backupIcon = $('<span>', {"class": "fa fa-life-ring"});
var $searchIcon = $('<span>', {"class": "fa fa-search cp-app-drive-tree-search-icon"}); var $searchIcon = $('<span>', {"class": "fa fa-search cp-app-drive-tree-search-icon"});
var $addIcon = $('<span>', {"class": "fa fa-plus"}); var $addIcon = $('<span>', {"class": "fa fa-plus"});
@ -3259,6 +3259,7 @@ define([
var $spinnerContainer = $(h('div.cp-app-drive-search-spinner')); var $spinnerContainer = $(h('div.cp-app-drive-search-spinner'));
var spinner = UI.makeSpinner($spinnerContainer); var spinner = UI.makeSpinner($spinnerContainer);
var searching = true;
var $input = APP.Search.$input = $('<input>', { var $input = APP.Search.$input = $('<input>', {
id: 'cp-app-drive-search-input', id: 'cp-app-drive-search-input',
placeholder: Messages.fm_searchName, placeholder: Messages.fm_searchName,
@ -3266,21 +3267,19 @@ define([
draggable: false, draggable: false,
tabindex: 1, tabindex: 1,
}).keyup(function (e) { }).keyup(function (e) {
var lastValue = search.value; if (searching) {
search.value = $input.val().trim(); e.preventDefault();
if (lastValue === search.value) { return; } e.stopPropagation();
if (search.to) { window.clearTimeout(search.to); }
if (search.value === "") {
search.cursor = 0;
APP.displayDirectory([SEARCH]);
return; return;
} }
spinner.spin(); var currentValue = $input.val().trim();
if (search.to) { window.clearTimeout(search.to); }
if (e.which === 13) { if (e.which === 13) {
spinner.spin();
var newLocation = [SEARCH, $input.val()]; var newLocation = [SEARCH, $input.val()];
search.cursor = $input[0].selectionStart; search.cursor = $input[0].selectionStart;
if (!manager.comparePath(newLocation, currentPath.slice())) { if (!manager.comparePath(newLocation, currentPath.slice())) {
searching = true;
APP.displayDirectory(newLocation); APP.displayDirectory(newLocation);
} }
return; return;
@ -3288,27 +3287,30 @@ define([
if (e.which === 27) { if (e.which === 27) {
$input.val(''); $input.val('');
search.cursor = 0; search.cursor = 0;
searching = true;
APP.displayDirectory([SEARCH]); APP.displayDirectory([SEARCH]);
return; return;
} }
if ($input.val()) {
if (!$input.hasClass('cp-app-drive-search-active')) { if (currentValue === "") {
$input.addClass('cp-app-drive-search-active'); search.cursor = 0;
} APP.displayDirectory([SEARCH]);
} else { return;
$input.removeClass('cp-app-drive-search-active');
} }
if (currentValue.length < 2) { return; } // Don't autosearch 1 character
search.to = window.setTimeout(function () { search.to = window.setTimeout(function () {
var newLocation = [SEARCH, $input.val()]; var newLocation = [SEARCH, $input.val()];
search.cursor = $input[0].selectionStart; search.cursor = $input[0].selectionStart;
if (currentValue === search.value) { return; }
if (!manager.comparePath(newLocation, currentPath.slice())) { if (!manager.comparePath(newLocation, currentPath.slice())) {
searching = true;
APP.displayDirectory(newLocation); APP.displayDirectory(newLocation);
} }
}, 500); }, 500);
}).on('click mousedown mouseup', function (e) { }).on('click mousedown mouseup', function (e) {
e.stopPropagation(); e.stopPropagation();
}).val(value || '').appendTo($div); }).val(value || '').appendTo($div);
if (value) { $input.addClass('cp-app-drive-search-active'); }
$input[0].selectionStart = search.cursor || 0; $input[0].selectionStart = search.cursor || 0;
$input[0].selectionEnd = search.cursor || 0; $input[0].selectionEnd = search.cursor || 0;
@ -3329,6 +3331,7 @@ define([
if (typeof(value) === "string" && value.trim()) { if (typeof(value) === "string" && value.trim()) {
spinner.spin(); spinner.spin();
} else { } else {
searching = false;
return; return;
} }
@ -3338,6 +3341,7 @@ define([
if (!filesList.length) { if (!filesList.length) {
$list.append(h('div.cp-app-drive-search-noresult', Messages.fm_noResult)); $list.append(h('div.cp-app-drive-search-noresult', Messages.fm_noResult));
spinner.hide(); spinner.hide();
searching = false;
return; return;
} }
var sortable = {}; var sortable = {};
@ -3402,6 +3406,7 @@ define([
}); });
setTimeout(collapseDrivePath); setTimeout(collapseDrivePath);
spinner.hide(); spinner.hide();
searching = false;
}); });
}; };
@ -4023,16 +4028,6 @@ define([
$tree.html(''); $tree.html('');
/*
$(h('button.fa.fa-times.cp-close-button', {
title: Messages.filePicker_close
})).click(function (e) {
e.stopPropagation();
$tree.hide();
checkCollapseButton();
}).appendTo($tree);
*/
var $div = $('<div>', {'class': 'cp-app-drive-tree-categories-container'}) var $div = $('<div>', {'class': 'cp-app-drive-tree-categories-container'})
.appendTo($tree); .appendTo($tree);
if (displayedCategories.indexOf(SEARCH) !== -1) { createCategory($div, SEARCH); } if (displayedCategories.indexOf(SEARCH) !== -1) { createCategory($div, SEARCH); }

@ -1,52 +0,0 @@
@import (reference) '../customize/src/less2/include/colortheme-all.less';
@import (reference) '../customize/src/less2/include/modal.less';
.fileDialog_main () {
#fileDialog {
.modal_main();
display: none;
.cp-modal {
.fileContainer {
display: flex;
flex-wrap: wrap;
justify-content: center;
overflow-y: auto;
}
.element {
@darker: darken(@colortheme_modal-fg, 30%);
width: 200px;
min-width: 200px;
height: 1em;
padding: 0.5em;
margin: 5px;
box-sizing: content-box;
text-align: left;
line-height: 1em;
cursor: pointer;
background-color: #111;
color: @darker;
transition: all 0.1s;
&:hover {
color: @colortheme_modal-fg;
}
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
align-items: center;
.fa {
cursor: pointer;
margin-right: 0.5em;
}
}
}
}
}

@ -0,0 +1,76 @@
/*
Dracula Theme v1.2.0
https://github.com/zenorocha/dracula-theme
Copyright 2015, All rights reserved
Code licensed under the MIT license
http://zenorocha.mit-license.org
@author Éverton Ribeiro <nuxlli@gmail.com>
@author Zeno Rocha <hi@zenorocha.com>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #282a36;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-section,
.hljs-link {
color: #8be9fd;
}
.hljs-function .hljs-keyword {
color: #ff79c6;
}
.hljs,
.hljs-subst {
color: #f8f8f2;
}
.hljs-string,
.hljs-title,
.hljs-name,
.hljs-type,
.hljs-attribute,
.hljs-symbol,
.hljs-bullet,
.hljs-addition,
.hljs-variable,
.hljs-template-tag,
.hljs-template-variable {
color: #f1fa8c;
}
.hljs-comment,
.hljs-quote,
.hljs-deletion,
.hljs-meta {
color: #6272a4;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-title,
.hljs-section,
.hljs-doctag,
.hljs-type,
.hljs-name,
.hljs-strong {
font-weight: bold;
}
.hljs-emphasis {
font-style: italic;
}

@ -948,7 +948,7 @@ define([
$d.append(changePass); $d.append(changePass);
} }
if (owned) { if (owned) {
var deleteOwned = h('button.btn.btn-danger-alt', [h('i.cptools.cptools-destroy'), Messages.fc_delete_owned]); var deleteOwned = h('button.btn.btn-danger', [h('i.cptools.cptools-destroy'), Messages.fc_delete_owned]);
var spinner = UI.makeSpinner(); var spinner = UI.makeSpinner();
UI.confirmButton(deleteOwned, { UI.confirmButton(deleteOwned, {
classes: 'btn-danger' classes: 'btn-danger'
@ -992,8 +992,10 @@ define([
// Also stop for shared folders // Also stop for shared folders
if (parsed.hashData.type !== 'pad' || parsed.type === 'drive') { return h('div', content); } if (parsed.hashData.type !== 'pad' || parsed.type === 'drive') { return h('div', content); }
var owned = Modal.isOwned(Env, data);
// Request edit access // Request edit access
if (common.isLoggedIn() && ((data.roHref && !data.href) || data.fakeHref)) { if (common.isLoggedIn() && ((data.roHref && !data.href) || data.fakeHref) && !owned) {
var requestButton = h('button.btn.btn-secondary.no-margin.cp-access-margin-right', var requestButton = h('button.btn.btn-secondary.no-margin.cp-access-margin-right',
Messages.requestEdit_button); Messages.requestEdit_button);
var requestBlock = h('p', requestButton); var requestBlock = h('p', requestButton);
@ -1028,7 +1030,6 @@ define([
// Mute access requests // Mute access requests
var edPublic = priv.edPublic; var edPublic = priv.edPublic;
var owned = Modal.isOwned(Env, data);
var canMute = data.mailbox && owned === true && ( var canMute = data.mailbox && owned === true && (
(typeof (data.mailbox) === "string" && data.owners[0] === edPublic) || (typeof (data.mailbox) === "string" && data.owners[0] === edPublic) ||
data.mailbox[edPublic]); data.mailbox[edPublic]);

@ -1,3 +1,17 @@
(function () {
try {
var req = JSON.parse(decodeURIComponent(window.location.hash.substring(1)));
var theme = req.theme;
var os = req.themeOS;
window.CryptPad_theme = theme || os;
if ((theme || os) === 'dark') {
var s = document.createElement('style');
s.innerHTML = 'body { background: black; }';
document.body.appendChild(s);
}
} catch (e) { console.error(e); }
})();
require(['/customize/loading.js'], function (Loading) { require(['/customize/loading.js'], function (Loading) {
Loading(); Loading();
}); });

@ -1,27 +0,0 @@
.markdown_preformatted-code (@color: #333) {
pre > code {
display: block;
position: relative;
border: 1px solid @color;
width: 90%;
margin: auto;
padding-left: .25vw;
overflow-x: auto;
overflow-y: hidden;
}
}
.markdown_gfm-table (@color: black) {
table {
border-collapse: collapse;
tr {
th {
border: 3px solid @color;
padding: 15px;
}
}
}
}
// todo ul, ol

@ -46,14 +46,14 @@ body.cp-app-sheet, body.cp-app-oodoc, body.cp-app-ooslide {
#cp-app-oo-container { #cp-app-oo-container {
flex: 1; flex: 1;
height: 100%; height: 100%;
background-color: lightgrey; background-color: @cp_app-bg;
display: flex; display: flex;
min-height: 0; min-height: 0;
} }
#cp-app-oo-editor { #cp-app-oo-editor {
flex: 1; flex: 1;
height: 100%; height: 100%;
background-color: lightgrey; background-color: @cp_app-bg;
display: flex; display: flex;
flex-flow: column; flex-flow: column;
position: relative; position: relative;
@ -67,7 +67,7 @@ body.cp-app-sheet, body.cp-app-oodoc, body.cp-app-ooslide {
bottom: 0; bottom: 0;
right: 0; right: 0;
left: 0; left: 0;
background-color: rgba(255,255,255,0.5); background-color: @cp_oo-offline-overlay;
} }
#ooframe { #ooframe {
flex: 1; flex: 1;

@ -37,7 +37,7 @@ define([
var onReadyEvt = Util.mkEvent(true); var onReadyEvt = Util.mkEvent(true);
var onCacheReadyEvt = Util.mkEvent(true); var onCacheReadyEvt = Util.mkEvent(true);
// XXX Number of days before deleting the cache for a channel or blob // Number of days before deleting the cache for a channel or blob
var CACHE_MAX_AGE = 90; // DAYS var CACHE_MAX_AGE = 90; // DAYS
// Default settings for new users // Default settings for new users
@ -1229,6 +1229,7 @@ define([
var data = obj.data; var data = obj.data;
if (channels.indexOf(data.channel) !== -1) { return; } if (channels.indexOf(data.channel) !== -1) { return; }
var id = obj.id; var id = obj.id;
if (data.channel) { channels.push(data.channel); }
var parsed = Hash.parsePadUrl(data.href || data.roHref); var parsed = Hash.parsePadUrl(data.href || data.roHref);
if ((!types || types.length === 0 || types.indexOf(parsed.type) !== -1) && if ((!types || types.length === 0 || types.indexOf(parsed.type) !== -1) &&
!isFiltered(parsed.type, data)) { !isFiltered(parsed.type, data)) {

@ -100,7 +100,7 @@ define([
try { try {
Object.keys(localStorage || {}).forEach(function (k) { Object.keys(localStorage || {}).forEach(function (k) {
// Remvoe everything in localStorage except CACHE and FS_hash // Remvoe everything in localStorage except CACHE and FS_hash
if (/^CRYPTPAD_CACHE/.test(k) || /^LESS_CACHE/.test(k) || k === Constants.fileHashKey) { return; } if (/^CRYPTPAD_CACHE/.test(k) || /^LESS_CACHE/.test(k) || k === Constants.fileHashKey || /^CRYPTPAD_STORE|colortheme/.test(k)) { return; }
delete localStorage[k]; delete localStorage[k];
}); });
} catch (e) { console.error(e); } } catch (e) { console.error(e); }

@ -379,10 +379,12 @@ define([
exp.configureTheme = function (Common, cb) { exp.configureTheme = function (Common, cb) {
/* Remember the user's last choice of theme using localStorage */ /* Remember the user's last choice of theme using localStorage */
var themeKey = ['codemirror', 'theme']; var isDark = window.CryptPad_theme === "dark";
var themeKey = ['codemirror', isDark ? 'themedark' : 'theme'];
var defaultTheme = isDark ? 'dracula' : 'default';
var todo = function (err, lastTheme) { var todo = function (err, lastTheme) {
lastTheme = lastTheme || 'default'; lastTheme = lastTheme || defaultTheme;
var options = []; var options = [];
Themes.forEach(function (l) { Themes.forEach(function (l) {
options.push({ options.push({

@ -32,7 +32,7 @@ define([
module.create = function (common, config) { module.create = function (common, config) {
var File = {}; var File = {};
var origin = common.getMetadataMgr().getPrivateData().origin; //var origin = common.getMetadataMgr().getPrivateData().origin;
var response = Util.response(function (label, info) { var response = Util.response(function (label, info) {
console.error('COMMON_UPLOAD__' + label, info); console.error('COMMON_UPLOAD__' + label, info);
}); });
@ -288,7 +288,7 @@ define([
store: true store: true
}; };
var createHelper = function (href, text) { var createHelper = function (href, text) {
return UI.createHelper(origin + href, text); return UI.createHelper(href, text);
}; };
var createManualStore = function (isFolderUpload) { var createManualStore = function (isFolderUpload) {
var privateData = common.getMetadataMgr().getPrivateData(); var privateData = common.getMetadataMgr().getPrivateData();

@ -11,10 +11,13 @@ define([
common.initIframe = function (waitFor, isRt, pathname) { common.initIframe = function (waitFor, isRt, pathname) {
var requireConfig = RequireConfig(); var requireConfig = RequireConfig();
var lang = Messages._languageUsed; var lang = Messages._languageUsed;
var themeKey = 'CRYPTPAD_STORE|colortheme';
var req = { var req = {
cfg: requireConfig, cfg: requireConfig,
req: [ '/common/loading.js' ], req: [ '/common/loading.js' ],
pfx: window.location.origin, pfx: window.location.origin,
theme: localStorage[themeKey],
themeOS: localStorage[themeKey+'_default'],
lang: lang lang: lang
}; };
window.rc = requireConfig; window.rc = requireConfig;
@ -30,9 +33,11 @@ define([
} }
} }
document.getElementById('sbox-iframe').setAttribute('src',
var $i = $('<iframe>').attr('id', 'sbox-iframe').attr('src',
ApiConfig.httpSafeOrigin + (pathname || window.location.pathname) + 'inner.html?' + ApiConfig.httpSafeOrigin + (pathname || window.location.pathname) + 'inner.html?' +
requireConfig.urlArgs + '#' + encodeURIComponent(JSON.stringify(req))); requireConfig.urlArgs + '#' + encodeURIComponent(JSON.stringify(req)));
$('iframe-placeholder').after($i).remove();
// This is a cheap trick to avoid loading sframe-channel in parallel with the // This is a cheap trick to avoid loading sframe-channel in parallel with the
// loading screen setup. // loading screen setup.

@ -532,7 +532,7 @@ MessengerUI, Messages) {
Common.getSframeChannel().event('EV_SHARE_OPEN', { Common.getSframeChannel().event('EV_SHARE_OPEN', {
hidden: true hidden: true
}); });
$shareBlock.click(function () { $shareBlock.click(function () {
var title = (config.title && config.title.getTitle && config.title.getTitle()) var title = (config.title && config.title.getTitle && config.title.getTitle())
|| (config.title && config.title.defaultName) || (config.title && config.title.defaultName)
|| ""; || "";

@ -422,7 +422,6 @@
"register_mustRememberPass": "No podem restablir la contrasenya si l'oblideu. És molt important que la recordeu! Marqueu la casella per confirmar que ho enteneu.", "register_mustRememberPass": "No podem restablir la contrasenya si l'oblideu. És molt important que la recordeu! Marqueu la casella per confirmar que ho enteneu.",
"register_whyRegister": "Per què cal registrar-se?", "register_whyRegister": "Per què cal registrar-se?",
"register_header": "Us donem la benvinguda a CryptPad", "register_header": "Us donem la benvinguda a CryptPad",
"register_explanation": "<h3>Abans de començar, veurem algunes coses:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'></i>La contrasenya és la clau secreta que encripta tots els vostres documents. Si la perdeu, no hi ha manera de recuperar les vostres dades.</li><li><i class='fa fa-info-circle'></i>Podeu importar documents que hàgiu vist al vostre navegador per tenir-los al vostre compte.</li><li><i class='fa fa-info-circle'></i>Si utilitzeu un ordinador compartit, cal que tanqueu la sessió quan acabeu de treballar, tancar la pestanya no és suficient.</li></ul>",
"register_writtenPassword": "He introduït el meu identificador i la contrasenya, continua", "register_writtenPassword": "He introduït el meu identificador i la contrasenya, continua",
"register_cancel": "Torna", "register_cancel": "Torna",
"register_warning": "Sense Rastre significa que no podem recuperar les vostres dades si perdeu o oblideu la vostra contrasenya.", "register_warning": "Sense Rastre significa que no podem recuperar les vostres dades si perdeu o oblideu la vostra contrasenya.",
@ -632,6 +631,5 @@
"whatis_title": "Què és CryptPad", "whatis_title": "Què és CryptPad",
"terms": "Condicions d'ús", "terms": "Condicions d'ús",
"main_info": "<h2>Col·laboreu amb Confiança</h2>\nFeu créixer les vostres idees conjuntament amb documents compartits mentre la tecnologia <strong>Coneixement Zero</strong> assegura la vostra privacitat; <strong>fins i tot per nosaltres</strong>.", "main_info": "<h2>Col·laboreu amb Confiança</h2>\nFeu créixer les vostres idees conjuntament amb documents compartits mentre la tecnologia <strong>Coneixement Zero</strong> assegura la vostra privacitat; <strong>fins i tot per nosaltres</strong>.",
"whatis_collaboration_p1": "Amb CryptPad, podeu crear de forma ràpida, documents col·laboratius per prendre notes i posar en ordre idees conjuntament. Quan us registreu i inicieu la vostra sessió, teniu la capacitat de carregar fitxers i un CryptDrive on podeu organitzar tots els vostres documents. Com a persona registrada disposeu de 50MB d'espai gratuït.",
"privacy": "Privacitat" "privacy": "Privacitat"
} }

@ -414,7 +414,6 @@
"register_mustRememberPass": "Wir können dein Passwort nicht zurücksetzen, falls du es vergisst. Es ist sehr wichtig, dass du es dir merkst! Bitte markiere das Kästchen, um dies zu bestätigen.", "register_mustRememberPass": "Wir können dein Passwort nicht zurücksetzen, falls du es vergisst. Es ist sehr wichtig, dass du es dir merkst! Bitte markiere das Kästchen, um dies zu bestätigen.",
"register_whyRegister": "Wieso solltest du dich registrieren?", "register_whyRegister": "Wieso solltest du dich registrieren?",
"register_header": "Registrieren", "register_header": "Registrieren",
"register_explanation": "<h3>Lass uns ein paar Punkte überprüfen:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'> </i> Dein Passwort ist dein Geheimnis, um alle deine Dokumente zu verschlüsseln. Wenn du es verlierst, können deine Daten nicht wiederhergestellt werden.</li><li><i class='fa fa-info-circle'> </i> Du kannst die Pads, die du zuletzt angesehen hast, importieren. Sie sind dann in deinem CryptDrive.</li><li><i class='fa fa-info-circle'> </i> Wenn du den Rechner mit anderen teilst, musst du dich ausloggen, wenn du fertig bist. Es ist nicht ausreichend, das Browserfenster oder den Browser zu schließen.</li></ul>",
"register_writtenPassword": "Ich habe meinen Benutzername und mein Passwort notiert. Weiter geht's", "register_writtenPassword": "Ich habe meinen Benutzername und mein Passwort notiert. Weiter geht's",
"register_cancel": "Abbrechen", "register_cancel": "Abbrechen",
"register_warning": "<i class='fa fa-warning'></i> Warnung", "register_warning": "<i class='fa fa-warning'></i> Warnung",
@ -593,7 +592,7 @@
"about_core": "Kernentwickler", "about_core": "Kernentwickler",
"about_contributors": "Wichtige Mitwirkende", "about_contributors": "Wichtige Mitwirkende",
"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": "Suite zur Zusammenarbeit,<br>verschlüsselt und Open-Source", "main_catch_phrase": "Suite zur Zusammenarbeit,<br>verschlüsselt und quelloffen",
"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.",
"footer_applications": "Anwendungen", "footer_applications": "Anwendungen",
"footer_contact": "Kontakt", "footer_contact": "Kontakt",
@ -606,20 +605,7 @@
"topbar_whatIsCryptpad": "Was ist CryptPad", "topbar_whatIsCryptpad": "Was ist CryptPad",
"whatis_title": "Was ist CryptPad?", "whatis_title": "Was ist CryptPad?",
"whatis_collaboration": "Vertrauliche Zusammenarbeit", "whatis_collaboration": "Vertrauliche Zusammenarbeit",
"whatis_collaboration_p1": "Mit CryptPad kannst du kollaborative Dokumente erstellen, um Notizen und Ideen gemeinsam zu bearbeiten. Wenn du dich registrierst und einloggst, bekommst du die Möglichkeit, Dateien hochzuladen und Ordner einzurichten, um alle deine Dokumente zu organisieren. Als registrierter Nutzer erhältst du kostenlos 50 MB Speicherplatz.",
"whatis_collaboration_p2": "Du kannst den Zugang zu einem CryptPad-Dokument teilen, indem du einfach den entsprechenden Link teilst. Du kannst auch einen <em>schreibgeschützten</em> Zugang erstellen, um die Ergebnisse deiner Arbeit zu teilen, während du sie noch bearbeitest.",
"whatis_collaboration_p3": "Du kannst Rich-Text Dokumente mit dem <a href=\"http://ckeditor.com/\">CKEditor</a> erstellen. Außerdem kannst du Markdown-Dokumente erstellen, die in Echtzeit formatiert angezeigt werden, während du tippst. Du kannst auch die Umfrage-Anwendung verwenden, um Termine unter mehrere Teilnehmern zu abzustimmen.",
"whatis_zeroknowledge": "Zero Knowledge - Ohne Preisgabe deiner Daten",
"whatis_zeroknowledge_p1": "Wir wollen nicht wissen, was du gerade tippst. Und mit moderner Verschlüsselungstechnologie, kannst du sicher sein, dass wir es auch nicht können. CryptPad verwendet <strong>100% clientseitige Verschlüsselung</strong>, um den Inhalt vor uns, den Hostern dieser Website, zu schützen.",
"whatis_zeroknowledge_p2": "Wenn du dich registrierst und einloggst, werden dein Benutzername und dein Passwort in einen Schlüssel mit einer <a href=\"https://de.wikipedia.org/wiki/Scrypt\">Scrypt Schlüssel-Ableitungsfunktion</a> umgerechnet. Weder dieser Schlüssel noch der Benutzername oder das Passwort werden zum Server geschickt. Stattdessen werden sie clientseitig benutzt, um den Inhalt deines CryptDrives zu entschlüsseln. Dieses beinhaltet alle Dokumente, die dir zugänglich sind.",
"whatis_zeroknowledge_p3": "Wenn du Link zu einem Dokument teilst, teilst du auch den kryptografischen Schlüssel, der Zugang zu diesem Dokument gibt. Da dieser Schlüssel im <a href=\"https://de.wikipedia.org/wiki/Fragmentbezeichner\">Fragmentbezeichner</a> liegt, wird er nie direkt zum Server geschickt. Bitte lies unsere <a href=\"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/\">Blogeintrag über Datenschutz</a>, um mehr darüber zu erfahren, auf welche Typen von Metadaten wir zugreifen können und auf welche nicht.",
"whatis_drive": "Organisieren mit CryptDrive", "whatis_drive": "Organisieren mit CryptDrive",
"whatis_drive_p1": "Sobald auf ein Dokument mit CryptPad zugegriffen wird, wird es automatisch zum Stamm-Ordner deines CryptDrives hinzugefügt. Später kannst du diese Dokumente in eigenen Ordnern organisieren oder du kannst es in den Papierkorb verschieben. CryptDrive erlaubt die Suche nach deinen Dokumenten, wie und wann du willst.",
"whatis_drive_p2": "Mit einfachem Drag & Drop kannst du die Pads in deinem CryptDrive verschieben. Die Links zu diesen Pads bleiben erhalten, damit Mitarbeiter nie ihren Zugang verlieren.",
"whatis_drive_p3": "Du kannst auch Dateien in dein CryptDrive hochladen und mit deinen Kollegen teilen. Hochgeladene Dateien können genau so wie kollaborative Pads organisiert werden.",
"whatis_business": "CryptPad im Business",
"whatis_business_p1": "Die Zero-Knowledge-Verschlüsselung von CryptPad multipliziert die Effektivität existierender Sicherheitsprotokolle durch Spiegelung der Zugangskontrollen von Organisationen in Kryptografie. Weil sensible Daten nur mit den Zugangsdaten des Nutzers entschlüsselt werden können, ist CryptPad ein weniger lohnendes Ziel verglichen mit traditionellen Cloud-Diensten. Lies das <a href=\"https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf\">CryptPad-Whitepaper</a>, um mehr darüber zu erfahren, wie CryptPad deinem Unternehmen helfen kann.",
"whatis_business_p2": "CryptPad kann auf eigenen Rechnern installiert werden. <a href=\"https://cryptpad.fr/about.html\">Entwickler der CryptPad-Software</a> von XWiki SAS können kommerzielle Unterstützung, Anpassung und Entwicklung anbieten. Bitte schicke eine E-Mail an <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a>, um mehr zu erfahren.",
"policy_title": "Datenschutzerklärung für CryptPad", "policy_title": "Datenschutzerklärung für CryptPad",
"policy_whatweknow": "Was wir über dich wissen", "policy_whatweknow": "Was wir über dich wissen",
"policy_whatweknow_p1": "Als im Web gehostete Anwendung hat CryptPad Zugriff auf die Metadaten, die vom HTTP-Protokoll übertragen werden. Dies umfasst deine IP-Adresse und diverse andere HTTP-Header, die es ermöglichen, deinen Browser zu identifizieren. Um zu sehen, welche Daten dein Browser preisgibt, kannst du die Seite <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"Welche HTTP-Header sendet mein Browser\">WhatIsMyBrowser.com</a> besuchen.", "policy_whatweknow_p1": "Als im Web gehostete Anwendung hat CryptPad Zugriff auf die Metadaten, die vom HTTP-Protokoll übertragen werden. Dies umfasst deine IP-Adresse und diverse andere HTTP-Header, die es ermöglichen, deinen Browser zu identifizieren. Um zu sehen, welche Daten dein Browser preisgibt, kannst du die Seite <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"Welche HTTP-Header sendet mein Browser\">WhatIsMyBrowser.com</a> besuchen.",
@ -663,10 +649,9 @@
"features_f_social_note": "Kontakte für sichere Zusammenarbeit hinzufügen, ein Profil erstellen, detaillierte Zugriffskontrolle", "features_f_social_note": "Kontakte für sichere Zusammenarbeit hinzufügen, ein Profil erstellen, detaillierte Zugriffskontrolle",
"features_f_file1": "Dateien hochladen und teilen", "features_f_file1": "Dateien hochladen und teilen",
"features_f_file1_note": "Speichere Dateien in deinem CryptDrive: Bilder, PDFs, Videos und mehr. Teile sie mit deinen Kontakten oder bette sie in deine Dokumente ein. (Bis zu {0} MB)", "features_f_file1_note": "Speichere Dateien in deinem CryptDrive: Bilder, PDFs, Videos und mehr. Teile sie mit deinen Kontakten oder bette sie in deine Dokumente ein. (Bis zu {0} MB)",
"features_f_storage1": "Persönlicher Speicherplatz ({0} GB)", "features_f_storage1": "Persönlicher Speicherplatz ({0})",
"features_f_storage1_note": "Dokumente in deinem CryptDrive werden nicht wegen Inaktivität gelöscht", "features_f_storage1_note": "Dokumente in deinem CryptDrive werden nicht wegen Inaktivität gelöscht",
"features_f_register": "Registrieren (kostenlos)", "features_f_register": "Registrieren (kostenlos)",
"features_f_register_note": "Keine E-Mail-Adresse oder persönliche Informationen notwendig",
"features_f_reg": "Alle Funktionen für angemeldete Benutzer", "features_f_reg": "Alle Funktionen für angemeldete Benutzer",
"features_f_reg_note": "Mit zusätzlichen Vorteilen", "features_f_reg_note": "Mit zusätzlichen Vorteilen",
"features_f_storage2": "Mehr Speicherplatz", "features_f_storage2": "Mehr Speicherplatz",
@ -677,146 +662,6 @@
"features_f_supporter_note": "Hilf CryptPad, finanziell nachhaltig zu werden und zeige, dass datenschutzfreundliche Software, die freiwillig von Anwendern finanziert wird, die Normalität sein sollte", "features_f_supporter_note": "Hilf CryptPad, finanziell nachhaltig zu werden und zeige, dass datenschutzfreundliche Software, die freiwillig von Anwendern finanziert wird, die Normalität sein sollte",
"features_f_subscribe": "Abonnieren", "features_f_subscribe": "Abonnieren",
"features_f_subscribe_note": "Zum Abonnieren ist ein registrierter Account erforderlich", "features_f_subscribe_note": "Zum Abonnieren ist ein registrierter Account erforderlich",
"faq_link": "FAQ",
"faq_title": "Häufige Fragen",
"faq_whatis": "Was ist <span class='cp-brand-font'>CryptPad</span>?",
"faq": {
"keywords": {
"title": "Schlüsselkonzepte",
"pad": {
"q": "Was ist ein Pad?",
"a": "Ein CryptPad-Dokument wird meist einfach <em>Pad</em> genannt. Dies wurde von <a href='http://etherpad.org/' target='_blank'>Etherpad</a> übernommen, einem kollaborativen Echtzeit-Editor.\nEs beschreibt ein Dokument, das du in deinem Browser bearbeiten kannst, normalerweise mit der Möglichkeit für andere Personen, die Veränderungen nahezu in Echtzeit zu sehen."
},
"owned": {
"q": "Was ist ein eigenes Pad?",
"a": "Ein <em>eigenes Pad</em> ist ein Pad mit einem definierten Eigentümer, der anhand seiner <em>Unterschrift mit öffentlichen Schlüssel</em> erkannt wird.Der Eigentümer eines Pads kann entscheiden, das Pad zu löschen. In diesem Fall ist das Pad auch für andere Nutzer nicht mehr verfügbar. Dabei spielt es keine Rolle, ob das Pad im CryptDrive der anderen Nutzer gespeichert war oder nicht."
},
"expiring": {
"q": "Was sind ablaufende Pads?",
"a": "Ein Pad kann mit einem <em>Ablaufdatum</em> versehen werden. Nach diesem Datum wird es automatisch vom Server gelöscht. Das Ablaufdatum kann sowohl sehr bald sein (in ein paar Stunden) oder in weiter Zukunft liegen (in hunderten Monaten). Das Pad und sein gesamter Verlauf wird nach dem Ablaufdatum endgültig gelöscht, auch wenn es gerade noch bearbeitet wird.<br><br>Wenn ein Dokument ein Ablaufdatum hat, kann man dieses Datum in den <em>Eigenschaften</em> sehen: entweder mit einem Rechtsklick im CryptDrive oder mit der Eigenschaften-Ansicht im geöffneten Pad."
},
"tag": {
"q": "Wie kann ich Tags verwenden?",
"a": "Du kannst Pads und im CryptDrive hochgeladene Dateien <em>taggen</em>. Dies bedeutet, sie mit einem Stichwort (Tag) zu versehen. Während der Bearbeitung gibt es dafür die Schaltfläche <em>Tag</em> (<span class='fa fa-hashtag'></span>) in der Werkzeugleiste. Wenn du die Pads und Dateien in deinem CryptDrive nach einem Tag durchsuchen möchtest, beginne den Suchbegriff mit einem Hashtag, also beispielsweise <em>#crypto</em>."
},
"template": {
"q": "Was ist eine Vorlage?",
"a": "Eine Vorlage ist ein Pad, das dazu verwendet werden kann, um den Inhalt für neu erstellte Pads zu definieren. Jedes existierende Pad kann in eine Vorlage umgewandelt werden, indem es in den Bereich <em>Vorlagen</em> des CryptDrives verschoben wird. Du kannst auch eine Kopie eines Dokuments erstellen, die zur Vorlage wird, indem du auf die Vorlagen-Schaltfläche (<span class='fa fa-bookmark'></span>) der Werkzeugleiste des Editors klickst."
},
"abandoned": {
"q": "Was ist ein verlassenes Pad?",
"a": "Ein <em>verlassenes Pad</em> ist ein Pad, das kein registrierter Benutzer in seinem CryptDrive gespeichert hat und in den letzten sechs Monaten nicht bearbeitet wurde. Verlassene Pads werden automatisch vom Server gelöscht."
}
},
"privacy": {
"title": "Privatsphäre",
"different": {
"q": "Wie unterscheidet sich CryptPad von anderen Pad-Diensten?",
"a": "CryptPad verschlüsselt Veränderungen deiner Dokumente, bevor diese Information zum Server gesendet wird. Somit können wir nicht lesen, was du getippt hast."
},
"me": {
"q": "Welche Informationen hat der Server über mich?",
"a": "Die Administratoren des Servers können die IP-Adresse der Personen sehen, die CryptPad besuchen. Wir speichern nicht, welche Adresse welches Pad besucht, aber wir könnten es tun. Wir haben aber keinen Zugriff auf den entschlüsselten Inhalt der Pads. Wenn du besorgt bist, dass wir diese Informationen auswerten, solltest du davon auszugehen, dass wir es tun. Denn wir können nicht beweisen, dass wir es nicht tun.<br><br> Wir sammeln grundlegende technische Informationen darüber, wie CryptPad benutzt wird. Dies umfasst beispielsweise die Größe des Bildschirms und welche Schaltflächen am häufigsten angeklickt werden. Das hilft uns dabei, unsere Software besser zu machen. Aber diese Sammlung unterbleibt, wenn du den Haken bei <em>Rückmeldung aktivieren</em> entfernst.<br><br>Wir verfolgen, welche Pads im CryptDrive eines Nutzers gespeichert werden. Dies ist notwendig, um die Speicherbegrenzungen umzusetzen. Den Inhalt der Pads kennen wir nicht. Die Speicherbegrenzungen sind mit dem öffentlichen Schlüssel eines Benutzers verbunden. Aber wir verbinden Namen oder E-Mail-Adressen nicht mit diesen öffentlichen Schlüsseln.<br><br> Du kannst mehr darüber in diesem <a href='https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/' target='_blank'>Blogeintrag</a> lesen."
},
"register": {
"q": "Weisst der Server mehr über mich, wenn ich registriere?",
"a": "Wir verlangen deine E-Mail-Adresse nicht, und der Server kennt Benutzername und Passwort auch dann nicht, wenn du dich registrierst. Statt dessen generiert das Registrierungs- und Anmeldeformular ein Schlüsselpaar aus deiner Eingabe. Nur der öffentliche Schlüssel dieses Schlüsselpaars wird zum Server geschickt. Mit diesem öffentlichen Schlüssel können wir z.B. die Menge der Daten, die du benutzt, kontrollieren, denn jeder Benutzer hat eine beschränkte Quota.<br><br>Wir benutzen die <em>Rückmeldung</em>s-Funktion, um den Server zu informieren, dass jemand mit deiner IP ein Konto registriert hat. Damit können wir messen, wie viele Benutzer CryptPad Konten registrieren und aus welchen Regionen. Somit können wir erfahren, welche Sprache besser unterstützt werden sollte.<br><br>Registrierte Benutzer informieren den Server, dass er Dokumente im CryptDrive auch dann nicht wegen Inaktivität löschen sollte, wenn sie nicht aktiv benutzt werden."
},
"other": {
"q": "Was können andere Benutzer über mich erfahren?",
"a": "Wenn du ein Pad mit jemand anderen bearbeitest, kommunizierst du mit dem Server. Nur wir kennen deine IP-Adresse. Andere Benutzer sehen deinen Benutzernamen, dein Benutzerbild, den Link zu deinem Profils (wenn du eins hast) und deinen <em>öffentlichen Schlüssel</em> (um die Nachrichten zu diesen Benutzern zu verschlüsseln)."
},
"anonymous": {
"q": "Macht mich CryptPad anonym?",
"a": "Auch wenn CryptPad so konzipiert wurde, dass es so wenig wie möglich über dich weiß, liefert es keine strenge Anonymität. Unsere Server kennen deine IP-Adresse, allerdings kannst du diese Information verbergen, indem du Tor verwendest. Tor zu verwenden, ohne dein Verhalten zu ändern, garantiert auch keine Anonymität, da der Server Benutzer anhand ihrer einzigartigen öffentlichen Schlüssel identifizieren kann. Wenn du denselben Schlüssel mit und ohne Tor benutzt, kann deine Sitzung de-anonymisiert werden.<br><br> Für Benutzer mit niedrigeren Ansprüchen an ihre Privatsphäre erfordert CryptPad im Gegenteil zu anderen Onlinediensten keine Identifikation mit Namen, Telefonnummer oder E-Mail-Adressen."
},
"policy": {
"q": "Habt ihr eine Datenschutzerklärung?",
"a": "Ja! Sie ist <a href='/privacy.html' target='_blank'>hier</a> verfügbar."
}
},
"security": {
"title": "Sicherheit",
"proof": {
"q": "Wie benutzt ihr Zero-Knowledge-Beweise?",
"a": "Wir benutzen den Begriff <em>Ohne Preisgabe von Daten</em> (<em>Zero Knowledge</em>) nicht im Sinn eines <em>Zero-Knowledge-Beweises</em>, sondern im Sinn eines <em>Zero-Knowledge-Webdienstes</em>. Ein <em>Zero-Knowledge-Webdienst</em> verschlüsselt die Benutzerdaten im Browser, ohne dass der Server je Zugang zu den unverschlüsselten Daten oder zu den Schlüsseln hat. <br><br> Wir haben <a href='https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services'>hier</a> eine kurze Liste von Zero-Knowledge-Webdiensten erstellt."
},
"why": {
"q": "Wieso sollte ich CryptPad verwenden?",
"a": "Unsere Position ist, dass Clouddienste nicht Zugang zu deinen Daten verlangen sollten, damit du sie mit deinen Kontakten und Mitarbeitern teilen kannst. Wenn du einen Webdienst benutzt, der nicht explizit angibt, dass kein Zugang zu deinen Information möglich ist, ist es sehr wahrscheinlich, dass deine Information für andere Zwecke verwertet werden."
},
"compromised": {
"q": "Liefert mir CryptPad einen Schutz, wenn mein Gerät kompromittiert wird?",
"a": "Für den Fall, dass dein Gerät gestohlen wird, ermöglicht CryptPad, das Ausloggen aller Geräte zu erzwingen - außer dem, das du gerade verwendest. Gehe dazu zur Seite mit deinen <strong>Einstellungen</strong> und klicke auf <strong>Überall ausloggen</strong>. Alle anderen Geräte, die mit diesem Konto verbunden sind, werden dann ausgeloggt. Alle früher verbundenen Geräte werden ausgeloggt, sobald sie CryptPad besuchen.<br><br> Die beschriebene Funktion ist derzeit im Browser implementiert und nicht im Server. Somit schützt sie nicht vor staatlichen Akteuren. Aber sie sollte ausreichend sein, wenn du nach Verwendung eines öffentlichen Computers vergessen hast dich auszuloggen."
},
"crypto": {
"q": "Welche Kryptografie benutzt ihr?",
"a": "CryptPad basiert auf zwei quelloffenen Kryptografiebibliotheken: <a href='https://github.com/dchest/tweetnacl-js' target='_blank'>tweetnacl.js</a> und <a href='https://github.com/dchest/scrypt-async-js' target='_blank'>scrypt-async.js</a>.<br><br>Scrypt ist eine <em>Passwort-basierte Schlüsselableitungsfunktion</em>. Wir werden sie, um deinen Benutzernamen und dein Passwort in ein einzigartiges Schlüsselpaar umzuwandeln. Dieses sichert den Zugang zu deinem CryptDrive, so dass nur du auf die Liste deiner Pads zugreifen kannst.<br><br> Wir verwenden die Verschlüsselung <em>xsalsa20-poly1305</em> und <em>x25519-xsalsa20-poly1305</em> von tweetnacl, um Dokumente und den Chatverlauf zu verschlüsseln."
},
"pad_password": {
"q": "Was passiert, wenn ich einen Ordner oder ein Pad mit einem Passwort schütze?",
"a": "Du kannst Pads oder geteilte Ordner bei der Erstellung mit einem Passwort schützen. Du kannst auch jederzeit im Eigenschaften-Menü ein Passwort setzen/ändern/entfernen.<br><br>Passwörter für Pads und geteilte Ordner sollen den Link schützen, wenn du ihn über einen unsicheren Kanal wie Mail oder Textnachricht teilst. Wenn jemand den Link abfängt, aber nicht das Passwort kennt, kann er nicht auf dein Dokument zugreifen.<br><br>Beim Teilen mit Kontakten oder Teams innerhalb von CryptPad wird die Kommunikation verschlüsselt und es wird angenommen, dass der Empfänger auf das Dokument zugreifen darf. Daher wird das Passwort zusammen mit dem Pad geteilt. Der Empfänger, und du selbst, werden beim Öffnen des Dokuments <b>nicht</b> danach gefragt."
}
},
"usability": {
"title": "Bedienung",
"register": {
"q": "Was kriege ich, wenn ich mich registriere?",
"a": "Registrierte Benutzer können Funktionen verwenden, die anonyme Nutzer nicht verwenden können. Es gibt <a href='/features.html' target='_blank'>hier</a> eine entsprechende Übersicht."
},
"share": {
"q": "Wie kann ich den Zugang zu einem verschlüsselten Pad mit Kontakten teilen?",
"a": "CryptPad fügt den geheimen Schlüssel deines Pad nach dem Zeichen <em>#</em> zur URL hinzu. Alles, was nach diesem Zeichen kommt, wird nicht zum Server gesendet. Also haben wir nie Zugang zu deinen Schlüsseln. Wenn du den Link zu einem Pad teilst, teilst du auch die Fähigkeit zum Lesen und zum Bearbeiten."
},
"remove": {
"q": "Ich habe ein Dokument aus meinem CryptDrive gelöscht, aber der Inhalt ist noch verfügbar. Wie kann ich es entfernen?",
"a": "Nur <em>eigene Pads</em>, die im Februar 2018 eingeführt wurden, können gelöscht werden und zwar nur von deren <em>Eigentümer</em> (der Benutzer, der das Dokument ursprünglich erstellt hat). Wenn du nicht der Eigentümer des Pads bist, musst du den Eigentümer bitten, dass er dieses für dich löscht. Bei Pads, deren Eigentümer du bist, kannst du <strong>auf das Pad in deinem CryptDrive rechtsklicken</strong> und <strong>Vom Server löschen</strong> wählen."
},
"forget": {
"q": "Was passiert, wenn ich mein Passwort vergesse?",
"a": "Wenn wir dein Passwort zurücksetzen könnten, könnten wir auch auf deine Daten zugreifen. Wenn du dein Passwort nicht aufgeschrieben hast und dich auch nicht daran erinnern kannst, kannst du vielleicht deine Pads aus deinem Browserverlauf zurückgewinnen."
},
"change": {
"q": "Was ist, wenn ich mein Passwort ändern möchte?",
"a": "Du kannst dein CrypPad-Passwort in den Einstellungen ändern."
},
"devices": {
"q": "Ich bin auf zwei Geräten eingeloggt und sehe zwei unterschiedliche CryptDrives. Wie ist das möglich?",
"a": "Es ist möglich, dass du zweimal mit dem gleichen Benutzernamen registriert bist, aber mit unterschiedlichen Passwörtern. Weil der CyrptPad-Server dich anhand deiner kryptografischen Unterschrift und nicht anhand deines Namens identifiziert, kann er nicht verhindern, dass der gleiche Name mehrmals verwendet wird. Somit hat jedes Benutzerkonto eine einzigartige Kombination aus Benutzername und Passwort. Angemeldete Benutzer können ihren Benutzernamen im oberen Teil der Einstellungsseite sehen."
},
"folder": {
"q": "Kann ich ganze Ordner in CryptDrive teilen?",
"a": "Ja, du kannst ganze Ordner und alle Pads darin teilen."
},
"feature": {
"q": "Könnt ihr diese eine Funktion hinzufügen, die ich brauche?",
"a": "Viele Funktionen wurden in CryptPad umgesetzt, weil Benutzer darum gebeten haben. Auf unserer <a href='https://cryptpad.fr/contact.html' target='_blank'>Kontaktseite</a> haben wir die Möglichkeiten aufgelistet, wie man mit uns in Kontakt treten kann.<br><br>Leider können wir aber nicht garantieren, dass wir alle Funktionen umsetzen, um die Benutzer bitten. Wenn eine Funktion kritisch für deine Organisation ist, kannst du die Entwicklung dieser Funktion sponsern und somit deren Realisierung sichern. Bitte kontaktiere <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> für mehr Informationen.<br><br>Auch wenn du nicht die Entwicklung einer Funktion sponsorn kannst, sind wir an Rückmeldungen interessiert. Diese helfen uns dabei, CryptPad zu verbessern. Kontaktiere uns jederzeit über einen der oben angegebenen Wege."
}
},
"other": {
"title": "Andere Fragen",
"pay": {
"q": "Wieso soll ich zahlen, wenn so viele Funktionen sowieso kostenfrei sind?",
"a": "Wir geben Unterstützern zusätzlichen Speicherplatz sowie die Möglichkeit, die Speicherplatzbegrenzung ihrer Kontakte zu erhöhen (<a href='https://accounts.cryptpad.fr/#/faq' target='_blank'>erfahre mehr</a>).<br><br>Über diese kurzfristigen Vorteile hinaus kannst du, wenn du ein Premiumangebot annimmst, die aktive Weiterentwicklung von CryptPad fördern. Das beinhaltet, Fehler zu beseitigen, neue Funktionen umzusetzen und Installationen von CryptPad auf eigenen Servern zu erleichtern. Zusätzlich hilfst du, anderen Anbietern zu beweisen, dass Benutzer datenschutzfreundliche Technologien unterstützen. Wir hoffen, dass Geschäftsmodelle, die auf dem Verkauf von Benutzerdaten basieren, letztendlich der Vergangenheit angehören werden.<br><br>Außerdem glauben wir, dass es gut ist, die Funktionen von CryptPad kostenfrei anzubieten. Denn jeder verdient persönlichen Datenschutz und nicht nur Personen mit hohem Einkommen. Durch deine Unterstützung hilfst du uns, zu ermöglichen, dass auch Menschen mit geringerem Einkommen diese grundlegenden Funktionen genießen können, ohne dass ein Preisetikett daran klebt."
},
"goal": {
"q": "Was ist euer Ziel?",
"a": "Durch die Verbesserung von Technologien, die die Privatsphäre der Nutzer respektieren, möchten wir die Erwartungen der Benutzer an den Datenschutz auf Cloudplattformen erhöhen. Wir hoffen, dass unsere Arbeit andere Dienstanbieter in allen Bereichen anspornt, ähnliche oder bessere Dienste anzubieten. Wir wissen, dass ein großer Teil des Internets durch gezielte Werbung finanziert wird. Es gibt in dieser Hinsicht viel mehr zu tun als wir jemals schaffen können. Wir freuen uns über die Förderung, Unterstützung und Beiträge aus unserer Community, um diesem Ziel näher zu kommen."
},
"jobs": {
"q": "Sucht Ihr Mitarbeiter?",
"a": "Ja! Bitte schicke eine kurze Vorstellung an <a href='mailto:jobs@xwiki.com' target='_blank'>jobs@xwiki.com</a>."
},
"host": {
"q": "Könnt ihr mir helfen, meine eigene Installation von CryptPad aufzubauen?",
"a": "Wir bieten gerne Support für das Aufsetzen eines internen CryptPads in deiner Organisation. Setze dich bitte mit <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> in Verbindung für mehr Information."
},
"revenue": {
"q": "Wie kann ich meine Einnahmen mit den Entwicklern teilen?",
"a": "Wenn du deine eigene Installation von CrytPad betreibst und die Einnahmen für deine bezahlten Konten mit den Entwicklern teilen möchtest, muss dein Server als Partnerservice konfiguriert werden.<br><br>In deinem CryptPad-Verzeichnis befindet sich <em>config.example.js</em>. Darin wird erklärt, wie du deinen Server dafür konfigurieren musst. Danach solltest du <a href='mailto:sales@cryptpad.fr'>sales@cryptpad.fr</a> kontaktieren, damit geprüft wird, dass dein Server richtig für HTTPS konfiguriert ist, und die Zahlungsmethoden abgesprochen werden können."
}
}
},
"tos_title": "Nutzungsbedingungen für CryptPad", "tos_title": "Nutzungsbedingungen für CryptPad",
"tos_legal": "Sei nicht bösartig oder missbrauchend und mache nichts illegales.", "tos_legal": "Sei nicht bösartig oder missbrauchend und mache nichts illegales.",
"tos_availability": "Wir hoffen, dass dir dieser Dienst nützt, aber Erreichbarkeit und Performanz können nicht garantiert werden. Bitte exportiere deine Daten regelmäßig.", "tos_availability": "Wir hoffen, dass dir dieser Dienst nützt, aber Erreichbarkeit und Performanz können nicht garantiert werden. Bitte exportiere deine Daten regelmäßig.",
@ -1517,7 +1362,28 @@
"home_opensource": "Jeder kann eine CryptPad-Instanz betreiben und den Dienst privat oder professionell anbieten. Der Quellcode ist auf <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">Github</a> verfügbar.", "home_opensource": "Jeder kann eine CryptPad-Instanz betreiben und den Dienst privat oder professionell anbieten. Der Quellcode ist auf <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">Github</a> verfügbar.",
"whatis_xwiki": "Entwickelt bei XWiki", "whatis_xwiki": "Entwickelt bei XWiki",
"whatis_collaboration_info": "<p>CryptPad wurde entwickelt, um gemeinsame Arbeit zu ermöglichen. Es synchronisiert Änderungen an Dokumenten in Echtzeit. Da alle Daten verschlüsselt sind, haben der Dienst und seine Administratoren keine Möglichkeit, die bearbeiteten und gespeicherten Inhalte einzusehen.</p>", "whatis_collaboration_info": "<p>CryptPad wurde entwickelt, um gemeinsame Arbeit zu ermöglichen. Es synchronisiert Änderungen an Dokumenten in Echtzeit. Da alle Daten verschlüsselt sind, haben der Dienst und seine Administratoren keine Möglichkeit, die bearbeiteten und gespeicherten Inhalte einzusehen.</p>",
"register_warning_note": "Aufgrund der Verschlüsselung in CrytpPad können die Administratoren des Dienstes deine Daten nicht wiederherstellen, falls du deinen Benutzernamen und/oder dein Passwort vergessen solltest. Bitte speichere diese an einem sicheren Ort.", "register_warning_note": "Aufgrund der Verschlüsselung in CryptPad können die Administratoren des Dienstes deine Daten nicht wiederherstellen, falls du deinen Benutzernamen und/oder dein Passwort vergessen solltest. Bitte speichere diese an einem sicheren Ort.",
"whatis_xwiki_info": "<p>CryptPad wird bei <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://xwiki.com\">XWiki</a> entwickelt, einem Unternehmen mit Sitz in Paris, Frankreich, das seit über 15 Jahren Open-Source-Software entwickelt. Wir haben umfangreiche Erfahrung in der Entwicklung von kollaborativer Software zur Organisation von Informationen. Unsere Erfolgsbilanz zeigt, dass wir uns der langfristigen Entwicklung und Wartung von CryptPad verpflichtet fühlen.</p>", "whatis_xwiki_info": "<p>CryptPad wird bei <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://xwiki.com\">XWiki</a> entwickelt, einem Unternehmen mit Sitz in Paris, Frankreich, das seit über 15 Jahren Open-Source-Software entwickelt. Wir haben umfangreiche Erfahrung in der Entwicklung von kollaborativer Software zur Organisation von Informationen. Unsere Erfolgsbilanz zeigt, dass wir uns der langfristigen Entwicklung und Wartung von CryptPad verpflichtet fühlen.</p>",
"docs_link": "Dokumentation" "docs_link": "Dokumentation",
"home_support": "<p>Das Entwicklerteam profitiert in keiner Weise von Daten der Nutzer. Dies ist Teil einer Vision für Online-Dienste, die die Privatsphäre respektieren. Im Gegensatz zu den großen Plattformen, die vorgeben, \"kostenlos\" zu sein, während sie mit persönlichen Daten Profit machen, möchten wir ein nachhaltiges Modell aufbauen, das freiwillig von den Nutzern finanziert wird.</p><p>Du kannst das Projekt unterstützen, indem du eine einmalige oder regelmäßige Spende über Open Collective machst. Unser Budget ist transparent und wird regelmäßig aktualisiert. Es gibt auch mehrere <a href=\"https://docs.cryptpad.fr/de/how_to_contribute.html\" rel=\"noopener noreferrer\" target=\"_blank\">nicht-finanzielle Möglichkeiten, sich zu beteiligen</a>.</p>",
"home_privacy_text": "CryptPad wurde entwickelt, um Zusammenarbeit zu ermöglichen und gleichzeitig die Daten zu schützen. Alle Inhalte werden in deinem Browser verschlüsselt und entschlüsselt. Das bedeutet, dass Dokumente, Chats und Dateien außerhalb der Sitzung, in der du angemeldet bist, nicht lesbar sind. Selbst die Administratoren des Dienstes haben keinen Zugriff auf deine Daten.",
"home_privacy_title": "Eingebauter Datenschutz",
"home_opensource_title": "Open Source",
"whatis_model_info": "<p>CryptPad wird seit 2016 durch französische und europäische Forschungsgelder wie BPI France, NLNet Foundation, NGI Trust, Mozilla Open Source Support sowie durch Spenden und Abonnements auf cryptpad.fr unterstützt. Wir glauben, dass öffentliche Gelder öffentlichen Code finanzieren sollten, daher ist der Dienst vollständig Open Source. Das bedeutet, dass jeder die Software nutzen, hosten und modifizieren kann.</p><p>CryptPad profitiert nicht von Benutzerdaten. Dies ist Teil einer Vision für Online-Dienste, die die Privatsphäre respektieren. Im Gegensatz zu den großen Plattformen, die vorgeben, \"kostenlos\" zu sein, während sie mit persönlichen Daten Profit machen, möchte CryptPad ein nachhaltiges Modell aufbauen, das freiwillig von den Nutzern finanziert wird.</p><p>Wir bieten die Funktionalität von CryptPad kostenlos an, weil wir glauben, dass jeder persönliche Privatsphäre verdient, nicht nur Menschen mit einem hohen Einkommen. Wenn du in der Lage bist, das Projekt zu unterstützen, trägst du zu neuen Funktionen, Verbesserungen und Wartung bei, die allen Nutzern zugute kommen.</p><p>Nachdem nun die Machbarkeit des Projekts festgestellt wurde, ist das nächste Ziel, es durch die Finanzierung durch die Nutzer finanziell nachhaltig zu machen. Wenn du CryptPad unterstützen möchtest und dabei helfen möchtest, es zu einer nachhaltigen Alternative zu den großen Plattformen zu machen, ziehe bitte eine einmalige oder regelmäßige Spende in Betracht.</p>",
"whatis_apps": "Eine vollständige Anwendungs-Suite",
"whatis_drive_info": "<p>Speichere und verwalte Dokumente mit CryptDrive. Erstelle Ordner, gemeinsame Ordner und Tags, um Dokumente zu organisieren. Lade Dateien hoch und teile sie (PDFs, Fotos, Video, Audio, etc.). Team-Drives werden zwischen Benutzern geteilt und ermöglichen eine gemeinsame Organisation und detaillierte Zugriffskontrolle.</p>",
"whatis_apps_info": "<p>CryptPad bietet eine vollwertige Office-Suite mit allen notwendigen Werkzeugen für eine produktive Zusammenarbeit. Die Anwendungen umfassen: Rich Text, Tabellen, Code/Markdown, Kanban, Präsentationen, Whiteboard und Umfragen.</p><p>Die Anwendungen werden ergänzt durch eine Reihe von Funktionen zur Zusammenarbeit wie Chat, Kontakte, Farbe nach Autor (Code/Markdown) und Kommentare mit Erwähnungen (Rich Text).</p>",
"register_notes": "<ul class=\"cp-notes-list\"><li>Dein Passwort ist der geheime Schlüssel, der alle deine Dokumente verschlüsselt. <span class=\"red\">Wenn du ihn verlierst, gibt es keine Möglichkeit, deine Daten wiederherzustellen.</span></li><li>Wenn du einen gemeinsam genutzten Computer verwendest, <span class=\"red\">denke daran, dich abzumelden</span>, wenn du fertig bist. Durch bloßes Schließen des Browserfensters bleibt das Konto ungeschützt.</li><li>Um die erstellten und/oder gespeicherten Dokumente zu behalten, ohne eingeloggt zu sein, setze einen Haken bei \"Dokumente aus deiner nicht-registrierten Sitzung importieren\". </li></ul>",
"settings_cacheTitle": "Cache",
"settings_cacheButton": "Cache leeren",
"settings_cacheCheckbox": "Cache auf diesem Gerät aktivieren",
"settings_cacheHint": "CryptPad legt Teile deiner Dokumente im Speicher deines Browser ab, um den Datenverkehr und die Ladezeiten zu reduzieren. Du kannst diesen Cache deaktivieren, wenn dein Gerät nicht über viel freien Speicherplatz verfügt. Aus Sicherheitsgründen wird der Cache immer beim Ausloggen geleert. Du kannst ihn auch manuell leeren, sofern du Speicherplatz auf deinem Gerät freigeben möchtest.",
"admin_cat_performance": "Performance",
"admin_performanceProfilingTitle": "Performance",
"admin_performanceProfilingHint": "Übersicht über die Gesamtzeit für die Ausführung verschiedener serverseitiger Befehle",
"redo": "Wiederholen",
"undo": "Rückgängig",
"admin_performancePercentHeading": "Anteil",
"admin_performanceTimeHeading": "Zeit (Sekunden)",
"admin_performanceKeyHeading": "Befehl"
} }

@ -340,7 +340,6 @@
"register_mustAcceptTerms": "Πρέπει να αποδεχτείτε τους όρους της υπηρεσίας.", "register_mustAcceptTerms": "Πρέπει να αποδεχτείτε τους όρους της υπηρεσίας.",
"register_mustRememberPass": "Δεν μπορούμε να επαναφέρουμε τον κωδικό σας αν τον ξεχάσετε. Είναι πολύ σημαντικό να τον θυμάστε! Παρακαλούμε πατήστε στο κουτάκι για επιβεβαίωση.", "register_mustRememberPass": "Δεν μπορούμε να επαναφέρουμε τον κωδικό σας αν τον ξεχάσετε. Είναι πολύ σημαντικό να τον θυμάστε! Παρακαλούμε πατήστε στο κουτάκι για επιβεβαίωση.",
"register_header": "Καλώς ήρθατε στο CryptPad", "register_header": "Καλώς ήρθατε στο CryptPad",
"register_explanation": "<h3>Ας δούμε κάνα-δυο πράγματα πρώτα:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'> </i> Ο κωδικός σας είναι το μυστικό κλειδί που κρυπτογραφεί όλα τα pads σας. Αν το χάσετε, δεν υπάρχει τρόπος να επαναφέρουμε τα δεδομένα σας.</li><li><i class='fa fa-info-circle'> </i> Μπορείτε να εισάγετε τα pads που ανοίξατε πρόσφατα στον περιηγητή σας ώστε να τα έχετε στον λογαριασμό σας.</li><li><i class='fa fa-info-circle'> </i> Αν χρησιμοποιείτε έναν κοινόχρηστο υπολογιστή, θα πρέπει να αποσυνδεθείτε όταν τελειώσετε, το να κλείσετε την καρτέλα δεν είναι αρκετό.</li></ul>",
"register_writtenPassword": "Έχω σημειώσει το όνομα χρήστη και τον κωδικό μου, συνέχεια", "register_writtenPassword": "Έχω σημειώσει το όνομα χρήστη και τον κωδικό μου, συνέχεια",
"register_cancel": "Επιστροφή", "register_cancel": "Επιστροφή",
"register_warning": "Zero Knowledge σημαίνει πως δεν μπορούμε να επαναφέρουμε τον λογαριασμό σας αν χάσετε τον κωδικό σας.", "register_warning": "Zero Knowledge σημαίνει πως δεν μπορούμε να επαναφέρουμε τον λογαριασμό σας αν χάσετε τον κωδικό σας.",
@ -441,20 +440,7 @@
"topbar_whatIsCryptpad": "Τι είναι το CryptPad", "topbar_whatIsCryptpad": "Τι είναι το CryptPad",
"whatis_title": "Τι είναι το CryptPad", "whatis_title": "Τι είναι το CryptPad",
"whatis_collaboration": "Γρήγορη, εύκολη συνεργασία", "whatis_collaboration": "Γρήγορη, εύκολη συνεργασία",
"whatis_collaboration_p1": "Με το CryptPad, μπορείτε να δημιουργείτε όλοι μαζί γρήγορα συνεργατικά έγγραφα για τις σημειώσεις σας και τις ιδέες που καταγράφετε. Όταν εγγραφείτε και συνδεθείτε, σας δίνεται άμεσα η δυνατότητα 'ανεβάσματος' κι έναν 'αποθηκευτικό χώρο' CryptDrive όπου μπορείτε να οργανώσετε όλα σας τα pads. Ως εγγεγραμένος χρήστης παίρνετε 50MB δωρεάν.",
"whatis_collaboration_p2": "Μπορείτε να μοιραστείτε την πρόσβαση σε ένα έγγραφο του CryptPad απλά δίνοντας τον σύνδεσμο σε κάποιον άλλο. Μπορείτε επίσης να μοιραστείτε ένα σύνδεσμο ο οποίος παρέχει πρόσβαση <em>μόνο για ανάγνωση</em> σε ένα pad, επιτρέποντάς σας να κοινοποιήσετε την συλλογική σας δουλειά ενώ ταυτόχρονα έχετε ακόμα τη δυνατότητα να το επεξεργαστείτε.",
"whatis_collaboration_p3": "Μπορείτε να δημιουργήσετε απλά εμπλουτισμένα κείμενα με το <a href=\"http://ckeditor.com/\">CKEditor</a> όπως επίσης κείμενα με γλώσσα προγραμματισμού Markdown τα οποία τροποποιούνται σε πραγματικό χρόνο καθώς πληκτρολογείτε. Μπορείτε επίσης να χρησιμοποιήσετε την εφαρμογή δημοσκόπησης για να προγραμματίσετε δραστηριότητες με πολλαπλούς συμμετέχοντες.",
"whatis_zeroknowledge": "Zero Knowledge",
"whatis_zeroknowledge_p1": "Δεν θέλουμε να ξέρουμε τι πληκτρολογείτε και με τον σύγχρονο τρόπο κρυπτογράφησης μπορείτε να είσαστε σίγουροι ότι δεν μπορούμε να ξέρουμε. Το CryptPad χρησιμοποιεί <strong>100% κρυπτογράφηση client side</strong> για να προστατεύσει το περιεχόμενο που πληκτρολογείτε από εμάς, τους ανθρώπους που φιλοξενούν τον διακομιστή.",
"whatis_zeroknowledge_p2": "Όταν κάνετε εγγραφή και συνδέεστε, το όνομα χρήστη σας κι ο κωδικός σας μετατρέπονται σε ένα κρυπτογραφημένο κλειδί χρησιμοποιώντας το <a href=\"https://en.wikipedia.org/wiki/Scrypt\">scrypt key derivation function</a>. Το συγκεκριμένο κλειδί, το όνομα χρήστη κι ο κωδικός χρήστη δεν στέλνονται καν στον διακομιστή. Αντιθέτως χρησιμοποιούνται από το client side για να αποκρυπτογραφήσουν το περιεχόμενο του CryptDrive σας, το οποίο περιέχει όλα τα κλειδιά για όλα τα pads στα οποία μπορείτε να έχετε πρόσβαση.",
"whatis_zeroknowledge_p3": "Όταν μοιράζεστε έναν σύνδεσμο προς ένα έγγραφο, μοιράζεστε το κρυπτογραφημένο κλειδί για το συγκεκριμένο έγγραφο αλλά εφόσον το κλειδί είναι στο <a href=\"https://en.wikipedia.org/wiki/Fragment_identifier\">fragment identifier</a>, δεν στέλνεται ποτέ απευθείας στον διακομιστή. Επισκεφθείτε το <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> για να μάθετε περισσότερα σχετικά με το σε ποια μεταδεδομένα έχουμε πρόσβαση και σε ποια όχι.",
"whatis_drive": "Οργάνωση με το CryptDrive", "whatis_drive": "Οργάνωση με το CryptDrive",
"whatis_drive_p1": "Κάθε φορά που επισκέπτεσθε ένα pad στο CryptPad, το pad προστίθεται αυτόματα στο CryptDrive στον κυρίως φάκελο. Αργότερα μπορείτε να οργανώσετε αυτά τα pad σε φακέλους ή μπορείτε να τα μετακινήσετε στον κάδο ανακύκλωσης. Το CryptDrive σας επιτρέπει να περιηγηθείτε ανάμεσα στα pads σας και να τα οργανώνετε όποτε κι όπως θέλετε.",
"whatis_drive_p2": "Με το κλασικό drag-and-drop, μπορείτε να μεταφέρετε pads μέσα στον αποθηκευτικό σας χώρο και ο σύνδεσμος αυτών των pads θα παραμείνει ο ίδιος ώστε οι συνεργάτες σας να μην σταματήσουν ποτέ να έχουν πρόσβαση.",
"whatis_drive_p3": "Μπορείτε επίσης να ανεβάσετε αρχεία στο CryptDrive σας και να τα μοιραστείτε με συνεργάτες. Τα ανεβασμένα αρχεία μπορούν να οργανωθούν ακριβώς όπως τα συνεργατικά pads.",
"whatis_business": "Το CryptPad για επιχειρήσεις",
"whatis_business_p1": "Το πρωτόκολλο κρυπτογράφησης Zero Knowledge του CryptPad είναι ιδανικό για να πολλαπλασιαστεί η αποτελεσματικότητα των ήδη υπάρχοντων πρωτοκόλλων ασφαλείας προστατεύοντας τα εταιρικά στοιχεία πρόσβασης με ισχυρή κρυπτογράφηση. Επειδή τα ευαίσθητα δεδομένα μπορούν να αποκρυπτογραφηθούν μόνο με την χρήση των στοιχείων των υπαλλήλων, το CryptPad εξαλείφει τον παράγοντα hacker ο οποίος ενυπάρχει σε παραδοσιακούς εταιρικούς διακομιστές. Διαβάστε το <a href=\"https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf\">CryptPad Whitepaper</a> για να μάθετε περισσότερα σχετικά με το πως μπορεί να βοηθήσει την επιχείρησή σας.",
"whatis_business_p2": "To CryptPad μπορεί να εγκατασταθεί τοπικά και οι <a href=\"https://cryptpad.fr/about.html\">προγραμματιστές του</a> στην XWiki SAS είναι σε θέση να προσφέρουν εμπορική υποστήριξη, τροποποιήσεις και περαιτέρω ανάπτυξη. Επικοινωνήστε στο <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> για περισσότερες πληροφορίες.",
"policy_title": "Πολιτική απορρήτου του CryptPad", "policy_title": "Πολιτική απορρήτου του CryptPad",
"policy_whatweknow": "Τι γνωρίζουμε για εσάς", "policy_whatweknow": "Τι γνωρίζουμε για εσάς",
"policy_whatweknow_p1": "Ως εφαρμογή η οποία φιλοξενείται στο διαδίκτυο, το CryptPad έχει πρόσβαση στα μεταδεδομένα που είναι εκτεθειμένα από το πρωτόκολλο HTTP. Αυτό συμπεριλαμβάνει την διεύθυνση IP σας και ποικίλες HTTP κεφαλίδες που μπορούν να χρησιμοποιηθούν για να ταυτοποιήσουν τον συγκεκριμένο περιηγητή. Μπορείτε να δείτε τι πληροφορίες μοιράζεται ο περιηγητής σας με το να επισκεφθείτε <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.", "policy_whatweknow_p1": "Ως εφαρμογή η οποία φιλοξενείται στο διαδίκτυο, το CryptPad έχει πρόσβαση στα μεταδεδομένα που είναι εκτεθειμένα από το πρωτόκολλο HTTP. Αυτό συμπεριλαμβάνει την διεύθυνση IP σας και ποικίλες HTTP κεφαλίδες που μπορούν να χρησιμοποιηθούν για να ταυτοποιήσουν τον συγκεκριμένο περιηγητή. Μπορείτε να δείτε τι πληροφορίες μοιράζεται ο περιηγητής σας με το να επισκεφθείτε <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.",

@ -194,7 +194,6 @@
"register_mustAcceptTerms": "Tienes que aceptar los términos de servicio", "register_mustAcceptTerms": "Tienes que aceptar los términos de servicio",
"register_mustRememberPass": "No podemos reiniciar tu contraseña si la olvidas. ¡Es muy importante que la recuerdes! Marca la casilla para confirmarlo.", "register_mustRememberPass": "No podemos reiniciar tu contraseña si la olvidas. ¡Es muy importante que la recuerdes! Marca la casilla para confirmarlo.",
"register_header": "Bienvenido a CryptPad", "register_header": "Bienvenido a CryptPad",
"register_explanation": "<p>Vamos a ver algunas cosas antes</p><ul><li>Tu contraseña es tu clave secreta que cifra todos tus documentos. Si la pierdes no podremos recuperar tus datos.</li><li>Puedes importar documentos que has visto recientemente en tu navegador para tenerlos en tu cuenta.</li><li>Si estás usando un ordenador compartido, tienes que cerrar sesión cuando terminas, cerrar la pestaña no es suficiente.</li></ul>",
"settings_title": "Preferencias", "settings_title": "Preferencias",
"settings_save": "Guardar", "settings_save": "Guardar",
"settings_backup": "Copia de seguridad", "settings_backup": "Copia de seguridad",
@ -689,20 +688,7 @@
"main_footerText": "Con CryptPad, puede crear documentos colaborativos rápidos para tomar notas y escribir ideas juntos.", "main_footerText": "Con CryptPad, puede crear documentos colaborativos rápidos para tomar notas y escribir ideas juntos.",
"whatis_title": "¿Que es CryptPad?", "whatis_title": "¿Que es CryptPad?",
"whatis_collaboration": "Colaboración fácil y rápida", "whatis_collaboration": "Colaboración fácil y rápida",
"whatis_collaboration_p1": "Con CryptPad, puede crear documentos colaborativos rápidos para tomar notas y escribir ideas juntos. Cuando te registras e inicias sesión, obtienes la capacidad de carga de archivos y un CryptDrive donde puedes organizar todos tus pads. Como usuario registrado, obtienes 50 MB de espacio gratis.",
"whatis_collaboration_p2": "Puede compartir el acceso a un documento de CryptPad simplemente compartiendo el enlace. También puede compartir un enlace que proporciona acceso <em> de solo lectura </em> a un bloc, lo que le permite publicitar su trabajo colaborativo mientras aún puede editarlo.",
"whatis_collaboration_p3": "Puede crear documentos de texto enriquecido simples con <a href=\"http://ckeditor.com/\"> CKEditor </a>, así como documentos reducidos que se representan en tiempo real mientras escribe. También puede usar la aplicación de encuestas para programar eventos con múltiples participantes.",
"whatis_zeroknowledge": "Conocimiento cero",
"whatis_zeroknowledge_p1": "No queremos saber qué está escribiendo y con la criptografía moderna, puede estar seguro de que no podemos saberlo. CryptPad utiliza <strong> 100% de cifrado del lado del cliente </strong> para proteger el contenido que escribe de nosotros, las personas que alojan el servidor.",
"whatis_zeroknowledge_p2": "Cuando se registra e inicia sesión, su nombre de usuario y contraseña se calculan en una clave secreta utilizando <a href=\"https://en.wikipedia.org/wiki/Scrypt\"> función de derivación de clave scrypt </a>. Ni esta clave ni el nombre de usuario y la contraseña se envían al servidor. En su lugar, se usan en el lado del cliente para descifrar el contenido de su CryptDrive, que contiene las claves de todos los pads a los que puede acceder.",
"whatis_zeroknowledge_p3": "Cuando comparte el enlace a un documento, está compartiendo la clave criptográfica para acceder a ese documento, pero dado que la clave está en el<a href=\"https://en.wikipedia.org/wiki/Fragment_identifier\"> identificador de fragmento</a>, nunca se envía directamente al servidor. Echa un vistazo a nuestro <a href = \"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want- to-know / \"> blog de privacidad </a> para obtener más información sobre los tipos de metadatos a los que tenemos acceso y a los que no tenemos acceso.",
"whatis_drive": "Organización con CryptDrive", "whatis_drive": "Organización con CryptDrive",
"whatis_drive_p1": "Cada vez que accede a un pad en CryptPad, el pad se agrega automáticamente a su CryptDrive en la carpeta principal. Más adelante, puede organizar estos Pads dentro de carpetas o puede ponerlos en la papelera. CryptDrive te permite buscar a través de tus pads y organizarlos cuando quieras, como quieras.",
"whatis_drive_p2": "Con la función intuitiva de arrastrar y soltar, puede mover los pads en su unidad y el enlace a estos pads se mantendrá igual para que sus colaboradores nunca pierdan el acceso.",
"whatis_drive_p3": "También puede cargar archivos en su CryptDrive y compartirlos con colegas. Los archivos cargados se pueden organizar al igual que los pads colaborativos.",
"whatis_business": "CryptPad para negocios",
"whatis_business_p1": "El cifrado Cero conocimiento de CryptPad multiplica la efectividad de los protocolos de seguridad existentes al reflejar los controles de acceso de la organización en criptografía. Debido a que los activos confidenciales solo se pueden descifrar con credenciales de acceso de usuario, CryptPad es menos valioso como objetivo en comparación con los servicios tradicionales en la nube. Lea el <a href='https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf'> CryptPad Papel blanco </a> para obtener más información sobre cómo puede ayudar a su negocio.",
"whatis_business_p2": "CryptPad se puede implementar en las instalaciones y los <a href=\"https://cryptpad.fr/about.html\"> desarrolladores de CryptPad </a> en XWiki SAS pueden ofrecer soporte comercial, personalización y desarrollo. Comuníquese con <a href=\"mailto:sales@cryptpad.fr\"> sales@cryptpad.fr </a> para obtener más información.",
"features": "Caracteristicas", "features": "Caracteristicas",
"features_title": "Comparación de características", "features_title": "Comparación de características",
"features_feature": "Característica", "features_feature": "Característica",
@ -732,7 +718,6 @@
"features_f_storage1": "Almacenamiento permanente (50 MB)", "features_f_storage1": "Almacenamiento permanente (50 MB)",
"features_f_storage1_note": "Los Pads almacenados en su CryptDrive nunca se eliminan por inactividad", "features_f_storage1_note": "Los Pads almacenados en su CryptDrive nunca se eliminan por inactividad",
"features_f_register": "Registrate gratis", "features_f_register": "Registrate gratis",
"features_f_register_note": "No se requiere correo electrónico ni información personal",
"features_f_reg": "Todas las funciones de usuario registrado", "features_f_reg": "Todas las funciones de usuario registrado",
"features_f_reg_note": "Y ayudar al desarrollo de CryptPad", "features_f_reg_note": "Y ayudar al desarrollo de CryptPad",
"features_f_storage2": "Espacio de almacenamiento adicional", "features_f_storage2": "Espacio de almacenamiento adicional",
@ -743,146 +728,6 @@
"features_f_supporter_note": "Ayúdenos a mostrar que el software para mejorar la privacidad debería ser la norma", "features_f_supporter_note": "Ayúdenos a mostrar que el software para mejorar la privacidad debería ser la norma",
"features_f_subscribe": "Suscríbase a premium", "features_f_subscribe": "Suscríbase a premium",
"features_f_subscribe_note": "Primero debe iniciar sesión en CryptPad", "features_f_subscribe_note": "Primero debe iniciar sesión en CryptPad",
"faq_link": "FAQ",
"faq_title": "Preguntas frecuentes",
"faq_whatis": "¿ Que es <span class='cp-brand-font'>CryptPad</span>?",
"faq": {
"keywords": {
"title": "Palabra clave",
"pad": {
"q": "¿ Que es un Pad ?",
"a": "<em> Pad </em> es un término popularizado por <a href='http://etherpad.org/' target='_blank'> Etherpad </a>, un editor colaborativo en tiempo real.\nSe refiere a un documento que puede editar en su navegador, generalmente con los cambios de otras personas visibles casi al instante."
},
"owned": {
"q": "¿Qué es un Pad de propiedad?",
"a": "Un <em> pad propiedad </em> es un pad creado con un <em> propietario </em> explícito, identificado al servidor por su <em> clave de firma pública </em>. El propietario de una almohadilla puede optar por eliminar sus almohadillas del servidor, por lo que no estará disponible para otros colaboradores en el futuro, ya sea que lo tengan en su CryptDrive o no."
},
"expiring": {
"q": "¿ Que es un Pad expirado ?",
"a": "Una <em> Pad que caduca </em> es una almohadilla creada con un tiempo establecido en el que se eliminará automáticamente del servidor. Las almohadillas que caducan se pueden configurar para durar desde una hora hasta cien meses. El pad y todo su historial dejarán de estar disponibles de forma permanente, incluso si se están editando en el momento en que caduca. <br> <br> Si un pad está configurado para caducar, puede verificar su tiempo de caducidad al ver su <em> propiedades </em>, ya sea haciendo clic con el botón derecho en el pad en su CryptDrive, o utilizando el submenú <em> propiedades </em> de la barra de herramientas de una aplicación."
},
"tag": {
"q": "¿Cómo puedo usar etiquetas?",
"a": "Puede etiquetar pads y archivos cargados a través de su CryptDrive, o usando el botón <em> tag </em> (<span class = 'fa fa-hashtag'> </span>) en la barra de herramientas de cualquier editor. Busque pads y archivos en su CryptDrive utilizando la barra de búsqueda con un término que comience con un hashtag, como <em> #crypto </em>."
},
"template": {
"q": "¿ Que es una plantilla ?",
"a": "Una plantilla es un pad que se puede usar para definir el contenido inicial de otro pad del mismo tipo cuando lo crea. Cualquier pad existente puede convertirse en una plantilla moviéndolo a la sección <em> Plantillas </em> en su CryptDrive. También puede crear una copia de un pad para usar como plantilla haciendo clic en el botón de plantilla (<span class = 'fa fa-bookmark'> </span>) en la barra de herramientas del editor."
},
"abandoned": {
"q": "¿Qué es una plataforma abandonada?",
"a": "¿Qué es una almohadilla abandonada? Una <em> almohadilla abandonada </em> es una almohadilla que no está anclada en el CryptDrive de ningún usuario registrado y que no se ha cambiado durante seis meses. Los documentos abandonados se eliminarán automáticamente del servidor."
}
},
"privacy": {
"title": "Privacidad",
"different": {
"q": "¿En qué se diferencia CryptPad de otros servicios de Pad?",
"a": "CryptPad cifra los cambios en sus pads antes de enviar esa información para que se almacene en el servidor, por lo que no podemos leer lo que está escribiendo."
},
"me": {
"q": "¿Qué información sabe el servidor sobre mí?",
"a": "Los administradores del servidor pueden ver las direcciones IP de las personas que visitan el CryptPad. No registramos qué direcciones visitan qué pads, pero podríamos, aunque no tengamos acceso al contenido descifrado de esos pads. Si le preocupa que analicemos esa información, es más seguro asumir que la recopilamos, ya que no podemos demostrar que no lo hacemos. <br> <br> Recopilamos cierta telemetría básica sobre cómo las personas usan CryptPad, como como el tamaño de la pantalla en su dispositivo y en qué botones hacen clic más. Esto nos ayuda a mejorar el software, pero si prefiere no enviar dicha información al servidor, puede <strong> optar por desactivarla desmarcando <em> Casilla de verificación Habilitar comentarios del usuario </em> </strong>. <br> <br> Realizamos un seguimiento de las almohadillas que hay en el CryptDrive de un usuario para poder imponer límites de almacenamiento, pero no conocemos el contenido o tipo de esas almohadillas. Las cuotas de almacenamiento están asociadas con la clave pública de un usuario, pero no asociamos nombres o correos electrónicos con esas claves públicas. <br> <br> Para obtener más información, puede leer esto <a href = 'https: //blog.cryptpad .fr / 2017/07/07 / cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know / 'target =' _ blank '> publicación de blog </ a> que escribimos sobre el tema."
},
"register": {
"q": "¿El servidor sabe más sobre mí si me registro?",
"a": "No requerimos que los usuarios verifiquen su dirección de correo electrónico, y el servidor ni siquiera aprende su nombre de usuario o contraseña cuando se registra. En cambio, los formularios de registro e inicio de sesión generan un llavero único a partir de su entrada, y el servidor solo aprende su firma criptográfica. Utilizamos esta información para rastrear detalles como la cantidad de datos que está utilizando, lo que nos permite restringir a cada usuario a una cuota. <br> <br> Utilizamos nuestra funcionalidad <em> feedback </em> para informar al servidor que alguien Con su IP ha registrado una cuenta. Usamos esto para medir cuántas personas se registran para las cuentas de CryptPad y para ver en qué regiones se encuentran para poder adivinar en qué idiomas pueden necesitar un mejor soporte. <br> <br> Los usuarios registrados informan al servidor qué pads están en su CryptDrive para que dichos pads no se consideren abandonados y se eliminen del servidor debido a la inactividad."
},
"other": {
"q": "¿Qué pueden aprender otros colaboradores sobre mí?",
"a": "Cuando edita un bloc con otra persona, se comunica a través del servidor, por lo que solo nosotros conocemos su dirección IP. Otros usuarios pueden ver su nombre para mostrar, avatar, el enlace a su perfil (si tiene uno) y su <em> clave pública </em> (que se utiliza para cifrar las comunicaciones entre ellos)."
},
"anonymous": {
"q": "¿CryptPad me hace anónimo?",
"a": "Aunque CryptPad está diseñado para saber lo menos posible sobre usted, no proporciona un anonimato fuerte. Nuestros servidores tienen acceso a su dirección IP, sin embargo, puede ocultar esta información utilizando Tor para acceder a CryptPad. Usar Tor sin cambiar su comportamiento no le garantizará el anonimato, ya que el servidor también puede identificar a los usuarios mediante su identificador criptográfico único. Si usa la misma cuenta cuando no está usando Tor, será posible desanonimizar su sesión. <br> <br> Para los usuarios que requieren un menor grado de privacidad, CryptPad no requiere que los usuarios se identifiquen por su nombre, número de teléfono o dirección de correo electrónico como muchos otros servicios."
},
"policy": {
"q": "¿Tiene una política de privacidad de datos?",
"a": "¡Sí! Está disponible <a href='/privacy.html' target='_blank'> aquí </a>."
}
},
"security": {
"title": "Seguridad",
"proof": {
"q": "¿Cómo se utilizan las pruebas de conocimiento cero?",
"a": "Cuando usamos el término <em> Zero Knowledge </em>, no nos estamos refiriendo a <em> pruebas de Zero Knowledge </em>, sino a <em> Zero Knowledge Web Services </em>. <em> Zero Knowledge Web Services </em> encripta los datos del usuario en el navegador del usuario, sin que el servidor tenga acceso a los datos no encriptados o las claves de encriptación. <br> <br> Hemos compilado una breve lista de Zero Servicios de conocimiento <a href='https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services'> aquí </a>."
},
"why": {
"q": "¿Por qué debería usar CryptPad?",
"a": "Nuestra posición es que los servicios en la nube no deberían requerir acceso a sus datos para que pueda compartirlos con sus amigos y colegas. Si está utilizando otro servicio para colaborar, y no dicen explícitamente que no pueden acceder a su información, es muy probable que la estén aprovechando para obtener ganancias."
},
"compromised": {
"q": "¿CryptPad me protege si mi dispositivo se ve comprometido?",
"a": "En caso de que le roben su dispositivo, CryptPad le permite activar un cierre de sesión remoto de todos los dispositivos, excepto el que está utilizando actualmente. Para hacerlo, vaya a su <strong> página de configuración </strong> y haga clic en <strong> Cerrar sesión en todas partes </strong>. Todos los demás dispositivos que están actualmente conectados a la cuenta cerrarán sesión. Cualquier dispositivo conectado previamente que visite CryptPad cerrará sesión tan pronto como cargue la página. <br> <br> Actualmente, <em> cierre de sesión remoto </em> se implementa en el navegador, no en conjunto con el servidor. Como tal, es posible que no lo proteja de las agencias gubernamentales, pero debería ser suficiente si olvidó cerrar sesión después de usar CryptPad desde una computadora compartida."
},
"crypto": {
"q": "¿Qué criptografía usas?",
"a": "CryptPad se basa en dos bibliotecas de criptografía de código abierto: <a href='https://github.com/dchest/tweetnacl-js' target='_blank'> tweetnacl.js </a> y <a href = 'https : //github.com/dchest/scrypt-async-js 'target =' _ blank '> scrypt-async.js </a>. <br> <br> Scrypt es un <em> algoritmo de derivación de clave basado en contraseña < / em>. Lo usamos para convertir su nombre de usuario y contraseña en un llavero único que asegura el acceso a su CryptDrive de modo que solo usted pueda acceder a su lista de almohadillas. <br> <br> Utilizamos <em> xsalsa20-poly1305 </em> y <em> x25519-xsalsa20-poly1305 </em> cifrados proporcionados por tweetnacl para cifrar los pads y el historial de chat, respectivamente."
},
"pad_password": {
"q": "¿Qué pasa cuando protejo un Pad o carpeta con contraseña?",
"a": "Puedes proteger cualquier Pad o carpeta compartida con contraseña al crearlo. También puedes usar el menú de propiedades para establecer, cambiar o eliminar una contraseña en cualquier momento.<br><br>Las contraseñas de Pads y carpetas compartidas están pensadas para proteger el enlace cuando lo compartas por canales potencialmente inseguros, como un correo electrónico o un mensaje de texto. Si alguien intercepta el enlace pero no conoce la contraseña, no podrá leer el documento.<br><br>Al compartir en CryptPad con tus contactos o equipos, las comunicaciones se cifran y se asume que quieres que accedan al documento. Por tanto, la contraseña se guarda y se envía con el Pad. <b>No</b> se le pregunta ni al recipiente ni a ti mismo/a al abrirlo."
}
},
"usability": {
"title": "Usabilidad",
"register": {
"q": "¿Qué obtengo al registrarme?",
"a": "Los usuarios registrados tienen acceso a una serie de funciones que no están disponibles para usuarios no registrados. Hay un gráfico <a href='/features.html' target='_blank'> aquí </a>."
},
"share": {
"q": "¿Cómo puedo compartir mis notas cifradas con mis contactos?",
"a": "CryptPad coloca la clave de cifrado secreta en su teclado después del carácter <em> # </em> en la URL. Cualquier cosa después de este carácter no se envía al servidor, por lo que nunca tenemos acceso a sus claves de cifrado. Al compartir el enlace a un bloc, comparte la capacidad de leerlo y acceder a él."
},
"remove": {
"q": "Eliminé un Pad o archivo de mi CryptDrive, pero el contenido aún está disponible. ¿Como puedo quitarlo?",
"a": "Solo se pueden eliminar <em> Pad propias </em> (introducidas en febrero de 2018). Además, estos pads solo pueden ser eliminados por sus <em> propietarios </em> (la persona que originalmente creó el pad). Si no es el creador del pad, deberá pedirle a su propietario que lo elimine por usted. Para los pads que posee, puede <strong> hacer clic con el botón derecho en el pad en su CryptDrive </strong> y elegir <strong> Eliminar del servidor </strong>."
},
"forget": {
"q": "¿Qué pasa si olvido mi contraseña?",
"a": "Desafortunadamente, si pudiéramos recuperar el acceso a sus pads cifrados por usted, podríamos acceder a ellos nosotros mismos. Si no registró su nombre de usuario y contraseña en ninguna parte, y tampoco puede recordarlos, puede recuperar sus pads filtrando el historial de su navegador."
},
"change": {
"q": "¿Qué pasa si quiero cambiar mi contraseña?",
"a": "Puede cambiar su contraseña de CryptPad en la página de configuración de su cuenta."
},
"devices": {
"q": "He iniciado sesión en dos dispositivos y veo dos CryptDrives diferentes, ¿cómo es esto posible?",
"a": "Es probable que haya registrado el mismo nombre dos veces, utilizando contraseñas diferentes. Debido a que el servidor CryptPad lo identifica por su firma criptográfica y no por su nombre, no puede evitar que otros se registren con el mismo nombre. Como tal, cada cuenta de usuario tiene una combinación única de nombre de usuario y contraseña. Los usuarios registrados pueden ver su nombre de usuario en la parte superior de la página de configuración."
},
"folder": {
"q": "¿Puedo compartir carpetas completas de mi CryptDrive?",
"a": "Sí, puede crear una <em> carpeta compartida </em> desde su CryptDrive y compartir todos los pads que contiene a la vez."
},
"feature": {
"q": "¿Puedes agregar una característica muy especial que necesito?",
"a": "Muchas de las funciones de CryptPad existen porque los usuarios las solicitaron. Nuestra <a href='https://cryptpad.fr/contact.html' target='_blank'> página de contactos </a> enumera las formas en que puede contactarnos. <br> <br> Desafortunadamente, no podemos garantizar que implementaremos todo lo que la gente pide. Si una característica particular es crítica para su organización, puede patrocinar el tiempo de desarrollo para garantizar su finalización. Póngase en contacto con <a href='mailto:sales@cryptpad.fr' target='_blank'> sales@cryptpad.fr </a> para obtener más información. <br> <br> Incluso si no puede permitirse patrocinar el desarrollo, nosotros Le interesan los comentarios que pueden ayudarnos a mejorar CryptPad. No dude en contactarnos a través de los métodos anteriores en cualquier momento."
}
},
"other": {
"title": "Otras preguntas",
"pay": {
"q": "¿ Porque debería de pagar cuando hay características que son gratis ?",
"a": "Brindamos a los seguidores almacenamiento adicional y la capacidad de aumentar las cuotas de sus contactos (<a href='https://accounts.cryptpad.fr/#/faq' target='_blank'> obtener más información </a>). <Br > <br> Más allá de estos beneficios a corto plazo, al suscribirse con una cuenta premium, usted ayuda a financiar el desarrollo continuo y activo de CryptPad. Eso incluye corregir errores, agregar nuevas funciones y facilitar que otros ayuden a alojar CryptPad ellos mismos. Además, ayuda a demostrar a otros proveedores de servicios que las personas están dispuestas a apoyar las tecnologías que mejoran la privacidad. Esperamos que eventualmente los modelos de negocio basados en la venta de datos de usuarios se conviertan en cosa del pasado. <br> <br> Finalmente, ofrecemos la mayor parte de la funcionalidad de CryptPad de forma gratuita porque creemos que todos merecen privacidad personal, no solo aquellos con desechables. ingresos. Al apoyarnos, nos ayuda a continuar haciendo posible que las poblaciones desfavorecidas accedan a estas funciones básicas sin una etiqueta de precio adjunta."
},
"goal": {
"q": "¿Cuál es tu objetivo?",
"a": "Al desarrollar tecnología de colaboración respetuosa con la privacidad, deseamos aumentar las expectativas de privacidad de los usuarios de las plataformas de computación en la nube. Esperamos que nuestro trabajo impulse a otros proveedores de servicios en todos los dominios para igualar o superar nuestros esfuerzos. A pesar de nuestro optimismo, sabemos que gran parte de la web está financiada por los ingresos de la publicidad dirigida. Hay mucho más trabajo por hacer de lo que podemos gestionar nosotros mismos, y apreciamos la promoción, el apoyo y las contribuciones de nuestra comunidad para lograr este objetivo."
},
"jobs": {
"q": "¿Estas contratando?",
"a": "¡Sí! Preséntese con un correo electrónico a <a href='mailto:jobs@xwiki.com' target='_blank'> jobs@xwiki.com </a>."
},
"host": {
"q": "¿Me pueden ayudar a configurar mi propia instancia de CryptPad?",
"a": "Nos complace brindar asistencia para la instalación interna de CryptPad de su organización. Póngase en contacto con <a href='mailto:sales@cryptpad.fr' target='_blank'> sales@cryptpad.fr </a> para obtener más información."
},
"revenue": {
"q": "¿Cómo puedo participar en el reparto de ingresos?",
"a": "Si está ejecutando su propia instancia de CryptPad y desea habilitar cuentas pagas y dividir los ingresos con los desarrolladores, su servidor deberá configurarse como un servicio asociado. <br> <br> En su directorio de CryptPad, <em > config.example.js </em> debe contener una explicación de lo que necesita configurar en su servidor. Deberá ponerse en contacto con <a href='mailto:sales@cryptpad.fr'> sales@cryptpad.fr </a> para verificar que su servidor esté configurado para usar HTTPS correctamente y analizar los métodos de pago."
}
}
},
"four04_pageNotFound": "No pudimos encontrar la página que estabas buscando.", "four04_pageNotFound": "No pudimos encontrar la página que estabas buscando.",
"help": { "help": {
"title": "Empezando", "title": "Empezando",

@ -43,7 +43,7 @@
"saved": "Tallennettu", "saved": "Tallennettu",
"synced": "Kaikki on tallennettu", "synced": "Kaikki on tallennettu",
"deleted": "Poistettu", "deleted": "Poistettu",
"deletedFromServer": "Padi poistettu palvelimelta", "deletedFromServer": "Asiakirja tuhottu",
"mustLogin": "Kirjaudu sisään käyttääksesi tätä sivua", "mustLogin": "Kirjaudu sisään käyttääksesi tätä sivua",
"disabledApp": "Tämä sovellus on poistettu käytöstä. Saadaksesi lisätietoja ota yhteyttä tämän CryptPad-instanssin ylläpitäjään.", "disabledApp": "Tämä sovellus on poistettu käytöstä. Saadaksesi lisätietoja ota yhteyttä tämän CryptPad-instanssin ylläpitäjään.",
"realtime_unrecoverableError": "Tapahtui peruuttamaton virhe. Paina OK ladataksesi uudelleen.", "realtime_unrecoverableError": "Tapahtui peruuttamaton virhe. Paina OK ladataksesi uudelleen.",
@ -422,18 +422,17 @@
"login_invalUser": "Käyttäjänimi vaaditaan", "login_invalUser": "Käyttäjänimi vaaditaan",
"login_invalPass": "Salasana vaaditaan", "login_invalPass": "Salasana vaaditaan",
"login_unhandledError": "Tapahtui odottamaton virhe :(", "login_unhandledError": "Tapahtui odottamaton virhe :(",
"register_importRecent": "Tuo padeja anonyymistä sessiosta", "register_importRecent": "Tuo rekisteröitymättömänä luodut asiakirjat CryptDriveen",
"register_acceptTerms": "Hyväksyn <a href='/terms.html' tabindex='-1'>käyttöehdot</a>", "register_acceptTerms": "Hyväksyn <a href='/terms.html' tabindex='-1'>käyttöehdot</a>",
"register_passwordsDontMatch": "Salasanat eivät täsmää!", "register_passwordsDontMatch": "Salasanat eivät täsmää!",
"register_passwordTooShort": "Salasanan täytyy olla vähintään {0} merkkiä pitkä.", "register_passwordTooShort": "Salasanan täytyy olla vähintään {0} merkkiä pitkä.",
"register_mustAcceptTerms": "Sinun täytyy hyväksyä käyttöehdot.", "register_mustAcceptTerms": "Sinun täytyy hyväksyä käyttöehdot.",
"register_mustRememberPass": "Emme voi nollata salasanaasi, jos unohdat sen. On erittäin tärkeää, että muistat sen! Ole hyvä ja laita rasti valintaruutuun vahvistaaksesi.", "register_mustRememberPass": "Emme voi nollata salasanaasi, jos unohdat sen. On erittäin tärkeää, että muistat sen! Ole hyvä ja laita rasti valintaruutuun vahvistaaksesi.",
"register_whyRegister": "Miksi rekisteröityminen kannattaa?", "register_whyRegister": "Miksi rekisteröityminen kannattaa?",
"register_header": "Tervetuloa CryptPadiin", "register_header": "Rekisteröidy",
"register_explanation": "<h3>Käydään läpi muutama perusasia:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'></i>Salasanasi on myös salausavain, jolla kaikki luomasi padit salataan. Jos kadotat salasanasi, emme voi millään tavalla palauttaa tietojasi.</li><li><i class='fa fa-info-circle'></i>Voit tuoda viimeksi katselemasi padit selaimestasi käyttäjätilillesi.</li><li><i class='fa fa-info-circle'> </i> Jos käytät jaettua tietokonetta, täytyy sinun kirjautua ulos lopettaessasi työskentelyn - välilehden sulkeminen ei riitä.</li></ul>",
"register_writtenPassword": "Olen kirjoittanut ylös käyttäjätunnukseni ja salasanani, jatka", "register_writtenPassword": "Olen kirjoittanut ylös käyttäjätunnukseni ja salasanani, jatka",
"register_cancel": "Takaisin", "register_cancel": "Peruuta",
"register_warning": "Nollatietoperiaate tarkoittaa, ettemme voi palauttaa tietojasi, jos hävität salasanasi.", "register_warning": ".<i class='fa fa-warning'></i> Varoitus",
"register_alreadyRegistered": "Tämä käyttäjä on jo olemassa, haluatko kirjautua sisään?", "register_alreadyRegistered": "Tämä käyttäjä on jo olemassa, haluatko kirjautua sisään?",
"register_emailWarning0": "Näyttää siltä, että lähetit sähköpostiosoitteesi käyttäjätunnuksenasi.", "register_emailWarning0": "Näyttää siltä, että lähetit sähköpostiosoitteesi käyttäjätunnuksenasi.",
"register_emailWarning1": "Voit halutessasi tehdä niin, mutta sitä ei lähetetä palvelimellemme.", "register_emailWarning1": "Voit halutessasi tehdä niin, mutta sitä ei lähetetä palvelimellemme.",
@ -571,7 +570,7 @@
"upload_notEnoughSpace": "CryptDrivessasi ei ole tarpeeksi vapaata tallennustilaa tälle tiedostolle.", "upload_notEnoughSpace": "CryptDrivessasi ei ole tarpeeksi vapaata tallennustilaa tälle tiedostolle.",
"upload_notEnoughSpaceBrief": "Tallennustila ei riitä", "upload_notEnoughSpaceBrief": "Tallennustila ei riitä",
"upload_tooLarge": "Tiedoston koko ylittää suurimman käyttäjätilillesi sallitun latauskoon.", "upload_tooLarge": "Tiedoston koko ylittää suurimman käyttäjätilillesi sallitun latauskoon.",
"upload_tooLargeBrief": "Liian suuri tiedosto", "upload_tooLargeBrief": "Tiedoston koko ylittää [0}MB rajan",
"upload_choose": "Valitse tiedosto", "upload_choose": "Valitse tiedosto",
"upload_pending": "Odottaa", "upload_pending": "Odottaa",
"upload_cancelled": "Keskeytetty", "upload_cancelled": "Keskeytetty",
@ -611,14 +610,14 @@
"mdToolbar_code": "Koodi", "mdToolbar_code": "Koodi",
"mdToolbar_toc": "Sisällysluettelo", "mdToolbar_toc": "Sisällysluettelo",
"home_product": "CryptPad on sisäänrakennetun tietosuojan periaatteen mukainen vaihtoehto suosituille toimisto-ohjelmistoille ja pilvipalveluille. Kaikki CryptPadiin tallennettavat tiedot salataan ennen palvelimelle lähettämistä. Kukaan (emme edes me) ei voi päästä tietoihisi ilman avaimiasi.", "home_product": "CryptPad on sisäänrakennetun tietosuojan periaatteen mukainen vaihtoehto suosituille toimisto-ohjelmistoille ja pilvipalveluille. Kaikki CryptPadiin tallennettavat tiedot salataan ennen palvelimelle lähettämistä. Kukaan (emme edes me) ei voi päästä tietoihisi ilman avaimiasi.",
"home_host": "Tämä on itsenäinen yhteisön ylläpitämä Cryptpad-instanssi. Sen lähdekoodi on saatavilla <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">GitHubissa</a>.", "home_host": "Tämä on itsenäinen yhteisön ylläpitämä Cryptpad-instanssi.",
"home_host_agpl": "Cryptpad-ohjelmisto jaellaan AGPL3-ohjelmistolisenssin ehtojen mukaisesti", "home_host_agpl": "Cryptpad-ohjelmisto jaellaan AGPL3-ohjelmistolisenssin ehtojen mukaisesti",
"home_ngi": "NGI Award-palkinnon voittaja", "home_ngi": "NGI Award-palkinnon voittaja",
"about_intro": "CryptPadia kehittää Pariisissa, Ranskassa ja Iasissa, Romaniassa toimiva<a href=\"http://xwiki.com\">XWiki SAS</a>-pienyrityksen tutkimusryhmä. CryptPadin parissa työskentelee kolme ryhmän ydinjäsentä ja lisäksi joitakin avustajia XWiki SAS:n sisältä ja ulkopuolelta.", "about_intro": "CryptPadia kehittää Pariisissa, Ranskassa ja Iasissa, Romaniassa toimiva<a href=\"http://xwiki.com\">XWiki SAS</a>-pienyrityksen tutkimusryhmä. CryptPadin parissa työskentelee kolme ryhmän ydinjäsentä ja lisäksi joitakin avustajia XWiki SAS:n sisältä ja ulkopuolelta.",
"about_core": "Ydinkehittäjät", "about_core": "Ydinkehittäjät",
"about_contributors": "Tärkeät avustajat", "about_contributors": "Tärkeät avustajat",
"main_info": "<h2>Luottamuksellista yhteistyötä</h2> Jaa ideoita yhdessä jaettujen asiakirjojen avulla.<strong>Nollatieto</strong>-teknologia turvaa yksityisyytesi - <strong>jopa meiltä</strong>.", "main_info": "<h2>Luottamuksellista yhteistyötä</h2> Jaa ideoita yhdessä jaettujen asiakirjojen avulla.<strong>Nollatieto</strong>-teknologia turvaa yksityisyytesi - <strong>jopa meiltä</strong>.",
"main_catch_phrase": "Pilvipalvelu nollatietoperiaatteella", "main_catch_phrase": "Avoimen lähdekoodin salattu kollaboraatioalusta",
"main_footerText": "CryptPadin avulla voit nopeasti luoda kollaboratiivisia asiakirjoja muistiinpanoja ja yhteistä ideointia varten.", "main_footerText": "CryptPadin avulla voit nopeasti luoda kollaboratiivisia asiakirjoja muistiinpanoja ja yhteistä ideointia varten.",
"footer_applications": "Sovellukset", "footer_applications": "Sovellukset",
"footer_contact": "Ota yhteyttä", "footer_contact": "Ota yhteyttä",
@ -629,21 +628,10 @@
"terms": "Käyttöehdot", "terms": "Käyttöehdot",
"blog": "Blogi", "blog": "Blogi",
"topbar_whatIsCryptpad": "Mikä on CryptPad", "topbar_whatIsCryptpad": "Mikä on CryptPad",
"whatis_title": "Mikä on CryptPad", "whatis_title": "Mikä on CryptPad?",
"whatis_collaboration": "Nopeaa ja helppoa yhteistyötä", "whatis_collaboration": "Yksityisyyden huomioivaa yhteistyötä",
"whatis_collaboration_p1": "CryptPadin avulla voit nopeasti luoda kollaboratiivisia asiakirjoja muistiinpanoja ja yhteistä ideointia varten. Rekisteröitymällä ja kirjautumalla sisään saat mahdollisuuden ladata tiedostoja palvelimelle ja oman CryptDriven, jossa voit säilyttää kaikki padisi. Rekisteröityneet käyttäjät saavat ilmaiseksi 50 Mt tallennustilaa.",
"whatis_collaboration_p2": "Voit helposti antaa käyttöoikeuden CryptPad-dokumenttiin jakamalla sen linkin. Voit myös jakaa asiakirjan linkin <em>vain luku</em>-tilassa, jolloin voit julkistaa yhteistyön tulokset ja muokata niitä edelleen.",
"team_inviteLinkError": "Linkin luomisessa tapahtui virhe.", "team_inviteLinkError": "Linkin luomisessa tapahtui virhe.",
"whatis_collaboration_p3": "<a href=\"http://ckeditor.com/\">CKEditor</a>:illa voit luoda yksinkertaisia muotoiltavia tekstitiedostoja sekä Markdown-tiedostoja, jotka muunnetaan tekstiä muokatessasi reaaliaikaisesti esitysmuotoon. Voit myös käyttää Kysely-sovellusta tapahtumien ajoittamiseen useiden osallistujien kanssa.",
"whatis_zeroknowledge": "Nollatietoperiaate",
"whatis_zeroknowledge_p1": "Emme halua tietää, mitä kirjoitat. Modernin kryptografian avulla voit olla varma, ettemme todellakaan tiedä siitä mitään. CryptPad käyttää <strong>100-prosenttisesti asiakasohjelmassa tapahtuvaa salausta</strong> suojatakseen tuottamaasi sisältöä meiltä palvelimen ylläpitäjiltä.",
"whatis_zeroknowledge_p2": "Rekisteröityessäsi ja kirjautuessasi sisään käyttäjätunnuksesi ja salasanasi lasketaan salaiseksi avaimeksi <a href=\"https://en.wikipedia.org/wiki/Scrypt\">scrypt-avaintenmuodostusfunktiolla</a>. Tätä avainta, käyttäjätunnustasi ja salasanaasi ei koskaan lähetetä palvelimelle. Sen sijaan niitä käytetään asiakasohjelmassa CryptDrivesi sisällön purkamiseen. CryptDrivesi puolestaan sisältää avaimet kaikkiin padeihin, joihin sinulla on käyttöoikeus.",
"whatis_zeroknowledge_p3": "Kun jaat linkin asiakirjaan, jaat itse asiassa asiakirjan käyttöön tarvittavan salausavaimen, mutta koska salausavain sisällytetään <a href=\"https://en.wikipedia.org/wiki/Fragment_identifier\">katkelmatunnisteeseen (fragment identifier)</a>, sitä ei koskaan lähetetä palvelimelle suoraan. Tutustu <a href=\"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/\">yksityisyydestä kertovaan blogikirjoitukseemme</a> saadaksesi selville, mihin metadataan meillä on pääsy ja mihin taas ei.",
"whatis_drive": "CryptDriven järjestely", "whatis_drive": "CryptDriven järjestely",
"whatis_drive_p1": "Kun käytät padia CryptPadissa, lisätään se automaattisesti CryptDrivesi pääkansioon. Voit halutessasi myöhemmin järjestellä padit kansioihin tai viedä ne roskakoriin. CryptDrive antaa sinun hakea padejasi ja järjestellä niitä milloin ja miten haluat.",
"whatis_drive_p2": "Intuitiivinen raahaa ja pudota-käyttöliittymä mahdollistaa padien siirtelemisen CryptDrivessa niin, etteivät niiden linkit muutu, eivätkä padien osallistujat siten koskaan menetä käyttöoikeuttaan niihin.",
"whatis_drive_p3": "Voit myös ladata CryptDriveesi tiedostoja ja jakaa niitä kollegoidesi kanssa. Ladattuja tiedostoja voidaan järjestellä samaan tapaan kuin kollaboratiivisia padeja.",
"whatis_business": "CryptPad yrityksille",
"admin_activeSessionsTitle": "Aktiiviset yhteydet", "admin_activeSessionsTitle": "Aktiiviset yhteydet",
"admin_activeSessionsHint": "Aktiivisten WebSocket-yhteyksien määrä (ja yhdistetyt uniikit IP-osoitteet)", "admin_activeSessionsHint": "Aktiivisten WebSocket-yhteyksien määrä (ja yhdistetyt uniikit IP-osoitteet)",
"admin_activePadsTitle": "Aktiiviset padit", "admin_activePadsTitle": "Aktiiviset padit",
@ -806,8 +794,6 @@
"drive_quota": "Tallennustilakiintiösi", "drive_quota": "Tallennustilakiintiösi",
"settings_codeBrackets": "Sulje sulkeet automaattisesti", "settings_codeBrackets": "Sulje sulkeet automaattisesti",
"team_viewers": "Katselijat", "team_viewers": "Katselijat",
"whatis_business_p1": "CryptPadin nollatietoperiaate-salaus moninkertaistaa olemassaolevien tietoturvaprotokollien tehokkuuden peilaamalla organisaation pääsynvalvontaa kryptografiassa. Arkaluonteisten tietojen purkamiseen tarvitaan aina käyttäjän kirjautumistiedot, joten CryptPad on potentiaaliselle hyökkääjälle perinteisiä pilvipalveluita vähempiarvoisempi kohde. Lue lisää hyödyistä yrityksille <a href='https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf'>CryptPad Whitepaper-julkaisusta</a>.",
"whatis_business_p2": "Cryptpad on saatavilla on-premises-ratkaisuna, ja XWiki SAS:n<a href=\"https://cryptpad.fr/about.html\">CryptPad-kehittäjät</a> tarjoavat kaupallista tukea sekä räätälöinti- ja kehityspalveluita. Ota yhteyttä osoitteeseen <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> saadaksesi lisätietoja.",
"policy_title": "CryptPad-tietosuojakäytäntö", "policy_title": "CryptPad-tietosuojakäytäntö",
"policy_whatweknow": "Mitä tiedämme sinusta", "policy_whatweknow": "Mitä tiedämme sinusta",
"policy_whatweknow_p1": "Web-sovelluksena CryptPad voi käyttää HTTP-protokollan paljastamia metatietoja. Nämä sisältävät IP-osoitteesi ja joitakin muita HTTP-otsikoita, joista selaimesi voidaan tunnistaa. Voit selvittää selaimesi jakamat tiedot <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com-palvelussa</a>.", "policy_whatweknow_p1": "Web-sovelluksena CryptPad voi käyttää HTTP-protokollan paljastamia metatietoja. Nämä sisältävät IP-osoitteesi ja joitakin muita HTTP-otsikoita, joista selaimesi voidaan tunnistaa. Voit selvittää selaimesi jakamat tiedot <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com-palvelussa</a>.",
@ -825,185 +811,44 @@
"policy_choices_vpn": "Jos haluat käyttää ylläpitämäämme CryptPad-instanssia, mutta et paljastaa IP-osoitettasi, voit suojata sen käyttämällä <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">Tor-selainpakettia</a> tai <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN-palvelua</a>.", "policy_choices_vpn": "Jos haluat käyttää ylläpitämäämme CryptPad-instanssia, mutta et paljastaa IP-osoitettasi, voit suojata sen käyttämällä <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">Tor-selainpakettia</a> tai <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN-palvelua</a>.",
"policy_choices_ads": "Jos haluat ainoastaan estää analytiikkapalvelumme, voit käyttää mainosten estämiseen tarkoitettuja työkaluja, kuten <a href=\"https://www.eff.org/privacybadger\" title=\"download privacy badger\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Badgeria</a>.", "policy_choices_ads": "Jos haluat ainoastaan estää analytiikkapalvelumme, voit käyttää mainosten estämiseen tarkoitettuja työkaluja, kuten <a href=\"https://www.eff.org/privacybadger\" title=\"download privacy badger\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Badgeria</a>.",
"features": "Ominaisuudet", "features": "Ominaisuudet",
"features_title": "Ominaisuuksien vertailu", "features_title": "Ominaisuudet",
"features_feature": "Ominaisuus", "features_feature": "Ominaisuus",
"features_anon": "Anonyymi käyttäjä", "features_anon": "Rekisteröitymätön",
"features_registered": "Rekisteröitynyt käyttäjä", "features_registered": "Rekisteröitynyt",
"features_premium": "Premium-käyttäjä", "features_premium": "Premium",
"features_notes": "Huomautukset", "features_notes": "Huomautukset",
"features_f_apps": "Käyttöoikeus pääsovelluksiin", "features_f_apps": "Käyttöoikeus kaikkiin sovelluksiin",
"features_f_core": "Sovellusten yleiset ominaisuudet", "features_f_core": "Yleiset ominaisuudet",
"features_f_core_note": "Muokkaus, Tuonti ja vienti, Historia, Käyttäjälista, Keskustelu", "features_f_core_note": "Muokkaus, Tuonti ja vienti, Historia, Käyttäjälista, Keskustelu",
"features_f_file0": "Avaa tiedostoja", "features_f_file0": "Avaa asiakirjoja",
"features_f_file0_note": "Katsele ja lataa muiden käyttäjien jakamia tiedostoja", "features_f_file0_note": "Katsele ja lataa muiden käyttäjien jakamia asiakirjoja",
"features_f_cryptdrive0": "Rajoitettu CryptDrive-käyttöoikeus", "features_f_cryptdrive0": "Rajoitettu CryptDrive-käyttöoikeus",
"features_f_cryptdrive0_note": "Mahdollisuus säilyttää padit selaimessa myöhempää käyttöä varten", "features_f_cryptdrive0_note": "Mahdollisuus säilyttää padit selaimessa myöhempää käyttöä varten",
"features_f_storage0": "Rajoitettu säilytysaika", "features_f_storage0": "Rajoitettu säilytysaika",
"features_f_storage0_note": "Luodut padit poistetaan kolmen kuukauden käyttämättömyyden jälkeen", "features_f_storage0_note": "Asiakirjat poistetaan {0} päivän käyttämättömyyden jälkeen",
"features_f_anon": "Kaikki anonyymien käyttäjien ominaisuudet", "features_f_anon": "Kaikki anonyymien käyttäjien ominaisuudet",
"features_f_anon_note": "Paremmalla käytettävyydellä ja tehokkaammilla padien hallintaominaisuuksilla", "features_f_anon_note": "Lisätoiminnoilla varustettuna",
"features_f_cryptdrive1": "Täysi CryptDrive-toiminnallisuus", "features_f_cryptdrive1": "Täysi CryptDrive-toiminnallisuus",
"features_f_cryptdrive1_note": "Kansiot, jaetut kansiot, mallipohjat, tunnisteet", "features_f_cryptdrive1_note": "Kansiot, jaetut kansiot, mallipohjat, tunnisteet",
"features_f_devices": "Padisi kaikilla laitteillasi", "features_f_devices": "Padisi kaikilla laitteillasi",
"features_f_devices_note": "CryptDrive käytettävissä kaikkialta käyttäjätunnuksen avulla", "features_f_devices_note": "CryptDrive käytettävissä kaikkialta käyttäjätunnuksen avulla",
"features_f_social": "Sosiaaliset sovellukset", "features_f_social": "Yhteistyöominaisuudet",
"features_f_social_note": "Luo käyttäjäprofiili, käytä avatar-kuvaa, keskustele yhteystietojen kanssa", "features_f_social_note": "Lisää yhteystietoja turvallista yhteistyötä varten, luo profiili, hienojakoiset käyttöoikeudet",
"features_f_file1": "Lataa ja jaa tiedostoja", "features_f_file1": "Lataa ja jaa tiedostoja",
"features_f_file1_note": "Jaa tiedostoja yhteystietojesi kanssa tai upota ne padeihisi", "features_f_file1_note": "Säilytä haluamasi tiedostot, kuten kuvat, PDF-tiedostot ja videot CryptDrivessasi. Voit jakaa ne yhteystietojesi kanssa tai upottaa ne asiakirjoihisi (maksimikoko {0}Mt)",
"features_f_storage1": "Pysyvä tallennustila (50Mt)", "features_f_storage1": "Henkilökohtainen tallennustila ({0}Mt)",
"features_f_storage1_note": "CryptDriveen tallennettuja padeja ei koskaan poisteta käyttämättömyyden takia", "features_f_storage1_note": "CryptDriveen tallennettuja padeja ei poisteta käyttämättömyyden takia",
"features_f_register": "Rekisteröidy ilmaiseksi", "features_f_register": "Rekisteröidy ilmaiseksi",
"features_f_register_note": "Sähköpostiosoitetta tai henkilötietoja ei tarvita",
"features_f_reg": "Kaikki rekisteröityneiden käyttäjien ominaisuudet", "features_f_reg": "Kaikki rekisteröityneiden käyttäjien ominaisuudet",
"features_f_reg_note": "Ja auta CryptPadin kehitystyötä", "features_f_reg_note": "Lisäetuja saatavilla",
"features_f_storage2": "Lisää tallennustilaa", "features_f_storage2": "Lisää tallennustilaa",
"features_f_storage2_note": "5Gt - 50Gt riippuen valitusta tilauksesta", "features_f_storage2_note": "5Gt - 50Gt riippuen valitusta tilauksesta, korkeampi palvelimelle ladattujen tiedostojen kokorajoitus ({0}Mt)",
"features_f_support": "Nopeampi tuki", "features_f_support": "Nopeampi tuki",
"features_f_support_note": "Ammattimainen sähköpostituki Team-tilauksella", "features_f_support_note": "Ylläpitotiimin tarjoama priorisoitu tuki sähköpostin ja sisäänrakennetun tukipyyntöjärjestelmän välityksellä",
"features_f_supporter": "Ryhdy yksityisyyden tukijaksi", "features_f_supporter": "Tue yksityisyyttä",
"features_f_supporter_note": "Auta meitä näyttämään, että yksityisyyttä edistävien ohjelmistojen tulisi olla oletusarvo", "features_f_supporter_note": "Auta CryptPadia nousemaan taloudellisesti kannattavaksi ja näytä, että yksityisyyttä korostavan, asiakkaiden omasta tahdostaan rahoittaman ohjelmiston tulisi olla normi",
"features_f_subscribe": "Tilaa Premium", "features_f_subscribe": "Tilaa",
"features_f_subscribe_note": "Kirjaudu ensin sisään CryptPadiin", "features_f_subscribe_note": "Tilaamiseen tarvitaan rekisteröity käyttäjätili",
"faq_link": "UKK",
"faq_title": "Usein kysytyt kysymykset",
"faq_whatis": "Mikä on <span class='cp-brand-font'>CryptPad</span>?",
"faq": {
"keywords": {
"title": "Avainsanat",
"pad": {
"q": "Mikä on padi?",
"a": "<em>Padi</em> on <a href='http://etherpad.org/' target='_blank'>Etherpad-projektin</a> popularisoima termi reaaliaikaiselle kollaboratiiviselle editorille.\nSe tarkoittaa selaimessa muokattavaa asiakirjaa, jossa muiden käyttäjien tekemät muutokset näkyvät lähes välittömästi."
},
"owned": {
"q": "Mikä on omistettu padi?",
"a": "<em>Omistettu padi</em> on padi, jolla on erityisesti määritelty <em>omistaja</em>, jonka palvelin tunnistaa <em>julkisen salausavaimen</em> perusteella. Padin omistaja voi poistaa omistamansa padit palvelimelta, jolloin muut yhteiskäyttäjät eivät voi enää käyttää niitä riippumatta siitä, olivatko ne tallennettuna heidän henkilökohtaisiin CryptDriveihinsa."
},
"expiring": {
"q": "Mikä on vanheneva padi?",
"a": "<em>Vanheneva padi</em> on padi, jolle on määritelty vanhenemisajankohta, jolloin padi poistetaan automaattisesti palvelimelta. Vanhenevat padit voidaan määritellä säilymään minkä tahansa ajan yhdestä tunnista 100 kuukauteen. Vanheneva padi ja sen historia muuttuvat vanhenemishetkellä pysyvästi käyttökelvottomiksi, vaikka padia muokattaisiinkin silloin.<br><br>Jos padi on määritelty vanhenevaksi, voit tarkastaa sen vanhenemisajan padin <em>ominaisuuksista</em> joko CryptDrivessa padin kohdalla hiiren oikealla painikkeella aukeavasta valikosta tai käyttämällä <em>Ominaisuudet-valikkoa</em> sovelluksen työkalupalkista."
},
"tag": {
"q": "Miten voin käyttää tunnisteita?",
"a": "Voit lisätä padeihin ja ladattuihin tiedostoihin tunnisteita CryptDrivessa tai käyttää <em>Tunniste</em>-painiketta (<span class='fa fa-hashtag'></span>) minkä tahansa editorin työkalupalkista. Hae padeja ja tiedostoja CryptDriven hakupalkista käyttämällä ristikkomerkillä alkavaa hakusanaa (esimerkiksi <em>#crypto</em>)."
},
"template": {
"q": "Mikä on mallipohja?",
"a": "Mallipohja on padi, jolla voit määritellä luotavan padin oletussisällön luodessasi toista samantyyppistä padia. Voit muuttaa minkä tahansa olemassaolevan padin mallipohjaksi siirtämällä sen <em>Mallipohjat</em>-osastoon CryptDrivessasi. Voit myös tehdä padista mallipohjana käytettävän kopion napsauttamalla Mallipohja-painiketta (<span class='fa fa-bookmark'></span>) editorin työkalupalkista."
},
"abandoned": {
"q": "Mikä on hylätty padi?",
"a": "<em>Hylätty padi</em> on padi, jota ei ole kiinnitetty yhdenkään rekisteröityneen käyttäjän CryptDriveen ja jota ei ole muokattu kuuteen kuukauteen. Hylätyt asiakirjat poistetaan palvelimelta automaattisesti."
}
},
"privacy": {
"title": "Yksityisyys",
"different": {
"q": "Miten CryptPad eroaa muista padeja tarjoavista palveluista?",
"a": "CryptPad salaa padeihin tekemäsi muutokset ennen niiden lähettämistä palvelimelle, joten emme voi lukea, mitä kirjoitat."
},
"me": {
"q": "Mitä palvelin tietää minusta?",
"a": "Palvelimen ylläpitäjät näkevät CryptPadia käyttävien ihmisten IP-osoitteet. Emme pidä kirjaa siitä, mitkä osoitteet vierailevat missäkin padeissa. Tämä olisi kuitenkin teknisesti mahdollista, vaikka emme pääsekään tarkastelemaan padien salaamatonta sisältöä. Jos pelkäät meidän analysoivan näitä tietoja, on parasta olettaa meidän keräävän niitä, sillä emme voi todistaa, ettemme tee niin.<br><br>Keräämme käyttäjiltämme joitakin perustason telemetriatietoja, kuten käytetyn laitteen näytön koon ja tietoja useimmin käytetyistä painikkeista. Nämä auttavat meitä parantamaan CryptPadia, mutta jos et halua lähettää telemetriatietoja CryptPadille, voit <strong>jättäytyä pois tietojen keräämisestä ottamalla rastin pois <em>Salli käyttäjäpalaute</em>-ruudusta</strong>.<br><br>Pidämme kirjaa siitä, mitä padeja käyttäjät säilyttävät CryptDriveissaan pystyäksemme asettamaan tallennustilarajoituksia. Emme kuitenkaan tiedä näiden padien tyyppiä tai sisältöä. Tallennustilakiintiöt määritellään käyttäjien julkisten salausavainten perusteella, mutta emme yhdistä käyttäjien nimiä tai sähköpostiosoitteita näihin avaimiin.<br><br>Saadaksesi lisätietoja aiheesta voit tutustua kirjoittamaamme <a href='https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/' target='_blank'>blogikirjoitukseen</a>."
},
"register": {
"q": "Jos rekisteröidyn, tietääkö palvelin minusta enemmän?",
"a": "Emme vaadi käyttäjiltä sähköpostiosoitteen vahvistusta, eikä palvelin saa tietää rekisteröitymisen yhteydessä edes käyttäjänimeäsi tai salasanaasi. Sen sijaan rekisteröitymis- ja sisäänkirjautumislomakkeet luovat antamastasi syötteestä uniikin avainrenkaan, ja palvelin saa tietoonsa ainoastaan kryptografisen allekirjoituksesi. Käytämme tätä tietoa yksityiskohtien, kuten tallennustilan käytön valvomiseen ja siten tallennustilakiintiöiden ylläpitämiseen.<br><br>Käytämme <em>palaute</em>-toimintoa kertoaksemme palvelimelle, että IP-osoitteestasi on luotu käyttäjätili. Tämä auttaa meitä pitämään kirjaa CryptPadiin rekisteröityneiden käyttäjien määrästä ja maantieteellisestä sijainnista, jotta voimme paremmin arvioida, mitä kieliä palvelumme kannattaisi tukea.<br><br>Rekisteröityneet käyttäjät kertovat palvelimelle, mitä padeja he säilyttävät CryptDriveissaan. Tämä on tarpeen, että kyseisiä padeja ei todeta hylätyiksi ja siten poisteta käyttämättömyyden takia."
},
"other": {
"q": "Mitä yhteistyökumppanit saavat tietää minusta?",
"a": "Muokatessasi padia jonkun toisen kanssa kaikki yhteydet kulkevat palvelimen kautta, joten vain me saamme tietää IP-osoitteesi. Muut käyttäjät näkevät näyttönimesi, avatar-kuvasi, linkin profiiliisi (jos olet luonut sellaisen) ja <em>julkisen salausavaimesi</em> (jota käytetään yhteyksien salaamiseen)."
},
"anonymous": {
"q": "Tekeekö CryptPad minusta anonyymin?",
"a": "Vaikka CryptPad on suunniteltu tietämään sinusta niin vähän kuin mahdollista, se ei tarjoa vahvaa anonymiteettisuojaa. Palvelimemme tietävät IP-osoitteesi, mutta voit halutessasi piilottaa sen käyttämällä CryptPadia Tor-verkosta. Pelkkä Tor-verkon käyttäminen ilman muutoksia verkkokäyttäytymiseesi ei takaa anonymiteettiä, sillä palvelin tunnistaa käyttäjät uniikkien salaustunnisteiden perusteella. Jos käytät samaa käyttäjätunnusta Tor-verkosta ja sen ulkopuolelta, istuntosi voidaan yhdistää sinuun.<br><br>Käyttäjille, joiden yksityisyysvaatimukset ovat matalammat - toisin kuin monet muut palvelut, CryptPad ei vaadi käyttäjiä tunnistautumaan nimellä, puhelinnumerolla tai sähköpostiosoitteella."
},
"policy": {
"q": "Onko teillä tietosuojakäytäntö?",
"a": "Kyllä! Se löytyy <a href='/privacy.html' target='_blank'>täältä</a>."
}
},
"security": {
"pad_password": {
"q": "Mitä tapahtuu, kun suojaan padin tai kansion salasanalla?",
"a": "Voit suojata minkä tahansa padin tai jaetun kansion salasanalla luodessasi sen. Voit myös käyttää Ominaisuudet-valikkoa asettaaksesi, vaihtaaksesi tai poistaaksesi salasanan milloin tahansa.<br><br>Padien ja jaettujen kansioiden salasanat on tarkoitettu suojaamaan linkkiä jakaessasi sitä mahdollisesti turvattomien kanavien, kuten sähköpostin tai tekstiviestin kautta. Jos joku onnistuu kaappaamaan linkkisi, mutta ei tiedä sen salasanaa, ei hän pääse lukemaan asiakirjaasi.<br><br>Kun jaat sisältöä CryptPadin sisällä yhteystietojesi tai tiimiesi kanssa, tiedonsiirto on salattua ja oletamme, että haluat heidän pääsevän käyttämään asiakirjaasi. Siksi salasana tallennetaan ja lähetetään padin mukana jakaessasi sitä CryptPadin sisällä. Vastaanottajalta tai sinulta itseltäsi <b>ei</b> pyydetä salasanaa asiakirjaa avatessa."
},
"title": "Turvallisuus",
"proof": {
"q": "Miten käytätte nollatietotodistuksia (Zero Knowledge Proofs)?",
"a": "Käyttäessämme termiä \"nollatieto\" (Zero Knowledge) emme viittaa <em>nollatietotodistuksiin</em> (Zero Knowledge Proofs) vaan <em>nollatieto-verkkopalveluihin</em> (Zero Knowledge Web Services). Nollatieto-verkkopalvelut salaavat käyttäjän datan tämän selaimessa niin, ettei palvelin pääse missään vaiheessa käsittelemään salaamatonta dataa tai salausavaimia.<br><br>Olemme keränneet listan muista nollatietopalveluista <a href='https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services'>tänne</a>."
},
"why": {
"q": "Miksi minun kannattaisi käyttää CryptPadia?",
"a": "Mielestämme pilvipalveluiden ei tarvitse päästä lukemaan dataasi, jotta voit jakaa sen ystäviesi ja kollegoidesi kanssa. Jos käytät yhteistyöhön jotakin muuta palvelua, eikä palvelu erikseen ilmoita, ettei se pääse käsiksi tietoihisi, on hyvin todennäköistä, että tietojasi käytetään kaupallisiin tarkoituksiin."
},
"compromised": {
"q": "Suojaako CryptPad minua, jos laitteeni tietoturva on vaarantunut?",
"a": "Jos laitteesi varastetaan, CryptPad voi kirjata sinut ulos kaikista muista laitteista, paitsi nykyisestä laitteestasi. Tehdäksesi niin mene <strong>Asetukset</strong>-sivulle ja valitse <strong>Kirjaudu ulos kaikkialta</strong>. Kaikki muut tilillesi kirjautuneet aktiiviset laitteet kirjautuvat välittömästi ulos. Ne laitteet, joilla CryptPadia on käytetty aiemmin kirjautuvat ulos seuraavan sivunlatauksen yhteydessä.<br><br>Tällä hetkellä <em>etäuloskirjautuminen</em> on toteutettu selainpohjaisesti palvelimen sijaan. Näin ollen se ei suojaa sinua valtiollisilta toimijoilta, mutta on riittävä, jos unohdit kirjautua ulos CryptPadista käytettyäsi jaettua tietokonetta."
},
"crypto": {
"q": "Mitä kryptografisia menetelmiä käytätte?",
"a": "CryptPad perustuu kahteen avoimen lähdekoodin kryptografiakirjastoon: <a href='https://github.com/dchest/tweetnacl-js' target='_blank'>tweetnacl.js:n</a> ja <a href='https://github.com/dchest/scrypt-async-js' target='_blank'>scrypt-async.js:n</a>. <br><br>Scrypt on <em>salasanapohjainen avaimenmuodostusalgoritmi</em>. Käytämme sitä muuntaaksemme käyttäjätunnuksesi ja salasanasi uniikiksi avainrenkaaksi, joka turvaa pääsyn CryptDriveesi niin, että ainoastaan sinä pääset käsiksi padilistaasi. <br><br>Käytämme vastaavasti tweetnacl:n tarjoamia <em>xsalsa20-poly1305</em>- ja <em>x25519-xsalsa20-poly1305</em>-salakirjoitusjärjestelmiä salaamaan padeja ja keskusteluhistoriaa."
}
},
"usability": {
"title": "Käytettävyys",
"register": {
"q": "Mitä hyötyä rekisteröitymisestä on minulle?",
"a": "Rekisteröityneille käyttäjille on tarjolla joitakin toimintoja, jotka eivät ole saatavilla rekisteröitymättömille käyttäjille. Löydät nämä toiminnot <a href='/features.html' target='_blank'>luomastamme kaaviosta</a>."
},
"share": {
"q": "Miten jaan salattuja padeja yhteystietojeni kanssa?",
"a": "CryptPad laittaa URL-osoitteessa padisi salaisen salausavaimen <em>#</em>-merkin jälkeen. Tämän merkin jälkeen laitettuja tietoja ei lähetetä palvelimelle, joten emme pääse koskaan käyttämään salausavaimiasi. Jakaessasi linkin padiin jaat oikeuden lukea ja käyttää sitä."
},
"remove": {
"q": "Poistin padin tai tiedoston CryptDrivestani, mutta sen sisältö on yhä käytettävissä. Miten voin poistaa sen?",
"a": "Ainoastaan <em>omistettuja padeja</em> (otettu käyttöön helmikuussa 2018) voi poistaa. Lisäksi nämä padit voi poistaa ainoastaan niiden <em>omistaja</em> eli henkilö, joka alun perin loi kyseisen padin. Jos et ole luonut kyseistä padia, joudut pyytämään sen omistajaa poistamaan sen puolestasi. Omistamiesi padien poistaminen onnistuu CryptDrivessa <strong>napsauttamalla padia hiiren oikealla painikkeella</strong> ja valitsemalla <strong>Poista palvelimelta</strong>."
},
"forget": {
"q": "Mitä tapahtuu, jos unohdan salasanani?",
"a": "Valitettavasti se, että pystyisimme palauttamaan käyttöoikeuden salattuihin padeihisi tarkoittaisi myös sitä, että pääsisimme itse käsiksi niiden sisältöön. Jos et kirjoittanut käyttäjätunnustasi ja salasanaasi ylös etkä muista kumpaakaan, voit mahdollisesti palauttaa padisi selaimesi historiaa suodattamalla."
},
"change": {
"q": "Entä jos haluan vaihtaa salasanani?",
"a": "Voit vaihtaa CryptPad-salasanasi Tilin asetukset-sivulta."
},
"devices": {
"q": "Olen kirjautunut sisään kahdella laitteella, ja näen kaksi eri CryptDrivea. Miten tämä on mahdollista?",
"a": "On todennäköistä, että olet rekisteröitynyt samalla käyttäjänimellä kahdesti eri salasanoja käyttäen. CryptPad-palvelin tunnistaa sinut kryptografisen allekirjoituksesi perusteella käyttäjänimen sijaan, joten se ei voi estää muita rekisteröitymästä samalla käyttäjänimellä. Tästä johtuen jokaisella käyttäjätilillä on ainutlaatuinen käyttäjänimen ja salasanan yhdistelmä. Sisäänkirjautuneet käyttäjät voivat nähdä käyttäjänimensä Asetukset-sivun ylälaidassa."
},
"folder": {
"q": "Voinko jakaa kokonaisia kansioita CryptDrivestani?",
"a": "Kyllä, voit luoda <em>jaetun kansion</em> CryptDrivestasi ja jakaa kerralla kaikki sen sisältämät padit."
},
"feature": {
"q": "Voitteko lisätä CryptPadiin tarvitsemani ominaisuuden?",
"a": "Monet CryptPadin ominaisuuksista ovat olemassa, koska käyttäjämme ovat toivoneet niitä. <a href='https://cryptpad.fr/contact.html' target='_blank'>Yhteystiedot-sivumme</a> kertoo, millä tavoin meihin saa yhteyden.<br><br>Valitettavasti emme voi taata, että pystymme toteuttamaan kaikki käyttäjiemme ehdotukset. Jos jokin tietty ominaisuus on kriittinen organisaatiosi kannalta, voit sponsoroida kehitystä varmistaaksesi sen toteutumisen. Ota yhteyttä osoitteeseen <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> saadaksesi lisätietoja.<br><br>Vaikka kehitystyön sponsorointi ei olisikaan mahdollista, olemme silti kiinnostuneita palautteesta, joka auttaa meitä parantamaan CryptPadia. Ota meihin milloin tahansa yhteyttä yllä luetelluilla tavoilla."
}
},
"other": {
"title": "Muita kysymyksiä",
"pay": {
"q": "Miksi minun täytyisi maksaa, kun niin monet toiminnot ovat ilmaisia?",
"a": "Annamme tukijoillemme lisätallennustilaa ja mahdollisuuden kasvattaa yhteystietojen tallennustilakiintiöitä (<a href='https://accounts.cryptpad.fr/#/faq' target='_blank'>lue lisää</a>).<br><br>Näiden lyhytaikaisten etujen lisäksi premium-tilaus auttaa rahoittamaan CryptPadin jatkuvaa, aktiivista kehitystyötä. Tähän kuuluu bugien korjaamista, uusien ominaisuuksien lisäämistä ja CryptPad-instanssien pystyttämisen ja ylläpidon helpottamista. Lisäksi autat näyttämään muille palveluntarjoajille, että ihmiset ovat valmiita tukemaan yksityisyyttä parantavia teknologioita. Toivomme, että käyttäjätietojen myymiseen perustuvat liiketoimintamallit jäävät lopulta menneeseen.<br><br>Lopuksi, tarjoamme suurimman osan CryptPadin toiminnallisuudesta ilmaiseksi, koska uskomme yksityisyyden kuuluvan kaikille - ei vain niille, joilla on varaa maksaa siitä. Tukemalla meitä autat tarjoamaan heikommassa asemassa oleville väestöille pääsyn näihin peruspalveluihin."
},
"goal": {
"q": "Mitkä ovat tavoitteenne?",
"a": "Kehittämällä yksityisyyttä kunnioittavaa kollaboraatioteknologiaa toivomme nostavamme käyttäjien odotuksia pilvipalveluiden yksityisyyden suhteen. Toivomme, että työmme rohkaisee muita palveluntarjoajia pyrkimään samaan tai parempaan lopputulokseen. Optimismistamme huolimatta tiedämme, että suuri osa webistä rahoitetaan kohdistetulla mainonnalla. Tehtävää on paljon enemmän, kuin mihin pystymme yksin - arvostamme yhteisömme tarjoamaa mainostusta, tukea ja panosta tavoitteidemme saavuttamisessa."
},
"jobs": {
"q": "Etsittekö työntekijöitä?",
"a": "Kyllä! Esittäydy meille sähköpostilla osoitteeseen <a href='mailto:jobs@xwiki.com' target='_blank'>jobs@xwiki.com</a>."
},
"host": {
"q": "Voitteko auttaa minua perustamaan oman CryptPad-instanssini?",
"a": "Tarjoamme mielellämme tukea organisaatiosi sisäiselle CryptPad-instanssille. Ota yhteyttä osoitteeseen <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> saadaksesi lisätietoja."
},
"revenue": {
"q": "Kuinka voin osallistua tulojen jakamiseen?",
"a": "Jos ylläpidät omaa CryptPad-instanssiasi, haluaisit ottaa käyttöön maksulliset käyttäjätilit ja jakaa tulot CryptPadin kehittäjien kanssa, palvelimesi täytyy määritellä kumppanipalveluksi.<br><br>CryptPad-asennushakemistosi <em>config.example.js</em>-tiedostosta pitäisi löytyä ohjeet tämän palvelun käyttöönottoon. Sinun tulee myös ottaa yhteyttä osoitteeseen <a href='mailto:sales@cryptpad.fr'>sales@cryptpad.fr</a> varmistaaksesi, että palvelimesi HTTPS-määritykset ovat kunnossa ja sopiaksesi käytettävistä maksutavoista."
}
}
},
"policy_howweuse_p1": "Käytämme näitä tietoja suunnitellaksemme CryptPadin mainostusta ja arvioidaksemme aiempien kampanjoiden onnistumista. Sijaintitietosi puolestaan kertovat meille, mitä kieliä CryptPadin tulisi mahdollisesti tukea englannin lisäksi.", "policy_howweuse_p1": "Käytämme näitä tietoja suunnitellaksemme CryptPadin mainostusta ja arvioidaksemme aiempien kampanjoiden onnistumista. Sijaintitietosi puolestaan kertovat meille, mitä kieliä CryptPadin tulisi mahdollisesti tukea englannin lisäksi.",
"tos_title": "CryptPad-käyttöehdot", "tos_title": "CryptPad-käyttöehdot",
"tos_legal": "Älä ole pahantahtoinen, väärinkäyttäjä tai tee mitään laitonta.", "tos_legal": "Älä ole pahantahtoinen, väärinkäyttäjä tai tee mitään laitonta.",
@ -1018,7 +863,7 @@
"help": { "help": {
"title": "Näin pääset alkuun", "title": "Näin pääset alkuun",
"generic": { "generic": {
"more": "Tutustu <a href=\"/faq.html\" target=\"_blank\">usein kysyttyihin kysymyksiin</a> saadaksesi lisätietoja CryptPadin toiminnallisuudesta.", "more": "Tutustu CryptPadin toimintaan ja ominaisuuksiin <a href=\"https://docs.cryptpad.fr\" target=\"_blank\" rel=\"noopener noreferrer\">dokumentaatiosivuillamme</a>.",
"share": "Jaa tämä asiakirja <i class=\"fa fa-shhare-alt\"></i> <b>Jaa</b>-painikkeella ja hallitse käyttöoikeuksia <i class=\"fa fa-unlock-alt\"></i> <b>Käyttöoikeudet</b>-painikkeella.", "share": "Jaa tämä asiakirja <i class=\"fa fa-shhare-alt\"></i> <b>Jaa</b>-painikkeella ja hallitse käyttöoikeuksia <i class=\"fa fa-unlock-alt\"></i> <b>Käyttöoikeudet</b>-painikkeella.",
"save": "Kaikki tekemäsi muutokset synkronoidaan automaattisesti, joten sinun ei tarvitse koskaan tallentaa" "save": "Kaikki tekemäsi muutokset synkronoidaan automaattisesti, joten sinun ei tarvitse koskaan tallentaa"
}, },
@ -1258,12 +1103,12 @@
"contact_bug": "Virheraportti", "contact_bug": "Virheraportti",
"contact_devHint": "Ominaisuuspyyntöjä, käytettävyysparannuksia tai kiitoksia varten.", "contact_devHint": "Ominaisuuspyyntöjä, käytettävyysparannuksia tai kiitoksia varten.",
"contact_dev": "Ota yhteyttä kehittäjiin", "contact_dev": "Ota yhteyttä kehittäjiin",
"contact_adminHint": "Käyttäjätiliin, tallennustilaan tai palvelun saatavuuteen liittyviä ongelmia varten.", "contact_adminHint": "Käyttäjätiliin, tallennustilaan tai palvelun saatavuuteen liittyviä ongelmia varten.\n",
"contact_admin": "Ota yhteyttä ylläpitäjiin", "contact_admin": "Ota yhteyttä ylläpitäjiin",
"footer_tos": "Käyttöehdot", "footer_tos": "Käyttöehdot",
"footer_legal": "Oikeusasiat", "footer_legal": "Oikeusasiat",
"footer_donate": "Lahjoita", "footer_donate": "Lahjoita",
"footer_team": "Tiimimme", "footer_team": "Tekijät",
"footer_product": "Tuotteemme", "footer_product": "Tuotteemme",
"admin_flushCacheDone": "Välimuisti tyhjennetty onnistuneesti", "admin_flushCacheDone": "Välimuisti tyhjennetty onnistuneesti",
"admin_flushCacheButton": "Tyhjennä välimuisti", "admin_flushCacheButton": "Tyhjennä välimuisti",
@ -1340,7 +1185,7 @@
"creation_appMenuName": "Uusi padi (Ctrl + E)", "creation_appMenuName": "Uusi padi (Ctrl + E)",
"creation_propertiesTitle": "Saatavuus", "creation_propertiesTitle": "Saatavuus",
"creation_passwordValue": "Salasana", "creation_passwordValue": "Salasana",
"creation_expiration": "Vanhenemisaika", "creation_expiration": "Vanhenemispäivämäärä",
"creation_noOwner": "Ei omistajaa", "creation_noOwner": "Ei omistajaa",
"creation_ownedByOther": "Toisen käyttäjän omistama", "creation_ownedByOther": "Toisen käyttäjän omistama",
"creation_owners": "Omistajat", "creation_owners": "Omistajat",
@ -1349,7 +1194,7 @@
"creation_create": "Luo", "creation_create": "Luo",
"creation_newTemplate": "Uusi mallipohja", "creation_newTemplate": "Uusi mallipohja",
"creation_noTemplate": "Ei mallipohjaa", "creation_noTemplate": "Ei mallipohjaa",
"creation_password": "Lisää salasana", "creation_password": "Salasana\n",
"creation_expire2": "<b>Vanhenevalla</b> padilla on asetettu elinikä, jonka täyttyessä se poistetaan automaattisesti palvelimelta ja muiden käyttäjien CryptDriveista.", "creation_expire2": "<b>Vanhenevalla</b> padilla on asetettu elinikä, jonka täyttyessä se poistetaan automaattisesti palvelimelta ja muiden käyttäjien CryptDriveista.",
"creation_expire1": "<b>Rajoittamatonta</b> padia ei poisteta palvelimelta, ellei sen omistaja poista sitä.", "creation_expire1": "<b>Rajoittamatonta</b> padia ei poisteta palvelimelta, ellei sen omistaja poista sitä.",
"creation_expireMonths": "Kuukausi(a)", "creation_expireMonths": "Kuukausi(a)",
@ -1360,7 +1205,7 @@
"creation_expire": "Vanheneva padi", "creation_expire": "Vanheneva padi",
"creation_expireTitle": "Elinikä", "creation_expireTitle": "Elinikä",
"creation_owned2": "<b>Avoimella</b> padilla ei ole omistajaa, ja sitä ei voida poistaa palvelimelta, ellei sen vanhenemisaika ole tullut täyteen.", "creation_owned2": "<b>Avoimella</b> padilla ei ole omistajaa, ja sitä ei voida poistaa palvelimelta, ellei sen vanhenemisaika ole tullut täyteen.",
"creation_owned1": "<b>Omistettu</b> padi voidaan poistaa palvelimelta omistajan niin halutessa. Omistetun padin poistaminen poistaa sen muiden käyttäjien CryptDriveista.", "creation_owned1": "<b>Omistettu</b> asiakirja voidaan poistaa palvelimelta omistajan niin halutessa. Omistetun asiakirjan poistaminen poistaa sen myös muiden käyttäjien CryptDriveista.",
"creation_ownedFalse": "Avoin padi", "creation_ownedFalse": "Avoin padi",
"creation_ownedTrue": "Omistettu padi", "creation_ownedTrue": "Omistettu padi",
"creation_owned": "Omistettu padi", "creation_owned": "Omistettu padi",
@ -1468,5 +1313,51 @@
"loading_state_3": "Lataa jaetut kansiot", "loading_state_3": "Lataa jaetut kansiot",
"loading_state_2": "Päivitä sisältö", "loading_state_2": "Päivitä sisältö",
"loading_state_1": "Lataa Drive", "loading_state_1": "Lataa Drive",
"loading_state_0": "Rakenna käyttöliittymä" "loading_state_0": "Rakenna käyttöliittymä",
"register_notes_title": "Tärkeät huomiot",
"home_support_title": "Tue CryptPadia",
"home_opensource": "Kuka tahansa voi ylläpitää omaa henkilökohtaista tai ammattimaista CryptPad-instanssia. Lähdekoodi on saatavilla <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">GitHubissa</a>.",
"home_opensource_title": "Avoin lähdekoodi",
"home_host_title": "Tietoja tästä instanssista",
"home_privacy_text": "CryptPad on luotu helpottamaan yhteistyötä ja pitämään samalla tietosi yksityisinä. Kaikki sisällön salaus ja purku tapahtuu omassa selaimessasi. Tämä tarkoittaa, että asiakirjat, keskustelut ja tiedostot ovat lukukelvottomia istuntosi ulkopuolella. Edes palvelun ylläpitäjät eivät pääse käyttämään tietojasi.",
"home_privacy_title": "Suunniteltu yksityiseksi",
"offlineError": "Uusimpia tietoja ei voitu synkronoida. Sivua ei voida juuri nyt näyttää. Sivun latautumista jatketaan, kun yhteys palveluun palaa.",
"share_noContactsOffline": "Olet offline-tilassa. Yhteystiedot eivät ole saatavilla.",
"access_offline": "Olet offline-tilassa. Käyttöoikeuksien hallinta ei ole saatavilla.",
"admin_support_last": "Päivitetty: ",
"admin_support_first": "Luotu: ",
"admin_support_collapse": "Pienennä",
"admin_support_open": "Näytä",
"admin_support_closed": "Suljetut tukipyynnöt:",
"admin_support_answered": "Vastatut tukipyynnöt:",
"admin_support_normal": "Vastaamattomat tukipyynnöt:",
"admin_support_premium": "Premium-tukipyynnöt:",
"contacts_confirmCancel": "Haluatko varmasti perua henkilölle <b>{0}</b> lähetetyn yhteyspyynnön?",
"history_trimPrompt": "Tähän asiakirjaan liittyy {0} historiatietoa, jotka saattavat hidastaa asiakirjan latautumista. Harkitse tarpeettomien historiatietojen poistamista.",
"mediatag_loadButton": "Lataa liite",
"settings_mediatagSizeHint": "Maksimikoko automaattisesti ladattaville asiakirjoihin upotetuille mediaobjekteille (kuvat, videot, PDF-tiedostot). Maksimikokoa suuremmat objektit voidaan ladata manuaalisesti. Käytä arvoa \"-1\" ladataksesi mediaobjektit aina automaattisesti.",
"settings_mediatagSizeTitle": "Automaattinen latausrajoitus",
"mediatag_notReady": "Ole hyvä ja anna latauksen valmistua",
"pad_mediatagOpen": "Avaa tiedosto",
"pad_mediatagShare": "Jaa tiedosto",
"mediatag_saveButton": "Tallenna",
"Offline": "Offline-tilassa",
"download_zip_file": "Tiedosto {0}/{1}",
"download_zip": "Rakennetaan ZIP-arkistoa...",
"fileTableHeader": "Lataukset palvelimelta ja palvelimelle",
"allowNotifications": "Salli ilmoitukset",
"archivedFromServer": "Asiakirja arkistoitu",
"restoredFromServer": "Asiakirja palautettu",
"admin_archiveInval": "Virheellinen asiakirja",
"admin_archiveInput2": "Asiakirjan salasana",
"admin_archiveInput": "Asiakirjan URL",
"admin_unarchiveButton": "Palauta",
"admin_unarchiveHint": "Palauta aiemmin arkistoitu asiakirja",
"admin_unarchiveTitle": "Palauta asiakirjoja",
"admin_archiveButton": "Arkistoi",
"admin_archiveHint": "Estä asiakirjan käyttö poistamatta sitä lopullisesti. Asiakirja sijoitetaan arkistokansioon ja poistetaan sieltä muutaman päivän kuluttua (poistoaika säädettävissä palvelimen konfiguraatiotiedostosta).",
"admin_archiveTitle": "Arkistoi asiakirjoja",
"errorPopupBlocked": "CryptPadin täytyy pystyä avaamaan uusia välilehtiä toimiakseen. Ole hyvä ja salli ponnahdusikkunat selaimesi osoitekentästä. Ponnahdusikkunoita ei koskaan käytetä mainostamiseen.",
"unableToDisplay": "Asiakirjan näyttäminen epäonnistui. Paina Esc-näppäintä ladataksesi sivun uudelleen. Jos ongelma ei ratkea, ota yhteyttä käyttäjätukeen.",
"documentID": "Asiakirjan tunniste"
} }

@ -425,7 +425,6 @@
"register_alreadyRegistered": "Cet utilisateur existe déjà, souhaitez-vous vous connecter ?", "register_alreadyRegistered": "Cet utilisateur existe déjà, souhaitez-vous vous connecter ?",
"register_whyRegister": "Pourquoi s'inscrire ?", "register_whyRegister": "Pourquoi s'inscrire ?",
"register_header": "Créer un compte", "register_header": "Créer un compte",
"register_explanation": "<h3>Faisons d'abord le point sur certaines choses</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'></i>Votre mot de passe est la clé secrète de tous vos pads. Si vous le perdez, il n'y a aucun moyen de récupérer vos données.</li><li><i class='fa fa-info-circle'></i>Vous pouvez importer les pads récents de ce navigateur pour les avoir dans votre compte utilisateur.</li><li><i class='fa fa-info-circle'></i>Si vous utilisez un ordinateur partagé, vous devez vous déconnecter avant de partir, fermer l'onglet n'est pas suffisant.</li></ul>",
"settings_cat_account": "Compte", "settings_cat_account": "Compte",
"settings_cat_drive": "CryptDrive", "settings_cat_drive": "CryptDrive",
"settings_cat_cursor": "Curseur", "settings_cat_cursor": "Curseur",
@ -613,20 +612,7 @@
"topbar_whatIsCryptpad": "Qu'est-ce que CryptPad", "topbar_whatIsCryptpad": "Qu'est-ce que CryptPad",
"whatis_title": "Qu'est-ce que CryptPad ?", "whatis_title": "Qu'est-ce que CryptPad ?",
"whatis_collaboration": "Collaboration Privée", "whatis_collaboration": "Collaboration Privée",
"whatis_collaboration_p1": "Avec CryptPad, vous pouvez créer rapidement des documents collaboratifs pour prendre des notes à plusieurs. Quand vous vous enregistrez et vous vous connectez, vous obtenez la possibilité d'importer des fichiers dans un CryptDrive où vous pouvez organiser tous vos pads (documents). En tant qu'utilisateur enregistré, vous possédez 50 Mo de stockage gratuit.",
"whatis_collaboration_p2": "Vous pouvez partager l'accès à un document simplement en partageant le lien. Vous pouvez aussi partager un lien spécial fournissant un accès <em>en lecture seule</em> au pad, permettant de publier des travaux collaboratifs tout en restant maître de l'édition.",
"whatis_collaboration_p3": "Vous pouvez créer des documents de texte avec <a href=\"http://ckeditor.com/\">CKEditor</a> tout comme des documents Markdown qui sont rendus en temps-réel pendant que vous tapez. Vous pouvez aussi utiliser l'application de sondage pour planifier des évènements avec plusieurs participants.",
"whatis_zeroknowledge": "Zero Knowledge",
"whatis_zeroknowledge_p1": "Nous ne souhaitons pas connaître ce que vous tapez et grâce à la cryptographie moderne, vous pouvez être assuré que nous ne le <b>pouvons</b> pas. CryptPad utilise <b>un chiffrement à 100 % côté client</b> pour protéger le contenu que vous tapez de nous, les personnes contrôlant le serveur.",
"whatis_zeroknowledge_p2": "Quand vous vous enregistrez et vous vous connectez, votre nom d'utilisateur et votre mot de passe sont transformés en une clé secrète grâce à la <a href=\"https://fr.wikipedia.org/wiki/Scrypt\">fonction de dérivation de clé Scrypt</a>. Ni cette clé, ni le nom d'utilisateur ou le mot de passe, ne sont envoyés au serveur. À la place, elle est utilisée côté client pour chiffrer et déchiffrer le contenu de votre CryptDrive, qui contient toutes les clés permettant d'accéder à vos pads.",
"whatis_zeroknowledge_p3": "Quand vous partagez le lien vers un document, vous partagez la clé cryptographique permettant de déchiffrer le document, mais puisque cette clé se trouve dans l'<a href=\"https://en.wikipedia.org/wiki/Fragment_identifier\">identificateur de fragment</a>, elle n'est jamais envoyée au serveur. Venez lire notre <a href=\"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/\">article de blog sur la vie privée</a> pour en apprendre davantage sur le type de métadonnées auxquelles nous avons ou n'avons pas accès.",
"whatis_drive": "Organisation avec CryptDrive", "whatis_drive": "Organisation avec CryptDrive",
"whatis_drive_p1": "Dès que vous accédez à un pad dans CryptPad, celui-ci est automatiquement ajouté à votre CryptDrive, dans le dossier principal. Vous pouvez alors ranger ce pad dans un dossier ou le déplacer vers la corbeille. CryptDrive vous permet de rechercher parmi vos pads et de les organiser quand vous le souhaitez, comme vous le souhaitez.",
"whatis_drive_p2": "Avec le glisser-déposer intuitif, vous pouvez déplacer vos pads dans votre drive tout en conservant les liens vers ces pads pour que vos collaborateurs n'en perdent pas l'accès.",
"whatis_drive_p3": "Vous pouvez également importer des fichiers dans votre CryptDrive et les partager avec des collègues. Les fichiers importés peuvent être rangés de la même manière que vos pads collaboratifs.",
"whatis_business": "CryptPad for Business",
"whatis_business_p1": "Le chiffrement Zero Knowledge de CryptPad excelle pour accroître l'efficacité des protocoles de sécurité existants en les recréant de manière cryptographique. Puisque les données sensibles ne peuvent être déchiffrées qu'en utilisant les identifiants d'un utilisateur, CryptPad empêche d'éventuels hackers ayant réussi à s'introduire dans le serveur d'avoir accès en clair à ces données. Découvrez-en plus sur la manière dont CryptPad peut aider votre entreprise en lisant le <a href=\"https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf\">CryptPad Whitepaper</a>.",
"whatis_business_p2": "CryptPad est déployable sur site et les <a href=\"https://cryptpad.fr/about.html\">développeurs CryptPad</a> chez XWiki SAS peuvent effectuer du développement, des personnalisations et du support commercial. Contactez-nous à <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> pour plus d'informations.",
"policy_title": "Politique de confidentialité de CryptPad", "policy_title": "Politique de confidentialité de CryptPad",
"policy_whatweknow": "Ce que nous savons de vous", "policy_whatweknow": "Ce que nous savons de vous",
"policy_whatweknow_p1": "En tant qu'application hébergée sur le web, CryptPad a accès aux meta-données exposées par le protocole HTTP. Ceci inclus votre adresse IP et d'autres en-têtes HTTP qui peuvent être utilisées pour identifier votre propre navigateur. Vous pouvez voir quelles informations votre navigateur partage en visitant <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.", "policy_whatweknow_p1": "En tant qu'application hébergée sur le web, CryptPad a accès aux meta-données exposées par le protocole HTTP. Ceci inclus votre adresse IP et d'autres en-têtes HTTP qui peuvent être utilisées pour identifier votre propre navigateur. Vous pouvez voir quelles informations votre navigateur partage en visitant <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.",
@ -670,10 +656,9 @@
"features_f_social_note": "Ajout de contacts pour une collaboration sécurisée, création d'un profil, contrôles d'accès affinés", "features_f_social_note": "Ajout de contacts pour une collaboration sécurisée, création d'un profil, contrôles d'accès affinés",
"features_f_file1": "Importer et partager des fichiers", "features_f_file1": "Importer et partager des fichiers",
"features_f_file1_note": "Stockez des fichiers dans votre CryptDrive : images, PDF, vidéos, etc. Partagez-les avec vos contacts ou intégrez-les dans vos documents. (jusqu'à {0}Mo)", "features_f_file1_note": "Stockez des fichiers dans votre CryptDrive : images, PDF, vidéos, etc. Partagez-les avec vos contacts ou intégrez-les dans vos documents. (jusqu'à {0}Mo)",
"features_f_storage1": "Stockage personnel ({0}Go)", "features_f_storage1": "Stockage personnel ({0})",
"features_f_storage1_note": "Les documents stockés dans votre CryptDrive ne sont pas supprimés pour cause d'inactivité", "features_f_storage1_note": "Les documents stockés dans votre CryptDrive ne sont pas supprimés pour cause d'inactivité",
"features_f_register": "S'enregistrer gratuitement", "features_f_register": "S'enregistrer gratuitement",
"features_f_register_note": "Pas d'email ou d'information personnelle requis",
"features_f_reg": "Avantages des utilisateurs enregistrés", "features_f_reg": "Avantages des utilisateurs enregistrés",
"features_f_reg_note": "Avec des avantages supplémentaires", "features_f_reg_note": "Avec des avantages supplémentaires",
"features_f_storage2": "Espace de stockage supplémentaire", "features_f_storage2": "Espace de stockage supplémentaire",
@ -684,146 +669,6 @@
"features_f_supporter_note": "Aidez CryptPad à être financièrement viable et montrer que les logiciels peuvent respecter la vie privée et être volontairement financés par les utilisateurs", "features_f_supporter_note": "Aidez CryptPad à être financièrement viable et montrer que les logiciels peuvent respecter la vie privée et être volontairement financés par les utilisateurs",
"features_f_subscribe": "S'abonner", "features_f_subscribe": "S'abonner",
"features_f_subscribe_note": "Un compte enregistré est nécessaire pour s'abonner", "features_f_subscribe_note": "Un compte enregistré est nécessaire pour s'abonner",
"faq_link": "FAQ",
"faq_title": "Foire aux questions",
"faq_whatis": "Qu'est-ce que <span class='cp-brand-font'>CryptPad</span> ?",
"faq": {
"keywords": {
"title": "Termes spéciaux",
"pad": {
"q": "Qu'est-ce qu'un pad ?",
"a": "<em>Pad</em> est un terme popularisé par <a href=\"http://etherpad.org/\" target=\"_blank\">Etherpad</a> un éditeur collaboratif en temps-réel. Il désigne un document que vous pouvez modifier dans votre navigateur et, en général, vous pouvez voir les modifications effectuées par les autres utilisateurs de manière quasiment instantanée."
},
"owned": {
"q": "Qu'est-ce qu'un pad avec propriétaire ?",
"a": "Être <em>propriétaire</em> d'un pad signifie que vous êtes identifié comme tel par le serveur avec à votre <em>clé de signature publique</em>.<br>Le propriétaire d'un pad peut décider de supprimer ce pad du serveur de manière permanente, afin de le rendre inaccessible aux autres collaborateurs même s'ils possèdent le lien dans leur CryptDrive."
},
"expiring": {
"q": "Qu'est-ce qu'un pad à durée de vie ?",
"a": "Un <em>pad à durée de vie</em> est un pad créé avec une date définie à partir de laquelle il sera supprimé automatiquement du serveur. Ils peuvent être configurés pour avoir une durée de vie comprise entre une heure et cent mois. Le pad et tout son historique sera alors inaccessible, de manière permanente, même s'il est en cours d'édition à sa date d'expiration.<br>Si un pad possède une date d'expiration, vous pouvez la vérifier en regardant les <em>propriétés</em> du pad, soit avec un clic-droit sur le pad dans votre CryptDrive, ou soit en cliquant sur Propriétés dans le sous-menu de la barre d'outils de l'application."
},
"tag": {
"q": "Comment utiliser les mots-clés ?",
"a": "Vous pouvez ajouter des <em>mots-clés</em> aux pads ou aux fichiers depuis votre CryptDrive et depuis le document en utilisant le bouton <span class=\"fa fa-hashtag\"></span> (<em>Mots-clés</em>) de la barre d'outils des éditeurs.<br>Il est ensuite possible de rechercher des pads et des fichiers dans votre CryptDrive en tapant un mot-clé, précédé de <em>#</em>, dans la barre de recherche (exemple: #crypto)."
},
"template": {
"q": "Qu'est-ce qu'un modèle ?",
"a": "Un <em>modèle</em> est un pad qui peut être utilisé pour définir le contenu initial d'un nouveau pad du même type quand vous le créez.<br>Les pads existant dans votre CryptDrive peuvent être transformés en tant que modèle en les déplaçant dans la catégorie <em>Modèles</em> du CryptDrive.<br>Il est également possible de créer une copie d'un pad en tant que modèle en cliquant sur le bouton <span class=\"fa fa-bookmark\"></span> (<em>Sauver en tant que modèle</em>) dans la barre d'outils des éditeurs."
},
"abandoned": {
"q": "Qu'est-ce qu'un pad abandonné ?",
"a": "Un <em>pad abandonné</em> est un pad qui n'est stocké dans le CryptDrive d'aucun utilisateur enregistré et qui n'a pas été modifié depuis 6 mois. Les documents abandonnés sont automatiquement supprimés du serveur."
}
},
"privacy": {
"title": "Confidentialité",
"different": {
"q": "Comment CryptPad est-il différent des autres services de pads ?",
"a": "CryptPad chiffre les changements effectués dans vos pads avant de les envoyer au serveur pour qu'ils soient stockés, nous ne pouvons donc pas lire le contenu que vous avez tapé."
},
"me": {
"q": "Quelles informations le serveur possède-t-il sur moi ?",
"a": "Les administrateurs du serveur peuvent voir les <b>adresses IP</b> des utilisateurs de CryptPad.<br>Nous n'enregistrons pas les pads visités par chaque adresse IP, mais nous le pouvons, bien que nous n'aurions pas accès au contenu déchiffré de ces pads.<br>Si vous avez des inquiétudes à ce sujet, il est préférable de considérer que nous collectons ces informations puisque nous n'avons aucun moyen de prouver que ce n'est pas le cas.<br><br>Nous collectons toutefois certaines <b>données de télémétrie</b> concernant la façon dont les gens utilisent CryptPad, par exemple la résolution de l'écran utilisé ou l'utilisation des boutons de la barre d'outils. Ces données nous aident à améliorer le produit, mais il est possible de désactiver l'envoi de telles informations au serveur en décochant la case <em>Activer l'envoi de retours d'expérience</em> dans vos <em>Préférences</em>.<br><br>Enfin, nous gardons une trace des pads stockés dans le CryptDrive des utilisateurs afin de pouvoir imposer les limites de stockage, mais nous n'avons, encore une fois, pas accès au contenu ou au type de ces pads. Ces limites sont toutefois associées à la clé publique des utilisateurs, nous ne pouvons donc pas les relier à un nom ou une adresse email.<br><br>Nous avons écrit un <a href=\"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/\" target=\"_blank\">article de blog</a> (en anglais) à ce sujet si vous souhaitez en apprendre davantage."
},
"register": {
"q": "Qu'est-ce que le serveur apprend à mon sujet si je m'inscris ?",
"a": "Nous ne demandons pas aux utilisateurs d'entrer une adresse email pour s'enregistrer, et le serveur ne connaît pas votre nom d'utilisateur ni votre mot de passe.<br>Les formulaires d'inscription et de connexion génèrent à la place un ensemble de clés uniques, créées à partir de vos identifiants, et le serveur ne connaît donc que votre signature cryptographique.<br>Nous utilisons cette information principalement pour mesurer combien de données vous avez stocké sur nos serveurs, afin de pouvoir limiter chaque utilisateur à son quota.<br><br>Nous utilisons également notre fonctionnalité de <em>retour d'expérience</em> pour indiquer au serveur que quelqu'un avec votre adresse IP a créé un compte utilisateur, bien que nous ne sachions pas lequel. Cela nous permet de mesurer le nombre d'inscriptions sur CryptPad mais aussi de voir dans quelles régions du monde se trouvent les utilisateurs, afin de déterminer les langues dans lesquelles traduire CryptPad.<br><br>Enfin, les utilisateurs enregistrés indiquent au serveur quels pads sont dans leur CryptDrive, afin que ces pads ne soient pas considérés comme abandonnés et ne soient donc pas supprimés pour inactivité."
},
"other": {
"q": "Que peuvent apprendre les autres collaborateurs à mon sujet ?",
"a": "Quand vous éditez un pad avec quelqu'un d'autre, vous communiquez en passant par notre serveur, nous sommes donc les seuls à connaître votre adresse IP.<br>Les autres utilisateurs ont accès à votre pseudonyme, votre avatar, le lien vers votre profil (si vous en avez un) et votre <em>clé publique</em> (qui est utilisée pour le chiffrement des communications entre utilisateurs)."
},
"anonymous": {
"q": "CryptPad me rend-il anonyme ?",
"a": "Bien que CryptPad soit conçu pour en savoir le moins possible à votre sujet, il ne fournit pas un anonymat complet.<br>Nos serveurs ont accès à votre adresse IP, mais vous pouvez la cacher en utilisant, par exemple, Tor pour accéder à CryptPad.<br>Utiliser Tor sans changer votre comportement ne garantira toutefois pas votre anonymat, puisque notre serveur est en mesure d'identifier des utilisateurs avec leur identifiant cryptographique unique. Si vous utilisez le même compte utilisateur avec et sans Tor, il serait donc possible de désanonymiser votre session.<br><br>Pour les utilisateurs qui n'ont pas besoin d'un niveau de confidentialité aussi élevé, Tor n'est pas nécessaire puisque CryptPad ne nécessite pas la saisie d'un nom réel, d'un numéro de téléphone ou même d'une adresse email comme de nombreux autres services."
},
"policy": {
"q": "Avez-vous une politique de confidentialité des données ?",
"a": "Oui ! Elle est disponible <a href=\"/privacy.html\" target=\"_blank\">ici</a>."
}
},
"security": {
"title": "Sécurité",
"proof": {
"q": "Comment utilisez-vous les preuves à divulgation nulle de connaissance (Zero Knowledge proofs) ?",
"a": "Quand nous utilisons le terme <em>Zero Knowledge</em>, ce n'est pas une référence aux <em>Zero Knowledge proofs</em>, mais aux <em>Services Web Zero Knowledge</em>.<br>Les <em>Services Web Zero Knowledge</em> chiffrent les données des utilisateurs dans le navigateur, de manière à ce que le serveur n'aie pas accès au contenu déchiffré ni aux clés de chiffrement.<br><br>Nous avons établi une courte liste de Services Zero Knowledge <a href=\"https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services\" target=\"_blank\">sur notre blog</a>."
},
"why": {
"q": "Pourquoi devrais-je utiliser CryptPad ?",
"a": "Notre position est que les services cloud ne devraient pas nécessiter l'accès à vos données afin que vous puissiez les partager avec vos amis ou vos collègues. Si vous utilisez un autre service pour le travail collaboratif et qu'il n'indique pas clairement que le serveur n'a pas accès aux informations, il est très probable que vos données soient utilisées pour faire du profit."
},
"compromised": {
"q": "CryptPad me protège-t-il si mon ordinateur est compromis ?",
"a": "Dans le cas où votre ordinateur ou téléphone serait volé, CryptPad vous permet de déclencher une déconnexion à distance de votre compte CryptPad sur tous les appareils, excepté celui sur lequel vous vous trouvez. Pour ce faire, vous pouvez cliquer sur <b>Se déconnecter partout</b> dans votre page de <b>Préférences</b>.<br>Tous les appareils qui sont actuellement connectés sur CryptPad à votre compte seront déconnectés. Tous les appareils qui se sont connectés au compte et ne vous demandent plus vos identifiants vous forceront à vous identifier de nouveau lorsque vous visiterez CryptPad.<br>Actuellement, la <em>déconnexion à distance</em> est implémentée dans votre navigateur et non avec le serveur. Cela signifie que cette fonction devrait être suffisante pour protéger vos données si vous oubliez de vous déconnecter après l'utilisation sur un ordinateur partagé, mais elle ne vous protègera pas des agences gouvernementales."
},
"crypto": {
"q": "Quelle cryptographie utilisez-vous ?",
"a": "CryptPad est basé sur deux librairies open-source de cryptographie : <a href=\"https://github.com/dchest/tweetnacl-js\" target=\"_blank\">tweetnacl.js</a> et <a href=\"https://github.com/dchest/scrypt-async-js\" target=\"_blank\">scrypt-async.js</a>.<br><b>Scrypt</b> est une <em>fonction de dérivation de clé</em> basée sur un mot de passe. Nous l'utilisons pour transformer votre nom d'utilisateur et votre mot de passe en un unique ensemble de clés qui sécurise l'accès à votre CryptDrive afin que vous seul puissiez accéder à votre liste de pads.<br>Nous utilisons les outils de chiffrement <em>xsalsa20-poly1305</em> et <em>x25519-xsalsa20-poly1305</em> fournis par <b>tweetnacl</b> pour chiffrer vos pads et l'historique du chat respectivement."
},
"pad_password": {
"q": "Que se passe t'il quand je protège un pad/dossier avec un mot de passe ?",
"a": "Vous pouvez protéger tout nouveau pad ou dossier avec un mot de passe. Vous pouvez aussi utiliser le menu <em>propriétés</em> pour ajouter/changer/supprimer un mot de passe par la suite. <br><br>Les mots de passe sur les pads et dossiers partagés sont faits pour protéger les liens quand ils sont envoyés de manière non sécurisée (par exemple par email ou SMS). Si quelqu'un intercepte le lien sans avoir le mot de passe, ils n'auront pas accès à votre document.<br><br>Quand vous partagez avec vos contacts ou équipes sur CryptPad, les communications sont chiffrées et nous partons du principe que vous voulez donner l'accès. C'est pourquoi le mot de passe est alors stocké et envoyé avec le pad quand vous l'envoyez. Les destinataires, ou vous même, n'ont <b>pas</b> a le donner pour ouvrir le document."
}
},
"usability": {
"title": "Utilisation",
"register": {
"q": "Qu'est-ce que je gagne en créant un compte utilisateur ?",
"a": "Les utilisateurs enregistrés ont accès à un certain nombre de nouvelles fonctionnalités inaccessibles aux utilisateurs non connectés. Un tableau récapitulatif est disponible <a href=\"/features.html\">ici</a>."
},
"share": {
"q": "Comment partager des pads chiffrés avec mes contacts ?",
"a": "CryptPad stocke la clé secrète de chiffrement des pads après le symbole <em>#</em> dans l'URL. Tout ce qui se trouve après ce symbole n'est jamais envoyé au serveur, ainsi nous n'avons pas accès à vos clés de chiffrement. Partager le lien d'un pad revient donc à permettre la lecture ou la modification du contenu."
},
"remove": {
"q": "J'ai supprimé un pad ou un fichier de mon CryptDrive, mais le contenu est encore disponible. Comment le supprimer ?",
"a": "Seuls les <em>pads avec propriétaire</em> (introduits en février 2018) peuvent être supprimés du serveur. Ils ne peuvent d'ailleurs être supprimés du serveur que par leur <em>propriétaire</em> (l'utilisateur ayant créé le pad).<br>Si vous n'êtes pas le créateur du pad, vous devrez demander au propriétaire de le supprimer pour vous.<br>Pour les pads dont vous êtes le propriétaire, vous pouvez effectuer un <b>clic-droit sur le pad dans votre CryptDrive</b>, et sélectionner <b>Supprimer du serveur</b>."
},
"forget": {
"q": "Que faire si j'oublie mon mot de passe ?",
"a": "Malheureusement, si nous avions la possibilité de retrouver ou de modifier votre mot de passe, cela signifierait que nous avons accès à vos pads, ce n'est donc pas le cas.<br>Si vous n'avez pas noté votre nom d'utilisateur et votre mot de passe, et que vous ne vous en souvenez pas, il est peut-être possible de retrouver l'accès à certains pads grâce à l'historique de votre navigateur."
},
"change": {
"q": "Que faire si je souhaite changer de mot de passe ?",
"a": "Il n'est actuellement pas possible de changer votre mot de passe sur CryptPad, mais nous comptons développer cette fonctionnalité très bientôt."
},
"devices": {
"q": "Je suis connecté sur deux appareils mais avec deux CryptDrive différents, comment est-ce possible ?",
"a": "Il est possible que vous ayez enregistré le même nom d'utilisateur 2 fois, mais avec des mots de passe différents.<br>Puisque le serveur de CryptPad vous identifie avec une clé cryptographique et non avec votre nom d'utilisateur, il ne peut pas empêcher la création d'autres comptes avec le même nom. Ainsi, chaque utilisateur possède une combinaison nom d'utilisateur / mot de passe unique.<br>Les utilisateurs enregistrés peuvent voir leur nom de compte en haut de la page de préférences."
},
"folder": {
"q": "Puis-je partager des dossiers complets de mon CryptDrive ?",
"a": "Oui, vous pouvez créer un <em>dossier partagé</em> à partir de votre CryptDrive et partager tous les pads qu'il contient."
},
"feature": {
"q": "Pouvez-vous ajouter une fonctionnalité particulière dont j'ai besoin ?",
"a": "Beaucoup de fonctionnalités de CryptPad existent parce que des utilisateurs les ont demandées.<br>Notre <a href=\"https://cryptpad.fr/contact.html\" target=\"_blank\">page de contact</a> liste les différentes manières de nous joindre.<br><br>Malheureusement, nous ne pouvons pas garantir que nous allons implémenter toutes les fonctionnalités demandées.<br>Si une fonctionnalité particulière est nécessaire pour votre organisation, vous pouvez sponsoriser son développement pour s'assurer de sa réalisation. Veuillez contacter <a href=\"mailto:sales@cryptpad.fr\" target=\"_blank\">sales@cryptpad.fr</a> pour plus d'informations.<br><br>Si vous n'avez pas la possibilité de sponsoriser du développement, nous sommes toujours intéressés par de nouvelles idées et des retours d'expérience qui peuvent nous aider à améliorer CryptPad. N'hésitez pas à nous contacter, avec les méthodes données précédemment, à n'importe quel moment."
}
},
"other": {
"title": "Autres questions",
"pay": {
"q": "Pourquoi payer alors que toutes les fonctionnalités sont gratuites ?",
"a": "Un compte premium permet d'<b>augmenter la limite de stockage</b> dans le CryptDrive, ainsi que celle de ses contacts (<a href=\"https://accounts.cryptpad.fr/#/faq\" target=\"_blank\">en savoir plus</a>).<br>En plus de ces avantages directs, l'abonnement premium permet aussi de <b>financer le développement</b> actif et de manière continue de CryptPad. Cela comprend la correction de bugs, l'ajout de nouvelles fonctionnalités et rendre plus facile l'hébergement de CryptPad par d'autres personnes.<br>Avec un abonnement, vous aidez aussi à prouver aux autres fournisseurs de services que les gens sont prêts à supporter les technologies améliorant le respect de leur vie privée. Nous espérons qu'un jour, les entreprises ayant pour revenu principal la revente de données des utilisateurs soient de l'histoire ancienne.<br>Enfin, nous offrons la plupart des fonctionnalités gratuitement parce que nous croyons que tout le monde mérite le respect de la vie privée. En souscrivant à un compte premium, vous nous aider à maintenir ces fonctionnalités basiques accessibles aux populations défavorisées."
},
"goal": {
"q": "Quel est votre objectif ?",
"a": "En développant une technologie de collaboration qui respecte la vie privée, nous espérons augmenter les attentes des utilisateurs en ce qui concerne les plateformes de services \"cloud\" et leur politique de confidentialité. Nous souhaitons que notre travail conduise les autres fournisseurs de services, quel que soit leur domaine, à égaler voire dépasser nos efforts.<br>Malgré notre optimisme, nous savons que la plupart du Web est financé par les publicités ciblées. Il y a encore beaucoup de travail à effectuer que l'on peut faire de nous-mêmes, et nous apprécions le support, la promotion et les contributions de notre communauté envers cet objectif."
},
"jobs": {
"q": "Est-ce que vous embauchez ?",
"a": "Oui ! Vous pouvez envoyer un email à <a href=\"mailto:jobs@xwiki.com\">jobs@xwiki.com</a>."
},
"host": {
"q": "Pouvez-vous m'aider à installer ma propre instance de CryptPad ?",
"a": "Nous serions heureux de fournir du support pour l'installation de CryptPad au sein de votre organisation. Veuillez contacter <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> pour plus d'informations."
},
"revenue": {
"q": "Comment participer au système de partage des revenus ?",
"a": "Si vous possédez votre propre instance de CryptPad et que vous souhaitez activer les comptes payant et partager les revenus avec les développeurs, votre serveur devra être configuré comme un service partenaire.<br>Dans votre répertoire CryptPad, le fichier <code>config.example.js</code> devrait contenir des explications concernant les étapes à suivre pour configurer votre serveur. Vous devrez aussi contacter <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> pour vérifier que votre serveur est configuré correctement et pour discuter des méthodes de paiement."
}
}
},
"tos_title": "Conditions d'utilisation de CryptPad", "tos_title": "Conditions d'utilisation de CryptPad",
"tos_legal": "Veuillez ne pas être malveillant, abusif, ou faire quoi que ce soit d'illégal.", "tos_legal": "Veuillez ne pas être malveillant, abusif, ou faire quoi que ce soit d'illégal.",
"tos_availability": "Nous espérons que vous trouvez ce service utile, mais nous ne pouvons garantir ses performances et disponibilités. Nous vous recommandons d'exporter vos données régulièrement.", "tos_availability": "Nous espérons que vous trouvez ce service utile, mais nous ne pouvons garantir ses performances et disponibilités. Nous vous recommandons d'exporter vos données régulièrement.",
@ -1528,5 +1373,9 @@
"home_host_title": "À propos de cette instance", "home_host_title": "À propos de cette instance",
"home_privacy_text": "CryptPad est conçu pour permettre la collaboration tout en préservant la confidentialité des données. Tout le contenu est chiffré et déchiffré par votre navigateur. Cela signifie que les documents, les chats et les fichiers sont illisibles en dehors de la session à laquelle vous êtes connecté. Même les administrateurs du service n'ont pas accès à vos informations.", "home_privacy_text": "CryptPad est conçu pour permettre la collaboration tout en préservant la confidentialité des données. Tout le contenu est chiffré et déchiffré par votre navigateur. Cela signifie que les documents, les chats et les fichiers sont illisibles en dehors de la session à laquelle vous êtes connecté. Même les administrateurs du service n'ont pas accès à vos informations.",
"home_privacy_title": "Protège votre vie privée", "home_privacy_title": "Protège votre vie privée",
"docs_link": "Documentation" "docs_link": "Documentation",
"settings_cacheButton": "Vider la mémoire cache",
"settings_cacheCheckbox": "Activer la mémoire cache sur cet appareil",
"settings_cacheHint": "CryptPad stocke des parties de vos documents dans la mémoire de votre navigateur afin d'économiser de la bande passante et d'améliorer les temps de chargement. Vous pouvez désactiver la mémoire cache si votre appareil a peu d'espace de stockage disponible. Pour des raisons de sécurité, la mémoire cache est toujours vidée lorsque vous vous déconnectez, mais vous pouvez la vider manuellement si vous souhaitez récupérer de l'espace de stockage sur votre appareil.",
"settings_cacheTitle": "Mémoire Cache"
} }

@ -501,7 +501,6 @@
"pad_base64": "Questo pad contiene immagini conservate in maniera inefficiente. Queste immagini aumenteranno significativamente le dimensioni del pad nel tuo CryptDrive, e lo renderanno più lento da caricare. Puoi convertire questi file in un nuovo formato che verrà conservato separatamente nel tuo CryptDrive. Vuoi convertire queste immagini ora?", "pad_base64": "Questo pad contiene immagini conservate in maniera inefficiente. Queste immagini aumenteranno significativamente le dimensioni del pad nel tuo CryptDrive, e lo renderanno più lento da caricare. Puoi convertire questi file in un nuovo formato che verrà conservato separatamente nel tuo CryptDrive. Vuoi convertire queste immagini ora?",
"mdToolbar_code": "Codice", "mdToolbar_code": "Codice",
"home_host": "Questa è un'istanza di CryptPad gestita indipendentemente dalla community. Il suo codice sorgente è disponibile <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">su GitHub</a>.", "home_host": "Questa è un'istanza di CryptPad gestita indipendentemente dalla community. Il suo codice sorgente è disponibile <a href=\"https://github.com/xwiki-labs/cryptpad\" target=\"_blank\" rel=\"noreferrer noopener\">su GitHub</a>.",
"whatis_drive_p3": "Puoi anche caricare file nel tuo CryptDrive e condividerli con i colleghi. I file caricati possono essere organizzati proprio come i pad collaborativi.",
"policy_choices_open": "Il nostro codice sorgente è open source, così hai sempre la possibilità di ospitare la tua personale istanza di CryptPad.", "policy_choices_open": "Il nostro codice sorgente è open source, così hai sempre la possibilità di ospitare la tua personale istanza di CryptPad.",
"features_f_file0": "Apri i file", "features_f_file0": "Apri i file",
"help": { "help": {
@ -558,147 +557,6 @@
"register_emailWarning2": "Non sarai in grado di resettare la tua password usando la tua email, a differenza di come puoi fare con molti altri servizi.", "register_emailWarning2": "Non sarai in grado di resettare la tua password usando la tua email, a differenza di come puoi fare con molti altri servizi.",
"register_emailWarning3": "Se hai capito, ma intendi comunque usare la tua email come nome utente, clicca OK.", "register_emailWarning3": "Se hai capito, ma intendi comunque usare la tua email come nome utente, clicca OK.",
"oo_sheetMigration_anonymousEditor": "Le modifiche da parte di utenti anonimi a questo foglio di calcolo sono disabilitate finché un utente registrato non lo aggiorna all'ultima versione.", "oo_sheetMigration_anonymousEditor": "Le modifiche da parte di utenti anonimi a questo foglio di calcolo sono disabilitate finché un utente registrato non lo aggiorna all'ultima versione.",
"faq": {
"usability": {
"devices": {
"a": "È probabile che tu abbia registrato lo stesso nome due volte, usando password diverse. Poiché il server di CryptPad ti identifica usando la tua firma crittografica e non il tuo nome, non può impedire ad altre persone di registrarsi con lo stesso nome. Questo significa che ogni account utente ha una combinazione univoca di nome utente e password. Gli utenti connessi possono vedere il loro nome utente nella parte superiore della pagina delle impostazioni.",
"q": "Sono connesso su due dispositivi e vedo due diversi CryptDrive, com'è possibile?"
},
"forget": {
"a": "Purtroppo, se fossimo in grado di aiutarti a recuperare l'accesso ai tuoi pad criptati, saremmo noi stessi in grado di accedere ai tuoi pad. Se non hai salvato il tuo nome utente e la password da nessuna parte e non riesci a ricordarli, potresti essere in grado di recuperare i tuoi pad controllando la cronologia del browser.",
"q": "Cosa succede se dimentico la mia password?"
},
"change": {
"a": "Puoi modificare la tua password di CryptPad nella tua pagina di impostazioni dell'account.",
"q": "E se voglio modificare la mia password?"
},
"register": {
"q": "Cosa ottengo registrandomi?",
"a": "Gli utenti registrati hanno accesso ad alcune funzionalità non disponibili a chi non è registrato. C'è uno schema <a href='/features.html' target='_blank'>qui</a>."
},
"title": "Usabilità",
"feature": {
"a": "Molte delle funzionalità in CryptPad esistono perché gli utenti le hanno richieste. La nostra <a href='https://cryptpad.fr/contact.html' target='_blank'>pagina di contatto</a> elenca i modi che puoi usare per raggiungerci.<br><br>Sfortunatamente, non possiamo garantire che aggiungeremo tutto quello che la gente chiede. Se una particolare funzionalità è essenziale per la tua organizzazione, puoi sponsorizzare il tempo di sviluppo per garantire il suo completamento. Contatta <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> per ulteriori informazioni.<br><br>Anche se non puoi permetterti di sponsorizzare lo sviluppo, siamo interessati ai feedback che possono aiutarci a migliorare CryptPad. Sentiti libero di contattarci tramite uno dei modi indicati in qualsiasi momento.",
"q": "Potete aggiungere una funzionalità particolare di cui ho bisogno?"
},
"folder": {
"a": "Si, puoi creare una <em>cartella condivisa</em> nel tuo CryptDrive e così condividere tutti i pad che contiene.",
"q": "Posso condividere intere cartelle dal mio CryptDrive?"
},
"remove": {
"a": "Solo i <em>pad di proprietà</em> (introdotti nel febbraio 2018) possono essere cancellati. In aggiunta, questi pad possono essere cancellati solo dal loro <em>proprietario</em> (la persona che inizialmente ha creato il pad). Se non sei il creatore del pad, dovrai chiedere al suo proprietario di cancellarlo. Per i pads di cui sei titolare, puoi <strong>cliccare con il tasto destro il pad nel tuo CryptDrive</strong>, e scegliere <strong>Cancella dal server</strong>.",
"q": "Ho rimosso un pad o un file dal mio CryptDrive, ma il contenuto è ancora disponibile. Come posso rimuoverlo?"
},
"share": {
"a": "CryptPad mette la chiave di crittografia segreta nel tuo pad dopo il carattere <em>#</em> nell'URL. Tutto quello che segue questo carattere non viene inviato al server, quindi non abbiamo accesso alla tua chiave di crittografia. Condividendo il link a un pad condividi anche la possibilità di accedervi e leggerlo.",
"q": "Come posso condividere i pad crittografati con i miei contatti?"
}
},
"security": {
"crypto": {
"a": "CryptPad è basato su due librerie open-source di crittografia: <a href='https://github.com/dchest/tweetnacl-js' target='_blank'>tweetnacl.js</a> e <a href='https://github.com/dchest/scrypt-async-js' target='_blank'>scrypt-async.js</a>.<br><br>Scrypt è un <em>algoritmo di derivazione delle chiavi basato su password</em>. Lo utilizziamo per trasformare i tuoi nome utente e password in una chiave unica che assicura l'accesso al tuo CryptDrive così che solo tu possa accedere ai tuoi pad.<br><br>Utilizziamo i cifrari <em>xsalsa20-poly1305</em> e <em>x25519-xsalsa20-poly1305</em> forniti da tweetnacl rispettivamente per criptare i pad e la cronologia della chat.",
"q": "Quale crittografia utilizzate?"
},
"pad_password": {
"q": "Cosa succede quando proteggo un pad/cartella con una password?",
"a": "Puoi proteggere qualsiasi pad o cartella condivisa con una password quando li crei. Puoi anche usare il menu Proprietà in qualsiasi momento per impostare/cambiare/rimuovere una password.<br><br>Le password dei pad e delle cartelle condivise sono finalizzate a proteggere i link quando li condividi su canali potenzialmente non sicuri come la mail o i messaggi di testo. Se qualcuno intercettasse il tuo link ma non disponesse della password non sarebbe comunque in grado di leggere il tuo documento.<br><br>Quando condividi all'interno di CryptPad con i tuoi contatti o il tuo gruppo, le comunicazioni sono crittografate e noi presumiamo che tu voglia che questi accedano al tuo documento. Pertanto la password è memorizzata ed inviata con il documento quando lo condividi. Al destinatario, o a te, <b>non</b> verrà richiesta quando si apre il documento."
},
"compromised": {
"q": "CryptPad mi protegge se il mio dispositivo è compromesso?",
"a": "Nel caso in cui un tuo dispositivo sia stato rubato, CryptPad ti permette di avviare la disconnessione forzata da remoto di tutti i dispositivi escluso quello che stai utilizzando. Per farlo, vai sulla tua <strong>pagina delle impostazioni</strong> e clicca <strong>Disconnetti ovunque</strong>. Tutti gli altri dispositivi che sono attualmente connessi al tuo account saranno disconnessi. Tutti i dispositivi che si sono connessi in precedenza al tuo CryptPad saranno disconnessi appena si collegheranno alla pagina.<br><br>Attualmente, la <em>disconnessione da remoto</em> è implemetata nel browser, non in connessione con il server. Quindi non può proteggerti da agenzie governative, ma può essere sufficiente se dimentichi di disconnetterti dopo aver usato CryptPad su un computer condiviso."
},
"why": {
"q": "Perché dovrei usare CryptPad?",
"a": "La nostra opinione è che i servizi cloud non debbano richiedere accesso ai tuoi dati perché tu possa condividerli con amici e colleghi. Se stai usando un altro servizio per collaborare e questo non dichiara esplicitamente che non può accedere ai tuoi dati, è verosimile che li stia gestendo per profitto."
},
"title": "Sicurezza",
"proof": {
"q": "Come utilizzate le Zero Knowledge Proofs?",
"a": "Quando utilizziamo l'espressione <em>Zero Knowledge</em>, non intendiamo <em>Zero Knowledge proofs</em>, ma <em>Zero Knowledge Web Services</em>. <em>Zero Knowledge Web Services</em> cripta i dati utente nel browser dell'utente, senza che il server abbia accesso a dati in chiaro, o alle chiavi di cifratura.<br><br>Abbiamo compilato una breve lista di servizi Zero Knowledge <a href='https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services'>qui</a>."
}
},
"privacy": {
"register": {
"a": "Non richiediamo agli utenti la verifica del loro indirizzo email, e il server non registra il vostro nome utente o la password quando vi registrate. Invece il modulo di registrazione e quello di accesso generano una chiave univoca basata su ciò che scrivete, ed il server registra esclusivamente la vostra firma crittografata. Utilizziamo questa informazione per tenere traccia dei dettagli su quanto spazio utilizzate, cosa che ci permette di restringere ciascun utente ad una specifica quota.<br><br>Utilizziamo la nostra funzionalità di <em>feedback</em> per registrare sul server che qualcuno con il vostro indirizzo IP ha registrato un account. Utilizziamo questo dato per conteggiare quante persone abbiano attivato un account CryptPad, e vedere da quale area geografica provengano in modo da capire quali lingue richiedano maggiore impegno.<br><br>Gli utenti registrati sono associati nel server ai loro pad nel loro CryptDrive in modo tale che questi non vengano considerati abbandonati e rimossi dal server in seguito a mancata attività.",
"q": "Il server avrà maggiori informazioni su di me se mi registro?"
},
"policy": {
"a": "Sì! È disponibile <a href='/privacy.html' target='_blank'>qui</a>.",
"q": "Avete una politica per la privacy dei dati?"
},
"title": "Privacy",
"anonymous": {
"q": "CryptPad mi rende anonimo?",
"a": "Sebbene CryptPad sia progettato per raccogliere il minor numero di informazioni possibili, non garantisce il totale anonimato. I nostri server hanno accesso al tuo indirizzo IP, anche se puoi nascondere questa informazione utilizzando Tor per accedere a CryptPad. Utilizzare Tor senza cambiare il tuo comportamento non garantirà l'anonimato, visto che il server riconosce l'utente anche dalla sua firma crittografata. Se utilizzi lo stesso account quando usi Tor e quando non lo usi, è possibile collegare la sessione con IP a quella senza.<br><br>Per utenti che richiedano un livello di privacy meno ferreo basti sapere che CryptPad non richiede all'utente di identificarsi con nome, numero di telefono o indirizzo email come la maggior parte degli altri servizi."
},
"other": {
"q": "Cosa possono conoscere di me gli altri collaboratori?",
"a": "Quando modifichi su un pad insieme ad altri comunichi attraverso il server, così conosciamo il tuo indirizzo IP. Gli altri utenti possono vedere il tuo nome utente, l'avatar, un link al tuo profilo (se ne hai uno), e la tua <em>chiave pubblica</em> (che è utilizzata per criptare le informazioni dall'uno all'altro)."
},
"me": {
"q": "Che informazioni ha il server su di me?",
"a": "Gli amministratori del server sono in grado di vedere gli indirizzi IP degli utenti che accedono a CryptPad. Non registriamo quali siano i pad visitati da un indirizzo IP, ma potremmo, sebbene senza la possibilità di leggere il contenuto dei pad criptati. Se ti preoccupa il fatto che noi possiamo analizzare queste informazioni, è più sicuro che tu presuma che noi lo facciamo, dato che non possiamo dimostrarti il contrario.<br><br>Raccogliamo alcune misurazioni di base su come le persone usano CryptPad, come la risoluzione dello schermo o quali pulsanti usino più frequentemente. Questo ci aiuta a migliorare il software, ma se preferisci non inviare queste informazioni al server, puoi <strong>cessare l'invio togliendo la spunta alla casella di controllo <em>Abilita il feedback utente</em></strong>.<br><br>Teniamo traccia di quali pad sono nel CryptDrive di ciascun utente così da poter definire limiti all'uso di spazio, ma non conosciamo il contenuto o il tipo di questi pad. Lo spazio di archiviazione è collegato alle chiavi pubbliche degli utenti, ma non associamo nomi o indirizzi email a queste chiavi pubbliche.<br><br>Per maggiori informazioni puoi leggere questo <a href='https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/' target='_blank'>articolo nel blog</a> che abbiamo scritto sull'argomento."
},
"different": {
"q": "In cosa è diverso CryptPad dagli altri servizi Pad?",
"a": "CryptPad cripta i cambiamenti ai tuoi documenti prima di inviare queste informazioni al server per l'archiviazione, quindi noi non possiamo leggere ciò che tu scrivi."
}
},
"other": {
"jobs": {
"a": "Sì! Candidati inviando un'email a <a href='mailto:jobs@xwiki.com' target='_blank'>jobs@xwiki.com</a>.",
"q": "State assumendo?"
},
"goal": {
"q": "Qual è il vostro obiettivo?",
"a": "Sviluppando una tecnologia rispettosa della privacy, vogliamo anche incrementare le aspettative degli utenti relativamente al rapporto tra privacy e cloud computing. Speriamo che il nostro lavoro spinga altri fornitori di servizi in tutti gli ambiti ad eguagliare il nostro sforzo o superarlo. Nonostante il nostro ottimismo, sappiamo che la gran parte del web basa il suo gettito sulla pubblicità targettizzata. C'è molto più lavoro da fare di quanto possiamo pensare di gestire noi stessi, e dunque apprezziamo l'incoraggiamento, il sostegno ed il contributo della nostra community per il raggiungimento di questo obiettivo."
},
"pay": {
"q": "Perché dovrei pagare quando così tante funzionalità sono gratuite?",
"a": "Diamo ai supporter spazio di archiviazione aggiuntivo e la possibilità di incrementare la loro quota di contatti (<a href='https://accounts.cryptpad.fr/#/faq' target='_blank'>approfondisci</a>).<br><br>Oltre a questi benefici a breve termine, sottoscrivendo un account premium aiuti a finanziare in maniera continuativa lo sviluppo attivo di CryptPad. Questo include l'eliminazione di bug, l'aggiunta di nuove funzionalità e semplificare per altri l'installazione di CryptPad. Inoltre, aiuti a mostrare agli altri fornitori di servizi che le persone sono disposte a supportare le tecnologie per il miglioramento della privacy. Noi speriamo che i modelli di business basati sulla vendita dei dati degli utenti diventeranno cosa del passato.<br><br>Infine, offriamo la maggior parte delle funzionalità di CryptPad gratuitamente perché crediamo che chiunque meriti la privacy, non solo chi può permettersela. Supportandoci, ci aiuti a continuare a rendere possibile alla popolazione con meno privilegi di accedere a funzionalità fondamentali senza un cartellino del prezzo attaccato."
},
"title": "Altre domande",
"revenue": {
"a": "Se hai implementato la tua personale istanza di CryptPad, e vuoi abilitare gli account a pagamento e dividere i ricavi con la community degli sviluppatori, il tuo server dovrà essere configurato come partner service.<br><br>Nella directory del tuo CryptPad, il file <em>config.example.js</em> dovrebbe contenere una spiegazione di cosa devi configurare sul tuo server. Avrai anche bisogno di contattare <a href='mailto:sales@cryptpad.fr'>sales@cryptpad.fr</a> per verificare che il tuo server sia configurato per usare correttamente HTTPS e per concordare i metodi di pagamento.",
"q": "Come posso partecipare alla condivisione dei profitti?"
},
"host": {
"a": "Saremo lieti di fornire supporto per un'installazione di CryptPad interna alla tua organizzazione. Contatta <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> per maggiori informazioni.",
"q": "Potete aiutarmi a configurare la mia istanza di CryptPad?"
}
},
"keywords": {
"tag": {
"q": "Come utilizzo i tag?",
"a": "Puoi taggare i pad e i file caricati con il tuo CryptDrive, oppure utilizzando il pulsante <em>tag</em> (<span class='fa fa-hashtag'></span>) nella barra degli strumenti di qualsiasi editor. Cerca i pad ed i file nel tuo CryptDrive utilizzando la barra di ricerca con una parola preceduta da un cancelletto, ad esempio <em>#crypto</em>."
},
"pad": {
"q": "Cos'è un pad?",
"a": "<em>Pad</em> è un termine reso popolare da <a href='http://etherpad.org/' target='_blank'>Etherpad</a>, un editor collaborativo in tempo reale.\nSi riferisce ad un documento che puoi modificare nel tuo browser, generalmente con le modifiche di altri utenti visibili in modo quasi istantaneo."
},
"expiring": {
"q": "Cos'è un pad effimero?",
"a": "Un <em>pad effimero</em> è un pad creato con una scadenza, raggiunta la quale il pad verrà automaticamente cancellato dal server. I pad effimeri possono essere configurati per durare da un minimo di un'ora ad un massimo di 100 mesi. Il pad e tutta la sua cronologia diventeranno permanentemente non disponibili anche se vengono modificati nel momento in cui scadono.<br><br>Se un pad è impostato con una scadenza, puoi controllare il suo tempo di durata sia visualizzando le sue <em>proprietà</em>, sia facendo clic con il tasto destro del mouse sul pad nel tuo CryptDrive, sia usando il sottomenu <em>proprietà</em> dalla barra degli strumenti di un'applicazione."
},
"owned": {
"a": "Un <em>pad di proprietà</em> è un pad creato da un preciso <em>proprietario</em>, identificato dal server dalla sua <em>chiave di crittografia pubblica</em>. Il proprietario di un pad può scegliere di eliminare i suoi pad dal server, rendendoli non disponibili per gli altri collaboratori in futuro, che li avessero oppure no nei loro Cryptdrive.",
"q": "Cos'è un pad di proprietà?"
},
"title": "Parole chiave",
"abandoned": {
"q": "Cos'è un pad abbandonato?",
"a": "Un <em>pad abbandonato</em> è un pad che non è collegato al CryptDrive di nessun utente registrato e non è stato modificato da sei mesi. I documenti abbandonati vengono rimossi automaticamente dal server."
},
"template": {
"q": "Cos'è un modello?",
"a": "Un modello è un pad che può essere usato per definire il contenuto iniziale per un altro pad dello stesso tipo quando lo crei. Qualsiasi pad esistente può essere trasformato in un modello spostandolo nella sezione <em>Modelli</em> del tuo CryptDrive. Puoi anche creare una copia di un pad da utilizzare come modello cliccando il pulsante template (<span class='fa fa-bookmark'></span>) nella barra degli strumenti dell'editor."
}
}
},
"whatis_zeroknowledge_p2": "Quando ti registri e accedi, il tuo nome utente e la tua password vengono computati in una chiave segreta utilizzando la <a href=\"https://en.wikipedia.org/wiki/Scrypt\">funzione di derivazione scrypt</a>. Né questa chiave, né il tuo nome utente o la tua password vengono inviati al server. Infatti sono usati soltanto dal lato client per decriptare il contenuto del tuo CryptDrive, che contiene le chiavi per tutti i pad a cui hai accesso.",
"faq_title": "Domande frequenti",
"whatis_business": "CryptPad per le aziende",
"whatis_drive_p2": "Con l'intuitiva funzione trascina e rilascia puoi spostare i tuoi pad all'interno del tuo CryptDrive e il collegamento a questi ultimi rimarrà lo stesso, in modo che le persone con le quali collabori non perdano mai l'accesso.",
"policy_howweuse": "Come usiamo i dati che raccogliamo", "policy_howweuse": "Come usiamo i dati che raccogliamo",
"policy_whatweknow": "Cosa sappiamo di te", "policy_whatweknow": "Cosa sappiamo di te",
"policy_title": "Informativa sulla privacy di CryptPad", "policy_title": "Informativa sulla privacy di CryptPad",
@ -710,8 +568,6 @@
"policy_whatwetell_p1": "Non forniamo a terzi le informazioni che raccogliamo o che ci fornite, a meno che non siamo legalmente obbligati a farlo.", "policy_whatwetell_p1": "Non forniamo a terzi le informazioni che raccogliamo o che ci fornite, a meno che non siamo legalmente obbligati a farlo.",
"policy_whatwetell": "Cosa comunichiamo a terzi riguardo a te", "policy_whatwetell": "Cosa comunichiamo a terzi riguardo a te",
"policy_howweuse_p2": "Le informazioni relative al tuo browser (sia che si tratti di un sistema operativo desktop che di uno mobile) ci aiutano a prendere decisioni quando si tratta di dare priorità ai miglioramenti delle funzionalità. Il nostro gruppo di sviluppo è piccolo e cerchiamo di fare scelte che migliorino l'esperienza del maggior numero di utenti possibile.", "policy_howweuse_p2": "Le informazioni relative al tuo browser (sia che si tratti di un sistema operativo desktop che di uno mobile) ci aiutano a prendere decisioni quando si tratta di dare priorità ai miglioramenti delle funzionalità. Il nostro gruppo di sviluppo è piccolo e cerchiamo di fare scelte che migliorino l'esperienza del maggior numero di utenti possibile.",
"faq_whatis": "Cos'è <span class='cp-brand-font'>CryptPad</span>?",
"faq_link": "FAQ",
"features_f_support": "Supporto più rapido", "features_f_support": "Supporto più rapido",
"features_f_register": "Registrati gratuitamente", "features_f_register": "Registrati gratuitamente",
"features_f_file1_note": "Condividi file con i tuoi contatti o incorporali nei tuoi pad", "features_f_file1_note": "Condividi file con i tuoi contatti o incorporali nei tuoi pad",
@ -775,7 +631,6 @@
"settings_logoutEverywhereTitle": "Chiudi le sessioni remote", "settings_logoutEverywhereTitle": "Chiudi le sessioni remote",
"settings_logoutEverywhereButton": "Esci", "settings_logoutEverywhereButton": "Esci",
"settings_importDone": "Importazione completata", "settings_importDone": "Importazione completata",
"register_explanation": "<h3>Puntualizziamo un paio di cose:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'> </i> La tua password è la chiave segreta di tutti i tuoi pad. Se la perdi non c'è alcun modo di recuperare i tuoi dati.</li><li><i class='fa fa-info-circle'> </i> Puoi importare i pad recenti di questo browser per averli nel tuo account.</li><li><i class='fa fa-info-circle'> </i> Se usi un computer condiviso, devi uscire quando hai finito, non è sufficiente chiudere la scheda.</li></ul>",
"features_f_subscribe_note": "Devi prima accedere a CryptPad", "features_f_subscribe_note": "Devi prima accedere a CryptPad",
"features_f_subscribe": "Abbonati alla versione Premium", "features_f_subscribe": "Abbonati alla versione Premium",
"features_f_supporter_note": "Aiutaci a dimostrare che i software che proteggono la privacy devono essere la norma", "features_f_supporter_note": "Aiutaci a dimostrare che i software che proteggono la privacy devono essere la norma",
@ -785,7 +640,6 @@
"features_f_storage2": "Spazio d'archiviazione supplementare", "features_f_storage2": "Spazio d'archiviazione supplementare",
"features_f_reg_note": "Ed aiutare lo sviluppo di CryptPad", "features_f_reg_note": "Ed aiutare lo sviluppo di CryptPad",
"features_f_reg": "Tutte le funzionalità degli utenti registrati", "features_f_reg": "Tutte le funzionalità degli utenti registrati",
"features_f_register_note": "Nessuna email o informazione personale richieste",
"features_f_storage1_note": "I pad conservati nel tuo CryptDrive non saranno mai eliminati per inattività", "features_f_storage1_note": "I pad conservati nel tuo CryptDrive non saranno mai eliminati per inattività",
"features_f_storage1": "Archivio permanente (50MB)", "features_f_storage1": "Archivio permanente (50MB)",
"features_f_social_note": "Crea un profilo, usa un avatar, chatta con i contatti", "features_f_social_note": "Crea un profilo, usa un avatar, chatta con i contatti",
@ -806,21 +660,12 @@
"policy_choices_vpn": "Se vuoi utilizzare la nostra istanza ma non vuoi esporre il tuo indirizzo IP puoi proteggerlo usando il <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">browser Tor</a>, oppure una <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN</a>.", "policy_choices_vpn": "Se vuoi utilizzare la nostra istanza ma non vuoi esporre il tuo indirizzo IP puoi proteggerlo usando il <a href=\"https://www.torproject.org/projects/torbrowser.html.en\" title=\"downloads from the Tor project\" target=\"_blank\" rel=\"noopener noreferrer\">browser Tor</a>, oppure una <a href=\"https://riseup.net/en/vpn\" title=\"VPNs provided by Riseup\" target=\"_blank\" rel=\"noopener noreferrer\">VPN</a>.",
"policy_whatweknow_p2": "Utilizziamo <a href=\"https://www.elastic.co/products/kibana\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"open source analytics platform\">Kibana</a>, una piattaforma di analisi open source, per conoscere meglio i nostri utenti. Kibana ci dice come hai trovato CryptPad, entrando direttamente, attraverso un motore di ricerca o provenendo da un altro sito web come Reddit o Twitter.", "policy_whatweknow_p2": "Utilizziamo <a href=\"https://www.elastic.co/products/kibana\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"open source analytics platform\">Kibana</a>, una piattaforma di analisi open source, per conoscere meglio i nostri utenti. Kibana ci dice come hai trovato CryptPad, entrando direttamente, attraverso un motore di ricerca o provenendo da un altro sito web come Reddit o Twitter.",
"policy_whatweknow_p1": "Come applicazione ospitata sul web, CryptPad ha accesso ai metadati esposti dal protocollo HTTP. Questo include il tuo indirizzo IP e altre intestazioni HTTP che possono essere usati per identificare il tuo browser. Puoi vedere quali informazioni condivide il tuo browser visitando <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.", "policy_whatweknow_p1": "Come applicazione ospitata sul web, CryptPad ha accesso ai metadati esposti dal protocollo HTTP. Questo include il tuo indirizzo IP e altre intestazioni HTTP che possono essere usati per identificare il tuo browser. Puoi vedere quali informazioni condivide il tuo browser visitando <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.",
"whatis_business_p2": "CryptPad può essere installato liberamente e gli <a href=\"https://cryptpad.fr/about.html\">sviluppatori CryptPad</a> di XWiki SAS possono offrire supporto commerciale, personalizzazione e sviluppo. Contattaci all'indirizzo <a href=\"mailto:sales@cryptpad.fr\">sales@cryptpad.fr</a> per maggiori informazioni.",
"whatis_business_p1": "La crittografia Zero Knowledge di CryptPad moltiplica l'efficacia dei protocolli di sicurezza esistenti ricreandoli in maniera crittografica. Dato che i dati sensibili possono essere decriptati solo utilizzando le credenziali di accesso dell'utente, CryptPad è meno preso di mira dei servizi cloud tradizionali. Consulta il <a href='https://blog.cryptpad.fr/images/CryptPad-Whitepaper-v1.0.pdf'>CryptPad Whitepaper</a> per sapere come questo possa aiutare la tua impresa.",
"whatis_drive_p1": "Quando accedi a un pad in CryptPad il pad è automaticamente aggiunto al tuo CryptDrive nella cartella principale. In seguito potrai organizzare questi pad in cartelle o cestinarli. CryptPad ti permette di fare una ricerca tra i tuoi pad e di organizzarli quando e come vuoi.",
"whatis_zeroknowledge": "Zero Knowledge",
"whatis_zeroknowledge_p3": "Quando condividi il link di un documento, stai condividendo la chiave crittografica per accedere a quel documento, ma dato che la chiave è nell'<a href=\"https://en.wikipedia.org/wiki/Fragment_identifier\">identificatore di frammenti</a>, non è mai inviata direttamente al server. Consulta il nostro <a href=\"https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/\"> post nel blog sulla privacy</a> per capire a quali tipi di metadati abbiamo accesso e a quali no.",
"features_f_core": "Funzioni comuni delle applicazioni", "features_f_core": "Funzioni comuni delle applicazioni",
"features_f_apps": "Accesso alle applicazioni principali", "features_f_apps": "Accesso alle applicazioni principali",
"features_feature": "Funzionalità", "features_feature": "Funzionalità",
"features": "Funzionalità", "features": "Funzionalità",
"policy_choices": "Le tue scelte", "policy_choices": "Le tue scelte",
"whatis_drive": "Organizzazione con CryptDrive", "whatis_drive": "Organizzazione con CryptDrive",
"whatis_zeroknowledge_p1": "Non vogliamo sapere cosa stai scrivendo e, grazie alla moderna crittografia, puoi essere certo che non possiamo farlo. CryptPad utilizza <strong>crittografia 100% lato client</strong>per proteggere il contenuto che stai scrivendo da noi, che ospitiamo il server.",
"whatis_collaboration_p3": "Puoi creare dei documenti di testo con <a href=\"http://ckeditor.com/\">CKEditor</a> così come documenti Markdown in tempo reale mentre scrivi. Puoi anche usare l'applicazione di sondaggio per pianificare eventi con più partecipanti.",
"whatis_collaboration_p2": "Puoi condividere l'accesso ad un documento CryptPad semplicemente condividendo il link. Puoi anche condividere un link che fornisce un accesso <em>di sola lettura</em> al pad, permettendoti di pubblicare i tuoi lavori collaborativi potendo ancora modificarli.",
"whatis_collaboration_p1": "Con CryptPad, puoi creare velocemente documenti collaborativi per prendere appunti e scrivere idee insieme. Quando ti registri e accedi ottieni la possibilità di caricare file in un CryptDrive dove puoi organizzare tutti i tuoi pad. Come utente registrato hai 50 MB di spazio gratuito.",
"whatis_collaboration": "Collaborazione veloce, facile", "whatis_collaboration": "Collaborazione veloce, facile",
"terms": "Condizioni del servizio", "terms": "Condizioni del servizio",
"main_footerText": "Con CryptPad, puoi creare velocemente documenti collaborativi per prendere appunti e scrivere idee insieme.", "main_footerText": "Con CryptPad, puoi creare velocemente documenti collaborativi per prendere appunti e scrivere idee insieme.",

@ -133,16 +133,14 @@
"register_importRecent": "匿名セッション中のパッドをインポート", "register_importRecent": "匿名セッション中のパッドをインポート",
"importButton": "インポート", "importButton": "インポート",
"policy_title": "CryptPad プライバシーポリシー", "policy_title": "CryptPad プライバシーポリシー",
"main_catch_phrase": "ゼロ知識クラウド", "main_catch_phrase": "コラボレーションスイート<br>暗号化されかつオープンソース",
"tos_3rdparties": "私たちは、法律で義務付けられている場合を除き、個別のデータを第三者に提供しません。", "tos_3rdparties": "私たちは、法律で義務付けられている場合を除き、個別のデータを第三者に提供しません。",
"tos_logs": "あなたのブラウザからサーバーに送信されたメタデータは、サービスを維持するために記録される場合があります。", "tos_logs": "あなたのブラウザからサーバーに送信されたメタデータは、サービスを維持するために記録される場合があります。",
"tos_availability": "私たちはこのサービスがあなたの役に立つことを願っていますが、可用性や性能は保証できません。定期的にデータをエクスポートしてください。", "tos_availability": "私たちはこのサービスがあなたの役に立つことを願っていますが、可用性や性能は保証できません。定期的にデータをエクスポートしてください。",
"tos_legal": "悪意ある行為、乱用する行為、または何らかの違法な行為を行わないでください。", "tos_legal": "悪意ある行為、乱用する行為、または何らかの違法な行為を行わないでください。",
"tos_title": "CryptPad サービス利用規約", "tos_title": "CryptPad サービス利用規約",
"whatis_title": "CryptPad とは何か", "whatis_title": "CryptPad とは",
"topbar_whatIsCryptpad": "CryptPad とは何か", "topbar_whatIsCryptpad": "CryptPad とは何か",
"faq_title": "よくある質問",
"faq_link": "よくある質問",
"footer_tos": "利用規約", "footer_tos": "利用規約",
"footer_donate": "寄付", "footer_donate": "寄付",
"footer_legal": "法的情報", "footer_legal": "法的情報",
@ -151,7 +149,7 @@
"contact": "連絡先", "contact": "連絡先",
"privacy": "プライバシー", "privacy": "プライバシー",
"blog": "ブログ", "blog": "ブログ",
"driveReadmeTitle": "CryptPad とは何ですか", "driveReadmeTitle": "CryptPad とは",
"readme_welcome": "CryptPad へようこそ!", "readme_welcome": "CryptPad へようこそ!",
"register_header": "CryptPad へようこそ", "register_header": "CryptPad へようこそ",
"login_confirm": "パスワードの確認", "login_confirm": "パスワードの確認",
@ -333,7 +331,6 @@
"features_f_reg": "登録ユーザーの全機能", "features_f_reg": "登録ユーザーの全機能",
"homePage": "ホームページ", "homePage": "ホームページ",
"features_noData": "登録に個人情報は必要ありません", "features_noData": "登録に個人情報は必要ありません",
"features_f_register_note": "登録にメールアドレスや個人情報は必要ありません",
"features_f_register": "無料登録", "features_f_register": "無料登録",
"features_f_storage1_note": "CryptDrive に保存されたパッドが有効期限切れで削除されることはありません", "features_f_storage1_note": "CryptDrive に保存されたパッドが有効期限切れで削除されることはありません",
"features_f_storage1": "永続的ストレージ (50MB)", "features_f_storage1": "永続的ストレージ (50MB)",
@ -423,5 +420,13 @@
"share_contactCategory": "連絡先", "share_contactCategory": "連絡先",
"share_linkCategory": "リンク", "share_linkCategory": "リンク",
"share_linkEdit": "編集", "share_linkEdit": "編集",
"previewButtonTitle": "マークダウンのプレビューを表示または非表示にします" "previewButtonTitle": "マークダウンのプレビューを表示または非表示にします",
"whatis_model": "ビジネスモデル",
"whatis_collaboration": "プライベートコラボレーション",
"home_support_title": "CryptPad を支援する",
"home_opensource": "CryptPad は、個人やプロなど誰でもホストすることができます。ソースコードは <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://github.com/xwiki-labs/cryptpad\">GitHub</a> で確認できます。",
"home_opensource_title": "オープンソース",
"home_host_title": "このインスタンスについて",
"home_privacy_text": "CryptPad は、データをプライベートに保護しながらコラボレーションを可能にするように構築されています。すべてのコンテンツは、あなたのブラウザ上で暗号化および復号されます。つまり、ドキュメント、チャット、およびファイルは、あなたがログインしているセッション以外では読み取れません。サービス管理者でさえ、あなたの情報にアクセスすることはできません。",
"home_privacy_title": "プライバシーバイデザイン"
} }

@ -430,7 +430,6 @@
"register_mustRememberPass": "We cannot reset your password if you forget it. It's very important that you remember it! Please check the checkbox to confirm.", "register_mustRememberPass": "We cannot reset your password if you forget it. It's very important that you remember it! Please check the checkbox to confirm.",
"register_whyRegister": "Why sign up?", "register_whyRegister": "Why sign up?",
"register_header": "Register", "register_header": "Register",
"register_explanation": "<h3>Lets go over a couple things first:</h3><ul class='list-unstyled'><li><i class='fa fa-info-circle'> </i> Your password is your secret key which encrypts all of your pads. If you lose it there is no way we can recover your data.</li><li><i class='fa fa-info-circle'> </i> You can import pads which were recently viewed in your browser so you have them in your account.</li><li><i class='fa fa-info-circle'> </i> If you are using a shared computer, you need to log out when you are done, closing the tab is not enough.</li></ul>",
"register_writtenPassword": "I have written down my username and password, proceed", "register_writtenPassword": "I have written down my username and password, proceed",
"register_cancel": "Cancel", "register_cancel": "Cancel",
"register_warning": "<i class='fa fa-warning'></i> Warning", "register_warning": "<i class='fa fa-warning'></i> Warning",
@ -631,20 +630,7 @@
"topbar_whatIsCryptpad": "What is CryptPad", "topbar_whatIsCryptpad": "What is CryptPad",
"whatis_title": "What is CryptPad?", "whatis_title": "What is CryptPad?",
"whatis_collaboration": "Private Collaboration", "whatis_collaboration": "Private Collaboration",
"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.",
"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.",
"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.",
"whatis_zeroknowledge": "Zero Knowledge",
"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.",
"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.",
"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.",
"whatis_drive": "Organization with CryptDrive", "whatis_drive": "Organization with CryptDrive",
"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.",
"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.",
"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.",
"whatis_business": "CryptPad for Business",
"whatis_business_p1": "CryptPad's Zero Knowledge encryption multiplies the effectiveness of existing security protocols by mirroring organizational access controls in cryptography. Because sensitive assets can only be decrypted using user access credentials, CryptPad is less valuable as a target when compared to traditional cloud services. 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.",
"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.",
"policy_title": "CryptPad Privacy Policy", "policy_title": "CryptPad Privacy Policy",
"policy_whatweknow": "What we know about you", "policy_whatweknow": "What we know about you",
"policy_whatweknow_p1": "As an application that is hosted on the web, CryptPad has access to metadata exposed by the HTTP protocol. This includes your IP address, and various other HTTP headers that can be used to identify your particular browser. You can see what information your browser is sharing by visiting <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.", "policy_whatweknow_p1": "As an application that is hosted on the web, CryptPad has access to metadata exposed by the HTTP protocol. This includes your IP address, and various other HTTP headers that can be used to identify your particular browser. You can see what information your browser is sharing by visiting <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending\" title=\"what http headers is my browser sending\">WhatIsMyBrowser.com</a>.",
@ -688,10 +674,9 @@
"features_f_social_note": "Add contacts for secure collaboration, create a profile, fine-grained access controls", "features_f_social_note": "Add contacts for secure collaboration, create a profile, fine-grained access controls",
"features_f_file1": "Upload and share files", "features_f_file1": "Upload and share files",
"features_f_file1_note": "Store files in your CryptDrive: images, PDFs, videos, and more. Share them with your contacts or embed them in your documents. (up to {0}MB)", "features_f_file1_note": "Store files in your CryptDrive: images, PDFs, videos, and more. Share them with your contacts or embed them in your documents. (up to {0}MB)",
"features_f_storage1": "Personal storage ({0}GB)", "features_f_storage1": "Personal storage ({0})",
"features_f_storage1_note": "Documents stored in your CryptDrive are not deleted for inactivity", "features_f_storage1_note": "Documents stored in your CryptDrive are not deleted for inactivity",
"features_f_register": "Register for free", "features_f_register": "Register for free",
"features_f_register_note": "No email or personal information required",
"features_f_reg": "All registered user features", "features_f_reg": "All registered user features",
"features_f_reg_note": "With additional benefits", "features_f_reg_note": "With additional benefits",
"features_f_storage2": "Extra storage space", "features_f_storage2": "Extra storage space",
@ -702,146 +687,6 @@
"features_f_supporter_note": "Help CryptPad to become financially sustainable and show that privacy-enhancing software willingly funded by users should be the norm", "features_f_supporter_note": "Help CryptPad to become financially sustainable and show that privacy-enhancing software willingly funded by users should be the norm",
"features_f_subscribe": "Subscribe", "features_f_subscribe": "Subscribe",
"features_f_subscribe_note": "Registered account needed to subscribe", "features_f_subscribe_note": "Registered account needed to subscribe",
"faq_link": "FAQ",
"faq_title": "Frequently Asked Questions",
"faq_whatis": "What is <span class='cp-brand-font'>CryptPad</span>?",
"faq": {
"keywords": {
"title": "Keywords",
"pad": {
"q": "What is a pad?",
"a": "<em>Pad</em> is a term popularized by <a href='http://etherpad.org/' target='_blank'>Etherpad</a>, a real-time collaborative editor.\nIt refers to a document that you can edit in your browser, generally with other people's changes visible nearly instantly."
},
"owned": {
"q": "What is an owned Pad?",
"a": "An <em>owned pad</em> is a pad created with an explicit <em>owner</em>, identified to the server by their <em>public signing key</em>. A pad's owner may choose to delete their pads from the server, making it unavailable to other collaborators in the future, whether they had it in their CryptDrive or not."
},
"expiring": {
"q": "What is an expiring Pad?",
"a": "An <em>expiring pad</em> is a pad created with a set time at which it will be automatically removed from the server. Expiring pads can be configured to last anywhere from one hour to one hundred months. The pad and all of its history will become permanently unavailable even if it is being edited at the time that it expires.<br><br>If a pad is set to expire, you can check its expiration time by viewing its <em>properties</em>, either by right-clicking the pad in your CryptDrive, or by using the <em>properties</em> sub-menu from an application's toolbar."
},
"tag": {
"q": "How can I use tags?",
"a": "You can tag pads and uploaded files via your CryptDrive, or using the <em>tag</em> button (<span class='fa fa-hashtag'></span>) in any editor's toolbar. Search for pads and files in your CryptDrive using the search bar with a term beginning with hashtag, like <em>#crypto</em>."
},
"template": {
"q": "What is a template?",
"a": "A template is a pad which can be used to define to initial content for another pad of the same type when you create it. Any existing pad can be turned into a template by moving it into the <em>Templates</em> section in your CryptDrive. You can also create a copy of a pad to be used as a template by clicking the template button (<span class='fa fa-bookmark'></span>) in the editor's toolbar."
},
"abandoned": {
"q": "What is an abandoned pad?",
"a": "An <em>abandoned pad</em> is a pad that is not pinned in any registered user's CryptDrive and that hasn't been changed for six months. Abandoned documents will be automatically removed from the server."
}
},
"privacy": {
"title": "Privacy",
"different": {
"q": "How is CryptPad different from other Pad services?",
"a": "CryptPad encrypts changes to your pads before sending that information to be stored on the server, so we can't read what you're typing."
},
"me": {
"q": "What information does the server know about me?",
"a": "Server administrators are able to see the IP addresses of people who visit the CryptPad. We don't record which addresses visit which pads, but we could, even though we don't have access to the decrypted content of those pads. If you are worried about us analyzing that information, it's safest to assume that we do collect it, since we can't prove that we don't.<br><br>We collect some basic telemetry about how people use CryptPad, such as the size of the screen on their device, and which buttons they click the most.This helps us improve the software, but if you'd prefer not to send such information to the server, you can <strong>opt out by unchecking the <em>Enable user feedback</em> checkbox</strong>.<br><br>We do keep track of which pads are in a user's CryptDrive so that we can impose storage limits, but we don't know the content or type of those pads. Storage quotas are associated with a user's public key, but we don't associate names or emails with those public keys.<br><br> For more information, you can read this <a href='https://blog.cryptpad.fr/2017/07/07/cryptpad-analytics-what-we-cant-know-what-we-must-know-what-we-want-to-know/' target='_blank'>blog post</a> which we wrote about the topic."
},
"register": {
"q": "Does the server know more about me if I register?",
"a": "We don't require users to verify their email address, and the server does not even learn your username or password when you register. Instead, the register and login forms generate a unique keyring from your input, and the server only learns your cryptographic signature. We use this information to track details like how much data you are using, which allows us to restrict each user to a quota.<br><br>We use our <em>feedback</em> functionality to inform the server that someone with your IP has registered an account. We use this to measure how many people register for CryptPad accounts, and to see what regions they are in so that we can guess which languages may need better support.<br><br>Registered users inform the server which pads are in their CryptDrive so that such pads are not considered abandoned, and are removed from the server due to inactivity."
},
"other": {
"q": "What can other collaborators learn about me?",
"a": "When you edit a pad with someone else, you communicate through the server, so only we learn your IP address. Other users can see your display name, avatar, the link to your profile (if you have one), and your <em>public key</em> (which is used for encrypting communications between each other)."
},
"anonymous": {
"q": "Does CryptPad make me anonymous?",
"a": "Even though CryptPad is designed to know as little about you as possible, it does not provide strong anonymity. Our servers have access to your IP address, however, you can hide this information by using Tor to access CryptPad. Using Tor without changing your behaviour will not guarantee you anonymity, as the server is also able to identify users by their unique cryptographic identifier. If you use the same account when you're not using Tor, it will be possible to deanonymize your session.<br><br>For users who require a lesser degree of privacy, CryptPad does not require users to identify themselves by name, phone number, or email address like many other services."
},
"policy": {
"q": "Do you have a data privacy policy?",
"a": "Yes! It is available <a href='/privacy.html' target='_blank'>here</a>."
}
},
"security": {
"title": "Security",
"proof": {
"q": "How do you use Zero Knowledge Proofs?",
"a": "When we use the term <em>Zero Knowledge</em>, we are not referring to <em>Zero Knowledge proofs</em>, but to <em>Zero Knowledge Web Services</em>. <em>Zero Knowledge Web Services</em> encrypt user data in the user's browser, without the server ever having access to the unencrypted data, or the encryption keys.<br><br>We've compiled a short list of Zero Knowledge services <a href='https://blog.cryptpad.fr/2017/02/20/Time-to-Encrypt-the-Cloud/#Other-Zero-Knowledge-Services'>here</a>."
},
"why": {
"q": "Why should I use CryptPad?",
"a": "Our position is that cloud services should not require access to your data in order for you to share it with your friends and colleagues. If you are using another service to collaborate, and they do not explicitly say that they can't access your information, it is very likely that they are leveraging it for profit."
},
"compromised": {
"q": "Does CryptPad protect me if my device is compromised?",
"a": "In the event that your device is stolen, CryptPad allows you to trigger a remote logout of all devices except the one you are currently using. To do so, go to your <strong>settings page</strong> and click <strong>Log out everywhere</strong>. All other devices which are currently connected to the account will log out. Any previously connected devices which visit CryptPad will log out as soon as they load the page.<br><br>Currently, <em>remote logout</em> is implemented in the browser, not in conjunction with the server. As such, it may not protect you from government agencies, but it should be sufficient if you forgot to log out after using CryptPad from a shared computer."
},
"crypto": {
"q": "What cryptography do you use?",
"a": "CryptPad is based upon two open-source cryptography libraries: <a href='https://github.com/dchest/tweetnacl-js' target='_blank'>tweetnacl.js</a> and <a href='https://github.com/dchest/scrypt-async-js' target='_blank'>scrypt-async.js</a>.<br><br>Scrypt is a <em>password-based key derivation algorithm</em>. We use it to turn your username and password into a unique keyring which secures access to your CryptDrive such that only you can access your list of pads.<br><br>We use the <em>xsalsa20-poly1305</em> and <em>x25519-xsalsa20-poly1305</em> cyphers provided by tweetnacl to encrypt pads and chat history, respectively."
},
"pad_password": {
"q": "What happens when I protect a pad/folder with a password?",
"a": "You can protect any pad or shared folder with a password when you create it. You can also use the properties menu to set/change/remove a password at any time.<br><br>Pad and shared folder passwords are intended to protect the link when you share it over potentially insecure channels such as email or text message. If someone intercepts your link but does not have the password they will not be able to read your document.<br><br>When sharing within CryptPad with your contacts or teams, communications are encrypted and we assume you want them to access your document. Therefore the password is remembered and sent with the pad when you share it. The recipient, or yourself, are <b>not</b> asked for it when they open the document."
}
},
"usability": {
"title": "Usability",
"register": {
"q": "What do I get by registering?",
"a": "Registered users have access to a number of features unavailable to unregistered users. There's a chart <a href='/features.html' target='_blank'>here</a>."
},
"share": {
"q": "How can I share encrypted pads with my contacts?",
"a": "CryptPad puts the secret encryption key to your pad after the <em>#</em> character in the URL. Anything after this character is not sent to the server, so we never have access to your encryption keys. By sharing the link to a pad, you share the ability to read and access it."
},
"remove": {
"q": "I removed a pad or file from my CryptDrive, but the content is still available. How can I remove it?",
"a": "Only <em>owned pads</em> (introduced in February 2018) can be deleted. Additionally, these pads can only be deleted by their <em>owners</em> (the person that originally created the pad). If you are not the creator of the pad, you will have to ask its owner to delete it for you. For pads you do own, you can <strong>right-click the pad in your CryptDrive</strong>, and choose <strong>Delete from the server</strong>."
},
"forget": {
"q": "What if I forget my password?",
"a": "Unfortunately, if we could recover access to your encrypted pads for you, we'd be able to access them ourselves. If you did not record your username and password anywhere, and cannot remember either, you may be able to recover your pads by filtering your browser's history."
},
"change": {
"q": "What if I want to change my password?",
"a": "You can change your CryptPad password in your account settings page."
},
"devices": {
"q": "I am logged in on two devices, and see two different CryptDrives, how is this possible?",
"a": "It's probable that you registered the same name twice, using different passwords. Because the CryptPad server identifies you by your cryptographic signature and not your name, it cannot prevent others from registering with the same name. As such, each user account has a unique username and password combination. Logged in users can see their username at the top of the settings page."
},
"folder": {
"q": "Can I share entire folders from my CryptDrive?",
"a": "Yes, you can create a <em>shared folder</em> from your CryptDrive and share all the pads it contains at once."
},
"feature": {
"q": "Can you add a very special feature which I need?",
"a": "Many of the features in CryptPad exist because users asked for them. Our <a href='https://cryptpad.fr/contact.html' target='_blank'>contacts page</a> lists the ways that you can reach us.<br><br>Unfortunately, we cannot guarantee that we will implement everything that people ask for. If a particular feature is critical for your organization, you can sponsor development time to ensure its completion. Please contact <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> for more information.<br><br>Even if you cannot afford to sponsor development, we're interested in feedback that can help us improve CryptPad. Feel free to contact us with via the above methods any time."
}
},
"other": {
"title": "Other questions",
"pay": {
"q": "Why should I pay when so many features are free?",
"a": "We give supporters additional storage and the ability to increase their contacts' quotas (<a href='https://accounts.cryptpad.fr/#/faq' target='_blank'>learn more</a>).<br><br>Beyond these short term benefits, by subscribing with a premium account you help to fund continued, active development of CryptPad. That includes fixing bugs, adding new features, and making it easier for others to help host CryptPad themselves. Additionally, you help to prove to other service providers that people are willing to support privacy enhancing technologies. It is our hope that eventually business models based on selling user data will become a thing of the past.<br><br>Finally, we offer most of CryptPad's functionality for free because we believe everyone deserves personal privacy, not just those with disposable income. By supporting us, you help us continue to make it possible for underprivileged populations to access these basic features without a price tag attached."
},
"goal": {
"q": "What is your goal?",
"a": "By developing privacy-respecting collaboration technology, we wish to raise users' expectations of privacy from cloud-computing platforms. We hope that our work drives other service providers in all domains to match or exceed our efforts. Despite our optimism, we know that much of the web is funded by revenue from targeted advertising. There is much more work to be done than we can manage ourselves, and we appreciate the promotion, support, and contributions of our community towards this goal."
},
"jobs": {
"q": "Are you hiring?",
"a": "Yes! Please introduce yourself with an email to <a href='mailto:jobs@xwiki.com' target='_blank'>jobs@xwiki.com</a>."
},
"host": {
"q": "Can you help me set up my own instance of CryptPad?",
"a": "We are happy to provide support for your organization's internal CryptPad installation. Please contact <a href='mailto:sales@cryptpad.fr' target='_blank'>sales@cryptpad.fr</a> for more information."
},
"revenue": {
"q": "How can I participate in the revenue sharing?",
"a": "If you are running your own instance of CryptPad, and would like to enable paid accounts and split the revenue with the developers, your server will need to be configured as a partner service.<br><br>In your CryptPad directory, <em>config.example.js</em> should contain an explanation of what you need to configure on your server. You will need to contact <a href='mailto:sales@cryptpad.fr'>sales@cryptpad.fr</a> to verify that your server is configured to use HTTPS correctly, and discuss payment methods."
}
}
},
"tos_title": "CryptPad Terms of Service", "tos_title": "CryptPad Terms of Service",
"tos_legal": "Please don't be malicious, abusive, or do anything illegal.", "tos_legal": "Please don't be malicious, abusive, or do anything illegal.",
"tos_availability": "We hope you find this service useful, but availability or performance cannot be guaranteed. Please export your data regularly.", "tos_availability": "We hope you find this service useful, but availability or performance cannot be guaranteed. Please export your data regularly.",
@ -1517,7 +1362,7 @@
"home_support": "<p>The development team does not profit from user data in any way. This is part of a vision for online services that respect privacy. Unlike the big platforms that pretend to be \"free\" while making profits from personal information, we aim to build a sustainable model funded willingly by users.</p><p>You can support the project by making a one-time or recurring donation through our Open Collective. Our budget is transparent and updates are published regularly. There are also a number of <a href=\"https://docs.cryptpad.fr/en/how_to_contribute.html\" rel=\"noopener noreferrer\" target=\"_blank\">non-financial ways to contribute</a>.</p>", "home_support": "<p>The development team does not profit from user data in any way. This is part of a vision for online services that respect privacy. Unlike the big platforms that pretend to be \"free\" while making profits from personal information, we aim to build a sustainable model funded willingly by users.</p><p>You can support the project by making a one-time or recurring donation through our Open Collective. Our budget is transparent and updates are published regularly. There are also a number of <a href=\"https://docs.cryptpad.fr/en/how_to_contribute.html\" rel=\"noopener noreferrer\" target=\"_blank\">non-financial ways to contribute</a>.</p>",
"register_notes_title": "Important notes", "register_notes_title": "Important notes",
"register_notes": "<ul class=\"cp-notes-list\"><li>Your password is the secret key that encrypts all of your documents. <span class=\"red\">If you lose it there is no way we can recover your data.</span></li><li>If you are using a shared computer, <span class=\"red\">remember to log out</span> when you are done. Only closing the browser window leaves your account exposed. </li><li>To keep the documents you created and/or stored without being logged in, tick \"Import documents from your anonymous session\". </li></ul>", "register_notes": "<ul class=\"cp-notes-list\"><li>Your password is the secret key that encrypts all of your documents. <span class=\"red\">If you lose it there is no way we can recover your data.</span></li><li>If you are using a shared computer, <span class=\"red\">remember to log out</span> when you are done. Only closing the browser window leaves your account exposed. </li><li>To keep the documents you created and/or stored without being logged in, tick \"Import documents from your anonymous session\". </li></ul>",
"register_warning_note": "Due to the encrypted nature of CrytpPad, the service administrators will not be able to recover data in case you forget your username and/or password. Please save them in a safe place.", "register_warning_note": "Due to the encrypted nature of CryptPad, the service administrators will not be able to recover data in case you forget your username and/or password. Please save them in a safe place.",
"whatis_collaboration_info": "<p>CryptPad is built to enable collaboration. It synchronizes changes to documents in real time. Because all data is encrypted, the service and its administrators have no way of seeing the content being edited and stored.</p>", "whatis_collaboration_info": "<p>CryptPad is built to enable collaboration. It synchronizes changes to documents in real time. Because all data is encrypted, the service and its administrators have no way of seeing the content being edited and stored.</p>",
"whatis_apps": "A full suite of applications", "whatis_apps": "A full suite of applications",
"whatis_apps_info": "<p>CryptPad provides a full-fledged office suite with all the tools necessary for productive collaboration. Applications include: Rich Text, Spreadsheets, Code/Markdown, Kanban, Slides, Whiteboard and Polls.</p><p>The applications are complemented by a set of collaboration features such as chat, contacts, color by author (code/markdown), and comments with mentions (rich text).</p>", "whatis_apps_info": "<p>CryptPad provides a full-fledged office suite with all the tools necessary for productive collaboration. Applications include: Rich Text, Spreadsheets, Code/Markdown, Kanban, Slides, Whiteboard and Polls.</p><p>The applications are complemented by a set of collaboration features such as chat, contacts, color by author (code/markdown), and comments with mentions (rich text).</p>",
@ -1528,5 +1373,35 @@
"whatis_xwiki_info": "<p>CryptPad is made at <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://xwiki.com\">XWiki</a>, a company based in Paris, France that has been making open-source software for over 15 years. We have extensive experience making collaborative software to organise information. Our track record shows we are committed to the long-term development and maintenance of CryptPad.</p>", "whatis_xwiki_info": "<p>CryptPad is made at <a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://xwiki.com\">XWiki</a>, a company based in Paris, France that has been making open-source software for over 15 years. We have extensive experience making collaborative software to organise information. Our track record shows we are committed to the long-term development and maintenance of CryptPad.</p>",
"creation_expiresIn": "Expires in", "creation_expiresIn": "Expires in",
"creation_helperText": "Open in documentation", "creation_helperText": "Open in documentation",
"docs_link": "Documentation" "docs_link": "Documentation",
"settings_cacheTitle": "Cache",
"settings_cacheHint": "CryptPad stores parts of your documents in your browser's memory in order to save network usage and improve loading times. You can disable the cache if your device doesn't have a lot of free storage space. For security reasons, the cache is always cleared when you log out, but you can clear it manually if you want to reclaim storage space on your machine.",
"settings_cacheCheckbox": "Enable cache on this device",
"settings_cacheButton": "Clear existing cache",
"undo": "Undo",
"redo": "Redo",
"admin_cat_performance": "Performance",
"admin_performanceProfilingHint": "An overview of the total time spent executing various server-side commands",
"admin_performanceProfilingTitle": "Performance",
"admin_performanceKeyHeading": "Command",
"admin_performanceTimeHeading": "Time (seconds)",
"admin_performancePercentHeading": "Percentage",
"settings_cat_style": "Appearance",
"settings_colortheme_dark": "Dark",
"settings_colortheme_light": "Light",
"settings_colortheme_default": "System default ({0})",
"settings_colorthemeHint": "Change the overall colors of CryptPad on this device.",
"settings_colorthemeTitle": "Color theme",
"admin_getquotaTitle": "Check account storage",
"admin_getquotaHint": "Check the total size of items counted against a user or team's quota given their public key.",
"admin_getquotaButton": "Check",
"pad_settings_title": "Document Settings",
"pad_settings_info": "Default settings for this document. These will be applied when new users visit this document.",
"pad_settings_width_small": "Page mode",
"pad_settings_width_large": "Full width",
"pad_settings_outline": "Choose whether the Table of Contents should be visible or hidden by default.",
"pad_settings_comments": "Choose whether the Comments should be visible or hidden by default.",
"pad_settings_hide": "Hide",
"pad_settings_show": "Show",
"settings_colortheme_custom": "Custom"
} }

@ -36,7 +36,7 @@
"history_restoreTitle": "Herstel de gekozen versie van het document", "history_restoreTitle": "Herstel de gekozen versie van het document",
"history_closeTitle": "Geschiedenis sluiten", "history_closeTitle": "Geschiedenis sluiten",
"history_loadMore": "Meer geschiedenis laden", "history_loadMore": "Meer geschiedenis laden",
"history_prev": "Oudere versie", "history_prev": "Vorige versie",
"history_next": "Nieuwere versie", "history_next": "Nieuwere versie",
"historyButton": "Toon documentgeschiedenis", "historyButton": "Toon documentgeschiedenis",
"historyText": "Geschiedenis", "historyText": "Geschiedenis",
@ -110,7 +110,7 @@
"selectTemplate": "Kies een sjabloon of druk op escape", "selectTemplate": "Kies een sjabloon of druk op escape",
"templateSaved": "Het sjabloon is opgeslagen!", "templateSaved": "Het sjabloon is opgeslagen!",
"saveTemplateButton": "Opslaan als sjabloon", "saveTemplateButton": "Opslaan als sjabloon",
"uploadButtonTitle": "Upload een nieuw bestand naar de huidige map", "uploadButtonTitle": "Upload een nieuw bestand naar uw CryptDrive",
"uploadFolderButton": "Uploadmap", "uploadFolderButton": "Uploadmap",
"uploadButton": "Bestanden uploaden", "uploadButton": "Bestanden uploaden",
"newButtonTitle": "Nieuwe werkomgeving aanmaken", "newButtonTitle": "Nieuwe werkomgeving aanmaken",
@ -202,7 +202,7 @@
"deletedError": "Deze werkomgeving is verwijderd door de eigenaar en niet meer beschikbaar.", "deletedError": "Deze werkomgeving is verwijderd door de eigenaar en niet meer beschikbaar.",
"main_title": "CryptPad: werk samen aan documenten - geen kennis benodigd", "main_title": "CryptPad: werk samen aan documenten - geen kennis benodigd",
"fc_open_ro": "Openen (alleen-lezen)", "fc_open_ro": "Openen (alleen-lezen)",
"history_restorePrompt": "Weet u zeker dat u de bestaande documentversie wilt vervangen met de weergegeven versie?", "history_restorePrompt": "Weet u zeker dat u de bestaande versie van het document wilt vervangen met de weergegeven versie?",
"history_restoreDone": "Document hersteld", "history_restoreDone": "Document hersteld",
"history_version": "Versie:", "history_version": "Versie:",
"openLinkInNewTab": "Open Link in Nieuw Tabblad", "openLinkInNewTab": "Open Link in Nieuw Tabblad",
@ -334,8 +334,8 @@
"fm_openParent": "Weergeven in map", "fm_openParent": "Weergeven in map",
"fm_noname": "Document Zonder Title", "fm_noname": "Document Zonder Title",
"fm_emptyTrashDialog": "Weet u zeker dat u de prullenbak wilt legen?", "fm_emptyTrashDialog": "Weet u zeker dat u de prullenbak wilt legen?",
"fm_removeSeveralPermanentlyDialog": "Weet u zeker dat u deze {0} elementen voorgoed wilt verwijderen van uw CryptDrive?", "fm_removeSeveralPermanentlyDialog": "Weet u zeker dat u deze {0} elementen wilt verwijderen van uw CryptDrive? De elementen zullen niet verwijderd worden voor eventuele andere gebruikers ervan.",
"fm_removePermanentlyDialog": "Weet u zeker dat u dit element voorgoed wilt verwijderen van uw CryptDrive?", "fm_removePermanentlyDialog": "Weet u zeker dat u dit element wilt verwijderen van uw CryptDrive? Het zal niet verwijderd worden voor eventuele andere gebruikers ervan.",
"fm_removePermanentlyNote": "Werkomgevingen in uw eigendom worden verwijderd van de server als u doorgaat.", "fm_removePermanentlyNote": "Werkomgevingen in uw eigendom worden verwijderd van de server als u doorgaat.",
"fm_removeSeveralDialog": "Weet u zeker dat u deze {0} elementen wilt verplaatsen naar de prullenbak?", "fm_removeSeveralDialog": "Weet u zeker dat u deze {0} elementen wilt verplaatsen naar de prullenbak?",
"fm_removeDialog": "Weet u zeker dat u {0} wilt verplaatsen naar de prullenbak?", "fm_removeDialog": "Weet u zeker dat u {0} wilt verplaatsen naar de prullenbak?",
@ -366,7 +366,7 @@
"fc_delete": "Naar prullenbak verplaatsen", "fc_delete": "Naar prullenbak verplaatsen",
"fc_delete_owned": "Verwijderen van server", "fc_delete_owned": "Verwijderen van server",
"fc_restore": "Herstellen", "fc_restore": "Herstellen",
"fc_remove": "Verwijder uit uw CryptDrive", "fc_remove": "Verwijderen",
"fc_remove_sharedfolder": "Verwijderen", "fc_remove_sharedfolder": "Verwijderen",
"fc_empty": "Prullenbak legen", "fc_empty": "Prullenbak legen",
"fc_prop": "Eigenschappen", "fc_prop": "Eigenschappen",
@ -375,5 +375,146 @@
"kanban_done": "Gedaan", "kanban_done": "Gedaan",
"poll_comment_remove": "Verwijder dit commentaar", "poll_comment_remove": "Verwijder dit commentaar",
"profile_fieldSaved": "Nieuwe waarde opgeslagen: {0}", "profile_fieldSaved": "Nieuwe waarde opgeslagen: {0}",
"fm_morePads": "Meer" "fm_morePads": "Meer",
"settings_pinningNotAvailable": "Vastgepinde werkomgevingen zijn alleen beschikbaar voor geregistreerde gebruikers.",
"settings_usageTitle": "Zie de hele grootte van uw vastgepinde werkomgevingen in MB",
"settings_usage": "Gebruik",
"settings_publicSigningKey": "Openbare Ondertekeningssleutel",
"settings_anonymous": "U bent niet ingelogd. Instellingen hier gelden alleen voor deze browser.",
"settings_deleted": "Uw account is nu verwijderd. Klik OK om naar de startpagina te gaan.",
"settings_deleteConfirm": "Als u op OK klikt, wordt uw account blijvend verwijderd. Weet u het zeker?",
"settings_deleteModal": "Deel de volgende informatie met uw CryptPad administrator om uw data te laten verwijderen van de server.",
"settings_deleteButton": "Uw account verwijderen",
"settings_deleteHint": "Het verwijderen van uw account is blijvend. Uw CryptDrive en lijst van werkomgevingen worden voorgoed verwijderd van de server. Uw overige werkomgevingen worden over 90 dagen verwijderd, behalve als ze door een andere gebruiker zijn opgeslagen.",
"settings_deleteTitle": "Account verwijderen",
"settings_userFeedback": "Gebruikersfeedback inschakelen",
"settings_userFeedbackHint2": "De inhoud van uw werkomgeving zal nooit gedeeld worden met de server.",
"settings_userFeedbackHint1": "CryptPad verstuurt basisfeedback naar de server, om ons te vertellen hoe we uw ervaring kunnen verbeteren. ",
"settings_userFeedbackTitle": "Feedback",
"settings_autostoreMaybe": "Handmatig (altijd vragen)",
"settings_autostoreNo": "Handmatig (nooit vragen)",
"settings_autostoreYes": "Automatisch",
"settings_autostoreHint": "<b>Automatisch</b> Alle geopende werkomgevingen worden automatisch opgeslagen in uw CryptDrive.<br><b>Handmatig (altijd vragen)</b> Als u een werkomgeving nog niet hebt opgeslagen, zult u gevraagd worden of u het in uw CryptDrive wilt opslaan.<br><b>Handmatig (nooit vragen)</b> Werkomgevingen worden niet automatisch opgeslagen in uw Cryptpad. The optie om op te slaan wordt verborgen.",
"settings_autostoreTitle": "Opslag van werkomgevingen in CryptDrive",
"settings_importDone": "Importeren voltooid",
"settings_importConfirm": "Weet u zeker dat u de recente pads van uw browser in uw geregistreerde CryptDrive wilt importeren?",
"settings_import": "Importeer",
"settings_importTitle": "Importeer in uw CryptDrive de werkomgevingen die onlangs in uw browser zijn geopend",
"settings_resetThumbnailsDone": "Alle miniatuurweergaven zijn gewist.",
"settings_resetThumbnailsDescription": "Ruim alle miniatuurweergaven op die worden opgeslagen in uw browser.",
"settings_resetThumbnailsAction": "Opruimen",
"settings_disableThumbnailsDescription": "Miniatuurweergaven worden automatisch aangemaakt en opgeslagen in uw browser als u een nieuwe werkomgeving aanmaakt. Hier kunt u deze functie uitschakelen.",
"settings_disableThumbnailsAction": "Aanmaak van miniatuurweergaven in uw CryptDrive uitschakelen",
"settings_thumbnails": "Miniatuurweergaven",
"settings_resetTipsDone": "Alle tips worden nu weer weergegeven.",
"settings_resetTipsButton": "Herstel de tips in CryptDrive",
"settings_resetTips": "Tips",
"settings_resetTipsAction": "Terugzetten",
"settings_resetError": "Onjuiste verificatietekst. Uw CryptDrive is niet geleegd.",
"settings_resetButton": "Verwijderen",
"settings_resetDone": "Uw CryptDrive is nu leeg!",
"settings_resetPrompt": "Deze actie zal alle werkomgevingen in uw CryptDrive verwijderden.<br>Weet u zeker dat u door wilt gaan?<br>Typ “<em>I love CryptPad</em>” om te bevestigen.",
"settings_reset": "Verwijder alle bestanden en mappen van uw CryptDrive",
"settings_resetNewTitle": "Reinig CryptDrive",
"settings_exportErrorOther": "Een fout trad op tijdens het exporteren van dit document: {0}",
"settings_exportErrorMissing": "Dit document ontbreekt in onze servers (verlopen of verwijderd door de eigenaar)",
"settings_exportErrorEmpty": "Dit document kan niet geëxporteerd worden. (Leeg of ongeldige inhoud.)",
"settings_exportErrorDescription": "De volgende documenten konden niet geëxporteerd worden:",
"settings_exportError": "Fouten weergeven",
"settings_export_done": "Uw download staat klaar!",
"settings_export_compressing": "Data aan het comprimeren...",
"settings_export_download": "Uw documenten worden gedownload en ontsleuteld...",
"settings_export_reading": "Uw CryptDrive aan het lezen...",
"settings_exportCancel": "Weet u zeker dat u de export wilt annuleren? U zult de volgende keer opnieuw moeten beginnen.",
"settings_exportWarning": "Opmerking: deze functie is nog in de bèta versie en kan nog niet optimaal werken. Daarom raden wij het aan om dit tabblad niet te verlaten.",
"settings_exportFailed": "Als het langer dan 1 minuut duurt om een werkomgeving te downloaden, zal het niet bij de export worden meegenomen. Er zal een link naar de werkomgeving die niet geëxporteerd zou zijn worden weergegeven.",
"settings_exportDescription": "Wacht a.u.b. terwijl wij uw documenten downloaden en ontsleutelen. Dit kan een paar minuten duren. Dit tabblad sluiten zal het proces onderbreken.",
"settings_exportTitle": "Exporteer uw CryptDrive",
"settings_backup2Confirm": "Dit zal alle werkomgevingen en bestanden van uw CryptDrive downloaden. Als u wilt doorgaan, kies een naam en druk OK",
"settings_backup2": "Download mijn CryptDrive",
"settings_backupHint2": "Download alle documenten van uw CryptDrive. Documenten zullen gedownload worden in bestandsformaten leesbaar voor andere programma's, indien mogelijk. Als zo een bestandsformaat niet beschikbaar is, zullen de documenten gedownload worden in het formaat dat CryptPad gebruikt.",
"settings_restore": "Herstellen",
"settings_backup": "Reservekopie",
"settings_backupHint": "Herstel alle inhoud van uw CryptDrive. Het zal niet de inhoud van uw werkomgevingen bevatten, slechts de toegangssleutels ertoe.",
"settings_backupCategory": "Reservekopie",
"settings_save": "Opslaan",
"settings_title": "Instellingen",
"settings_cat_subscription": "Abonnement",
"settings_cat_creation": "Nieuwe werkomgeving",
"settings_cat_pad": "Rich text",
"settings_cat_code": "Code",
"settings_cat_cursor": "Cursor",
"settings_cat_drive": "CryptDrive",
"settings_cat_account": "Account",
"register_emailWarning3": "Als u dit begrijpt en alsnog uw email wilt gebruiken als gebruikersnaam, klik dan OK.",
"register_emailWarning2": "U zult uw wachtwoord niet kunnen veranderen d.m.v. uw email, zoals bij veel andere diensten.",
"register_emailWarning1": "U kunt dat doen als u ervoor kiest, maar het zal niet naar onze server worden verzonden.",
"register_emailWarning0": "Het lijkt erop dat u uw emailadres als gebruikersnaam heeft ingevoerd.",
"register_alreadyRegistered": "Deze gebruiker bestaat al. Wilt u inloggen?",
"register_warning": "<i class='fa fa-warning'></i> Waarschuwing",
"register_cancel": "Annuleren",
"register_writtenPassword": "Ik heb mijn gebruikersnaam en wachtwoord opgeschreven, ga door",
"register_header": "Registreren",
"register_whyRegister": "Waarom registreren?",
"register_mustRememberPass": "Wij kunnen uw wachtwoord niet veranderen als u het vergeet. Het is van uiterst belang dat u het onthoudt! Klik het vinkje aan om het te bevestigen.",
"register_mustAcceptTerms": "U moet akkoord gaan met de gebruikersvoorwaarden.",
"register_passwordTooShort": "Wachtwoorden moeten ten minste {0} tekenen lang zijn.",
"register_passwordsDontMatch": "Wachtwoorden komen niet overeen!",
"register_acceptTerms": "Ik ga akkoord met de <a href='/terms.html' tabindex='-1'>gebruikersvoorwaarden</a>",
"register_importRecent": "Importeer documenten van uw ongeregistreerde sessie",
"login_unhandledError": "Een onverwachte fout trad op :(",
"login_invalPass": "Wachtwoord vereist",
"login_invalUser": "Gebruikersnaam vereist",
"login_noSuchUser": "Ongeldige gebruikersnaam of wachtwoord. Probeer opnieuw of registreer u",
"login_orNoLogin": "of",
"login_accessDrive": "Bekijk uw CryptDrive",
"login_helloNoName": "Hallo,",
"login_hello": "Goedendag {0},",
"login_hashing": "Uw wachtwoord wordt berekend, dit kan even duren.",
"login_remember": "Blijf ingelogd",
"login_confirm": "Bevestig uw wachtwoord",
"login_password": "Wachtwoord",
"login_username": "Gebruikersnaam",
"settingsButton": "Instellingen",
"logoutButton": "Uitloggen",
"login_register": "Registreren",
"login_nologin": "Doorzoek lokale werkomgevingen",
"login_makeAPad": "Maak anoniem een werkomgeving aan",
"login_login": "Inloggen",
"fs_migration": "Uw CryptDrive wordt nu bijgewerkt tot een nieuwe versie. Daarom moet de huidige pagina herladen worden.<br><strong>Herlaad deze pagina a.u.b. om hem te blijven gebruiken.</strong>",
"fo_unavailableName": "Een bestand of map met dezelfde naam bestaat al op de nieuwe locatie. Hernoem het element en probeer opnieuw.",
"fo_unableToRestore": "Het bestand kan niet in zijn oorspronkelijke locatie worden hersteld. Probeer het te verplaatsen naar een nieuwe locatie.",
"fo_moveFolderToChildError": "U kunt de map niet verplaatsen naar één van haar eigen submappen",
"fo_existingNameError": "Naam wordt al gebruikt in deze map. Kies a.u.b. een andere naam.",
"fo_moveUnsortedError": "U kunt geen map verplaatsen naar een lijst van sjablonen",
"fc_sizeInKilobytes": "Grootte in kilobytes",
"fm_moveNestedSF": "U kunt geen gedeelde map plaatsen in een andere map die ook gedeeld is. De map {0} is niet verplaatst.",
"fm_restoreDrive": "Uw drive wordt teruggedraaid naar een eerdere staat. Vermijd wijzigingen in uw drive totdat dit proces is voltooid, voor de best resultaten.",
"fm_burnThisDrive": "Weet u zeker dat u alles wilt verwijderen wat CryptPad heeft opgeslagen in uw browser?<br>Dit zal uw CryptDrive en de geschiedenis daarvan verwijderen uit uw browser, maar uw werkomgevingen zullen nog steeds in onze (versleutelde) server staan.",
"fm_renamedPad": "U hebt deze werkomgeving een naam gegeven. De gedeelde titel is:<br><b>{0}</b>",
"fm_viewGridButton": "Roosterweergave",
"fm_viewListButton": "Lijstweergave",
"fm_alert_anonymous": "Goedendag, momenteel gebruikt u CryptPad anoniem. Dat is geen probleem, maar uw werkomgevingen kunnen verwijderd worden na een inactieve periode. Wij hebben gevorderde functies uitgeschakeld voor anonieme gebruikers, om te benadrukken dat het een onveilige manier is om bestanden op te slaan. U kunt <a href=\"https://blog.cryptpad.fr/2017/05/17/You-gotta-log-in/\" target=\"_blank\">meer lezen</a> over waarom wij dit doen en waarom u echt beter kunt <a href=\"/register/\">registreren</a> of <a href=\"/login/\">inloggen</a>.",
"fm_alert_backupUrl": "Reserve kopie voor deze drive. <br>Het wordt <strong>dringend aanbevolen</strong> om het geheim te houden.<br>U kunt het gebruiken om alle bestanden terug te winnen, indien de opslag van uw browser gewist is.<br>Iedereen met deze link kan alle bestanden in uw CryptDrive wijzigen of verwijderen.<br>",
"fm_info_owned": "U bent de eigenaar van de werkomgevingen die hier zijn weergegeven. Dit betekent dat u ze voorgoed van de server kunt verwijderen. Als u dat doet, zijn ze niet meer toegankelijk voor andere gebruikers.",
"fm_info_sharedFolder": "Dit is een gedeelde map. U bent niet ingelogd, dus u kunt de inhoud alleen lezen. U kunt zich <br><a href=\"/register/\">registreren</a> of <a href=\"/login/\">inloggen</a> om het in uw CryptDrive te importeren en het te wijzigen.",
"fm_info_anonymous": "U bent niet ingelogd, dus uw documenten zullen verlopen na {0} dagen. Ze kunnen ook verdwijnen als uw browsergeschiedenis gewist wordt. <br><a href=\"/register/\">Registreren</a> (geen persoonlijke gegevens vereist) of <a href=\"/login/\">Inloggen</a> om ze voor altijd in uw drive op te slaan. <a href=\"https://docs.cryptpad.fr/en/user_guide/user_account.html#account-types\" target=\"_blank\">Lees meer over geregistreerde accounts</a>.",
"fm_info_allFiles": "Bevat alle bestanden van \"Documenten\", \"Ongesorteerd\" en \"Prullenbak\". U kunt hier geen bestanden verplaatsen of verwijderen.",
"fm_info_trash": "Leeg uw prullenbak om opslagruimte vrij te maken in uw CryptDrive.",
"fm_info_recent": "Deze werkomgevingen zijn onlangs geopend of gewijzigd door u of door mensen met wie u samenwerkt.",
"fm_info_template": "Dit bevat alle werkomgevingen die zijn opgeslagen als sjablonen en die je kunt gebruiken voor een nieuwe werkomgeving.",
"fm_info_unsorted": "Dit bevat alle bezochte bestanden die nog niet naar \"Documenten\" of \"Prullenbak\" verplaatst zijn.",
"fm_info_root": "Maak hier zoveel mappen aan als u wilt, om uw bestanden te ordenen.",
"fm_categoryError": "Kan de geselecteerde categorie niet openen. De hoofdmap wordt weergegeven.",
"fm_selectError": "Kan het bedoelde element niet selecteren. Als het probleem aanhoudt, probeer dan de pagina te herladen.",
"fm_contextMenuError": "Kan het context menu voor dat element niet openen. Als het probleem aanhoudt, probeer dan de pagina te herladen.",
"fm_creation": "Aanmaak",
"fm_lastAccess": "Laatste toegang",
"fm_ownedPadsName": "Eigendom",
"debug_getGraphText": "Dit is de DOT-code om een grafiek van de geschiedenis van dit document te genereren:",
"debug_getGraph": "Krijg de code om een grafiek van de geschiedenis van dit document te genereren",
"poll_descriptionHint": "Beschrijf uw enquête en gebruik de ✓ (publiceer) knop als u klaar bent.\nDe beschrijving kan met markdown-syntax geschreven worden en u kunt media elementen integreren van uw CryptDrive.\nIedereen met de link kan de beschrijving veranderen, maar dit raden wij af.",
"poll_wizardDescription": "Maak automatisch een aantal opties aan, door een willekeurig aantal data en tijden in te voeren",
"poll_subtitle": "Zero Knowledge <em>onvertraagd</em> inplannen",
"poll_title": "Zero Knowledge Datumprikker"
} }

@ -230,7 +230,6 @@
"register_mustAcceptTerms": "Você precisa aceitar os termos de serviço.", "register_mustAcceptTerms": "Você precisa aceitar os termos de serviço.",
"register_mustRememberPass": "Nós não podemos restaurar sua senha caso você a esqueça. É muito importante que você lembre-se dela! Clique nesta caixa de seleção para confirmar que você compreendeu isto.", "register_mustRememberPass": "Nós não podemos restaurar sua senha caso você a esqueça. É muito importante que você lembre-se dela! Clique nesta caixa de seleção para confirmar que você compreendeu isto.",
"register_header": "Bem vindo ao CryptPad", "register_header": "Bem vindo ao CryptPad",
"register_explanation": "<p>Lets go over a couple things first</p><ul><li>Your password is your secret key which encrypts all of your pads. If you lose it there is no way we can recover your data.</li><li>You can import pads which were recently viewed in your browser so you have them in your account.</li><li>If you are using a shared computer, you need to log out when you are done, closing the tab is not enough.</li></ul>",
"register_writtenPassword": "I have written down my username and password, proceed", "register_writtenPassword": "I have written down my username and password, proceed",
"register_cancel": "Go back", "register_cancel": "Go back",
"register_warning": "Zero Knowledge means that we can't recover your data if you lose your password.", "register_warning": "Zero Knowledge means that we can't recover your data if you lose your password.",

@ -209,7 +209,6 @@
"register_mustAcceptTerms": "Trebuie să accepți termenii serviciului", "register_mustAcceptTerms": "Trebuie să accepți termenii serviciului",
"register_mustRememberPass": "Nu putem să îți resetăm parola dacă o uiți. Este foarte important să o ții minte! Bifează căsuța pentru a confirma.", "register_mustRememberPass": "Nu putem să îți resetăm parola dacă o uiți. Este foarte important să o ții minte! Bifează căsuța pentru a confirma.",
"register_header": "Bine ai venit în CryptPad", "register_header": "Bine ai venit în CryptPad",
"register_explanation": "<p>Hai să stabilim câteva lucruri, mai întâi</p><ul><li>Parola ta este cheia secretă care criptează toate pad-urile tale. Dacă pierzi/uiți parola nu există nici-o metodă prin care îți putem recupera datele.</li><li>Poți importa pad-uri care au fost vizionate recent în browser pentru a le avea în cont.</li><li>Dacă folosești un computer împărțit, trebuie să te deloghezi, închiderea taburilor nu este de ajuns.</li></ul>",
"register_writtenPassword": "Mi-am notat numele de utilizator și parola, înaintează.", "register_writtenPassword": "Mi-am notat numele de utilizator și parola, înaintează.",
"register_cancel": "Întoarce-te", "register_cancel": "Întoarce-te",
"register_warning": "Zero Knowledge înseamnă că noi nu îți putem recupera datele dacă îți pierzi parola.", "register_warning": "Zero Knowledge înseamnă că noi nu îți putem recupera datele dacă îți pierzi parola.",

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save