Merge branch 'soon' of github.com:xwiki-labs/cryptpad into soon
commit
3be7a387b4
@ -0,0 +1,129 @@
|
|||||||
|
@import (reference) "./colortheme-all.less";
|
||||||
|
@import (reference) "./variables.less";
|
||||||
|
|
||||||
|
.buttons_main() {
|
||||||
|
@alertify-fore: @colortheme_modal-fg;
|
||||||
|
@alertify-btn-fg: @alertify-fore;
|
||||||
|
@alertify-light-bg: fade(@alertify-fore, 25%);
|
||||||
|
@alertify_padding-base: @variables_padding;
|
||||||
|
@alertify-input-bg: @colortheme_modal-input;
|
||||||
|
@alertify-input-fg: @colortheme_modal-input-fg;
|
||||||
|
|
||||||
|
input:not(.form-control), textarea {
|
||||||
|
background-color: @alertify-input-fg;
|
||||||
|
color: @cryptpad_text_col;
|
||||||
|
border: 1px solid @alertify-input-bg;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 100%;
|
||||||
|
padding: @alertify_padding-base;
|
||||||
|
&[readonly] {
|
||||||
|
background-color: @alertify-light-bg;
|
||||||
|
color: @cryptpad_text_col;
|
||||||
|
border-color: @alertify-input-fg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 8px;
|
||||||
|
&[readonly] {
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
button:not(.pure-button):not(.md-button):not(.mdl-button) {
|
||||||
|
|
||||||
|
background-color: @colortheme_alertify-cancel;
|
||||||
|
box-sizing: border-box;
|
||||||
|
outline: 0;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 6px;
|
||||||
|
line-height: 36px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 14px;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 0;
|
||||||
|
|
||||||
|
.fa {
|
||||||
|
margin-right: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
color: @alertify-btn-fg;
|
||||||
|
border: 1px solid @alertify-btn-fg;
|
||||||
|
|
||||||
|
&.no-margin {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover, &:active {
|
||||||
|
background-color: lighten(@alertify-fore, 35%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.safe, &.danger, &.btn-safe, &.btn-danger {
|
||||||
|
color: @colortheme_old-base;
|
||||||
|
white-space: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
&.danger, &.btn-danger {
|
||||||
|
background-color: @colortheme_alertify-red;
|
||||||
|
border-color: @colortheme_alertify-red-border;
|
||||||
|
color: @colortheme_alertify-red-color;
|
||||||
|
&:hover, &:active {
|
||||||
|
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, &:active {
|
||||||
|
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-green, 10%), lighten(@colortheme_alertify-green, 10%));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.primary, &.btn-primary {
|
||||||
|
background-color: @colortheme_alertify-primary;
|
||||||
|
color: @colortheme_alertify-primary-text;
|
||||||
|
border-color: @colortheme_alertify-primary-border;
|
||||||
|
font-weight: bold;
|
||||||
|
&:hover, &:active {
|
||||||
|
background-color: contrast(@colortheme_modal-bg, darken(@colortheme_alertify-primary, 10%), lighten(@colortheme_alertify-primary, 10%));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.cancel, &.btn-cancel {
|
||||||
|
border-color: @colortheme_alertify-cancel-border;
|
||||||
|
color: @colortheme_alertify-cancel-border;
|
||||||
|
&:hover, &:hover {
|
||||||
|
background-color: fade(@colortheme_alertify-cancel-border, 25%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
//border: 1px dotted @alertify-base;
|
||||||
|
box-shadow: 0px 0px 5px @colortheme_alertify-primary;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
&::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
cursor: not-allowed !important;
|
||||||
|
background-color: @colortheme_alertify-disabled;
|
||||||
|
color: @colortheme_alertify-disabled-text;
|
||||||
|
border-color: @colortheme_alertify-disabled-border;
|
||||||
|
&:hover, &:active {
|
||||||
|
background-color: @colortheme_alertify-disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
(function () {
|
||||||
|
var factory = function (Util, Nacl, Scrypt) {
|
||||||
|
var Invite = {};
|
||||||
|
|
||||||
|
Invite.deriveSeeds = function (safeSeed) {
|
||||||
|
// take the hash of the provided seed
|
||||||
|
var seed = safeSeed.replace(/\-/g, '/');
|
||||||
|
var u8_seed = Nacl.hash(Nacl.util.decodeBase64(seed));
|
||||||
|
|
||||||
|
// hash the first half again for scrypt's input
|
||||||
|
var subseed1 = Nacl.hash(u8_seed.subarray(0, 32));
|
||||||
|
// hash the remainder for the invite content
|
||||||
|
var subseed2 = Nacl.hash(u8_seed.subarray(32));
|
||||||
|
|
||||||
|
return {
|
||||||
|
scrypt: Nacl.util.encodeBase64(subseed1),
|
||||||
|
preview: Nacl.util.encodeBase64(subseed2),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Invite.deriveSalt = function (password, instance_salt) {
|
||||||
|
return (password || '') + (instance_salt || '');
|
||||||
|
};
|
||||||
|
|
||||||
|
// seed => bytes64
|
||||||
|
Invite.deriveBytes = function (scrypt_seed, salt, cb) {
|
||||||
|
Scrypt(scrypt_seed,
|
||||||
|
salt,
|
||||||
|
8, // memoryCost (n)
|
||||||
|
1024, // block size parameter (r)
|
||||||
|
192, // dkLen
|
||||||
|
200, // interruptStep
|
||||||
|
cb,
|
||||||
|
'base64'); // format, could be 'base64'
|
||||||
|
};
|
||||||
|
|
||||||
|
return Invite;
|
||||||
|
};
|
||||||
|
if (typeof(module) !== 'undefined' && module.exports) {
|
||||||
|
module.exports = factory(
|
||||||
|
require("../common-util"),
|
||||||
|
require("tweetnacl/nacl-fast"),
|
||||||
|
require("scrypt-async")
|
||||||
|
);
|
||||||
|
} else if ((typeof(define) !== 'undefined' && define !== null) && (define.amd !== null)) {
|
||||||
|
define([
|
||||||
|
'/common/common-util.js',
|
||||||
|
'/bower_components/tweetnacl/nacl-fast.min.js',
|
||||||
|
'/bower_components/scrypt-async/scrypt-async.min.js',
|
||||||
|
], function (Util) {
|
||||||
|
return factory(Util, window.nacl, window.scrypt);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}());
|
@ -1,2 +1,37 @@
|
|||||||
{
|
{
|
||||||
|
"type": {
|
||||||
|
"pad": "Teksti",
|
||||||
|
"code": "Koodi",
|
||||||
|
"poll": "Kysely",
|
||||||
|
"kanban": "Kanban",
|
||||||
|
"slide": "Esitys",
|
||||||
|
"drive": "CryptDrive",
|
||||||
|
"whiteboard": "Tussitaulu",
|
||||||
|
"file": "Tiedosto",
|
||||||
|
"media": "Media",
|
||||||
|
"todo": "Tehtävälista",
|
||||||
|
"contacts": "Yhteystiedot",
|
||||||
|
"sheet": "Taulukko (Beta)",
|
||||||
|
"teams": "Teams"
|
||||||
|
},
|
||||||
|
"button_newpad": "Uusi Teksti-padi",
|
||||||
|
"button_newcode": "Uusi Koodi-padi",
|
||||||
|
"button_newpoll": "Uusi Kysely",
|
||||||
|
"button_newslide": "Uusi Esitys",
|
||||||
|
"button_newwhiteboard": "Uusi Tussitaulu",
|
||||||
|
"button_newkanban": "Uusi Kanban",
|
||||||
|
"button_newsheet": "Uusi Taulukko",
|
||||||
|
"common_connectionLost": "<b>Yhteys palvelimelle katkennut</b><br>Sovellus on vain luku-tilassa, kunnes yhteys palaa.",
|
||||||
|
"websocketError": "Yhdistäminen websocket-palvelimelle epäonnistui...",
|
||||||
|
"typeError": "Tämä padi ei ole yhteensopiva valitun sovelluksen kanssa",
|
||||||
|
"onLogout": "Olet kirjautunut ulos, {0}klikkaa tästä{1} kirjautuaksesi sisään tai paina <em>Esc-näppäintä</em> käyttääksesi padia vain luku-tilassa.",
|
||||||
|
"wrongApp": "Reaaliaikaisen sisällön näyttäminen selaimessa epäonnistui. Ole hyvä ja yritä sivun lataamista uudelleen.",
|
||||||
|
"padNotPinned": "Tämä padi vanhenee kolmen kuukauden käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai [2}rekisteröidy{3} säilyttääksesi sen.",
|
||||||
|
"padNotPinnedVariable": "Tämä padi vanhenee {4} päivän käyttämättömyyden jälkeen, {0}kirjaudu sisään{1} tai {2}rekisteröidy{3} säilyttääksesi sen.",
|
||||||
|
"anonymousStoreDisabled": "Tämän CryptPad-instanssin ylläpitäjä on estänyt anonyymien käyttäjien pääsyn tallennustilaan. Kirjaudu sisään käyttääksesi CryptDrivea.",
|
||||||
|
"expiredError": "Tämä padi on vanhentunut, eikä se ole enää saatavilla.",
|
||||||
|
"deletedError": "Tämä padi on poistettu omistajansa toimesta, eikä se ole enää saatavilla.",
|
||||||
|
"inactiveError": "Tämä padi on poistettu käyttämättömyyden vuoksi. Paina Esc-näppäintä luodaksesi uuden padin.",
|
||||||
|
"chainpadError": "Sisältöä päivitettäessä tapahtui vakava virhe. Tämä sivu on vain luku-tilassa, jotta tekemäsi muutokset eivät katoaisi.<br>Paina <em>Esc-näppäintä</em> jatkaaksesi padin katselua vain luku-tilassa, tai lataa sivu uudelleen yrittääksesi muokkaamista.",
|
||||||
|
"invalidHashError": "Pyytämäsi dokumentin URL-osoite on virheellinen."
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue