public void TestGetPages(string filePath, PreviewOptions.FormatEnum?format = null, List <int?> pageNumbersToConvert = null,
                                 bool withoutAnnotations = false, int width       = 0, int height = 0,
                                 bool renderComments     = false, string password = null)
        {
            var fileInfo = new Model.FileInfo
            {
                FilePath = filePath,
                Password = password
            };
            var options = new PreviewOptions
            {
                FileInfo       = fileInfo,
                Format         = format,
                Height         = height,
                Width          = width,
                PageNumbers    = pageNumbersToConvert,
                RenderComments = renderComments
            };
            var request = new GetPagesRequest(options);
            var result  = PreviewApi.GetPages(request);

            Assert.NotNull(result);
            Assert.Greater(result.TotalCount, 0);
            Assert.NotNull(result.Entries);
            Assert.Greater(result.Entries.Count, 0);
        }
예제 #2
0
        public static void Run()
        {
            var configuration = new Configuration(Common.MyAppSid, Common.MyAppKey);
            var apiInstance   = new PreviewApi(configuration);

            try
            {
                // Set request.
                var request = new GetPagesRequest()
                {
                    filePath            = "Annotationdocs\\ten-pages.docx",
                    password            = null,
                    pageNumber          = 1,
                    countPagesToConvert = 1,
                    enableCaching       = false,
                    cacheStoragePath    = null,
                    withoutAnnotations  = true
                };

                var response = apiInstance.GetPages(request);
                Console.WriteLine("Expected response type is PageImages: " + response.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception while calling Annotation PreviewApi: " + e.Message);
            }
        }
예제 #3
0
        /// <summary>
        /// Gets the list of page property entities.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// The list of property entities
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        public DataListResponse <PageProperties> GetPages(GetPagesRequest request)
        {
            try
            {
                var query = Repository
                            .AsQueryable <PageProperties>();

                if (!request.IncludeUnpublished)
                {
                    query = query.Where(b => b.Status == PageStatus.Published);
                }

                if (!request.IncludePrivate)
                {
                    query = query.Where(b => b.IsPublic);
                }

                var result = query.ApplyFiltersWithChildren(request);
                query = result.Item1;
                var totalCount = result.Item2;

                query = query.AddOrder(request);
                query = FetchPageChilds(query, request.LoadChilds);

                return(query.ToDataListResponse(totalCount));
            }
            catch (Exception inner)
            {
                const string message = "Failed to get pages list.";
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
예제 #4
0
        public async Task <IActionResult> GetPages([FromQuery] PagesSearchRequest pagesRequest, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var startDate = pagesRequest.StartDate;
            var endDate   = pagesRequest.EndDate;

            if (startDate.HasValue && endDate.HasValue && startDate > endDate)
            {
                ModelState.AddModelError(nameof(pagesRequest.StartDate), "Start date cannot be greater than end date");
                return(BadRequest(ModelState));
            }

            var getPagesRequest = new GetPagesRequest(
                pagesRequest.SortOrder,
                pagesRequest.StartDate,
                pagesRequest.EndDate,
                pagesRequest.PageNumber,
                pagesRequest.PageSize);

            var pagesSearchResult = await _mediator.Send(getPagesRequest, cancellationToken);

            var pagesListResponse = new PagesSearchResultDto()
            {
                PageItems       = _mapper.Map <IEnumerable <PageItemDto> >(pagesSearchResult.FoundPages),
                TotalPagesCount = pagesSearchResult.TotalPagesCount
            };

            return(Ok(pagesListResponse));
        }
예제 #5
0
        /// <summary>
        /// Gets the list of page property entities.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// The list of property entities
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        public DataListResponse<PageProperties> GetPages(GetPagesRequest request)
        {
            try
            {
                var query = Repository
                    .AsQueryable<PageProperties>();

                if (!request.IncludeUnpublished)
                {
                    query = query.Where(b => b.Status == PageStatus.Published);
                }

                if (!request.IncludePrivate)
                {
                    query = query.Where(b => b.IsPublic);
                }

                var result = query.ApplyFiltersWithChildren(request);
                query = result.Item1;
                var totalCount = result.Item2;

                query = query.AddOrder(request);
                query = FetchPageChilds(query, request.LoadChilds);

                return query.ToDataListResponse(totalCount);
            }
            catch (Exception inner)
            {
                const string message = "Failed to get pages list.";
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
예제 #6
0
        /// <summary>
        /// Generates image representations from documents pages
        /// </summary>
        /// <param name="request">Request. <see cref="GetPagesRequest" /></param>
        /// <returns><see cref="PageImages"/></returns>
        public PageImages GetPages(GetPagesRequest request)
        {
            // verify the required parameter 'options' is set
            if (request.options == null)
            {
                throw new ApiException(400, "Missing required parameter 'options' when calling GetPages");
            }

            // create path and map variables
            var resourcePath = this.configuration.GetServerUrl() + "/annotation/preview/create";

            resourcePath = Regex
                           .Replace(resourcePath, "\\*", string.Empty)
                           .Replace("&amp;", "&")
                           .Replace("/?", "?");
            var postBody = SerializationHelper.Serialize(request.options); // http body (model) parameter
            var response = this.apiInvoker.InvokeApi(
                resourcePath,
                "POST",
                postBody,
                null,
                null);

            if (response != null)
            {
                return((PageImages)SerializationHelper.Deserialize(response, typeof(PageImages)));
            }

            return(null);
        }
예제 #7
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                .AsQueryable<Module.Pages.Models.PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return page => page.PageTags.Any(pageTag => pageTag.Tag.Name == tagName && !pageTag.IsDeleted && !pageTag.Tag.IsDeleted); });

            var listResponse = query
                .Select(page => new PageModel
                    {
                        Id = page.Id,
                        Version = page.Version,
                        CreatedBy = page.CreatedByUser,
                        CreatedOn = page.CreatedOn,
                        LastModifiedBy = page.ModifiedByUser,
                        LastModifiedOn = page.ModifiedOn,

                        PageUrl = page.PageUrl,
                        Title = page.Title,
                        Description = page.Description,
                        IsPublished = page.Status == PageStatus.Published,
                        PublishedOn = page.PublishedOn,
                        LayoutId = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : Guid.Empty,
                        CategoryId = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                        CategoryName = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                        MainImageId = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                        MainImageUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                        MainImageThumbnauilUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                        MainImageCaption = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                        IsArchived = page.IsArchived
                    }).ToDataListResponse(request);

            if (request.Data.IncludePageOptions && listResponse.Items.Count > 0)
            {
                LoadOptions(listResponse);
            }

            return new GetPagesResponse
            {
                Data = listResponse
            };
        }
예제 #8
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <Module.Pages.Models.PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return(page => page.PageTags.Any(tag => tag.Tag.Name == tagName)); });

            var listResponse = query
                               .Select(page => new PageModel
            {
                Id             = page.Id,
                Version        = page.Version,
                CreatedBy      = page.CreatedByUser,
                CreatedOn      = page.CreatedOn,
                LastModifiedBy = page.ModifiedByUser,
                LastModifiedOn = page.ModifiedOn,

                PageUrl                = page.PageUrl,
                Title                  = page.Title,
                Description            = page.Description,
                IsPublished            = page.Status == PageStatus.Published,
                PublishedOn            = page.PublishedOn,
                LayoutId               = page.Layout.Id,
                CategoryId             = page.Category.Id,
                CategoryName           = page.Category.Name,
                MainImageId            = page.Image.Id,
                MainImageUrl           = page.Image.PublicUrl,
                MainImageThumbnauilUrl = page.Image.PublicThumbnailUrl,
                MainImageCaption       = page.Image.Caption,
                IsArchived             = page.IsArchived
            }).ToDataListResponse(request);

            if (request.Data.IncludePageOptions && listResponse.Items.Count > 0)
            {
                LoadOptions(listResponse);
            }

            return(new GetPagesResponse
            {
                Data = listResponse
            });
        }
예제 #9
0
        public override void Up(ICmsConfiguration configuration)
        {
            using (var pagesApi = CmsContext.CreateApiContextOf<PagesApiContext>())
            {
                var request = new GetPagesRequest(page => page.PageUrl == Urls.Page404, includeUnpublished: true);
                var add404 = configuration.Installation.Install404ErrorPage && !pagesApi.GetPages(request).Items.Any();

                request = new GetPagesRequest(page => page.PageUrl == Urls.Page500, includeUnpublished: true);
                var add500 = configuration.Installation.Install500ErrorPage && !pagesApi.GetPages(request).Items.Any();

                request = new GetPagesRequest(page => page.PageUrl == Urls.DefaultPage, includeUnpublished: true);
                var addDefault = configuration.Installation.InstallDefaultPage && !pagesApi.GetPages(request).Items.Any();

                if (!add404 && !add500 && !addDefault)
                {
                    return;
                }

                using (var transactionScope = new TransactionScope())
                {
                    var layout = AddLayout(pagesApi);
                    var headerWidget = AddHtmlWidget(pagesApi, "Header", "<a href=\"/\" class=\"bcms-logo\"><img src=\"/file/bcms-pages/content/styles/images/logo.png\" alt=\"Better CMS\"></a>");
                    var footerWidget = AddHtmlWidget(pagesApi, "Footer", "<span class=\"copyright\">Better CMS 2012 ©</span>");

                    if (add404)
                    {
                        Add404ErrorPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    if (add500)
                    {
                        Add500ErrorPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    if (addDefault)
                    {
                        AddDefaultPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    transactionScope.Complete();
                }
            }
        }
예제 #10
0
        public override void Up(ICmsConfiguration configuration)
        {
            using (var pagesApi = CmsContext.CreateApiContextOf <PagesApiContext>())
            {
                var request = new GetPagesRequest(page => page.PageUrl == Urls.Page404, includeUnpublished: true, includePrivate: true);
                var add404  = configuration.Installation.Install404ErrorPage && !pagesApi.GetPages(request).Items.Any();

                request = new GetPagesRequest(page => page.PageUrl == Urls.Page500, includeUnpublished: true, includePrivate: true);
                var add500 = configuration.Installation.Install500ErrorPage && !pagesApi.GetPages(request).Items.Any();

                request = new GetPagesRequest(page => page.PageUrl == Urls.DefaultPage, includeUnpublished: true, includePrivate: true);
                var addDefault = configuration.Installation.InstallDefaultPage && !pagesApi.GetPages(request).Items.Any();

                if (!add404 && !add500 && !addDefault)
                {
                    return;
                }

                using (var transactionScope = new TransactionScope())
                {
                    var layout       = AddLayout(pagesApi);
                    var headerWidget = AddHtmlWidget(pagesApi, "Header", "<a href=\"/\" class=\"bcms-logo\"><img src=\"/file/bcms-pages/content/styles/images/logo.png\" alt=\"Better CMS\"></a>");
                    var footerWidget = AddHtmlWidget(pagesApi, "Footer", "<span class=\"copyright\">Better CMS 2012 ©</span>");

                    if (add404)
                    {
                        Add404ErrorPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    if (add500)
                    {
                        Add500ErrorPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    if (addDefault)
                    {
                        AddDefaultPage(pagesApi, layout, headerWidget, footerWidget);
                    }

                    transactionScope.Complete();
                }
            }
        }
예제 #11
0
        public static void Run()
        {
            var apiInstance = new PreviewApi(Constants.GetConfig());

            try
            {
                var fileInfo = new FileInfo {
                    FilePath = "one-page.docx"
                };
                var options = new PreviewOptions {
                    FileInfo = fileInfo
                };

                var request = new GetPagesRequest(options);

                var response = apiInstance.GetPages(request);
                Console.WriteLine("GetPages: pages count = " + response.TotalCount);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception while calling Annotation PreviewApi: " + e.Message);
            }
        }
예제 #12
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return(page => page.PageTags.Any(pageTag => pageTag.Tag.Name == tagName && !pageTag.IsDeleted && !pageTag.Tag.IsDeleted)); });

            var listResponse = query
                               .Select(page => new PageModel
            {
                Id             = page.Id,
                Version        = page.Version,
                CreatedBy      = page.CreatedByUser,
                CreatedOn      = page.CreatedOn,
                LastModifiedBy = page.ModifiedByUser,
                LastModifiedOn = page.ModifiedOn,

                PageUrl                = page.PageUrl,
                Title                  = page.Title,
                Description            = page.Description,
                IsPublished            = page.Status == PageStatus.Published,
                PublishedOn            = page.PublishedOn,
                LayoutId               = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : Guid.Empty,
                CategoryId             = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                CategoryName           = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                MainImageId            = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                MainImageUrl           = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                MainImageThumbnauilUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                MainImageCaption       = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                IsArchived             = page.IsArchived
            }).ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.MainImageUrl           = fileUrlResolver.EnsureFullPathUrl(model.MainImageUrl);
                model.MainImageThumbnauilUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageThumbnauilUrl);
            }

            if (listResponse.Items.Count > 0 && (request.Data.IncludePageOptions || request.Data.IncludeTags))
            {
                LoadOptionsAndTags(listResponse, request.Data.IncludePageOptions, request.Data.IncludeTags);
            }

            return(new GetPagesResponse
            {
                Data = listResponse
            });
        }
예제 #13
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                .AsQueryable<PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            if (!request.Data.IncludeMasterPages)
            {
                query = query.Where(b => !b.IsMasterPage);
            }

            query = query.ApplyPageTagsFilter(request.Data);

            if (request.User != null && !string.IsNullOrWhiteSpace(request.User.Name))
            {
                var principal = new ApiPrincipal(request.User);
                IEnumerable<Guid> deniedPages = accessControlService.GetPrincipalDeniedObjects<PageProperties>(principal, false);
                foreach (var deniedPageId in deniedPages)
                {
                    var id = deniedPageId;
                    query = query.Where(f => f.Id != id);
                }
            }

            var includeMetadata = request.Data.IncludeMetadata;
            var listResponse = query
                .Select(page => new PageModel
                    {
                        Id = page.Id,
                        Version = page.Version,
                        CreatedBy = page.CreatedByUser,
                        CreatedOn = page.CreatedOn,
                        LastModifiedBy = page.ModifiedByUser,
                        LastModifiedOn = page.ModifiedOn,

                        PageUrl = page.PageUrl,
                        Title = page.Title,
                        Description = page.Description,
                        IsPublished = page.Status == PageStatus.Published,
                        PublishedOn = page.PublishedOn,
                        LayoutId = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : (Guid?)null,
                        MasterPageId = page.MasterPage != null && !page.MasterPage.IsDeleted ? page.MasterPage.Id : (Guid?)null,
                        CategoryId = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                        CategoryName = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                        MainImageId = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                        MainImageUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                        MainImageThumbnauilUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                        MainImageCaption = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                        IsArchived = page.IsArchived,
                        IsMasterPage = page.IsMasterPage,
                        LanguageId = page.Language != null ? page.Language.Id : (Guid?)null,
                        LanguageCode = page.Language != null ? page.Language.Code : null,
                        LanguageGroupIdentifier = page.LanguageGroupIdentifier,
                        Metadata = includeMetadata 
                            ? new MetadataModel
                                  {
                                      MetaDescription = page.MetaDescription,
                                      MetaTitle = page.MetaTitle,
                                      MetaKeywords = page.MetaKeywords,
                                      UseNoFollow = page.UseNoFollow,
                                      UseNoIndex = page.UseNoIndex,
                                      UseCanonicalUrl = page.UseCanonicalUrl
                                  } : null
                    }).ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.MainImageUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageUrl);
                model.MainImageThumbnauilUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageThumbnauilUrl);
            }

            if (listResponse.Items.Count > 0
                && (request.Data.IncludePageOptions || request.Data.IncludeTags || request.Data.IncludeAccessRules))
            {
                LoadInnerCollections(listResponse, request.Data.IncludePageOptions, request.Data.IncludeTags, request.Data.IncludeAccessRules);
            }

            return new GetPagesResponse
            {
                Data = listResponse
            };
        }
예제 #14
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            if (!request.Data.IncludeMasterPages)
            {
                query = query.Where(b => !b.IsMasterPage);
            }

            query = query.ApplyPageTagsFilter(request.Data);

            if (request.User != null && !string.IsNullOrWhiteSpace(request.User.Name))
            {
                var principal = new ApiPrincipal(request.User);
                IEnumerable <Guid> deniedPages = accessControlService.GetPrincipalDeniedObjects <PageProperties>(principal, false);
                foreach (var deniedPageId in deniedPages)
                {
                    var id = deniedPageId;
                    query = query.Where(f => f.Id != id);
                }
            }

            var includeMetadata = request.Data.IncludeMetadata;
            var listResponse    = query
                                  .Select(page => new PageModel
            {
                Id             = page.Id,
                Version        = page.Version,
                CreatedBy      = page.CreatedByUser,
                CreatedOn      = page.CreatedOn,
                LastModifiedBy = page.ModifiedByUser,
                LastModifiedOn = page.ModifiedOn,

                PageUrl                 = page.PageUrl,
                Title                   = page.Title,
                Description             = page.Description,
                IsPublished             = page.Status == PageStatus.Published,
                PublishedOn             = page.PublishedOn,
                LayoutId                = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : (Guid?)null,
                MasterPageId            = page.MasterPage != null && !page.MasterPage.IsDeleted ? page.MasterPage.Id : (Guid?)null,
                CategoryId              = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                CategoryName            = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                MainImageId             = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                MainImageUrl            = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                MainImageThumbnauilUrl  = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                MainImageCaption        = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                IsArchived              = page.IsArchived,
                IsMasterPage            = page.IsMasterPage,
                LanguageId              = page.Language != null ? page.Language.Id : (Guid?)null,
                LanguageCode            = page.Language != null ? page.Language.Code : null,
                LanguageGroupIdentifier = page.LanguageGroupIdentifier,
                Metadata                = includeMetadata
                            ? new MetadataModel
                {
                    MetaDescription = page.MetaDescription,
                    MetaTitle       = page.MetaTitle,
                    MetaKeywords    = page.MetaKeywords,
                    UseNoFollow     = page.UseNoFollow,
                    UseNoIndex      = page.UseNoIndex,
                    UseCanonicalUrl = page.UseCanonicalUrl
                } : null
            }).ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.MainImageUrl           = fileUrlResolver.EnsureFullPathUrl(model.MainImageUrl);
                model.MainImageThumbnauilUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageThumbnauilUrl);
            }

            if (listResponse.Items.Count > 0 &&
                (request.Data.IncludePageOptions || request.Data.IncludeTags || request.Data.IncludeAccessRules))
            {
                LoadInnerCollections(listResponse, request.Data.IncludePageOptions, request.Data.IncludeTags, request.Data.IncludeAccessRules);
            }

            return(new GetPagesResponse
            {
                Data = listResponse
            });
        }
예제 #15
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            if (!request.Data.IncludeMasterPages)
            {
                query = query.Where(b => !b.IsMasterPage);
            }

            query = query.ApplyPageTagsFilter(request.Data);

            var includeMetadata = request.Data.IncludeMetadata;
            var listResponse    = query
                                  .Select(page => new PageModel
            {
                Id             = page.Id,
                Version        = page.Version,
                CreatedBy      = page.CreatedByUser,
                CreatedOn      = page.CreatedOn,
                LastModifiedBy = page.ModifiedByUser,
                LastModifiedOn = page.ModifiedOn,

                PageUrl                 = page.PageUrl,
                Title                   = page.Title,
                Description             = page.Description,
                IsPublished             = page.Status == PageStatus.Published,
                PublishedOn             = page.PublishedOn,
                LayoutId                = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : Guid.Empty,
                CategoryId              = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                CategoryName            = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                MainImageId             = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                MainImageUrl            = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                MainImageThumbnauilUrl  = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                MainImageCaption        = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                IsArchived              = page.IsArchived,
                IsMasterPage            = page.IsMasterPage,
                LanguageId              = page.Language != null ? page.Language.Id : (Guid?)null,
                LanguageCode            = page.Language != null ? page.Language.Code : null,
                LanguageGroupIdentifier = page.LanguageGroupIdentifier,
                Metadata                = includeMetadata
                            ? new MetadataModel
                {
                    MetaDescription = page.MetaDescription,
                    MetaTitle       = page.MetaTitle,
                    MetaKeywords    = page.MetaKeywords,
                    UseNoFollow     = page.UseNoFollow,
                    UseNoIndex      = page.UseNoIndex,
                    UseCanonicalUrl = page.UseCanonicalUrl
                } : null
            }).ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.MainImageUrl           = fileUrlResolver.EnsureFullPathUrl(model.MainImageUrl);
                model.MainImageThumbnauilUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageThumbnauilUrl);
            }

            if (listResponse.Items.Count > 0 && (request.Data.IncludePageOptions || request.Data.IncludeTags))
            {
                LoadOptionsAndTags(listResponse, request.Data.IncludePageOptions, request.Data.IncludeTags);
            }

            return(new GetPagesResponse
            {
                Data = listResponse
            });
        }
예제 #16
0
        public GetPagesResponse Get(GetPagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                .AsQueryable<PageProperties>();

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(b => !b.IsArchived);
            }

            if (!request.Data.IncludeUnpublished)
            {
                query = query.Where(b => b.Status == PageStatus.Published);
            }

            if (!request.Data.IncludeMasterPages)
            {
                query = query.Where(b => !b.IsMasterPage);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return page => page.PageTags.Any(pageTag => pageTag.Tag.Name == tagName && !pageTag.IsDeleted && !pageTag.Tag.IsDeleted); });

            var includeMetadata = request.Data.IncludeMetadata;
            var listResponse = query
                .Select(page => new PageModel
                    {
                        Id = page.Id,
                        Version = page.Version,
                        CreatedBy = page.CreatedByUser,
                        CreatedOn = page.CreatedOn,
                        LastModifiedBy = page.ModifiedByUser,
                        LastModifiedOn = page.ModifiedOn,

                        PageUrl = page.PageUrl,
                        Title = page.Title,
                        Description = page.Description,
                        IsPublished = page.Status == PageStatus.Published,
                        PublishedOn = page.PublishedOn,
                        LayoutId = page.Layout != null && !page.Layout.IsDeleted ? page.Layout.Id : Guid.Empty,
                        CategoryId = page.Category != null && !page.Category.IsDeleted ? page.Category.Id : (Guid?)null,
                        CategoryName = page.Category != null && !page.Category.IsDeleted ? page.Category.Name : null,
                        MainImageId = page.Image != null && !page.Image.IsDeleted ? page.Image.Id : (Guid?)null,
                        MainImageUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicUrl : null,
                        MainImageThumbnauilUrl = page.Image != null && !page.Image.IsDeleted ? page.Image.PublicThumbnailUrl : null,
                        MainImageCaption = page.Image != null && !page.Image.IsDeleted ? page.Image.Caption : null,
                        IsArchived = page.IsArchived,
                        IsMasterPage = page.IsMasterPage,
                        Metadata = includeMetadata
                            ? new MetadataModel
                                  {
                                      MetaDescription = page.MetaDescription,
                                      MetaTitle = page.MetaTitle,
                                      MetaKeywords = page.MetaKeywords,
                                      UseNoFollow = page.UseNoFollow,
                                      UseNoIndex = page.UseNoIndex,
                                      UseCanonicalUrl = page.UseCanonicalUrl
                                  } : null
                    }).ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.MainImageUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageUrl);
                model.MainImageThumbnauilUrl = fileUrlResolver.EnsureFullPathUrl(model.MainImageThumbnauilUrl);
            }

            if (listResponse.Items.Count > 0 && (request.Data.IncludePageOptions || request.Data.IncludeTags))
            {
                LoadOptionsAndTags(listResponse, request.Data.IncludePageOptions, request.Data.IncludeTags);
            }

            return new GetPagesResponse
            {
                Data = listResponse
            };
        }