Autostore base

pull/1/head
yflory 6 years ago
parent 294fa38137
commit e8a5244362

@ -0,0 +1,75 @@
@import (reference) "./colortheme-all.less";
.corner_main() {
--LessLoader_require: LessLoader_currentFile();
};
& {
@corner-button-ok: #2c9b00;
@corner-button-cancel: #990000;
@keyframes appear {
0% {
transform: scale(0.1);
}
100% {
transform: scale(1.0);
}
}
.cp-corner-container {
position: absolute;
right: 0;
bottom: 0;
width: 300px;
height: 200px;
border-top-left-radius: 200px;
padding: 15px;
text-align: right;
background-color: @colortheme_logo-1;
color: @colortheme_base;
z-index: 999;
scale: 0.1;
transform-origin: bottom right;
animation: appear 0.8s ease-in-out;
.cp-corner-filler {
float: left;
clear: left;
height: 21px;
}
.cp-corner-text {
}
.cp-corner-actions {
min-height: 30px;
margin: 15px auto;
display: inline-block;
}
.cp-corner-footer {
font-style: italic;
font-size: 0.8em;
}
button {
color: white;
border: 0px;
padding: 5px;
color: @colortheme_base;
&.cp-corner-primary {
background-color: @corner-button-ok;
font-weight: bold;
&:hover {
background-color: lighten(@corner-button-ok, 10%);
}
}
&.cp-corner-cancel {
background-color: @corner-button-cancel;
margin-left: 10px;
&:hover {
background-color: lighten(@corner-button-cancel, 10%);
}
}
}
}
}

@ -2,6 +2,7 @@
@import (reference) "./toolbar.less"; @import (reference) "./toolbar.less";
@import (reference) './fileupload.less'; @import (reference) './fileupload.less';
@import (reference) './alertify.less'; @import (reference) './alertify.less';
@import (reference) './corner.less';
@import (reference) './tokenfield.less'; @import (reference) './tokenfield.less';
@import (reference) './creation.less'; @import (reference) './creation.less';
@import (reference) './tippy.less'; @import (reference) './tippy.less';
@ -27,6 +28,7 @@
@color: @color @color: @color
); );
.alertify_main(); .alertify_main();
.corner_main();
.fileupload_main(); .fileupload_main();
.tokenfield_main(); .tokenfield_main();
.tippy_main(); .tippy_main();
@ -60,6 +62,7 @@
); );
.fileupload_main(); .fileupload_main();
.alertify_main(); .alertify_main();
.corner_main();
.tippy_main(); .tippy_main();
.checkmark_main(20px); .checkmark_main(20px);
.password_main(); .password_main();

@ -1226,5 +1226,11 @@ define(function () {
out.sharedFolders_create_password = "Folder password"; out.sharedFolders_create_password = "Folder password";
out.sharedFolders_share = "Share this URL with other registered users to give them access to the shared folder. Once they open this URL, the shared folder will be added to the root directory of their CryptDrive."; out.sharedFolders_share = "Share this URL with other registered users to give them access to the shared folder. Once they open this URL, the shared folder will be added to the root directory of their CryptDrive.";
// Manual pad storage popup
out.manual_notstored = "This pad is not stored in your drive. Do you want to store it now?"; // XXX
out.manual_settings = "You can enable automatic pad storage in your Settings page!"; // XXX
out.manual_store = "Store";
out.manual_hide = "Don't store";
return out; return out;
}); });

@ -879,5 +879,37 @@ define([
UI.createRadio = Pages.createRadio; UI.createRadio = Pages.createRadio;
UI.cornerPopup = function (text, actions, footer) {
// XXX create "minimize" icon
var popup = h('div.cp-corner-container', [
h('div.cp-corner-filler', { style: "width:130px;" }),
h('div.cp-corner-filler', { style: "width:90px;" }),
h('div.cp-corner-filler', { style: "width:60px;" }),
h('div.cp-corner-filler', { style: "width:40px;" }),
h('div.cp-corner-filler', { style: "width:20px;" }),
h('div.cp-corner-text', text),
h('div.cp-corner-actions', actions),
h('div.cp-corner-footer', footer)
]);
var hide = function () {
$(popup).hide();
};
var show = function () {
$(popup).show();
};
var deletePopup = function () {
$(popup).remove();
};
$('body').append(popup);
return {
hide: hide,
show: show,
delete: deletePopup
};
};
return UI; return UI;
}); });

@ -2308,5 +2308,39 @@ define([
$(password).find('.cp-password-input').focus(); $(password).find('.cp-password-input').focus();
}; };
var storePopupState = false;
UIElements.displayStorePadPopup = function (common) {
if (storePopupState) { return; }
storePopupState = true;
var text = Messages.manual_notstored;
var footer = Messages.manual_settings;
var hide = h('button.cp-corner-cancel', Messages.manual_hide);
var store = h('button.cp-corner-primary', Messages.manual_store);
var actions = h('div', [
store,
hide,
]);
console.log(text, footer);
var modal = UI.cornerPopup(text, actions, footer);
$(hide).click(function () {
modal.delete();
});
$(store).click(function () {
modal.delete();
common.getSframeChannel().query("Q_AUTOSTORE_STORE", null, function (err, obj) {
if (err || (obj && obj.error)) {
console.error(err || obj.error);
return void UI.warn("Error"); // XXX
}
UI.log("Saved"); // XXX
});
});
};
return UIElements; return UIElements;
}); });

@ -547,7 +547,7 @@ define([
postMessage("SET_PAD_TITLE", data, function (obj) { postMessage("SET_PAD_TITLE", data, function (obj) {
if (obj && obj.error) { if (obj && obj.error) {
console.log("unable to set pad title"); if (obj.error !== "EAUTH") { console.log("unable to set pad title"); }
return void cb(obj.error); return void cb(obj.error);
} }
cb(); cb();
@ -925,6 +925,10 @@ define([
common.loading = {}; common.loading = {};
common.loading.onDriveEvent = Util.mkEvent(); common.loading.onDriveEvent = Util.mkEvent();
// (Auto)store pads
common.autoStore = {};
common.autoStore.onStoreRequest = Util.mkEvent();
common.getFullHistory = function (data, cb) { common.getFullHistory = function (data, cb) {
postMessage("GET_FULL_HISTORY", data, cb); postMessage("GET_FULL_HISTORY", data, cb);
}; };
@ -1060,7 +1064,9 @@ define([
// Account deletion // Account deletion
DELETE_ACCOUNT: common.startAccountDeletion, DELETE_ACCOUNT: common.startAccountDeletion,
// Loading // Loading
LOADING_DRIVE: common.loading.onDriveEvent.fire LOADING_DRIVE: common.loading.onDriveEvent.fire,
// AutoStore
AUTOSTORE_DISPLAY_POPUP: common.autoStore.onStoreRequest.fire,
}; };
common.hasCSSVariables = function () { common.hasCSSVariables = function () {

@ -765,22 +765,32 @@ define([
// Add the pad if it does not exist in our drive // Add the pad if it does not exist in our drive
if (!contains) { if (!contains) {
var roHref; var autoStore = Util.find(store.proxy, ['settings', 'general', 'autostore']);
if (h.mode === "view") { if (autoStore !== 1 && !data.forceSave && !data.path) {
roHref = href; // XXX
href = undefined; // send event to inner to display the corner popup
postMessage(clientId, "AUTOSTORE_DISPLAY_POPUP", {
autoStore: autoStore
});
return void cb({error: "EAUTH"});
} else {
var roHref;
if (h.mode === "view") {
roHref = href;
href = undefined;
}
Store.addPad(clientId, {
href: href,
roHref: roHref,
channel: channel,
title: title,
owners: owners,
expire: expire,
password: data.password,
path: data.path
}, cb);
return;
} }
Store.addPad(clientId, {
href: href,
roHref: roHref,
channel: channel,
title: title,
owners: owners,
expire: expire,
password: data.password,
path: data.path
}, cb);
return;
} else { } else {
sendDriveEvent('DRIVE_CHANGE', { sendDriveEvent('DRIVE_CHANGE', {
path: ['drive', UserObject.FILES_DATA] path: ['drive', UserObject.FILES_DATA]

@ -93,7 +93,8 @@ define([
path: path, path: path,
password: password, password: password,
channel: id, channel: id,
owners: metadata.owners owners: metadata.owners,
// XXX FORCESAVE ??
}; };
common.setPadTitle(data, function (err) { common.setPadTitle(data, function (err) {
if (err) { return void console.error(err); } if (err) { return void console.error(err); }

@ -358,6 +358,22 @@ define([
setDocumentTitle(); setDocumentTitle();
}); });
Cryptpad.autoStore.onStoreRequest.reg(function (data) {
sframeChan.event("EV_AUTOSTORE_DISPLAY_POPUP", data);
});
sframeChan.on('Q_AUTOSTORE_STORE', function (obj, cb) {
var data = {
password: password,
title: currentTitle,
channel: secret.channel,
path: initialPathInDrive, // Where to store the pad if we don't have it in our drive
forceSave: true
};
Cryptpad.setPadTitle(data, function (err) {
cb(err);
});
});
sframeChan.on('Q_SETTINGS_SET_DISPLAY_NAME', function (newName, cb) { sframeChan.on('Q_SETTINGS_SET_DISPLAY_NAME', function (newName, cb) {
Cryptpad.setDisplayName(newName, function (err) { Cryptpad.setDisplayName(newName, function (err) {
@ -399,6 +415,7 @@ define([
Cryptpad.saveAsTemplate(Cryptget.put, data, cb); Cryptpad.saveAsTemplate(Cryptget.put, data, cb);
}); });
// Messaging
sframeChan.on('Q_SEND_FRIEND_REQUEST', function (netfluxId, cb) { sframeChan.on('Q_SEND_FRIEND_REQUEST', function (netfluxId, cb) {
Cryptpad.inviteFromUserlist(netfluxId, cb); Cryptpad.inviteFromUserlist(netfluxId, cb);
}); });
@ -411,6 +428,7 @@ define([
sframeChan.event('EV_FRIEND_REQUEST', data); sframeChan.event('EV_FRIEND_REQUEST', data);
}); });
// History
sframeChan.on('Q_GET_FULL_HISTORY', function (data, cb) { sframeChan.on('Q_GET_FULL_HISTORY', function (data, cb) {
var crypto = Crypto.createEncryptor(secret.keys); var crypto = Crypto.createEncryptor(secret.keys);
Cryptpad.getFullHistory({ Cryptpad.getFullHistory({
@ -452,6 +470,7 @@ define([
}); });
}); });
// Store
sframeChan.on('Q_GET_PAD_ATTRIBUTE', function (data, cb) { sframeChan.on('Q_GET_PAD_ATTRIBUTE', function (data, cb) {
var href; var href;
if (readOnly && hashes.editHash) { if (readOnly && hashes.editHash) {

@ -452,6 +452,10 @@ define([
UI.errorLoadingScreen($err, true, true); UI.errorLoadingScreen($err, true, true);
}); });
ctx.sframeChan.on('EV_AUTOSTORE_DISPLAY_POPUP', function () {
UIElements.displayStorePadPopup(funcs);
});
ctx.metadataMgr.onReady(waitFor()); ctx.metadataMgr.onReady(waitFor());
}).nThen(function () { }).nThen(function () {
try { try {

@ -254,4 +254,7 @@ define({
// Get all existing tags // Get all existing tags
'Q_GET_ALL_TAGS': true, 'Q_GET_ALL_TAGS': true,
// Store pads in the drive
'EV_AUTOSTORE_DISPLAY_POPUP': true,
'Q_AUTOSTORE_STORE': true,
}); });

Loading…
Cancel
Save