diff --git a/customize.dist/src/less2/include/modals-ui-elements.less b/customize.dist/src/less2/include/modals-ui-elements.less index 24e5d725f..79964e888 100644 --- a/customize.dist/src/less2/include/modals-ui-elements.less +++ b/customize.dist/src/less2/include/modals-ui-elements.less @@ -29,6 +29,7 @@ color: @cryptpad_text_col; } + // teams invite modal .cp-teams-invite-block { display: flex; align-items: center; @@ -37,7 +38,16 @@ flex: 1; } } + .cp-teams-invite-message { + resize: none; + } .cp-teams-invite-alert { - margin-top: 15px; + margin-top: 10px; + } + .cp-teams-invite-spinner { + font-size: 1.2em; + .fa { + margin-right: 10px;; + } } } diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 7fda20229..366931b24 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -1640,15 +1640,14 @@ define([ // Invite from link var dismissButton = h('span.fa.fa-times'); var linkContent = h('div.cp-share-modal', [ - h('p', 'XXX Invite link description...'), // XXX - linkError = h('div.alert.alert-danger', {style : 'display: none;'}), + h('p', Messages.team_inviteLinkTitle ), // XXX linkForm = h('div.cp-teams-invite-form', [ linkName = h('input', { - placeholder: 'name...' // XXX + placeholder: Messages.team_inviteLinkTempName // XXX }), h('br'), h('div.cp-teams-invite-block', [ - h('span', 'password protection...'), // XXX + h('span', Messages.team_inviteLinkSetPassword), // XXX h('a.cp-teams-help.fa.fa-question-circle', { href: origin + '/faq.html#security-pad_password', target: "_blank", @@ -1657,30 +1656,32 @@ define([ ]), // XXX linkPassword = UI.passwordInput({ id: 'cp-teams-invite-password', - placeholder: 'password...' // XXX + placeholder: Messages.login_password // XXX }), h('div.cp-teams-invite-block', - h('span', 'add a note') // XXX + h('span', Messages.team_inviteLinkNote) // XXX ), - linkMessage = h('textarea', { // XXX ansuz hitting enter submits... - placeholder: 'note...' // XXX + linkMessage = h('textarea.cp-teams-invite-message', { // XXX ansuz hitting enter submits... + placeholder: Messages.team_inviteLinkNoteMsg, // XXX + rows: 3 }) ]), - linkSpin = h('div', { + linkSpin = h('div.cp-teams-invite-spinner', { style: 'display: none;' }, [ h('i.fa.fa-spinner.fa-spin'), - linkSpinText = h('span', 'Scrypt...') // XXX + linkSpinText = h('span', Messages.team_inviteLinkLoading) // XXX ]), linkResult = h('div', { style: 'display: none;' }, h('textarea', { readonly: 'readonly' })), + linkError = h('div.alert.alert-danger.cp-teams-invite-alert', {style : 'display: none;'}), linkWarning = h('div.cp-teams-invite-alert.alert.alert-warning.dismissable', { style: "display: none;" }, [ - h('span.cp-inline-alert-text', 'Warning...'), + h('span.cp-inline-alert-text', Messages.team_inviteLinkWarning), dismissButton ]) // XXX ]); @@ -1706,7 +1707,7 @@ define([ var hashData = Hash.parseTypeHash('invite', hash); href = origin + '/teams/#' + hash; if (!name || !name.trim()) { - $(linkError).text('empty name...').show(); // XXX + $(linkError).text(Messages.team_inviteLinkErrorName).show(); // XXX return true; } @@ -1724,7 +1725,7 @@ define([ bytes64 = _bytes; })); }).nThen(function (waitFor) { - $(linkSpinText).text('Add invite link to team'); // XXX + $(linkSpinText).text(Messages.team_inviteLinkAdding); // XXX module.execCommand('CREATE_INVITE_LINK', { name: name, password: pw, @@ -1754,14 +1755,14 @@ define([ keys: [27] }, { className: 'primary cp-teams-invite-create', - name: 'CREATE LINK', // XXX + name: Messages.team_inviteLinkCreate, // XXX onClick: function () { return process(); }, keys: [13] }, { className: 'primary cp-teams-invite-copy', - name: 'COPY LINK', // XXX + name: Messages.team_inviteLinkCopy, // XXX onClick: function () { if (!href) { return; } var success = Clipboard.copy(href); diff --git a/www/common/invitation.js b/www/common/invitation.js index 7c92d83c6..882eadffe 100644 --- a/www/common/invitation.js +++ b/www/common/invitation.js @@ -96,7 +96,7 @@ var factory = function (Hash, Crypt, Nacl, Scrypt/*, Util, Cred, nThen */) { '/bower_components/tweetnacl/nacl-fast.min.js', '/bower_components/scrypt-async/scrypt-async.min.js', ], function (Hash, Crypt /*, Nacl, Scrypt */) { - return factory(Hash, Crypt, window.nacl, window.Scrypt); + return factory(Hash, Crypt, window.nacl, window.scrypt); }); } }()); diff --git a/www/common/translations/messages.de.json b/www/common/translations/messages.de.json index b92c21309..8eba3e0f7 100644 --- a/www/common/translations/messages.de.json +++ b/www/common/translations/messages.de.json @@ -1251,5 +1251,13 @@ "share_linkPasswordAlert": "Dieses Element ist passwortgeschützt. Wenn du diesen Link teilst, muss der Empfänger das Passwort eingeben.", "share_contactPasswordAlert": "Dieses Element ist passwortgeschützt. Weil du es mit einem CryptPad-Kontakt teilst, muss der Empfänger das Passwort nicht eingeben.", "share_embedPasswordAlert": "Dieses Element ist passwortgeschützt. Wenn du dieses Pad einbettest, werden Betrachter nach dem Passwort gefragt.", - "passwordFaqLink": "Mehr über Passwörter erfahren" + "passwordFaqLink": "Mehr über Passwörter erfahren", + "share_noContactsLoggedIn": "Du hast noch keine Kontakte bei CryptPad. Teile den Link zu deinem Profil, damit andere dir Kontaktanfragen senden können.", + "share_copyProfileLink": "Profil-Link kopieren", + "share_noContactsNotLoggedIn": "Logge dich ein oder registriere dich, um deine Kontakte zu sehen und neue hinzuzufügen.", + "contacts_mute": "", + "contacts_unmute": "", + "contacts_manageMuted": "", + "contacts_mutedUsers": "", + "contacts_muteInfo": "" } diff --git a/www/common/translations/messages.fi.json b/www/common/translations/messages.fi.json index 2c63c0851..fb9a12fde 100644 --- a/www/common/translations/messages.fi.json +++ b/www/common/translations/messages.fi.json @@ -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": "Yhteys palvelimelle katkennut
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 Esc-näppäintä 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.
Paina Esc-näppäintä jatkaaksesi padin katselua vain luku-tilassa, tai lataa sivu uudelleen yrittääksesi muokkaamista.", + "invalidHashError": "Pyytämäsi dokumentin URL-osoite on virheellinen." } diff --git a/www/common/translations/messages.fr.json b/www/common/translations/messages.fr.json index cac8d471b..aa8065bee 100644 --- a/www/common/translations/messages.fr.json +++ b/www/common/translations/messages.fr.json @@ -1254,5 +1254,20 @@ "passwordFaqLink": "En lire plus sur les mots de passe", "share_noContactsLoggedIn": "Vous n'avez pas encore ajouté de contacts sur CryptPad. Partagez le lien de votre profil pour que l'on vous envoie des demandes de contact.", "share_copyProfileLink": "Copier le lien du profil", - "share_noContactsNotLoggedIn": "Connectez-vous ou enregistrez-vous pour voir vos contacts ou en ajouter de nouveaux." + "share_noContactsNotLoggedIn": "Connectez-vous ou enregistrez-vous pour voir vos contacts ou en ajouter de nouveaux.", + "contacts_mute": "Masquer", + "contacts_unmute": "Réafficher", + "contacts_manageMuted": "Comptes masqués", + "contacts_mutedUsers": "Comptes masqués", + "contacts_muteInfo": "Vous ne receverez plus de notifications ou de messages si vous masquez ce compte.
L'utilisateur ne sera pas informé que vous l'avez masqué. ", + "team_inviteLinkTitle": "Créer une invitation personnalisée à cette équipe", + "team_inviteLinkTempName": "Nom temporaire (apparaît dans la liste des invitations en cours)", + "team_inviteLinkSetPassword": "Protégez le lien avec un mot de passe (recommandé)", + "team_inviteLinkNote": "Ajoutez un message personnalisé", + "team_inviteLinkNoteMsg": "Ce message sera affiché avant que le destinataire décide de rejoindre cette équipe.", + "team_inviteLinkLoading": "Lien en cours de création", + "team_inviteLinkWarning": "La première personne qui accédera à ce lien pourra devenir membre de l'équipe et voir son contenu. Partagez le avec prudence.", + "team_inviteLinkErrorName": "Merci de donner un nom à cette invitation", + "team_inviteLinkCreate": "CRÉER LIEN", + "team_inviteLinkCopy": "COPIER LIEN" } diff --git a/www/common/translations/messages.json b/www/common/translations/messages.json index 9a505391c..4dfb5143b 100644 --- a/www/common/translations/messages.json +++ b/www/common/translations/messages.json @@ -1254,5 +1254,20 @@ "passwordFaqLink": "Read more about passwords", "share_noContactsLoggedIn": "You are not connected with anyone on CryptPad yet. Share the link to your profile for people to send you contact requests.", "share_copyProfileLink": "Copy profile link", - "share_noContactsNotLoggedIn": "Log in or register to see your existing contacts and add new ones." + "share_noContactsNotLoggedIn": "Log in or register to see your existing contacts and add new ones.", + "contacts_mute": "Mute", + "contacts_unmute": "Unmute", + "contacts_manageMuted": "Manage muted", + "contacts_mutedUsers": "Muted accounts", + "contacts_muteInfo": "You will not receive any notifications or messages from muted users.
They will not know you have muted them. ", + "team_inviteLinkTitle": "Create a personalized invitation to this team", + "team_inviteLinkTempName": "temporary name (visible in pending invitations list)", + "team_inviteLinkSetPassword": "Protect the link with a password (recommended)", + "team_inviteLinkNote": "Add a personal message", + "team_inviteLinkNoteMsg": "This message will be shown before the recipient decides whether to join this team.", + "team_inviteLinkLoading": "Generating your link", + "team_inviteLinkWarning": "The first person to access this link will be able to join this team and view its contents. Share it carefully.", + "team_inviteLinkErrorName": "Please give this invitation a name", + "team_inviteLinkCreate": "CREATE LINK", + "team_inviteLinkCopy": "COPY LINK" }