gui: Add confirmation dialog for revert/override (fixes #7520) (#7522)

This commit is contained in:
Simon Frei
2021-03-26 16:56:15 +01:00
committed by GitHub
parent f93c6fbe4a
commit 707001c403
7 changed files with 98 additions and 45 deletions
+4 -4
View File
@@ -544,13 +544,13 @@
</table>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="override(folder.id)" ng-if="folderStatus(folder) == 'outofsync' && folder.type == 'sendonly'">
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="revertOverrideConfirmationModal('override', folder.id)" ng-if="folderStatus(folder) == 'outofsync' && folder.type == 'sendonly'">
<span class="fas fa-arrow-circle-up"></span>&nbsp;<span translate>Override Changes</span>
</button>
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="revert(folder.id)" ng-if="hasReceiveOnlyChanged(folder)">
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="revertOverrideConfirmationModal('revert', folder.id)" ng-if="hasReceiveOnlyChanged(folder)">
<span class="fa fa-arrow-circle-down"></span>&nbsp;<span translate>Revert Local Changes</span>
</button>
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="deleteEncryptionModal(folder.id)" ng-if="hasReceiveEncryptedItems(folder)">
<button type="button" class="btn btn-sm btn-danger pull-left" ng-click="revertOverrideConfirmationModal('deleteEnc', folder.id)" ng-if="hasReceiveEncryptedItems(folder)">
<span class="fa fa-arrow-lock"></span>&nbsp;<span translate>Delete Unexpected Items</span>
</button>
<span class="pull-right">
@@ -907,7 +907,7 @@
<ng-include src="'syncthing/core/aboutModalView.html'"></ng-include>
<ng-include src="'syncthing/core/discoveryFailuresModalView.html'"></ng-include>
<ng-include src="'syncthing/folder/removeFolderDialogView.html'"></ng-include>
<ng-include src="'syncthing/folder/deleteEncryptionFolderDialogView.html'"></ng-include>
<ng-include src="'syncthing/folder/revertOverrideView.html'"></ng-include>
<ng-include src="'syncthing/device/removeDeviceDialogView.html'"></ng-include>
<ng-include src="'syncthing/core/logViewerModalView.html'"></ng-include>
@@ -2513,10 +2513,6 @@ angular.module('syncthing.core')
return $scope.model[folder].errors !== 0;
};
$scope.override = function (folder) {
$http.post(urlbase + "/db/override?folder=" + encodeURIComponent(folder));
};
$scope.showLocalChanged = function (folder, folderType) {
$scope.localChangedFolder = folder;
$scope.localChangedType = folderType;
@@ -2551,15 +2547,33 @@ angular.module('syncthing.core')
return counts.receiveOnlyTotalItems - counts.receiveOnlyChangedDeletes;
}
$scope.revert = function (folder) {
$http.post(urlbase + "/db/revert?folder=" + encodeURIComponent(folder));
$scope.revertOverride = function () {
$http.post(
urlbase + "/db/" + $scope.revertOverrideParams.operation +"?folder="
+encodeURIComponent($scope.revertOverrideParams.folderID));
};
$scope.deleteEncryptionModal = function (folderID) {
$scope.revertEncryptionFolder = folderID;
$('#delete-encryption-confirmation').modal('show').one('hidden.bs.modal', function () {
$scope.revertEncryptionFolder = undefined;
});
$scope.revertOverrideConfirmationModal = function (type, folderID) {
var params = {
type: type,
folderID: folderID,
};
switch (type) {
case "override":
params.heading = $translate.instant("Override");
params.operation = "override";
break;
case "revert":
params.heading = $translate.instant("Revert");
params.operation = "revert";
break;
case "deleteEnc":
params.heading = $translate.instant("Delete Unexpected Items");
params.operation = "revert";
break;
}
$scope.revertOverrideParams = params;
$('#revert-override-confirmation').modal('show');
};
$scope.advanced = function () {
@@ -2777,7 +2791,6 @@ angular.module('syncthing.core')
address.indexOf('unix://') == 0 ||
address.indexOf('unixs://') == 0);
}
})
.directive('shareTemplate', function () {
return {
@@ -1,19 +0,0 @@
<modal id="delete-encryption-confirmation" status="danger" icon="fas fa-question-circle" heading="{{'Delete Unexpected Items' | translate}}" large="no" closeable="yes">
<div class="modal-body">
<p>
<span translate>Unexpected items have been found in this folder.</span></br>
<span translate translate-value-receive-encrypted="{{'Receive Encrypted' | translate}}">You should never add or change anything locally in a "{%receiveEncrypted%}" folder.</span>
</p>
<p translate>
Are you sure you want to permanently delete all these files?
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger pull-left btn-sm" data-dismiss="modal" ng-click="revert(revertEncryptionFolder)">
<span class="fas fa-check"></span>&nbsp;<span translate>Yes</span>
</button>
<button type="button" class="btn btn-default btn-sm" data-dismiss="modal">
<span class="fas fa-times"></span>&nbsp;<span translate>No</span>
</button>
</div>
</modal>