public Task <IEnumerable <IPageCollection> > FindCollectionsAsync(string pageTypeName, string title = null, bool includeDerivedTypes = true)
        {
            if (pageTypeName == null)
            {
                throw new ArgumentNullException(nameof(pageTypeName));
            }

            var pageMetadata = pageMetadataManager.FindPageMetadataByName(pageTypeName);

            if (pageMetadata == null)
            {
                throw new ArgumentException($"Тип страницы {pageTypeName} не существует.");
            }

            var pageTypeNames = new List <string>
            {
                pageMetadata.Name
            };

            if (includeDerivedTypes)
            {
                foreach (var derivedPageMetadata in pageMetadata.GetDerivedMetadataWithHierarhy(false))
                {
                    pageTypeNames.Add(derivedPageMetadata.Name);
                }
            }

            return(repositiry.FindCollectionsAsync(websiteContext.Website.Id, pageTypeNames.ToArray(), title));
        }
        public static PageMetadataProvider GetMetadata(this IPageMetadataManager pageMetadataManager, string name)
        {
            var pageMetadataProvider = pageMetadataManager.FindPageMetadataByName(name);

            if (pageMetadataProvider == null)
            {
                throw new ArgumentException($"Тип страницы {name} не найден.", nameof(pageMetadataProvider));
            }
            return(pageMetadataProvider);
        }
예제 #3
0
        public Task <PageMetadataProvider> GetPageTypeAsync(IPage page, CancellationToken cancellationToken = default)
        {
            if (page == null)
            {
                throw new ArgumentNullException(nameof(page));
            }

            var pageType = pageMetadataManager.FindPageMetadataByName(page.TypeName);

            if (pageType == null)
            {
                throw new InvalidOperationException($"Тип страницы {page.TypeName} не зарегистрирован.");
            }
            return(Task.FromResult(pageType));
        }