private FieldValidationResult ValidatePaths(List<Node> list, Field field)
{
//-- Paths
if (this.SelectionRoots.Count > 0)
{
//-- Convert relative paths to absolute
var paths = new List<string>(); //-- test equality
var roots = new List<string>(); //-- ends with PathSeparator
foreach (string item in this.SelectionRoots)
{
var handler = field.Content.ContentHandler;
var handlerPath = RepositoryPath.Combine(RepositoryPath.GetParentPath(handler.Path), handler.Name);
var path = "/";
if (item.StartsWith("/"))
{
path = item;
}
else if (item == ".")
{
path = handlerPath;
}
else
{
path = RepositoryPath.Combine(handlerPath, item);
}
if (path.EndsWith(RepositoryPath.PathSeparator))
{
paths.Add(path.Substring(0, path.Length - 1));
roots.Add(path);
}
else
{
paths.Add(path);
roots.Add(String.Concat(path, RepositoryPath.PathSeparator));
}
}
foreach (Node node in list)
{
var ok = false;
for (int i = 0; i < paths.Count; i++)
{
if (node.Path == paths[i] || node.Path.StartsWith(roots[i]))
{
ok = true;
break;
}
}
if (ok)
continue;
var result = new FieldValidationResult(SelectionRootName);
result.AddParameter(SelectionRootName, node.Path);
return result;
}
}
return FieldValidationResult.Successful;
}
private FieldValidationResult ValidateWithQuery(List<Node> list, NodeQuery query)