mirror of https://github.com/keeweb/keeweb.git
backup now
This commit is contained in:
parent
314af31951
commit
65606a827d
|
@ -15,6 +15,7 @@ var Backbone = require('backbone'),
|
|||
IdGenerator = require('../util/id-generator'),
|
||||
Logger = require('../util/logger'),
|
||||
FeatureDetector = require('../util/feature-detector'),
|
||||
Format = require('../util/format'),
|
||||
AutoType = require('../auto-type');
|
||||
|
||||
require('../mixins/protected-value-ex');
|
||||
|
@ -771,6 +772,25 @@ var AppModel = Backbone.Model.extend({
|
|||
fileInfo.set('backup', backup);
|
||||
}
|
||||
this.fileInfos.save();
|
||||
},
|
||||
|
||||
backupFile: function(file, data, callback) {
|
||||
let opts = file.get('opts');
|
||||
let backup = file.get('backup');
|
||||
let logger = new Logger('sync', file.get('name'));
|
||||
if (!backup || !backup.storage || !backup.path) {
|
||||
return callback('Invalid backup settings');
|
||||
}
|
||||
let path = backup.path.replace('{date}', Format.dtStrFs(new Date()));
|
||||
logger.info('Backup file to', backup.storage, path);
|
||||
Storage[backup.storage].save(path, opts, data, (err) => {
|
||||
if (err) {
|
||||
logger.error('Backup error', err);
|
||||
} else {
|
||||
logger.info('Backup complete');
|
||||
}
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -25,6 +25,11 @@ var Format = {
|
|||
},
|
||||
capFirst: function(str) {
|
||||
return str[0].toUpperCase() + str.substr(1);
|
||||
},
|
||||
dtStrFs: function(dt) {
|
||||
return dt ? dt.getFullYear() + '-' + this.pad(dt.getMonth() + 1, 2) + '-' + this.pad(dt.getDate(), 2) + 'T' +
|
||||
this.pad(dt.getHours(), 2) + '-' + this.pad(dt.getMinutes(), 2) + '-' + this.pad(dt.getSeconds(), 2)
|
||||
: '';
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -401,6 +401,9 @@ var Locale = {
|
|||
setFileBackupPath: 'Backup path',
|
||||
setFileBackupTime: 'Make backups',
|
||||
setFileBackupNow: 'Backup now',
|
||||
setFileBackupNowWorking: 'Working...',
|
||||
setFileBackupError: 'Backup error',
|
||||
setFileBackupErrorDescription: 'Error writing backup file',
|
||||
setFileBackupOnSave: 'Every time I save the file',
|
||||
setFileBackupDaily: 'Daily',
|
||||
setFileBackupWeekly: 'Weekly',
|
||||
|
|
|
@ -171,6 +171,9 @@ var SettingsFileView = Backbone.View.extend({
|
|||
});
|
||||
} else {
|
||||
this.model.getData(data => {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
if (Launcher) {
|
||||
Launcher.getSaveFileName(fileName, path => {
|
||||
if (path) {
|
||||
|
@ -422,7 +425,28 @@ var SettingsFileView = Backbone.View.extend({
|
|||
},
|
||||
|
||||
backupFile: function() {
|
||||
Alerts.notImplemented();
|
||||
if (this.backupInProgress) {
|
||||
return;
|
||||
}
|
||||
let backupButton = this.$el.find('.settings__file-button-backup');
|
||||
backupButton.text(Locale.setFileBackupNowWorking);
|
||||
this.model.getData(data => {
|
||||
if (!data) {
|
||||
this.backupInProgress = false;
|
||||
backupButton.text(Locale.setFileBackupNow);
|
||||
return;
|
||||
}
|
||||
this.appModel.backupFile(this.model, data, (err) => {
|
||||
this.backupInProgress = false;
|
||||
backupButton.text(Locale.setFileBackupNow);
|
||||
if (err) {
|
||||
Alerts.error({
|
||||
title: Locale.setFileBackupError,
|
||||
body: Locale.setFileBackupErrorDescription + '<pre class="modal__pre">' + _.escape(err.toString()) + '</pre>'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
changeTrash: function(e) {
|
||||
|
|
Loading…
Reference in New Issue