From 8a07b66843fa9898f2a45c87ce0f9ed341096783 Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 15 Jun 2021 11:45:54 +0200 Subject: [PATCH] Add default content and default template to forms --- www/common/common-ui-elements.js | 3 ++ www/common/sframe-common-outer.js | 66 +++++++++++++++++++++---------- www/common/sframe-common.js | 3 +- www/form/inner.js | 8 +++- 4 files changed, 57 insertions(+), 23 deletions(-) diff --git a/www/common/common-ui-elements.js b/www/common/common-ui-elements.js index 7ae0b4a61..8d9f3fbd1 100644 --- a/www/common/common-ui-elements.js +++ b/www/common/common-ui-elements.js @@ -2450,6 +2450,7 @@ define([ 'title': name, }).appendTo($container); $span.data('id', obj.id); + if (obj.content) { $span.data('content', obj.content); } if (idx === selected) { $span.addClass('cp-creation-template-selected'); } if (!obj.thumbnail) { $span.append(obj.icon || h('span.cptools.cptools-template')); @@ -2605,6 +2606,7 @@ define([ var $template = $creation.find('.cp-creation-template-selected'); var templateId = $template.data('id') || undefined; + var templateContent = $template.data('content') || undefined; // Team var team; if (teamValue) { @@ -2617,6 +2619,7 @@ define([ password: passwordVal, expire: expireVal, templateId: templateId, + templateContent: templateContent, team: team }; }; diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index d1e08efb7..b0759b5ec 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -1478,28 +1478,45 @@ define([ return 'thumbnail-' + parsed.type + '-' + channel; }; sframeChan.on('Q_CREATE_TEMPLATES', function (type, cb) { - Cryptpad.getSecureFilesList({ - types: [type], - where: ['template'] - }, function (err, data) { - // NOTE: Never return data directly! - if (err) { return void cb({error: err}); } - - var res = []; - nThen(function (waitFor) { - Object.keys(data).map(function (el) { - var k = getKey(data[el].href, data[el].channel); - Utils.LocalStore.getThumbnail(k, waitFor(function (e, thumb) { - res.push({ - id: el, - name: data[el].filename || data[el].title || '?', - thumbnail: thumb, - used: data[el].used || 0 + var templates; + nThen(function (waitFor) { + var next = waitFor(); + require([ + '/'+type+'/templates.js' + ], function (Templates) { + templates = Templates; + next(); + }, function () { + next(); + }); + }).nThen(function () { + Cryptpad.getSecureFilesList({ + types: [type], + where: ['template'] + }, function (err, data) { + // NOTE: Never return data directly! + if (err) { return void cb({error: err}); } + var res = []; + nThen(function (waitFor) { + Object.keys(data).map(function (el) { + var k = getKey(data[el].href, data[el].channel); + Utils.LocalStore.getThumbnail(k, waitFor(function (e, thumb) { + res.push({ + id: el, + name: data[el].filename || data[el].title || '?', + thumbnail: thumb, + used: data[el].used || 0 + }); + })); + }); + }).nThen(function () { + if (Array.isArray(templates)) { + templates.forEach(function (obj) { + res.push(obj); }); - })); + } + cb({data: res}); }); - }).nThen(function () { - cb({data: res}); }); }); }); @@ -1892,6 +1909,7 @@ define([ Utils.rtConfig = rtConfig; var templatePw; nThen(function(waitFor) { + if (data.templateContent) { return; } if (data.templateId) { if (data.templateId === -1) { isTemplate = true; @@ -1905,6 +1923,14 @@ define([ } }).nThen(function () { var cryptputCfg = $.extend(true, {}, rtConfig, {password: password}); + if (data.templateContent) { + Cryptget.put(currentPad.hash, JSON.stringify(data.templateContent), function () { + console.error(arguments); + startRealtime(); + cb(); + }, cryptputCfg); + return; + } if (data.template) { // Start OO with a template... // Cryptget and give href, password and content to inner diff --git a/www/common/sframe-common.js b/www/common/sframe-common.js index 4da01a0dd..3fd4869d1 100644 --- a/www/common/sframe-common.js +++ b/www/common/sframe-common.js @@ -458,7 +458,8 @@ define([ password: cfg.password, team: cfg.team, template: cfg.template, - templateId: cfg.templateId + templateId: cfg.templateId, + templateContent: cfg.templateContent }, cb); }; diff --git a/www/form/inner.js b/www/form/inner.js index 8a8cc33f0..9cc093f3c 100644 --- a/www/form/inner.js +++ b/www/form/inner.js @@ -2579,11 +2579,14 @@ define([ if (APP.isEditor) { if (!content.form) { - content.form = {}; + content.form = { + "1": { type: 'md' }, + "2": { type: 'radio' } + }; framework.localChange(); } if (!content.order) { - content.order = []; + content.order = ["1", "2"]; framework.localChange(); } if (!content.answers || !content.answers.channel || !content.answers.publicKey || !content.answers.validateKey) { @@ -2594,6 +2597,7 @@ define([ }; framework.localChange(); } + checkIntegrity(); } sframeChan.event('EV_FORM_PIN', {channel: content.answers.channel});