Beispiel #1
0
 public override IDisplayResult Display(TextField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayTextFieldViewModel>("TextField", model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
Beispiel #2
0
 public override IDisplayResult Display(TaxonomyField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayTaxonomyFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Detail", "Content")
            .Location("Summary", "Content"));
 }
 public override IDisplayResult Display(CodeField field, BuildFieldDisplayContext fieldDisplayContext)
 {
     return(Initialize <DisplayCodeFieldViewModel>(GetDisplayShapeType(fieldDisplayContext), model =>
     {
         model.Field = field;
         model.Part = fieldDisplayContext.ContentPart;
         model.PartFieldDefinition = fieldDisplayContext.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
 public override IDisplayResult Display(DateTimeField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayDateTimeFieldViewModel>(GetDisplayShapeType(context), async model =>
     {
         model.LocalDateTime = field.Value == null ? (DateTime?)null : (await _localClock.ConvertToLocalAsync(field.Value.Value)).DateTime;
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Detail", "Content")
            .Location("Summary", "Content"));
 }
 public override IDisplayResult Display(UniqueIdentifierField field, BuildFieldDisplayContext context)
 {
     return(Initialize <UniqueIdentifierFieldViewModel>("UniqueIdentifierField", model =>
     {
         model.IdentifierValue = field.IdentifierValue;
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
 public override IDisplayResult Display(MultiSelectField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayMultiSelectFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
         model.SelectedValues = field.SelectedValues;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
 public override IDisplayResult Display(ResponsiveMediaField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayResponsiveMediaFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
         model.Media = ParseMedia(field.Data, context.PartFieldDefinition.Settings.ToObject <ResponsiveMediaFieldSettings>().GetBreakpoints());
     })
            .Location("Content")
            .Location("SummaryAdmin", "")
            .Location("DetailAdmin", ""));
 }
 public override IDisplayResult Display(ListOfItemsField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayListOfItemsFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         model.Field = field;
         model.BuildFieldDisplayContext = context;
         model.Settings = context.PartFieldDefinition.GetSettings <ListOfItemsFieldSettings>();
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
Beispiel #9
0
 public override IDisplayResult Display(MatrixField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayMatrixFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         var fieldSettings = context.PartFieldDefinition.GetSettings <MatrixFieldPredefinedListEditorSettings>();
         model.MatrixCells = _matrixTableProvider.BuildMatrixTable(fieldSettings).ToList();
         model.Selections = field.Selections;
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
Beispiel #10
0
        public override IDisplayResult Display(MultiTextField field, BuildFieldDisplayContext context)
        {
            return(Initialize <DisplayMultiTextFieldViewModel>(GetDisplayShapeType(context), model =>
            {
                var settings = context.PartFieldDefinition.GetSettings <MultiTextFieldSettings>();

                model.Values = settings.Options.Where(o => field.Values?.Contains(o.Value) == true).Select(o => o.Value).ToArray();
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
            })
                   .Location("Detail", "Content")
                   .Location("Summary", "Content"));
        }
 public override IDisplayResult Display(ContentPickerField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayContentPickerFieldViewModel>(GetDisplayShapeType(context), async model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
         model.Updater = context.Updater;
         model.SelectedContentItemIds = string.Join(",", field.ContentItemIds);
         model.ContentItems = await _contentManager.GetAsync(field.ContentItemIds);
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
 public override IDisplayResult Display(RenderAliasField field, BuildFieldDisplayContext context)
 {
     return(Initialize <DisplayRenderAliasFieldViewModel>(GetDisplayShapeType(context), model =>
     {
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
         model.Alias = field.Alias;
         model.DisplayType = field.DisplayType;
     })
            .Location("Content")
            .Location("SummaryAdmin", "")
            .Location("DetailAdmin", ""));
 }
Beispiel #13
0
 public override IDisplayResult Display(AddressField field, BuildFieldDisplayContext context)
 {
     return(Initialize <AddressFieldViewModel>("AddressField", model =>
     {
         model.Key = field.Key;
         model.Value = field.Value;
         model.ExtensionValue = field.ExtensionValue;
         model.Field = field;
         model.Part = context.ContentPart;
         model.PartFieldDefinition = context.PartFieldDefinition;
     })
            .Location("Content")
            .Location("SummaryAdmin", ""));
 }
Beispiel #14
0
        public override IDisplayResult Display(HtmlField field, BuildFieldDisplayContext context)
        {
            return(Initialize <DisplayHtmlFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                model.Html = field.Html;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;

                model.Html = await _liquidTemplateManager.RenderAsync(field.Html, _htmlEncoder, model,
                                                                      scope => scope.SetValue("ContentItem", field.ContentItem));
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
 public override IDisplayResult Display(ColorField field, BuildFieldDisplayContext context) =>
 // Same Display method for generating display shapes but this time the Initialize shape helper is being
 // used. We've seen it in the PersonPartDisplayDriver.Edit method. For this we need a view model object
 // which will be populated with the field data. The GetDisplayShapeType helper will generate a conventional
 // shape type for our content field which will be the name the field. Obviously, alternates can also be
 // used - so if the content item is being displayed with a display type named "Custom" then the
 // ColorField.Custom.cshtml file will be used, otherwise, the ColorField.cshtml will be active.
 Initialize <DisplayColorFieldViewModel>(GetDisplayShapeType(context), model =>
 {
     model.Field = field;
     model.Part  = context.ContentPart;
     model.PartFieldDefinition = context.PartFieldDefinition;
 })
 .Location("Content")
 .Location("SummaryAdmin", "");
        public override IDisplayResult Display(ResponsiveMediaField field, BuildFieldDisplayContext context)
        {
            var settings = context.PartFieldDefinition.GetSettings <ResponsiveMediaFieldSettings>();
            var data     = field.HasData ? field.Data : settings.FallbackData;

            return(Initialize <DisplayResponsiveMediaFieldViewModel>(GetDisplayShapeType(context), model =>
            {
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
                model.Media = ParseMedia(data, settings.GetBreakpoints());
            })
                   .Location("Content")
                   .Location("SummaryAdmin", "")
                   .Location("DetailAdmin", ""));
        }
Beispiel #17
0
        public override IDisplayResult Display(HtmlField field, BuildFieldDisplayContext context)
        {
            return(Initialize <DisplayHtmlFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                var templateContext = new TemplateContext();
                templateContext.SetValue("ContentItem", field.ContentItem);
                templateContext.MemberAccessStrategy.Register <DisplayHtmlFieldViewModel>();

                model.Html = await _liquidTemplatemanager.RenderAsync(field.Html, NullEncoder.Default, templateContext);
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
Beispiel #18
0
        public override IDisplayResult Display(EventbriteField field, BuildFieldDisplayContext context)
        {
            if (field == null || field.Data == null)
            {
                return(null);
            }

            return(Initialize <DisplayEventbriteFieldViewModel>(GetDisplayShapeType(context), model =>
            {
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
Beispiel #19
0
        public override IDisplayResult Display(MarkdownField field, BuildFieldDisplayContext context)
        {
            return(Initialize <MarkdownFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                model.Markdown = field.Markdown;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;

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

                model.Html = Markdig.Markdown.ToHtml(model.Markdown ?? "");
            })
                   .Location("Detail", "Content")
                   .Location("Summary", "Content"));
        }
Beispiel #20
0
        public override IDisplayResult Display(TaxonomyField field, BuildFieldDisplayContext context)
        {
            if (String.Equals(context.PartFieldDefinition.Editor(), "Contained", StringComparison.OrdinalIgnoreCase))
            {
                return(Initialize <DisplayTaxonomyFieldContainedViewModel>(GetDisplayShapeType(context), model =>
                {
                    model.Field = field;
                    model.Part = context.ContentPart;
                    model.PartFieldDefinition = context.PartFieldDefinition;
                    model.Context = context;
                })
                       .Location("Content")
                       .Location("SummaryAdmin", ""));
            }

            return(null);
        }
        //private static string GetPrefix(ContentRelationField field, BuildFieldEditorContext fieldContext)
        //{
        //    //return part.PartDefinition.Name + "." + field.Name;
        //    return fieldContext.PartFieldDefinition.PartDefinition.Name + "." +  fieldContext.PartFieldDefinition.Name;
        //}
        //private static string GetDifferentiator(Fields.ContentPickerField field, BuildFieldDisplayContext fieldContext)
        //{
        //    return fieldContext.PartFieldDefinition.FieldDefinition.Name;
        //}


        public override IDisplayResult Display(ContentRelationField field, BuildFieldDisplayContext context)
        {
            return(Initialize <ContentRelationFieldViewModel>("ContentRelationField", async model =>

            {
                var settings = context.PartFieldDefinition.GetSettings <ContentRelationFieldSettings>();
                IEnumerable <ContentItem> selectedContentItems = await _contentRelationItemService.Get(context.ContentPart.ContentItem.ContentItemId, settings.ContentRelationRecordUid);

                model.SelectedContentItems = selectedContentItems;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
            })
                   .Location("Content")
                   .Location("SummaryAdmin", "")
                   .Location("Summary", ""));
        }
Beispiel #22
0
        public override IDisplayResult Display(ProfileGroupField field, BuildFieldDisplayContext context)
        {
            if ("None".Equals(context.PartFieldDefinition.DisplayMode(), StringComparison.OrdinalIgnoreCase))
            {
                return(null);
            }

            return(Initialize <DisplayProfileGroupFieldViewModel>(GetDisplayShapeType(context), model =>
            {
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;

                model.ProfileGroups = GetProfileGroupsAsync(field.ProfileGroupContentItemIds).Result;
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
Beispiel #23
0
        public override async Task <IDisplayResult> DisplayAsync(BlockField field, BuildFieldDisplayContext context)
        {
            if (context.DisplayType != "Detail")
            {
                return(null);
            }

            var blocks = await _blocksParser.RenderAsync(field);

            return(Initialize <DisplayBlockFieldViewModel>(GetDisplayShapeType(context), model =>
            {
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
                model.Html = field.Html;
                model.Blocks = blocks;
            })
                   .Location("Content"));
        }
Beispiel #24
0
        Task <IDisplayResult> IContentFieldDisplayDriver.BuildDisplayAsync(ContentPart contentPart, ContentPartFieldDefinition partFieldDefinition, ContentTypePartDefinition typePartDefinition, BuildDisplayContext context)
        {
            if (!string.Equals(typeof(TField).Name, partFieldDefinition.FieldDefinition.Name) &&
                !string.Equals(nameof(ContentField), partFieldDefinition.FieldDefinition.Name))
            {
                return(Task.FromResult(default(IDisplayResult)));
            }

            var field = contentPart.Get <TField>(partFieldDefinition.Name);

            if (field != null)
            {
                Prefix = typePartDefinition.Name + "." + partFieldDefinition.Name;
                var fieldDisplayContext = new BuildFieldDisplayContext(contentPart, typePartDefinition, partFieldDefinition, context);
                return(DisplayAsync(field, fieldDisplayContext));
            }

            return(Task.FromResult(default(IDisplayResult)));
        }
Beispiel #25
0
        public override IDisplayResult Display(MarkdownField field, BuildFieldDisplayContext context)
        {
            return(Initialize <MarkdownFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                var templateContext = new TemplateContext();
                templateContext.SetValue("ContentItem", field.ContentItem);
                templateContext.MemberAccessStrategy.Register <MarkdownFieldViewModel>();

                model.Markdown = field.Markdown;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
                templateContext.SetValue("Model", model);

                model.Markdown = await _liquidTemplatemanager.RenderAsync(field.Markdown, _htmlEncoder, templateContext);
                model.Html = Markdig.Markdown.ToHtml(model.Markdown ?? "");
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
Beispiel #26
0
        public override IDisplayResult Display(HtmlField field, BuildFieldDisplayContext context)
        {
            return(Shape <DisplayHtmlFieldViewModel>("HtmlField", async model =>
            {
                var templateContext = new TemplateContext();
                templateContext.SetValue("ContentItem", field.ContentItem);
                templateContext.MemberAccessStrategy.Register <DisplayHtmlFieldViewModel>();

                using (var writer = new StringWriter())
                {
                    await _liquidTemplatemanager.RenderAsync(field.Html, writer, NullEncoder.Default, templateContext);
                    model.Html = writer.ToString();
                }

                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;
            })
                   .Location("Content")
                   .Location("SummaryAdmin", ""));
        }
        public override IDisplayResult Display(HtmlField field, BuildFieldDisplayContext context)
        {
            return(Initialize <DisplayHtmlFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                model.Html = field.Html;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;

                var settings = context.PartFieldDefinition.GetSettings <HtmlFieldSettings>();
                if (!settings.SanitizeHtml)
                {
                    model.Html = await _liquidTemplateManager.RenderAsync(field.Html, _htmlEncoder, model,
                                                                          scope => scope.SetValue("ContentItem", field.ContentItem));
                }

                model.Html = await _shortCodeService.ProcessAsync(model.Html);
            })
                   .Location("Detail", "Content")
                   .Location("Summary", "Content"));
        }
        public override IDisplayResult Display(MarkdownField field, BuildFieldDisplayContext context)
        {
            return(Initialize <MarkdownFieldViewModel>(GetDisplayShapeType(context), async model =>
            {
                var settings = context.PartFieldDefinition.GetSettings <MarkdownFieldSettings>();
                model.Markdown = field.Markdown;
                model.Field = field;
                model.Part = context.ContentPart;
                model.PartFieldDefinition = context.PartFieldDefinition;

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

                // The liquid rendering is for backwards compatability and can be removed in a future version.
                if (!settings.SanitizeHtml)
                {
                    model.Markdown = await _liquidTemplateManager.RenderStringAsync(model.Html, _htmlEncoder, model,
                                                                                    new Dictionary <string, FluidValue>()
                    {
                        ["ContentItem"] = new ObjectValue(field.ContentItem)
                    });
                }

                model.Html = await _shortcodeService.ProcessAsync(model.Html,
                                                                  new Context
                {
                    ["ContentItem"] = field.ContentItem,
                    ["PartFieldDefinition"] = context.PartFieldDefinition
                });

                if (settings.SanitizeHtml)
                {
                    model.Html = _htmlSanitizerService.Sanitize(model.Html ?? "");
                }
            })
                   .Location("Detail", "Content")
                   .Location("Summary", "Content"));
        }
        private async ValueTask BuildContentFieldDisplaysAsync(
            ContentItem contentItem,
            ContentPart contentPart,
            ContentTypePartDefinition contentTypePartDefinition,
            ContentPartFieldDefinition contentPartFieldDefinition,
            BuildDisplayContext context)
        {
            var fieldName     = contentPartFieldDefinition.Name;
            var fieldTypeName = contentPartFieldDefinition.FieldDefinition.Name;
            var fieldType     = _contentFields.FirstOrDefault(x => x.GetType().Name == fieldTypeName)?.GetType();

            if (fieldType == null)
            {
                return;
            }

            if (!(contentPart.Get(fieldType, fieldName) is ContentField field))
            {
                return;
            }

            var drivers = _contentFieldDisplayDrivers.Where(x => x.FieldType == fieldType);

            var fieldDisplayContext = new BuildFieldDisplayContext(
                contentPart,
                contentTypePartDefinition,
                contentPartFieldDefinition,
                context)
            {
                DefaultPosition = contentPartFieldDefinition.GetSettings <ContentPartFieldSettings>().Position
            };

            foreach (var driver in drivers)
            {
                var result = await driver.BuildDisplayAsync(field, fieldDisplayContext);
                await ApplyDisplayResultAsync(result, context);
            }
        }
        protected override IDisplayResult?BuildDisplay(MarkdownField contentField, BuildFieldDisplayContext context)
        {
            return(Shape(
                       nameof(MarkdownField),
                       async model =>
            {
                var shape = await model.New.MarkdownField();
                var markdown = contentField.Markdown ?? "";
                var html = _markdownService.ToHtml(markdown);
                var settings = context.PartFieldDefinition.GetSettings <MarkdownBodyPartSettings>();

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

                shape.Markdown = markdown;
                shape.Html = html;
                shape.ContentItem = contentField.ContentItem;
                shape.MarkdownBodyPart = contentField;
                return shape;
            })
                   .DefaultLocation("5"));
        }