Add external versioner (ref #573)
This commit is contained in:
@@ -237,6 +237,7 @@
|
||||
<td class="text-right" ng-switch="folder.Versioning.Type">
|
||||
<span ng-switch-when="staggered" translate>Staggered File Versioning</span>
|
||||
<span ng-switch-when="simple" translate>Simple File Versioning</span>
|
||||
<span ng-switch-when="external" translate>External File Versioning</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -620,6 +621,11 @@
|
||||
<input type="radio" ng-model="currentFolder.fileVersioningSelector" value="staggered"> <span translate>Staggered File Versioning</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" ng-model="currentFolder.fileVersioningSelector" value="external"> <span translate>External File Versioning</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="currentFolder.fileVersioningSelector=='simple'" ng-class="{'has-error': folderEditor.simpleKeep.$invalid && folderEditor.simpleKeep.$dirty}">
|
||||
<p translate class="help-block">Files are moved to date stamped versions in a .stversions folder when replaced or deleted by syncthing.</p>
|
||||
@@ -646,6 +652,15 @@
|
||||
<input name="staggeredVersionsPath" id="staggeredVersionsPath" class="form-control" type="text" ng-model="currentFolder.staggeredVersionsPath"></input>
|
||||
<p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions folder in the folder).</p>
|
||||
</div>
|
||||
<div class="form-group" ng-if="currentFolder.fileVersioningSelector=='external'" ng-class="{'has-error': folderEditor.externalCommand.$invalid && folderEditor.externalCommand.$dirty}">
|
||||
<p translate class="help-block">A external command handles the versioning. It has to remove the file from the synced folder.</p>
|
||||
<label translate for="externalCommand">Command</label>
|
||||
<input name="externalCommand" id="externalCommand" class="form-control" type="text" ng-model="currentFolder.externalCommand" required></input>
|
||||
<p class="help-block">
|
||||
<span translate ng-if="folderEditor.externalCommand.$valid || folderEditor.externalCommand.$pristine">The first command line parameter is the folder path and the second parameter is the relative path in the folder.</span>
|
||||
<span translate ng-if="folderEditor.externalCommand.$error.required && folderEditor.externalCommand.$dirty">The path cannot be blank.</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -904,6 +904,10 @@ angular.module('syncthing.core')
|
||||
$scope.currentFolder.staggeredMaxAge = Math.floor(+$scope.currentFolder.versioning.params.maxAge / 86400);
|
||||
$scope.currentFolder.staggeredCleanInterval = +$scope.currentFolder.versioning.params.cleanInterval;
|
||||
$scope.currentFolder.staggeredVersionsPath = $scope.currentFolder.versioning.params.versionsPath;
|
||||
} else if ($scope.currentFolder.versioning && $scope.currentFolder.versioning.type === "external") {
|
||||
$scope.currentFolder.externalFileVersioning = true;
|
||||
$scope.currentFolder.fileVersioningSelector = "external";
|
||||
$scope.currentFolder.externalCommand = $scope.currentFolder.versioning.params.command;
|
||||
} else {
|
||||
$scope.currentFolder.fileVersioningSelector = "none";
|
||||
}
|
||||
@@ -917,7 +921,8 @@ angular.module('syncthing.core')
|
||||
if (typeof $scope.currentFolder.staggeredMaxAge === 'undefined') {
|
||||
$scope.currentFolder.staggeredMaxAge = 365;
|
||||
}
|
||||
|
||||
$scope.currentFolder.externalCommand = $scope.currentFolder.externalCommand || "";
|
||||
|
||||
$scope.editingExisting = true;
|
||||
$scope.folderEditor.$setPristine();
|
||||
$('#editFolder').modal();
|
||||
@@ -933,6 +938,7 @@ angular.module('syncthing.core')
|
||||
$scope.currentFolder.staggeredMaxAge = 365;
|
||||
$scope.currentFolder.staggeredCleanInterval = 3600;
|
||||
$scope.currentFolder.staggeredVersionsPath = "";
|
||||
$scope.currentFolder.externalCommand = "";
|
||||
$scope.editingExisting = false;
|
||||
$scope.folderEditor.$setPristine();
|
||||
$('#editFolder').modal();
|
||||
@@ -952,6 +958,7 @@ angular.module('syncthing.core')
|
||||
$scope.currentFolder.staggeredMaxAge = 365;
|
||||
$scope.currentFolder.staggeredCleanInterval = 3600;
|
||||
$scope.currentFolder.staggeredVersionsPath = "";
|
||||
$scope.currentFolder.externalCommand = "";
|
||||
$scope.editingExisting = false;
|
||||
$scope.folderEditor.$setPristine();
|
||||
$('#editFolder').modal();
|
||||
@@ -1005,6 +1012,15 @@ angular.module('syncthing.core')
|
||||
delete folderCfg.staggeredCleanInterval;
|
||||
delete folderCfg.staggeredVersionsPath;
|
||||
|
||||
} else if (folderCfg.fileVersioningSelector === "external") {
|
||||
folderCfg.versioning = {
|
||||
'Type': 'external',
|
||||
'Params': {
|
||||
'command': '' + folderCfg.externalCommand
|
||||
}
|
||||
};
|
||||
delete folderCfg.externalFileVersioning;
|
||||
delete folderCfg.externalCommand;
|
||||
} else {
|
||||
delete folderCfg.versioning;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user