Add templates to pad2

This commit is contained in:
yflory 2017-08-21 18:21:53 +02:00
parent 8d020833af
commit f40d2c0b20
6 changed files with 54 additions and 30 deletions

View File

@ -1061,6 +1061,19 @@ define([
}
});
};
var saveAsTemplate = common.saveAsTemplate = function (Cryptput, data, cb) {
var p = parsePadUrl(window.location.href);
if (!p.type) { return; }
var hash = createRandomHash();
var href = '/' + p.type + '/#' + hash;
Cryptput(hash, data.toSave, function (e) {
if (e) { throw new Error(e); }
common.addTemplate(makePad(href, data.title));
whenRealtimeSyncs(getStore().getProxy().info.realtime, function () {
cb();
});
});
};
common.createButton = function (type, rightside, data, callback) {
var button;
var size = "17px";
@ -1149,17 +1162,12 @@ define([
console.error("Parse error while setting the title", e);
}
}
var p = parsePadUrl(window.location.href);
if (!p.type) { return; }
var hash = createRandomHash();
var href = '/' + p.type + '/#' + hash;
data.Crypt.put(hash, toSave, function (e) {
if (e) { throw new Error(e); }
common.addTemplate(makePad(href, title));
whenRealtimeSyncs(getStore().getProxy().info.realtime, function () {
common.alert(Messages.templateSaved);
common.feedback('TEMPLATE_CREATED');
});
saveAsTemplate(data.Crypt.put, {
title: title,
toSave: toSave
}, function () {
common.alert(Messages.templateSaved);
common.feedback('TEMPLATE_CREATED');
});
};
common.prompt(Messages.saveTemplatePrompt, title || document.title, todo);

View File

@ -32,6 +32,8 @@ define([], function () {
};
metadataLazyObj = JSON.parse(JSON.stringify(metadataObj));
}
if (!metadataObj.users) { metadataObj.users = {}; }
if (!metadataLazyObj.users) { metadataLazyObj.users = {}; }
var mdo = {};
// We don't want to add our user data to the object multiple times.
//var containsYou = false;

View File

@ -138,11 +138,11 @@ define([
}
break;
case 'template':
if (!AppConfig.enableTemplates) { return; }
//if (!AppConfig.enableTemplates) { return; }
button = $('<button>', {
title: Messages.saveTemplateButton,
}).append($('<span>', {'class':'fa fa-bookmark', style: 'font:'+size+' FontAwesome'}));
if (data.rt && data.Crypt) {
if (data.rt) {
button
.click(function () {
var title = data.getTitle() || document.title;
@ -172,20 +172,15 @@ define([
console.error("Parse error while setting the title", e);
}
}
var p = parsePadUrl(window.location.href);
if (!p.type) { return; }
var hash = createRandomHash();
var href = '/' + p.type + '/#' + hash;
data.Crypt.put(hash, toSave, function (e) {
if (e) { throw new Error(e); }
common.addTemplate(makePad(href, title));
whenRealtimeSyncs(getStore().getProxy().info.realtime, function () {
common.alert(Messages.templateSaved);
common.feedback('TEMPLATE_CREATED');
});
ctx.sframeChan.query('Q_SAVE_AS_TEMPLATE', {
title: title,
toSave: toSave
}, function () {
Cryptpad.alert(Messages.templateSaved);
funcs.feedback('TEMPLATE_CREATED');
});
};
common.prompt(Messages.saveTemplatePrompt, title || document.title, todo);
Cryptpad.prompt(Messages.saveTemplatePrompt, title, todo);
});
}
break;

View File

@ -69,5 +69,9 @@ define({
// Callback is called when the FULL_HISTORY_END message is received in the outside.
'Q_GET_FULL_HISTORY': true,
// When a (full) history message is received from the server.
'EV_RT_HIST_MESSAGE': true
'EV_RT_HIST_MESSAGE': true,
// Save a pad as a template using the toolbar button
'Q_SAVE_AS_TEMPLATE': true,
});

View File

@ -539,6 +539,15 @@ define([
var $hist = common.createButton('history', true, {histConfig: histConfig});
$drawer.append($hist);
//if (!Cryptpad.isTemplate(window.location.href)) {
var templateObj = {
rt: info.realtime,
getTitle: function () { return metadataMgr.getMetadata().title; }
};
var $templateButton = common.createButton('template', true, templateObj);
$rightside.append($templateButton);
//}
/* add an export button */
var $export = Cryptpad.createButton('export', true, {}, exportFile);
$drawer.append($export);
@ -641,7 +650,7 @@ define([
}*/
/* add a history button */
var histConfig = {
/*var histConfig = {
onLocal: realtimeOptions.onLocal,
onRemote: realtimeOptions.onRemote,
setHistory: setHistory,
@ -650,7 +659,7 @@ define([
};
var $hist = Cryptpad.createButton('history', true, {histConfig: histConfig});
$drawer.append($hist);
*/
/* save as template */
if (!Cryptpad.isTemplate(window.location.href)) {
var templateObj = {

View File

@ -1,8 +1,9 @@
define([
'/api/config',
'jquery',
'/common/requireconfig.js'
], function (ApiConfig, $, RequireConfig) {
'/common/requireconfig.js',
'/common/cryptget.js'
], function (ApiConfig, $, RequireConfig, Cryptget) {
$(function () {
var req = {
cfg: RequireConfig,
@ -136,6 +137,11 @@ define([
Cryptpad.moveToTrash(cb);
});
sframeChan.on('Q_SAVE_AS_TEMPLATE', function (data, cb) {
Cryptpad.saveAsTemplate(Cryptget.put, data, cb);
});
sframeChan.on('Q_GET_FULL_HISTORY', function (data, cb) {
var network = Cryptpad.getNetwork();
var hkn = network.historyKeeper;