Merge remote-tracking branch 'origin/5.2-candidate' into 5.2-candidate

This commit is contained in:
David Benque 2022-12-13 11:39:12 +00:00
commit 8a2f71a573
5 changed files with 538 additions and 274 deletions

730
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@
"@mcrowe/minibloom": "^0.2.0",
"chainpad-crypto": "^0.2.5",
"chainpad-server": "^5.1.0",
"express": "~4.16.0",
"express": "~4.18.2",
"fs-extra": "^7.0.0",
"get-folder-size": "^2.0.1",
"netflux-websocket": "^0.1.20",

View File

@ -171,10 +171,12 @@ define([
var data;
// apparently some browser extensions send messages to random targets
// which can trigger parse errors that interrupt normal behaviour
// we therefore log a warning and ignore any messages we can't parse
try {
data = typeof(msg.data) === "object" ? msg.data : JSON.parse(msg.data);
} catch (err) {
console.error(err);
console.warn(err);
return;
}
if (typeof(data.ack) !== "undefined") {
if (acks[data.txid]) { acks[data.txid](!data.ack); }

View File

@ -1571,8 +1571,10 @@
"form_answer_new": "Soumettre de nouveau",
"form_deleteAll": "Tout supprimer",
"form_responseNotification": "Nouvelles réponses au formulaire : <b>{0}</b>",
"form_alreadyAnsweredMult": "Vous avez répondu à ce formulaire sur :",
"form_exportJSON": "Exporter au format JSON",
"team_inviteUses": "Nombre d'utilisations autorisées pour ce lien (0 = sans limite)",
"team_inviteRole": "Rôle initial"
"form_alreadyAnsweredMult": "Réponses précédentes à ce formulaire :",
"form_exportJSON": "Exporter en JSON",
"team_inviteUses": "Utilisations autorisées pour ce lien (0 = sans limite)",
"team_inviteRole": "Rôle initial",
"team_linkUses": "({0}/{1} restant)",
"team_linkUsesInfinite": "(usages illimités)"
}

View File

@ -2686,37 +2686,45 @@ define([
$timeline.append(makeTimeline(answers));
var controls = h('div.cp-form-creator-results-controls');
var $controls = $(controls).appendTo($container);
var exportButton = h('button.btn.btn-primary', [
h('i.fa.fa-download'),
Messages.form_exportCSV
]);
$(exportButton).appendTo($controls);
var results = h('div.cp-form-creator-results-content');
var $results = $(results).appendTo($container);
$(exportButton).click(function () {
var csv = Exporter.results(content, answers, TYPES, getFullOrder(content));
if (!csv) { return void UI.warn(Messages.error); }
var suggestion = APP.framework._.title.suggestTitle('cryptpad-document');
var title = Util.fixFileName(suggestion) + '.csv';
window.saveAs(new Blob([csv], {
type: 'text/csv'
}), title);
});
// Export JSON
var exportJSONButton = h('button.btn.btn-primary', [
h('i.cptools.cptools-code'),
Messages.form_exportJSON
]);
$(exportJSONButton).appendTo($controls);
$(exportJSONButton).click(function () {
var arr = Exporter.results(content, answers, TYPES, getFullOrder(content), "json");
if (!arr) { return void UI.warn(Messages.error); }
window.saveAs(new Blob([arr], {
type: 'application/json'
}), title+".json");
});
var options = [{
tag: 'a',
attributes: {'class': 'cp-form-export-csv fa fa-table'},
content: h('span', Messages.form_exportCSV),
action: function () {
var csv = Exporter.results(content, answers, TYPES, getFullOrder(content));
if (!csv) { return void UI.warn(Messages.error); }
var suggestion = APP.framework._.title.suggestTitle('cryptpad-document');
var title = Util.fixFileName(suggestion) + '.csv';
window.saveAs(new Blob([csv], {
type: 'text/csv'
}), title);
},
}, {
tag: 'a',
attributes: {'class': 'cp-form-export-json cptools cptools-code'},
content: h('span', Messages.form_exportJSON),
action: function () {
var arr = Exporter.results(content, answers, TYPES, getFullOrder(content), "json");
if (!arr) { return void UI.warn(Messages.error); }
window.saveAs(new Blob([arr], {
type: 'application/json'
}), title+".json");
},
}];
var dropdownExport = {
buttonContent: [
h('i.fa.fa-download'),
h('span', Messages.exportButton)
],
buttonCls: 'btn btn-primary',
options: options, // Entries displayed in the menu
common: framework._.sfCommon
};
var $exp = UIElements.createDropdown(dropdownExport);
$exp.appendTo($controls);
// Export in "sheet"
var export2Button = h('button.btn.btn-primary', [
@ -4857,7 +4865,7 @@ define([
framework.feedback('FORM_PARTICIPANT');
}
APP.common.getPadMetadata({channel: content.answers.channel}, function (md) {
APP.common.getPadMetadata({channel: priv.channel}, function (md) {
var owners = md.owners;
if (!Array.isArray(owners) || !owners.length) {
APP.isOwned = false;