mirror of
https://github.com/duplicati/duplicati.git
synced 2025-11-28 19:40:25 +08:00
Re-implemented everything using ASP.NET. Changed some requests to use JSON instead of FORM data. Some work towards deleting the FIXMEGlobal instance. Auth is missing, XSRF does not work correctly.
111 lines
4.4 KiB
JavaScript
111 lines
4.4 KiB
JavaScript
backupApp.controller('LocalDatabaseController', function($scope, $routeParams, $location, AppService, DialogService, BackupList, AppUtils, gettextCatalog) {
|
|
|
|
$scope.BackupID = $routeParams.backupid;
|
|
|
|
function resetBackupItem(force) {
|
|
var prev = $scope.DBPath;
|
|
|
|
$scope.Backup = BackupList.lookup[$scope.BackupID];
|
|
$scope.DBPath = null;
|
|
if ($scope.Backup == null || $scope.Backup.Backup == null) {
|
|
$scope.NoLocalDB = true;
|
|
} else {
|
|
$scope.DBPath = $scope.Backup.Backup.DBPath;
|
|
|
|
if ($scope.DBPath != prev || force)
|
|
AppService.postJson('/filesystem/validate', {path: $scope.DBPath}).then(function(resp) {
|
|
$scope.NoLocalDB = false;
|
|
}, function() {
|
|
$scope.NoLocalDB = true;
|
|
});
|
|
}
|
|
};
|
|
|
|
$scope.$on('backuplistchanged', resetBackupItem);
|
|
resetBackupItem();
|
|
|
|
$scope.doDelete = function(continuation) {
|
|
DialogService.dialog(gettextCatalog.getString('Confirm delete'), gettextCatalog.getString('Do you really want to delete the local database for: {{name}}', { name: $scope.Backup.Backup.Name }), [gettextCatalog.getString('No'), gettextCatalog.getString('Yes')], function(ix) {
|
|
if (ix == 1)
|
|
AppService.post('/backup/' + $scope.BackupID + '/deletedb').then(
|
|
function() {
|
|
resetBackupItem(true);
|
|
if (continuation != null)
|
|
continuation();
|
|
},
|
|
function(resp) {
|
|
resetBackupItem();
|
|
AppUtils.connectionError(gettextCatalog.getString('Failed to delete:') + ' ', resp);
|
|
}
|
|
);
|
|
});
|
|
};
|
|
|
|
$scope.doRepair = function() {
|
|
AppService.postJson('/backup/' + $scope.BackupID + '/repair');
|
|
$location.path('/');
|
|
};
|
|
|
|
$scope.doDeleteAndRepair = function() {
|
|
$scope.doDelete(function() {
|
|
$scope.doRepair();
|
|
});
|
|
};
|
|
|
|
$scope.doSave = function(continuation, move) {
|
|
|
|
function doUpdate() {
|
|
AppService.postJson('/backup/' + $scope.BackupID + '/' + (move ? 'movedb' : 'updatedb'), {path: $scope.DBPath}).then(
|
|
function(resp) {
|
|
$scope.Backup.Backup.DBPath = $scope.DBPath;
|
|
resetBackupItem(true);
|
|
|
|
if (continuation != null)
|
|
continuation();
|
|
|
|
}, AppUtils.connectionError(move ? gettextCatalog.getString('Move failed:') : gettextCatalog.getString('Update failed:') + ' ')
|
|
);
|
|
};
|
|
|
|
function doCheckTarget() {
|
|
AppService.postJson('/filesystem/validate', {path: $scope.DBPath}).then(function(resp) {
|
|
DialogService.dialog(gettextCatalog.getString('Existing file found'), gettextCatalog.getString('An existing file was found at the new location\nAre you sure you want the database to point to an existing file?'), [gettextCatalog.getString('Cancel'), gettextCatalog.getString('No'), gettextCatalog.getString('Yes')], function(ix) {
|
|
if (ix == 2) {
|
|
doUpdate();
|
|
}
|
|
});
|
|
}, function() {
|
|
doUpdate();
|
|
});
|
|
};
|
|
|
|
if (move) {
|
|
doUpdate();
|
|
} else {
|
|
if ($scope.NoLocalDB)
|
|
doCheckTarget();
|
|
else
|
|
DialogService.dialog(gettextCatalog.getString('Updating with existing database'), gettextCatalog.getString('You are changing the database path away from an existing database.\nAre you sure this is what you want?'), [gettextCatalog.getString('Cancel'), gettextCatalog.getString('No'), gettextCatalog.getString('Yes')], function(ix) {
|
|
if (ix == 2)
|
|
doCheckTarget();
|
|
});
|
|
}
|
|
};
|
|
|
|
$scope.doSaveAndRepair = function() {
|
|
$scope.doSave(function() {
|
|
$scope.doRepair();
|
|
});
|
|
};
|
|
|
|
$scope.doMove = function() {
|
|
AppService.postJson('/filesystem/validate', {path: $scope.DBPath}).then(function(resp) {
|
|
DialogService.dialog(gettextCatalog.getString('Cannot move to existing file'), gettextCatalog.getString('An existing file was found at the new location'));
|
|
}, function() {
|
|
$scope.doSave(null, true);
|
|
});
|
|
|
|
};
|
|
|
|
|
|
});
|