public virtual IEnumerable <Uri> GetSiblingReferences(Uri contentUri) { contentUri = NormalizeContentUri(contentUri); var parentContentUri = ContentUri.GetParent(contentUri); return(GetChildrenReferences(parentContentUri).Where(uri => uri != contentUri)); }
public virtual IEnumerable <Uri> GetAncestorReferences(Uri contentUri) { var parentContentUri = ContentUri.GetParent(contentUri); while (parentContentUri != null) { yield return(NormalizeContentUri(parentContentUri)); parentContentUri = ContentUri.GetParent(parentContentUri); } }
private Uri RenameContentAssets(Uri contentUri, string newSlug) { var directoryPath = ContentUri.GetAbsolutePath(contentUri); var filePath = Path.ChangeExtension(directoryPath, _fileExtension); var parentDirectoryPath = ContentUri.GetAbsolutePath(ContentUri.GetParent(contentUri)); string newFilePath = Path.Combine(parentDirectoryPath, Path.ChangeExtension(newSlug, _fileExtension)), newDirectoryPath = Path.Combine(parentDirectoryPath, newSlug); bool directoryExists = Directory.Exists(directoryPath), fileExists = File.Exists(filePath); if (!directoryExists && !fileExists) { return(contentUri); } if (fileExists) { if (File.Exists(newFilePath)) { throw new InvalidOperationException("Cannot rename content slug to a file that already exists."); } File.Move(filePath, newFilePath); } if (directoryExists) { if (Directory.Exists(newDirectoryPath)) { throw new InvalidOperationException("Cannot rename content slug to a directory that already exists."); } Directory.Move(directoryPath, newDirectoryPath); } return(NormalizeContentUri(new Uri(newFilePath))); }
private TContentData GetContentDataFromFile <TContentData>(Uri contentUri, bool fileExists, string path, string filePath) where TContentData : class, IContentData { IContentData contentData; if (fileExists) { var contentSerializer = _contentSerializerFactory.Create(); path = filePath; contentData = contentSerializer.Deserialize <TContentData>(filePath); } else { contentData = new FolderContentData { Title = Path.GetFileName(path) }; } contentData.ContentUri = NormalizeContentUri(contentUri); contentData.Slug = Path.GetFileNameWithoutExtension(path); contentData.ParentUri = ContentUri.GetParent(contentData.ContentUri); if (contentData.Created == DateTime.MinValue) { contentData.Created = File.GetCreationTimeUtc(path); } if (contentData.Modified == DateTime.MinValue) { contentData.Modified = File.GetLastWriteTimeUtc(path); } return((TContentData)contentData); }