Beispiel #1
0
        public virtual IEnumerable <Uri> GetSiblingReferences(Uri contentUri)
        {
            contentUri = NormalizeContentUri(contentUri);
            var parentContentUri = ContentUri.GetParent(contentUri);

            return(GetChildrenReferences(parentContentUri).Where(uri => uri != contentUri));
        }
Beispiel #2
0
        public virtual IEnumerable <Uri> GetAncestorReferences(Uri contentUri)
        {
            var parentContentUri = ContentUri.GetParent(contentUri);

            while (parentContentUri != null)
            {
                yield return(NormalizeContentUri(parentContentUri));

                parentContentUri = ContentUri.GetParent(parentContentUri);
            }
        }
Beispiel #3
0
        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)));
        }
Beispiel #4
0
        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);
        }