Merge branch 'staging' of github.com:xwiki-labs/cryptpad into staging

pull/1/head
ansuz 7 years ago
commit 0ed6846e07

@ -129,6 +129,7 @@ define(function () {
out.saveTemplatePrompt = "Choisir un titre pour ce modèle"; out.saveTemplatePrompt = "Choisir un titre pour ce modèle";
out.templateSaved = "Modèle enregistré !"; out.templateSaved = "Modèle enregistré !";
out.selectTemplate = "Sélectionner un modèle ou appuyer sur Échap"; out.selectTemplate = "Sélectionner un modèle ou appuyer sur Échap";
out.useTemplate = "Vous posséder des modèles pour ce type de pad, souhaitez-vous en utiliser un?";
out.previewButtonTitle = "Afficher ou cacher la prévisualisation de Markdown"; out.previewButtonTitle = "Afficher ou cacher la prévisualisation de Markdown";

@ -131,6 +131,7 @@ define(function () {
out.saveTemplatePrompt = "Choose a title for the template"; out.saveTemplatePrompt = "Choose a title for the template";
out.templateSaved = "Template saved!"; out.templateSaved = "Template saved!";
out.selectTemplate = "Select a template or press escape"; out.selectTemplate = "Select a template or press escape";
out.useTemplate = "You have available templates for that type of pad. Do you want to use one?";
out.previewButtonTitle = "Display or hide the Markdown preview mode"; out.previewButtonTitle = "Display or hide the Markdown preview mode";

@ -81,6 +81,7 @@ nThen((waitFor) => {
sema.take((returnAfter) => { sema.take((returnAfter) => {
Fs.stat(f, waitFor(returnAfter((err, st) => { Fs.stat(f, waitFor(returnAfter((err, st) => {
if (err) { throw err; } if (err) { throw err; }
st.filename = f;
dsFileStats[f.replace(/^.*\/([^\/\.]*)(\.ndjson)?$/, (all, a) => (a))] = st; dsFileStats[f.replace(/^.*\/([^\/\.]*)(\.ndjson)?$/, (all, a) => (a))] = st;
}))); })));
}); });
@ -118,18 +119,27 @@ nThen((waitFor) => {
}).nThen(() => { }).nThen(() => {
if (process.argv.indexOf('--unpinned') > -1) { if (process.argv.indexOf('--unpinned') > -1) {
const ot = process.argv.indexOf('--olderthan'); const ot = process.argv.indexOf('--olderthan');
let before = 0; let before = Infinity;
if (ot > -1) { if (ot > -1) {
before = new Date(process.argv[ot+1]); before = new Date(process.argv[ot+1]);
if (isNaN(before)) { if (isNaN(before)) {
throw new Error('--olderthan error [' + process.argv[ot+1] + '] not a valid date'); throw new Error('--olderthan error [' + process.argv[ot+1] + '] not a valid date');
} }
} }
const bot = process.argv.indexOf('--blobsolderthan');
let blobsbefore = before;
if (bot > -1) {
blobsbefore = new Date(process.argv[bot+1]);
if (isNaN(blobsbefore)) {
throw new Error('--blobsolderthan error [' + process.argv[bot+1] + '] not a valid date');
}
}
Object.keys(dsFileStats).forEach((f) => { Object.keys(dsFileStats).forEach((f) => {
if (!(f in pinned)) { if (!(f in pinned)) {
if ((+dsFileStats[f].mtime) >= before) { return; } const isBlob = dsFileStats[f].filename.indexOf('.ndjson') === -1;
console.log("./datastore/" + f.slice(0,2) + "/" + f + ".ndjson " + if ((+dsFileStats[f].mtime) >= ((isBlob) ? blobsbefore : before)) { return; }
dsFileStats[f].size + " " + (+dsFileStats[f].mtime)); console.log(dsFileStats[f].filename + " " + dsFileStats[f].size + " " +
(+dsFileStats[f].mtime));
} }
}); });
} else { } else {

@ -442,27 +442,37 @@ define([
UI.openTemplatePicker = function (common) { UI.openTemplatePicker = function (common) {
var metadataMgr = common.getMetadataMgr(); var metadataMgr = common.getMetadataMgr();
var type = metadataMgr.getMetadataLazy().type; var type = metadataMgr.getMetadataLazy().type;
var first = true; // We can only pick a template once (for a new document) var sframeChan = common.getSframeChannel();
var fileDialogCfg = {
onSelect: function (data) { var onConfirm = function (yes) {
if (data.type === type && first) { if (!yes) { return; }
Cryptpad.addLoadingScreen({hideTips: true}); var first = true; // We can only pick a template once (for a new document)
var sframeChan = common.getSframeChannel(); var fileDialogCfg = {
sframeChan.query('Q_TEMPLATE_USE', data.href, function () { onSelect: function (data) {
first = false; if (data.type === type && first) {
Cryptpad.removeLoadingScreen(); Cryptpad.addLoadingScreen({hideTips: true});
common.feedback('TEMPLATE_USED'); sframeChan.query('Q_TEMPLATE_USE', data.href, function () {
}); first = false;
return; Cryptpad.removeLoadingScreen();
common.feedback('TEMPLATE_USED');
});
return;
}
} }
} };
}; common.initFilePicker(fileDialogCfg);
common.initFilePicker(common, fileDialogCfg); var pickerCfg = {
var pickerCfg = { types: [type],
types: [type], where: ['template']
where: ['template'] };
common.openFilePicker(pickerCfg);
}; };
common.openFilePicker(common, pickerCfg);
sframeChan.query("Q_TEMPLATE_EXIST", type, function (err, data) {
if (data) {
Cryptpad.confirm(Messages.useTemplate, onConfirm);
}
});
}; };
return UI; return UI;

@ -297,6 +297,10 @@ define([
sframeChan.on('Q_TEMPLATE_USE', function (href, cb) { sframeChan.on('Q_TEMPLATE_USE', function (href, cb) {
Cryptpad.useTemplate(href, Cryptget, cb); Cryptpad.useTemplate(href, Cryptget, cb);
}); });
sframeChan.on('Q_TEMPLATE_EXIST', function (type, cb) {
var hasTemplate = Cryptpad.listTemplates(type).length > 0;
cb(hasTemplate);
});
CpNfOuter.start({ CpNfOuter.start({
sframeChan: sframeChan, sframeChan: sframeChan,

@ -104,6 +104,8 @@ define({
// Template picked, replace the content of the pad // Template picked, replace the content of the pad
'Q_TEMPLATE_USE': true, 'Q_TEMPLATE_USE': true,
// Check if we have template(s) for the selected pad type
'Q_TEMPLATE_EXIST': true,
// File upload queries and events // File upload queries and events
'Q_UPLOAD_FILE': true, 'Q_UPLOAD_FILE': true,

Loading…
Cancel
Save