Confirmation box for when adding multiple folders on the same path (#1960)

This commit is contained in:
kc1212 2016-03-17 23:05:37 +00:00 committed by Audrius Butkevicius
parent a455e32adf
commit bea272c40b
6 changed files with 47 additions and 6 deletions

View File

@ -49,6 +49,7 @@ Jens Diemer <github.com@jensdiemer.de> <git@jensdiemer.de>
Jochen Voss <voss@seehuhn.de> Jochen Voss <voss@seehuhn.de>
Johan Vromans <jvromans@squirrel.nl> Johan Vromans <jvromans@squirrel.nl>
Karol Różycki <rozycki.karol@gmail.com> Karol Różycki <rozycki.karol@gmail.com>
Kelong Cong <kc04bc@gmx.com> <kc1212@users.noreply.github.com>
Ken'ichi Kamada <kamada@nanohz.org> Ken'ichi Kamada <kamada@nanohz.org>
Kevin Allen <kma1660@gmail.com> Kevin Allen <kma1660@gmail.com>
Lars K.W. Gohlke <lkwg82@gmx.de> Lars K.W. Gohlke <lkwg82@gmx.de>

View File

@ -228,6 +228,7 @@
"Version": "Version", "Version": "Version",
"Versions Path": "Versions Path", "Versions Path": "Versions Path",
"Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.": "Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.", "Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.": "Versions are automatically deleted if they are older than the maximum age or exceed the number of files allowed in an interval.",
"Warning, this path is a subdirectory of an existing folder \"{%otherFolder%}\".": "Warning, this path is a subdirectory of an existing folder \"{{otherFolder}}\".",
"When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.", "When adding a new device, keep in mind that this device must be added on the other side too.": "When adding a new device, keep in mind that this device must be added on the other side too.",
"When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.", "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.": "When adding a new folder, keep in mind that the Folder ID is used to tie folders together between devices. They are case sensitive and must match exactly between all devices.",
"Yes": "Yes", "Yes": "Yes",

View File

@ -619,6 +619,7 @@
<script src="syncthing/core/modalDirective.js"></script> <script src="syncthing/core/modalDirective.js"></script>
<script src="syncthing/core/naturalFilter.js"></script> <script src="syncthing/core/naturalFilter.js"></script>
<script src="syncthing/core/networkErrorDialogDirective.js"></script> <script src="syncthing/core/networkErrorDialogDirective.js"></script>
<script src="syncthing/core/pathIsSubDirDirective.js"></script>
<script src="syncthing/core/popoverDirective.js"></script> <script src="syncthing/core/popoverDirective.js"></script>
<script src="syncthing/core/restartingDialogDirective.js"></script> <script src="syncthing/core/restartingDialogDirective.js"></script>
<script src="syncthing/core/selectOnClickDirective.js"></script> <script src="syncthing/core/selectOnClickDirective.js"></script>

View File

@ -0,0 +1,36 @@
angular.module('syncthing.core')
.directive('pathIsSubDir', function () {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function (viewValue) {
// This function checks whether xdir is a subdirectory of ydir,
// e.g. it would return true if xdir = "/home/a", ydir = "/home/a/b".
function isSubDir(xdir, ydir) {
var xdirArr = xdir.split(scope.system.pathSeparator);
var ydirArr = ydir.split(scope.system.pathSeparator);
if (xdirArr.slice(-1).pop() === "") {
xdirArr = xdirArr.slice(0, -1);
}
if (xdirArr.length > ydirArr.length) {
return false;
}
return xdirArr.map(function(e, i) {
return xdirArr[i] === ydirArr[i];
}).every(function(e) { return e });
}
scope.pathIsSubFolder = false;
scope.otherFolder = "";
for (var folderID in scope.folders) {
if (isSubDir(scope.folders[folderID].path, viewValue)) {
scope.otherFolder = folderID;
scope.pathIsSubFolder = true;
break;
}
}
return viewValue;
});
}
};
});

View File

@ -29,13 +29,14 @@
</div> </div>
<div class="form-group" ng-class="{'has-error': folderEditor.folderPath.$invalid && folderEditor.folderPath.$dirty}"> <div class="form-group" ng-class="{'has-error': folderEditor.folderPath.$invalid && folderEditor.folderPath.$dirty}">
<label translate for="folderPath">Folder Path</label> <label translate for="folderPath">Folder Path</label>
<input name="folderPath" ng-readonly="editingExisting" id="folderPath" class="form-control" type="text" ng-model="currentFolder.path" list="directory-list" required> <input name="folderPath" ng-readonly="editingExisting" id="folderPath" class="form-control" type="text" ng-model="currentFolder.path" list="directory-list" required path-is-sub-dir/>
<datalist id="directory-list"> <datalist id="directory-list">
<option ng-repeat="directory in directoryList" value="{{ directory }}" /> <option ng-repeat="directory in directoryList" value="{{ directory }}" />
</datalist> </datalist>
<p class="help-block"> <p class="help-block">
<span translate ng-if="folderEditor.folderPath.$valid || folderEditor.folderPath.$pristine">Path to the folder on the local computer. Will be created if it does not exist. The tilde character (~) can be used as a shortcut for</span> <code>{{system.tilde}}</code>. <span translate ng-if="folderEditor.folderPath.$valid || folderEditor.folderPath.$pristine">Path to the folder on the local computer. Will be created if it does not exist. The tilde character (~) can be used as a shortcut for</span> <code>{{system.tilde}}</code>.
<span translate ng-if="folderEditor.folderPath.$error.required && folderEditor.folderPath.$dirty">The folder path cannot be blank.</span> <span translate ng-if="folderEditor.folderPath.$error.required && folderEditor.folderPath.$dirty">The folder path cannot be blank.</span>
<span class="text-danger" translate translate-value-other-folder="{{otherFolder}}" ng-if="pathIsSubFolder">Warning, this path is a subdirectory of an existing folder "{%otherFolder%}".</span>
</p> </p>
</div> </div>
</div> </div>

File diff suppressed because one or more lines are too long