merge changes from soon

This commit is contained in:
ansuz
2016-11-03 16:05:02 +01:00
19 changed files with 964 additions and 367 deletions

View File

@@ -12,10 +12,6 @@
<p data-localization="bottom_france">
</p>
</div>
<!--
<div class="bottom-bar-center">
<p><a href="https://github.com/xwiki-labs/cryptpad">Fork me on GitHub</a></p>
</div> -->
<div class="bottom-bar-right">
<p data-localization="bottom_support">
</p>

View File

@@ -10,6 +10,11 @@ define([
var main = function () {
var url = window.location.pathname;
var isHtml = /\.html/.test(url) || url === '/' || url === '';
var isPoll = /\/poll\//.test(url);
if (!isHtml && !isPoll) {
Messages._applyTranslation();
return;
}
$.ajax({
url: isHtml ? '/customize/BottomBar.html' : '/customize/Header.html',
success: function (ret) {

View File

@@ -17,6 +17,7 @@
</div>
<div class="bottom-bar-right">
<p data-localization="header_xwiki" class="small">
<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer"><img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>
<p data-localization="header_support" class="big">
</p>
</div>

View File

@@ -40,7 +40,7 @@
<div id="main">
<center>
<img class="imgcenter cryptofist" src="/customize/cryptofist_small.png" />
<h1>Unity is Strength - Collaboration is Key</h1>
<h1 data-localization="main_slogan">Unity is Strength - Collaboration is Key</h1>
</center>
<p data-localization="main_p1"><!-- Zero Knowledge collaborative realtime editor. Protected from the NSA. --></p>

View File

@@ -20,8 +20,8 @@ define(['/bower_components/jquery/dist/jquery.min.js'], function() {
return getStoredLanguage() || getBrowserLanguage();
};
var main = out.main = function () {
var selector = $('#language-selector');
var main = out.main = function ($select) {
var selector = $select || $('#language-selector');
if (!selector.length) { return; }
// Select the current language in the list

View File

@@ -24,6 +24,16 @@ define(['/customize/languageSelector.js',
messages = $.extend(true, {}, Default, map[language]);
}
// messages_languages return the available translations and their name in an object :
// { "en": "English", "fr": "French", ... }
messages._languages = {
'en': Default._languageName
};
for (var l in map) {
messages._languages[l] = map[l]._languageName || l;
}
messages._initSelector = LS.main;
messages._checkTranslationState = function () {
var missing = [];
Object.keys(map).forEach(function (code) {
@@ -35,6 +45,10 @@ define(['/customize/languageSelector.js',
missing.push(warning);
}
});
if (typeof(translation._languageName) !== 'string') {
var warning = 'key [_languageName] is missing from translation [' + code + ']';
missing.push(warning);
}
});
return missing;
};

View File

@@ -14,8 +14,8 @@
.unselectable;
color: #666;
font-weight: bold;
font: normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;
color: #000;
display: inline-block;
width: 100%;
z-index: 9001;
@@ -33,13 +33,13 @@
color: #000;
}
&.cryptpad-lag {
float: right;
float: left;
line-height: 26px;
margin: 2px 0px 2px 4px;
margin: 2px 0px;
}
}
button, .rightside-element {
button, select, .rightside-element {
height: 26px;
padding-right: 5px;
padding-left: 5px;
@@ -105,9 +105,128 @@
}
}
.cryptpad-toolbar-top {
display: block;
text-align: center;
height: 32px;
position: relative;
@media screen and (max-width: 400px) {
height: 67px;
}
.cryptpad-title {
.title, .pencilIcon {
font-size: 1.5em;
vertical-align: middle;
line-height: 32px;
}
.pencilIcon {
display: none;
&:hover {
color: #999;
}
span {
cursor: pointer;
}
}
&:not(input):hover {
.editable {
border: 1px solid #888;
border-radius: 2px 0px 0px 2px;
background: white;
padding: 5px;
border-collapse: collapse;
}
.pencilIcon {
cursor: pointer;
border: 1px solid #888;
border-radius: 0px 2px 2px 0px;
background: white;
padding: 5px;
display: inline;
margin-left: -1px;
border-collapse: collapse;
}
}
input {
font-size: 1.5em;
vertical-align: middle;
height: 100%;
box-sizing: border-box;
border: 1px solid black;
background: #fff;
cursor: auto;
width: 300px;
padding: 0px 5px;
}
}
.cryptpad-link {
position: absolute;
left: 0px;
height: 32px;
@media screen and (max-width: 400px) {
top: 35px;
}
@media screen and (min-width: 401px) {
top: 0px;
}
a.cryptpad-logo {
cursor: pointer;
height: 32px;
padding: 0px 5px;
text-decoration: none;
color: inherit;
&:hover {
span {
text-decoration: underline;
}
}
img {
vertical-align: middle;
height: 32px;
cursor: pointer;
}
span {
font-size: 1.5em;
margin-left: 5px;
vertical-align: middle;
cursor: pointer;
}
}
.big {
@media screen and (max-width: 400px) {
display: none;
}
@media screen and (min-width: 401px) {
display: inline-block;
}
}
.small {
@media screen and (max-width: 400px) {
display: inline-block;
}
@media screen and (min-width: 401px) {
display: none;
}
}
}
.cryptpad-user {
position: absolute;
right: 0;
@media screen and (max-width: 400px) {
top: 3em;
}
@media screen and (min-width: 401px) {
top: 0px;
}
}
}
.cryptpad-toolbar-leftside {
float: left;
margin-bottom: -1px;
.cryptpad-user-list {
float: right;
}
.cryptpad-dropdown-container {
position: relative;
display: inline-block;
@@ -130,10 +249,7 @@
white-space: normal;
&.cryptpad-dropdown-users {
text-align:baseline;
.yourself {
font-style: italic;
}
.anonymous {
.yourself, .anonymous, .viewer {
font-style: italic;
}
}
@@ -160,7 +276,6 @@
}
.cryptpad-toolbar-rightside {
text-align: right;
margin-right: 30px;
//float: right;
}
.cryptpad-spinner {
@@ -172,7 +287,7 @@
font-size: 20px;
}
.cryptpad-readonly {
margin-right: 20px;
margin-right: 5px;
font-weight: bold;
text-transform: uppercase;
}

View File

@@ -14,8 +14,8 @@
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
color: #666;
font-weight: bold;
font: normal normal normal 12px Arial, Helvetica, Tahoma, Verdana, Sans-Serif;
color: #000;
display: inline-block;
width: 100%;
z-index: 9001;
@@ -33,11 +33,12 @@
color: #000;
}
.cryptpad-toolbar div.cryptpad-lag {
float: right;
float: left;
line-height: 26px;
margin: 2px 0px 2px 4px;
margin: 2px 0px;
}
.cryptpad-toolbar button,
.cryptpad-toolbar select,
.cryptpad-toolbar .rightside-element {
height: 26px;
padding-right: 5px;
@@ -101,10 +102,137 @@
border: 1px solid #A6A6A6;
border-bottom-color: #979797;
}
.cryptpad-toolbar-top {
display: block;
text-align: center;
height: 32px;
position: relative;
}
@media screen and (max-width: 400px) {
.cryptpad-toolbar-top {
height: 67px;
}
}
.cryptpad-toolbar-top .cryptpad-title .title,
.cryptpad-toolbar-top .cryptpad-title .pencilIcon {
font-size: 1.5em;
vertical-align: middle;
line-height: 32px;
}
.cryptpad-toolbar-top .cryptpad-title .pencilIcon {
display: none;
}
.cryptpad-toolbar-top .cryptpad-title .pencilIcon:hover {
color: #999;
}
.cryptpad-toolbar-top .cryptpad-title .pencilIcon span {
cursor: pointer;
}
.cryptpad-toolbar-top .cryptpad-title:not(input):hover .editable {
border: 1px solid #888;
border-radius: 2px 0px 0px 2px;
background: white;
padding: 5px;
border-collapse: collapse;
}
.cryptpad-toolbar-top .cryptpad-title:not(input):hover .pencilIcon {
cursor: pointer;
border: 1px solid #888;
border-radius: 0px 2px 2px 0px;
background: white;
padding: 5px;
display: inline;
margin-left: -1px;
border-collapse: collapse;
}
.cryptpad-toolbar-top .cryptpad-title input {
font-size: 1.5em;
vertical-align: middle;
height: 100%;
box-sizing: border-box;
border: 1px solid black;
background: #fff;
cursor: auto;
width: 300px;
padding: 0px 5px;
}
.cryptpad-toolbar-top .cryptpad-link {
position: absolute;
left: 0px;
height: 32px;
}
@media screen and (max-width: 400px) {
.cryptpad-toolbar-top .cryptpad-link {
top: 35px;
}
}
@media screen and (min-width: 401px) {
.cryptpad-toolbar-top .cryptpad-link {
top: 0px;
}
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo {
cursor: pointer;
height: 32px;
padding: 0px 5px;
text-decoration: none;
color: inherit;
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo:hover span {
text-decoration: underline;
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo img {
vertical-align: middle;
height: 32px;
cursor: pointer;
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo span {
font-size: 1.5em;
margin-left: 5px;
vertical-align: middle;
cursor: pointer;
}
@media screen and (max-width: 400px) {
.cryptpad-toolbar-top .cryptpad-link .big {
display: none;
}
}
@media screen and (min-width: 401px) {
.cryptpad-toolbar-top .cryptpad-link .big {
display: inline-block;
}
}
@media screen and (max-width: 400px) {
.cryptpad-toolbar-top .cryptpad-link .small {
display: inline-block;
}
}
@media screen and (min-width: 401px) {
.cryptpad-toolbar-top .cryptpad-link .small {
display: none;
}
}
.cryptpad-toolbar-top .cryptpad-user {
position: absolute;
right: 0;
}
@media screen and (max-width: 400px) {
.cryptpad-toolbar-top .cryptpad-user {
top: 3em;
}
}
@media screen and (min-width: 401px) {
.cryptpad-toolbar-top .cryptpad-user {
top: 0px;
}
}
.cryptpad-toolbar-leftside {
float: left;
margin-bottom: -1px;
}
.cryptpad-toolbar-leftside .cryptpad-user-list {
float: right;
}
.cryptpad-toolbar-leftside .cryptpad-dropdown-container {
position: relative;
display: inline-block;
@@ -131,10 +259,9 @@
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users {
text-align: baseline;
}
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users .yourself {
font-style: italic;
}
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users .anonymous {
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users .yourself,
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users .anonymous,
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p.cryptpad-dropdown-users .viewer {
font-style: italic;
}
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown p h2 {
@@ -156,7 +283,6 @@
}
.cryptpad-toolbar-rightside {
text-align: right;
margin-right: 30px;
}
.cryptpad-spinner {
float: left;
@@ -167,7 +293,7 @@
font-size: 20px;
}
.cryptpad-readonly {
margin-right: 20px;
margin-right: 5px;
font-weight: bold;
text-transform: uppercase;
}

View File

@@ -1,7 +1,10 @@
define(function () {
var out = {};
out._languageName = "Français";
out.main_title = "Cryptpad: Editeur collaboratif en temps réel, zero knowledge";
out.main_slogan = "L'unité est la force, la collaboration est la clé";
out.type = {};
out.type.pad = 'Pad';
@@ -26,8 +29,14 @@ define(function () {
out.yourself = "Vous-même";
out.anonymousUsers = "utilisateurs anonymes";
out.anonymousUser = "utilisateur anonyme";
out.share = "Partage";
out.shareView = "URL de lecture seule";
out.shareEdit = "URL d'édition";
out.users = "Utilisateurs";
out.and = "Et";
out.viewer = "lecteur";
out.viewers = "lecteurs";
out.editor = "éditeur";
out.editors = "éditeurs";
out.greenLight = "Tout fonctionne bien";
out.orangeLight = "Votre connexion est lente, ce qui réduit la qualité de l'éditeur";
@@ -51,12 +60,13 @@ define(function () {
out.renameButtonTitle = 'Changer le titre utilisé par ce document dans la page d\'accueil de Cryptpad';
out.renamePrompt = 'Quel titre souhaitez-vous utiliser pour ce document ?';
out.renameConflict = 'Un autre document existe déjà avec le même titre';
out.clickToEdit = 'Cliquer pour modifier';
out.forgetButton = 'OUBLIER';
out.forgetButtonTitle = 'Enlever ce document de la liste en page d\'accueil';
out.forgetPrompt = 'Cliquer sur OK supprimera l\'URL de ce document de la mémoire de votre navigateur (localStorage), êtes-vous sûr ?';
out.shareButton = 'PARTAGER';
out.shareButton = 'Partager';
out.shareButtonTitle = "Copier l'URL dans le presse-papiers";
out.shareSuccess = 'URL copiée dans le presse-papiers';
out.shareFailed = "Échec de la copie de l'URL dans le presse-papiers";
@@ -79,15 +89,17 @@ define(function () {
out.readonlyUrl = 'Document en lecture seule';
out.copyReadOnly = "Copier l'URL dans le presse-papiers";
out.openReadOnly = "Ouvrir dans un nouvel onglet";
out.editing = "éditeur(s)";
out.viewing = "lecteur(s)";
out.editShare = "Partager l'URL";
out.editShare = "Partager l'URL d'édition";
out.editShareTitle = "Copier l'URL d'édition dans le presse-papiers";
out.viewShare = "Partager l'URL de lecture";
out.viewShareTitle = "Copier l'URL d'accès en lecture seule dans le presse-papiers";
out.viewOpen = "Voir dans un nouvel onglet";
out.viewOpenTitle = "Ouvrir le document en lecture seule dans un nouvel onglet";
out.notifyJoined = "{0} a rejoint la session collaborative";
out.notifyRenamed = "{0} a changé son nom en {1}";
out.notifyLeft = "{0} a quitté la session collaborative";
out.disconnectAlert = 'Perte de la connexion au réseau !';
out.tryIt = 'Essayez-le !';
@@ -147,7 +159,7 @@ define(function () {
// index.html
out.main_p1 = 'CryptPad est l\'éditeur collaboratif en temps réel <strong>zero knowledge</strong>. Le chiffrement est effectué depuis votre navigateur, ce qui protège les données contre le serveur, le cloud, et la NSA. La clé de chiffrement est stockée dans l\'<a href="https://fr.wikipedia.org/wiki/Identificateur_de_fragment">identifieur de fragment</a> de l\'URL qui n\'est jamais envoyée au serveur mais est accessible depuis javascript, de sorte qu\'en partageant l\'URL, vous donner l\'accès au pad à ceux qui souhaitent participer.';
out.main_p1 = 'CryptPad est l\'éditeur collaboratif en temps réel <strong>zero knowledge</strong>. Le chiffrement est effectué depuis votre navigateur, ce qui protège les données contre le serveur, le cloud, et la NSA. La clé de chiffrement est stockée dans l\'<a href="https://fr.wikipedia.org/wiki/Identificateur_de_fragment">identifieur de fragment</a> de l\'URL qui n\'est jamais envoyée au serveur mais est accessible depuis javascript, de sorte qu\'en partageant l\'URL, vous donnez l\'accès au pad à ceux qui souhaitent participer.';
out.main_p2 = 'Ce projet utilise l\'éditeur visuel (WYSIWYG) <a href="http://ckeditor.com/">CKEditor</a>, l\'éditeur de code source <a href="https://codemirror.net/">CodeMirror</a>, et le moteur temps-réel <a href="https://github.com/xwiki-contrib/chainpad">ChainPad</a>.';
out.main_howitworks = 'Comment ça fonctionne';
out.main_howitworks_p1 = 'CryptPad utilise une variante de l\'algorithme d\'<a href="https://en.wikipedia.org/wiki/Operational_transformation">Operational transformation</a> qui est capable de trouver un consensus distribué en utilisant une chaîne de bloc Nakamoto, un outil popularisé par le <a href="https://fr.wikipedia.org/wiki/Bitcoin">Bitcoin</a>. De cette manière, l\'algorithme évite la nécessité d\'utiliser un serveur central pour résoudre les conflits d\'édition de l\'Operational Transformation, et sans ce besoin de résolution des conflits le serveur peut rester ignorant du contenu qui est édité dans le pad.';

View File

@@ -1,7 +1,10 @@
define(function () {
var out = {};
out._languageName = 'English';
out.main_title = "Cryptpad: Zero Knowledge, Collaborative Real Time Editing";
out.main_slogan = "Unity is Strength - Collaboration is Key";
out.type = {};
out.type.pad = 'Pad';
@@ -26,8 +29,14 @@ define(function () {
out.yourself = "Yourself";
out.anonymousUsers = "anonymous users";
out.anonymousUser = "anonymous user";
out.share = "Share";
out.shareView = "Read-only URL";
out.shareEdit = "Edit URL";
out.users = "Users";
out.and = "And";
out.viewer = "viewer";
out.viewers = "viewers";
out.editor = "editor";
out.editors = "editors";
out.greenLight = "Everything is working fine";
out.orangeLight = "Your slow connection may impact your experience";
@@ -45,18 +54,19 @@ define(function () {
out.userButton = 'USER';
out.userButtonTitle = 'Change your username';
out.changeNamePrompt = 'Change your name: ';
out.changeNamePrompt = 'Change your name (leave empty to be anonymous): ';
out.renameButton = 'RENAME';
out.renameButtonTitle = 'Change the title under which this document is listed on your home page';
out.renamePrompt = 'How would you like to title this pad?';
out.renameConflict = 'Another pad already has that title';
out.clickToEdit = "Click to edit";
out.forgetButton = 'FORGET';
out.forgetButtonTitle = 'Remove this document from your home page listings';
out.forgetPrompt = 'Clicking OK will remove the URL for this pad from localStorage, are you sure?';
out.shareButton = 'SHARE';
out.shareButton = 'Share';
out.shareButtonTitle = "Copy URL to clipboard";
out.shareSuccess = 'Copied URL to clipboard';
out.shareFailed = "Failed to copy URL to clipboard";
@@ -79,15 +89,17 @@ define(function () {
out.readonlyUrl = 'Read only document';
out.copyReadOnly = "Copy URL to clipboard";
out.openReadOnly = "Open in a new tab";
out.editing = "editing";
out.viewing = "viewing";
out.editShare = "Share";
out.editShare = "Share edit URL";
out.editShareTitle = "Copy the edit URL to clipboard";
out.viewShare = "Share view URL";
out.viewShareTitle = "Copy the read-only URL to clipboard";
out.viewOpen = "View in new tab";
out.viewOpenTitle = "Open the document in read-only mode in a new tab";
out.notifyJoined = "{0} has joined the collaborative session";
out.notifyRenamed = "{0} is now known as {1}";
out.notifyLeft = "{0} has left the collaborative session";
out.disconnectAlert = 'Network connection lost!';
out.tryIt = 'Try it out!';
@@ -204,7 +216,10 @@ define(function () {
// Header.html
out.header_france = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer">With <img class="bottom-bar-heart" src="/customize/heart.png" /> from <img class="bottom-bar-fr" src="/customize/fr.png" title="France" alt="France"/> by <img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
out.header_xwiki = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer"><img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
// TODO Hardcode cause YOLO
//out.header_xwiki = '<a href="http://www.xwiki.com/" target="_blank" rel="noopener noreferrer"><img src="/customize/logo-xwiki.png" alt="XWiki SAS" class="bottom-bar-xwiki"/></a>';
out.header_support = '<a href="http://ng.open-paas.org/" title="OpenPaaS::ng" target="_blank" rel="noopener noreferrer"> <img src="/customize/openpaasng.png" alt="OpenPaaS-ng" class="bottom-bar-openpaas" /></a>';
out.header_logoTitle = 'Go to the main page';