Merge branch 'staging' into ro

pull/1/head
yflory 5 years ago
commit e0a1b8724b

@ -1,3 +1,48 @@
# Dodo release (v3.3.0)
## Goals
We've continued to prioritize the development of team-centric features in CryptPad. This release was focused on stabilizing the code for Teams and making them available to the users.
## Update notes
This is a pretty basic release:
1. stop your server
2. pull the latest source code
3. install the latest serverside dependencies with `npm install`
4. install the latest clientside dependencies with `bower update`
5. restart your server
Note: we've updated our Nginx configuration to fix any missing trailing slash in the URL for the newest applications: https://github.com/xwiki-labs/cryptpad/commit/d4e5b98c140c28417e008379ec7af7cdc235792b
## Features
* You can now create _Teams_ in CryptPad. They're available from a new _Teams_ application and provide a full CryptDrive that can be shared between multiple users.
* Each team has a list of members. There are currently 3 different access level for team members:
* Members: can add, delete and edit pads from the team
* Admins: can also invite their CryptPad friends to the team, kick members and promote members as "Admin"
* Owners: can also promote admins as "Owner", change the team name or avatar and delete the team
* Each team has its own storage limit (50 MB by default, the same as user accounts).
* A chat is available to all the team members
* Pads created from the team's drive will be stored in this drive. If they are created as _owned_ pads, they will be ownedcc by the team.
* You can share pads or folders from your drive with one of your teams and you can store pads or folders from your team to your personal drive.
* Each user can be a member of up to 3 teams. A user can't create a new Team if they are already _Owner_ of another one.
* We've done some server improvements to save CPU usage.
* We've also improved to the messenger module to save CPU and memory in the client.
* The support panel (administrator side) now provides more debugging information about the users who ask for help
* A link to the new CryptPad survey (https://survey.cryptpad.fr/index.php/672782?lang=en) has been added to the user menu
* This link can be changed or removed using the "surveyURL" key in `/customize/application_config.js`. An empty value will remove the link from the menu.
## Bug fixes
* We've fixed an issue preventing users to remove owned empty channels from the server
* Adding and editing new items to the kanban boards will now update the correct item from the board
* We've fixed an issue with shared folders loaded by unregistered users
* The default title is now always set in newly created polls
* Desktop notifications will now be displayed only once per connection to the server and not once per CryptPad tab in the browser
* The button to download a spreadsheet from the drive has been removed. This feature is not available yet and the button was doing nothing.
# Chilihueque release (v3.2.0)
## Goals

@ -103,7 +103,7 @@ define([
])*/
])
]),
h('div.cp-version-footer', "CryptPad v3.2.0 (Chilihueque)")
h('div.cp-version-footer', "CryptPad v3.3.0 (Dodo)")
]);
};

@ -48,7 +48,6 @@
flex: 0;
}
span.cp-sidebarlayout-category-name {
//margin-left: 5px;
padding-left: 5px;
white-space: nowrap;
overflow: hidden;

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

@ -1141,6 +1141,9 @@ define([
//hide.push('download');
hide.push('openincode');
}
if ($element.is('.cp-border-color-sheet')) {
hide.push('download');
}
if ($element.is('.cp-app-drive-element-file')) {
// No folder in files
hide.push('color');

@ -30,10 +30,19 @@ define(['/api/config'], function (ApiConfig) {
icon = DEFAULT_ALT;
}
return new Notification(title,{
var n = new Notification(title,{
icon: icon,
body: msg,
});
n.onclick = function () {
if (!document) { return; }
try {
parent.focus();
window.focus(); //just in case, older browsers
this.close();
} catch (e) {}
};
return n;
};
Module.system = function (msg, title, icon) {

@ -906,7 +906,8 @@ define([
emit: emit,
friendsClients: [],
channels: {},
validateKeys: {}
validateKeys: {},
range_requests: {}
};

@ -655,8 +655,8 @@ define([
if (err) { console.error(err); }
}));
}).nThen(function () {
cb();
closeTeam(ctx, teamId);
cb();
});
};

@ -12,7 +12,8 @@
"media": "Multimèdia",
"todo": "Tasques",
"contacts": "Contactes",
"sheet": "Full (Beta)"
"sheet": "Full (Beta)",
"teams": "Equips"
},
"button_newpad": "Nou document",
"button_newcode": "Nova pàgina de codi",
@ -40,7 +41,7 @@
"error": "Error",
"saved": "Desat",
"synced": "S'ha desat tot",
"deleted": "Document esborrat del vostre CryptDrive",
"deleted": "Esborrat",
"deletedFromServer": "Document esborrat del servidor",
"mustLogin": "Cal que inicieu la sessió per accedir a aquesta pàgina",
"disabledApp": "Aquesta aplicació està dehabilitada. Per a més informació, contacteu l'administració d'aquest CryptPad.",
@ -481,5 +482,30 @@
"settings_importDone": "S'ha acabat la importació",
"settings_autostoreTitle": "Emmagatzematge de documents a CryptDrive",
"edit": "Edita",
"autostore_sf": "Carpeta"
"autostore_sf": "Carpeta",
"padNotPinnedVariable": "Aquest document caducarà després de {4} dies d'inactivitat, {0}inicieu una sessió{1} o {2}registreu-vos{3} per conservar-lo.",
"uploadFolderButton": "Carregar una carpeta",
"fm_morePads": "Més",
"fc_color": "Canvia el color",
"fc_openInCode": "Obrir a l'editor de codi",
"fc_expandAll": "Desplega-ho tot",
"fc_collapseAll": "Plega-ho tot",
"register_emailWarning0": "Sembla que heu introduït la vostra adreça electrònica com identificador.",
"register_emailWarning1": "Podeu continuar, però aquestes dades no són necessàries i no s'enviaran al nostre servidor.",
"register_emailWarning2": "No podreu restablir la vostra contrasenya utilitzant la vostra adreça electrònica, com en molts altres serveis.",
"register_emailWarning3": "Si això us ha quedat clar i voleu seguir utilitzant la vostra adreça electrònica com identificador, cliqueu D'acord.",
"settings_autostoreHint": "L'emmagatzematge <b>Automàtic</b> dels documents permet de desar tots els documents que visiteu dins el vostre CryptDrive, sense que hàgiu de fer res de la vostra part.<br>L'emmagatzematge <b>Manual (sense preguntar)</b> permet que no es desin els documents automàticament. Sempre hi haurà l'opció de desar-los, però restarà oculta.",
"settings_autostoreYes": "Automàtic",
"settings_autostoreNo": "Manual (sense preguntar)",
"settings_autostoreMaybe": "Manual (preguntar sempre)",
"settings_userFeedbackTitle": "Retroacció",
"settings_userFeedbackHint1": "CryptPad pot enviar retroaccions molt limitades al servidor, de forma que ens permeti millorar l'experiència dels usuaris. ",
"settings_userFeedbackHint2": "El contingut dels vostres documents i les claus de desxifrat no es compartiran mai amb el servidor.",
"settings_userFeedback": "Activar l'enviament de retroaccions",
"settings_deleteTitle": "Supressió del compte",
"settings_deleteHint": "La supressió del vostre compte és permanent. El vostre CryptDrive i la vostra llista de documents seran suprimits del servidor. La resta de documents serà suprimida després de 90 dies d'inactivitat si ningú els ha desat al seu CryptDrive.",
"settings_deleteButton": "Suprimir el vostre compte",
"settings_deleteModal": "Envieu la següent informació a qui administri el vostre CryptPad per tal que les vostres dades siguin esborrades del servidor.",
"settings_deleteConfirm": "Segur que voleu suprimir el vostre compte? Aquesta acció és irreversible.",
"settings_deleted": "El vostre compte ha estat suprimit. Premeu D'acord per tornar a la pàgina inicial."
}

@ -1215,5 +1215,10 @@
"team_deleteConfirm": "Du bist gerade dabei, alle Daten eines Teams zu löschen. Andere Teammitglieder können dann möglicherweise nicht mehr auf ihre Daten zugreifen. Dies kann nicht rückgängig gemacht werden. Bist du sicher, dass du fortfahren möchtest?",
"team_pendingOwner": "(ausstehend)",
"team_pendingOwnerTitle": "Dieser Administrator hat dein Angebot auf Eigentümerschaft noch nicht akzeptiert.",
"team_demoteMeConfirm": "Du bist gerade dabei, deine Rechte aufzugeben. Dies kann nicht rückgängig gemacht werden. Bist du sicher?"
"team_demoteMeConfirm": "Du bist gerade dabei, deine Rechte aufzugeben. Dies kann nicht rückgängig gemacht werden. Bist du sicher?",
"crowdfunding_button2": "CryptPad unterstützen",
"survey": "CryptPad-Umfrage",
"team_title": "Team: {0}",
"team_quota": "Speicherplatzbegrenzung deines Teams",
"drive_quota": "Deine Speicherplatzbegrenzung"
}

@ -58,12 +58,6 @@
.cp-leftside-narrow {
.cp-avatar {
overflow: visible;
media-tag {
margin-right: 0;
}
span.cp-sidebarlayout-category-name {
margin-left: 3px;
}
}
}
.cp-team-cat-header {
@ -73,15 +67,20 @@
justify-content: center;
font-size: 20px;
}
media-tag, .cp-avatar-default {
margin-right: 3px;
}
media-tag {
order: -1;
margin-right: 3px;
}
cursor: default !important;
font-size: 18px;
&:hover {
background-color: transparent !important;
}
span.cp-sidebarlayout-category-name {
padding-left: 5px;
}
}
.cp-team-cat-chat {
span.cp-team-chat-notification {
@ -132,6 +131,10 @@
}
.cp-team-avatar {
.avatar_main(300px);
.cp-avatar img {
max-width: 100%;
max-height: 100%;
}
}
.cp-team-roster {
.avatar_main(50px);

@ -378,7 +378,7 @@ define([
refreshList(common, cb);
});
makeBlock('create', function (common, cb) {
var refreshCreate = function (common, cb) {
var metadataMgr = common.getMetadataMgr();
var privateData = metadataMgr.getPrivateData();
var content = [];
@ -406,17 +406,21 @@ define([
content.push(h('br'));
content.push(h('br'));
content.push(button);
var $spinner = $('<span>', {'class': 'fa fa-spinner fa-pulse'}).hide();
content.push($spinner[0]);
var state = false;
$(button).click(function () {
if (state) { return; }
var name = $(input).val();
if (!name.trim()) { return; }
state = true;
$spinner.show();
APP.module.execCommand('CREATE_TEAM', {
name: name
}, function (obj) {
if (obj && obj.error) {
console.error(obj.error);
$spinner.hide();
return void UI.warn(Messages.error);
}
// Redraw the create block
@ -428,15 +432,15 @@ define([
refreshList(common, function (content) {
state = false;
$div.append(content);
$spinner.hide();
$('div.cp-team-cat-list').click();
});
});
});
cb(content);
});
makeBlock('back', function (common, cb) {
refreshList(common, cb);
};
makeBlock('create', function (common, cb) {
refreshCreate(common, cb);
});
makeBlock('drive', function (common, cb) {
@ -967,10 +971,17 @@ define([
metadataMgr.onChange(function () {
var $div = $('div.cp-team-list');
if (!$div.length) { return; }
refreshList(common, function (content) {
$div.empty().append(content);
});
if ($div.length) {
refreshList(common, function (content) {
$div.empty().append(content);
});
}
var $divCreate = $('div.cp-team-create');
if ($divCreate.length) {
refreshCreate(common, function (content) {
$divCreate.empty().append(content);
});
}
});
var onDisconnect = function (noAlert) {

Loading…
Cancel
Save