public override Task GetContentItemAspectAsync(ContentItemAspectContext context)
        {
            context.For <ContentItemMetadata>(metadata =>
            {
                if (metadata.EditorRouteValues == null && context.ContentItem.ContentType == "AdvancedForm")
                {
                    metadata.EditorRouteValues = new RouteValueDictionary {
                        { "Area", "AdvancedForms" },
                        { "Controller", "Admin" },
                        { "Action", "Edit" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.EditorRouteValues == null && context.ContentItem.ContentType == "AdvancedFormSubmissions")
                {
                    try
                    {
                        string path = context.ContentItem.Content.AutoroutePart.Path.ToString().Split("/")[1];
                        metadata.EditorRouteValues = new RouteValueDictionary {
                            { "Area", "AdvancedForms" },
                            { "Controller", path },
                            { "Action", "Edit" },
                            { "id", context.ContentItem.ContentItemId }
                        };
                    }
                    catch
                    {
                    }
                }
            });

            return(Task.CompletedTask);
        }
Beispiel #2
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, MarkdownBodyPart part)
        {
            return(context.ForAsync <BodyAspect>(async bodyAspect =>
            {
                if (bodyAspect != null && part.ContentItem.Id == _contentItemId)
                {
                    bodyAspect.Body = _bodyAspect;

                    return;
                }

                try
                {
                    var model = new MarkdownBodyPartViewModel()
                    {
                        Markdown = part.Markdown,
                        MarkdownBodyPart = part,
                        ContentItem = part.ContentItem
                    };

                    var markdown = await _liquidTemplateManager.RenderAsync(part.Markdown, _htmlEncoder, model,
                                                                            scope => scope.SetValue("ContentItem", model.ContentItem));

                    var result = Markdig.Markdown.ToHtml(markdown ?? "");

                    bodyAspect.Body = _bodyAspect = new HtmlString(result);
                    _contentItemId = part.ContentItem.Id;
                }
                catch
                {
                    bodyAspect.Body = HtmlString.Empty;
                    _contentItemId = default;
                }
            }));
        }
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, HtmlBodyPart part)
        {
            return context.ForAsync<BodyAspect>(async bodyAspect =>
            {
                if (_bodyAspect != null)
                {
                    bodyAspect.Body = _bodyAspect;
                    return;
                }

                try
                {
                    var model = new HtmlBodyPartViewModel()
                    {
                        Html = part.Html,
                        HtmlBodyPart = part,
                        ContentItem = part.ContentItem
                    };

                    var templateContext = new TemplateContext();
                    templateContext.SetValue("ContentItem", part.ContentItem);
                    templateContext.MemberAccessStrategy.Register<HtmlBodyPartViewModel>();
                    templateContext.SetValue("Model", model);

                    var result = await _liquidTemplateManager.RenderAsync(part.Html, _htmlEncoder, templateContext);
                    bodyAspect.Body = _bodyAspect = new HtmlString(result);
                }
                catch
                {
                    bodyAspect.Body = HtmlString.Empty;
                }
            });
        }
Beispiel #4
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, LiquidPart part)
        {
            return(context.ForAsync <BodyAspect>(async bodyAspect =>
            {
                try
                {
                    var model = new LiquidPartViewModel()
                    {
                        LiquidPart = part,
                        ContentItem = part.ContentItem
                    };

                    var result = await _liquidTemplateManager.RenderHtmlContentAsync(part.Liquid, _htmlEncoder, model,
                                                                                     new Dictionary <string, FluidValue>()
                    {
                        ["ContentItem"] = new ObjectValue(model.ContentItem)
                    });

                    bodyAspect.Body = result;
                }
                catch
                {
                    bodyAspect.Body = HtmlString.Empty;
                }
            }));
        }
 public override void GetContentItemAspect(ContentItemAspectContext context, AutoroutePart part)
 {
     context.For <ContentItemMetadata>(contentItemMetadata =>
     {
         contentItemMetadata.Identity.Add("Alias", part.Path);
     });
 }
Beispiel #6
0
        public override async Task GetContentItemAspectAsync(ContentItemAspectContext context, PreviewPart part)
        {
            var pattern = GetPattern(part);

            if (!String.IsNullOrEmpty(pattern))
            {
                await context.ForAsync <PreviewAspect>(async previewAspect =>
                {
                    var model = new PreviewPartViewModel()
                    {
                        PreviewPart = part,
                        ContentItem = part.ContentItem
                    };

                    var templateContext = new TemplateContext();
                    templateContext.SetValue("ContentItem", part.ContentItem);
                    templateContext.MemberAccessStrategy.Register <PreviewPartViewModel>();
                    templateContext.SetValue("Model", model);

                    previewAspect.PreviewUrl = await _liquidTemplateManager.RenderAsync(pattern, NullEncoder.Default, templateContext);
                    previewAspect.PreviewUrl = previewAspect.PreviewUrl.Replace("\r", String.Empty).Replace("\n", String.Empty);
                });
            }

            return;
        }
Beispiel #7
0
 public override void GetContentItemAspect(ContentItemAspectContext context, IdentityPart part)
 {
     context.For <ContentItemMetadata>(contentItemMetadata =>
     {
         contentItemMetadata.Identity.Add("Identifier", part.Identifier);
     });
 }
        public override async Task GetContentItemAspectAsync(ContentItemAspectContext context, PreviewPart part)
        {
            var pattern = GetPattern(part);

            if (!String.IsNullOrEmpty(pattern))
            {
                await context.ForAsync <PreviewAspect>(async previewAspect =>
                {
                    var model = new PreviewPartViewModel()
                    {
                        PreviewPart = part,
                        ContentItem = part.ContentItem
                    };

                    previewAspect.PreviewUrl = await _liquidTemplateManager.RenderStringAsync(pattern, NullEncoder.Default, model,
                                                                                              new Dictionary <string, FluidValue>()
                    {
                        ["ContentItem"] = new ObjectValue(model.ContentItem)
                    });

                    previewAspect.PreviewUrl = previewAspect.PreviewUrl.Replace("\r", String.Empty).Replace("\n", String.Empty);
                });
            }

            return;
        }
Beispiel #9
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, HtmlBodyPart part)
        {
            return(context.ForAsync <BodyAspect>(async bodyAspect =>
            {
                if (_bodyAspect != null)
                {
                    bodyAspect.Body = _bodyAspect;
                    return;
                }

                try
                {
                    var model = new HtmlBodyPartViewModel()
                    {
                        Html = part.Html,
                        HtmlBodyPart = part,
                        ContentItem = part.ContentItem
                    };

                    var result = await _liquidTemplateManager.RenderAsync(part.Html, _htmlEncoder, model,
                                                                          scope => scope.SetValue("ContentItem", model.ContentItem));

                    bodyAspect.Body = _bodyAspect = new HtmlString(result);
                }
                catch
                {
                    bodyAspect.Body = HtmlString.Empty;
                }
            }));
        }
Beispiel #10
0
 public override void GetContentItemAspect(ContentItemAspectContext context, TitlePart part)
 {
     context.For <ContentItemMetadata>(contentItemMetadata =>
     {
         contentItemMetadata.DisplayText = part.Title;
     });
 }
Beispiel #11
0
 public override void GetContentItemAspect(ContentItemAspectContext context, ListPart part)
 {
     context.For <FeedMetadata>(feedMetadata =>
     {
         // If the value is not defined, it will be represented as null
         feedMetadata.FeedProxyUrl = part.Content.FeedProxyUrl;
     });
 }
 public override Task GetContentItemAspectAsync(ContentItemAspectContext context, LocalizationPart part)
 {
     return(context.ForAsync <CultureAspect>(cultureAspect =>
     {
         cultureAspect.Culture = CultureInfo.GetCultureInfo(part.Culture);
         return Task.CompletedTask;
     }));
 }
Beispiel #13
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, MarkdownBodyPart part)
        {
            return(context.ForAsync <BodyAspect>(async bodyAspect =>
            {
                if (bodyAspect != null && part.ContentItem.Id == _contentItemId)
                {
                    bodyAspect.Body = _bodyAspect;

                    return;
                }

                try
                {
                    var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
                    var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => String.Equals(x.PartDefinition.Name, "MarkdownBodyPart"));
                    var settings = contentTypePartDefinition.GetSettings <MarkdownBodyPartSettings>();

                    // The default Markdown option is to entity escape html
                    // so filters must be run after the markdown has been processed.
                    var html = _markdownService.ToHtml(part.Markdown);

                    // The liquid rendering is for backwards compatability and can be removed in a future version.
                    if (!settings.SanitizeHtml)
                    {
                        var model = new MarkdownBodyPartViewModel()
                        {
                            Markdown = part.Markdown,
                            Html = html,
                            MarkdownBodyPart = part,
                            ContentItem = part.ContentItem
                        };

                        html = await _liquidTemplateManager.RenderAsync(html, _htmlEncoder, model,
                                                                        scope => scope.SetValue("ContentItem", model.ContentItem));
                    }

                    html = await _shortcodeService.ProcessAsync(html,
                                                                new Context
                    {
                        ["ContentItem"] = part.ContentItem,
                        ["TypePartDefinition"] = contentTypePartDefinition
                    });

                    if (settings.SanitizeHtml)
                    {
                        html = _htmlSanitizerService.Sanitize(html);
                    }

                    bodyAspect.Body = _bodyAspect = new HtmlString(html);
                    _contentItemId = part.ContentItem.Id;
                }
                catch
                {
                    bodyAspect.Body = HtmlString.Empty;
                    _contentItemId = default;
                }
            }));
        }
Beispiel #14
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context)
        {
            // change the view links to goto custom controllers

            switch (context.ContentItem.ContentType)
            {
            case "TransformalizeReport":
                return(context.ForAsync <ContentItemMetadata>(metadata => {
                    if (metadata.DisplayRouteValues != null)
                    {
                        metadata.DisplayRouteValues.Remove("Area");
                        metadata.DisplayRouteValues.Add("Area", Common.ModuleName);
                        metadata.DisplayRouteValues.Remove("Controller");
                        metadata.DisplayRouteValues.Add("Controller", "Report");
                        metadata.DisplayRouteValues.Remove("Action");
                        metadata.DisplayRouteValues.Add("Action", "Index");
                        metadata.DisplayRouteValues.Remove("ContentItemId");
                        metadata.DisplayRouteValues.Add("ContentItemId", context.ContentItem.As <AliasPart>().Alias);
                    }
                    return Task.CompletedTask;
                }));

            case "TransformalizeTask":
                return(context.ForAsync <ContentItemMetadata>(metadata => {
                    if (metadata.DisplayRouteValues != null)
                    {
                        metadata.DisplayRouteValues.Remove("Area");
                        metadata.DisplayRouteValues.Add("Area", Common.ModuleName);
                        metadata.DisplayRouteValues.Remove("Controller");
                        metadata.DisplayRouteValues.Add("Controller", "Task");
                        metadata.DisplayRouteValues.Remove("Action");
                        metadata.DisplayRouteValues.Add("Action", "Review");
                        metadata.DisplayRouteValues.Remove("ContentItemId");
                        metadata.DisplayRouteValues.Add("ContentItemId", context.ContentItem.As <AliasPart>().Alias);
                    }
                    return Task.CompletedTask;
                }));

            case "TransformalizeForm":
                return(context.ForAsync <ContentItemMetadata>(metadata => {
                    if (metadata.DisplayRouteValues != null)
                    {
                        metadata.DisplayRouteValues.Remove("Area");
                        metadata.DisplayRouteValues.Add("Area", Common.ModuleName);
                        metadata.DisplayRouteValues.Remove("Controller");
                        metadata.DisplayRouteValues.Add("Controller", "Form");
                        metadata.DisplayRouteValues.Remove("Action");
                        metadata.DisplayRouteValues.Add("Action", "Index");
                        metadata.DisplayRouteValues.Remove("ContentItemId");
                        metadata.DisplayRouteValues.Add("ContentItemId", context.ContentItem.As <AliasPart>().Alias);
                    }
                    return Task.CompletedTask;
                }));

            default:
                return(Task.CompletedTask);
            }
        }
Beispiel #15
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, TitlePart part)
        {
            context.For <ContentItemMetadata>(contentItemMetadata =>
            {
                contentItemMetadata.DisplayText = part.Title;
            });

            return(Task.CompletedTask);
        }
 public override Task GetContentItemAspectAsync(ContentItemAspectContext context, ListPart part)
 {
     return(context.ForAsync <FeedMetadata>(feedMetadata =>
     {
         // If the value is not defined, it will be represented as null
         feedMetadata.FeedProxyUrl = part.Content.FeedProxyUrl;
         return Task.CompletedTask;
     }));
 }
Beispiel #17
0
 public override void GetContentItemAspect(ContentItemAspectContext context, LiquidPart part)
 {
     context.For <BodyAspect>(bodyAspect =>
     {
         if (FluidTemplate.TryParse(part.Liquid, out var template, out var errors))
         {
             //var html = template.RenderAsync().GetAwaiter().GetResult();
             //bodyAspect.Body = new HtmlString(html);
         }
Beispiel #18
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context)
        {
            return(context.ForAsync <ContentItemMetadata>(metadata =>
            {
                if (metadata.CreateRouteValues == null)
                {
                    metadata.CreateRouteValues = new RouteValueDictionary {
                        { "Area", "OrchardCore.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Create" },
                        { "Id", context.ContentItem.ContentType }
                    };
                }

                if (metadata.EditorRouteValues == null)
                {
                    metadata.EditorRouteValues = new RouteValueDictionary {
                        { "Area", "OrchardCore.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Edit" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.AdminRouteValues == null)
                {
                    metadata.AdminRouteValues = new RouteValueDictionary {
                        { "Area", "OrchardCore.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Edit" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.DisplayRouteValues == null)
                {
                    metadata.DisplayRouteValues = new RouteValueDictionary {
                        { "Area", "OrchardCore.Contents" },
                        { "Controller", "Item" },
                        { "Action", "Display" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.RemoveRouteValues == null)
                {
                    metadata.RemoveRouteValues = new RouteValueDictionary {
                        { "Area", "OrchardCore.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Remove" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                return Task.CompletedTask;
            }));
        }
Beispiel #19
0
        public override void GetContentItemAspect(ContentItemAspectContext context)
        {
            context.For <ContentItemMetadata>(metadata =>
            {
                if (metadata.CreateRouteValues == null)
                {
                    metadata.CreateRouteValues = new RouteValueDictionary {
                        { "Area", "Orchard.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Create" },
                        { "Id", context.ContentItem.ContentType }
                    };
                }

                if (metadata.EditorRouteValues == null)
                {
                    metadata.EditorRouteValues = new RouteValueDictionary {
                        { "Area", "Orchard.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Edit" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.AdminRouteValues == null)
                {
                    metadata.AdminRouteValues = new RouteValueDictionary {
                        { "Area", "Orchard.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Edit" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.DisplayRouteValues == null)
                {
                    metadata.DisplayRouteValues = new RouteValueDictionary {
                        { "Area", "Orchard.Contents" },
                        { "Controller", "Item" },
                        { "Action", "Display" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }

                if (metadata.RemoveRouteValues == null)
                {
                    metadata.RemoveRouteValues = new RouteValueDictionary {
                        { "Area", "Orchard.Contents" },
                        { "Controller", "Admin" },
                        { "Action", "Remove" },
                        { "ContentItemId", context.ContentItem.ContentItemId }
                    };
                }
            });
        }
Beispiel #20
0
        public TAspect PopulateAspect <TAspect>(IContent content, TAspect aspect)
        {
            var context = new ContentItemAspectContext
            {
                ContentItem = content.ContentItem,
                Aspect      = aspect
            };

            Handlers.Invoke(handler => handler.GetContentItemAspect(context), _logger);

            return(aspect);
        }
Beispiel #21
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, TaxonomyPart part)
        {
            return(context.ForAsync <ContainedContentItemsAspect>(aspect =>
            {
                aspect.Accessors.Add((jObject) =>
                {
                    return jObject["TaxonomyPart"]["Terms"] as JArray;
                });

                return Task.CompletedTask;
            }));
        }
Beispiel #22
0
        public override void GetContentItemAspect(ContentItemAspectContext context)
        {
            context.For <ContentItemMetadata>(metadata =>
            {
                var layerMetadata = context.ContentItem.As <LayerMetadata>();

                if (layerMetadata != null && !String.IsNullOrEmpty(layerMetadata.Title))
                {
                    metadata.DisplayText = layerMetadata.Title;
                }
            });
        }
Beispiel #23
0
        public async Task <TAspect> PopulateAspectAsync <TAspect>(IContent content, TAspect aspect)
        {
            var context = new ContentItemAspectContext
            {
                ContentItem = content.ContentItem,
                Aspect      = aspect
            };

            await Handlers.InvokeAsync((handler, context) => handler.GetContentItemAspectAsync(context), context, _logger);

            return(aspect);
        }
Beispiel #24
0
        public override void GetContentItemAspect(ContentItemAspectContext context, BodyPart part)
        {
            context.For <BodyAspect>(bodyAspect =>
            {
                var contentTypeDefinition     = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
                var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == nameof(BodyPart));
                var settings = contentTypePartDefinition.GetSettings <BodyPartSettings>();

                var body = part.Body;

                bodyAspect.Body = new HtmlString(body);
            });
        }
Beispiel #25
0
 public override void GetContentItemAspect(ContentItemAspectContext context, ListPart part)
 {
     context.For <ContentItemMetadata>(contentItemMetadata =>
     {
         contentItemMetadata.AdminRouteValues = new RouteValueDictionary
         {
             { "Area", "Orchard.Contents" },
             { "Controller", "Admin" },
             { "Action", "Display" },
             { "Id", context.ContentItem.ContentItemId }
         };
     });
 }
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, SitemapPart part)
        {
            return(context.ForAsync <SitemapMetadataAspect>(aspect =>
            {
                if (part.OverrideSitemapConfig)
                {
                    aspect.ChangeFrequency = part.ChangeFrequency.ToString();
                    aspect.Priority = part.Priority;
                }

                return Task.CompletedTask;
            }));
        }
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, HtmlBodyPart part)
        {
            return(context.ForAsync <BodyAspect>(bodyAspect =>
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
                var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == nameof(HtmlBodyPart));
                var settings = contentTypePartDefinition.GetSettings <HtmlBodyPartSettings>();
                var body = part.Html;

                bodyAspect.Body = new HtmlString(body);
                return Task.CompletedTask;
            }));
        }
Beispiel #28
0
        public override void GetContentItemAspect(ContentItemAspectContext context, MarkdownPart part)
        {
            context.For <BodyAspect>(bodyAspect =>
            {
                var contentTypeDefinition     = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
                var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == nameof(MarkdownPart));
                var settings = contentTypePartDefinition.GetSettings <MarkdownPartSettings>();

                var html = Markdig.Markdown.ToHtml(part.Markdown ?? "");

                bodyAspect.Body = new HtmlString(html);
            });
        }
Beispiel #29
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, MarkdownBodyPart part)
        {
            return(context.ForAsync <BodyAspect>(bodyAspect =>
            {
                var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
                var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == nameof(MarkdownBodyPart));
                var settings = contentTypePartDefinition.GetSettings <MarkdownBodyPartSettings>();
                var html = Markdig.Markdown.ToHtml(part.Markdown ?? "");

                bodyAspect.Body = new HtmlString(html);
                return Task.CompletedTask;
            }));
        }
Beispiel #30
0
        public override Task GetContentItemAspectAsync(ContentItemAspectContext context, BagPart part)
        {
            return(context.ForAsync <ContainedContentItemsAspect>(aspect =>
            {
                aspect.Accessors.Add((jObject) =>
                {
                    // Content.Path contains the accessor for named bag parts and typed bag parts.
                    var jContent = part.Content as JObject;
                    return jObject[jContent.Path]["ContentItems"] as JArray;
                });

                return Task.CompletedTask;
            }));
        }