public override Task <IDisplayResult> DisplayAsync(DashboardPart part, BuildPartDisplayContext context)
 {
     return(Task.FromResult <IDisplayResult>(null));
 }
Exemplo n.º 2
0
 public virtual IDisplayResult Display(TPart part, BuildPartDisplayContext context)
 {
     return(Display(part));
 }
Exemplo n.º 3
0
        private async Task <IEnumerable <dynamic> > GetSlides(PresentationPart part, SlidesProvider slidesProvidermodel, BuildPartDisplayContext context)
        {
            ISlidesProvider slidesProvider = !string.IsNullOrWhiteSpace(part.ProviderName) ? _slidesProviderManager.GetProvider(part.ProviderName) : null;

            if (slidesProvider == null)
            {
                return(null);
            }
            SlidesProviderContext slidesProviderContext = new SlidesProviderContext(part, slidesProvidermodel, context);

            return(await slidesProvider.BuildSlidesAsync(slidesProviderContext));
        }
 protected string GetDisplayShapeType(BuildPartDisplayContext context)
 {
     return(GetDisplayShapeType(typeof(TPart).Name, context));
 }
        Task <IDisplayResult> IContentPartDisplayDriver.BuildDisplayAsync(ContentPart contentPart, ContentTypePartDefinition typePartDefinition, BuildDisplayContext context)
        {
            var buildDisplayContext = new BuildPartDisplayContext(typePartDefinition, context);

            return(DisplayAsync(contentPart, buildDisplayContext));
        }
Exemplo n.º 6
0
 public override IDisplayResult Display(PriceVariantsPart part, BuildPartDisplayContext context)
 {
     return(Initialize <PriceVariantsPartViewModel>(GetDisplayShapeType(context), m => BuildViewModel(m, part))
            .Location("Detail", "Content:25")
            .Location("Summary", "Meta:10"));
 }
        private async ValueTask BuildViewModel(MarkdownBodyPartViewModel model, MarkdownBodyPart markdownBodyPart, BuildPartDisplayContext context)
        {
            model.Markdown         = markdownBodyPart.Markdown;
            model.MarkdownBodyPart = markdownBodyPart;
            model.ContentItem      = markdownBodyPart.ContentItem;

            // 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 ?? "");

            var settings = context.TypePartDefinition.GetSettings <MarkdownBodyPartSettings>();

            // The liquid rendering is for backwards compatability and can be removed in a future version.
            if (!settings.SanitizeHtml)
            {
                model.Html = await _liquidTemplateManager.RenderAsync(model.Html, _htmlEncoder, model,
                                                                      scope => scope.SetValue("ContentItem", model.ContentItem));
            }

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

            if (settings.SanitizeHtml)
            {
                model.Html = _htmlSanitizerService.Sanitize(model.Html ?? "");
            }
        }
        private async ValueTask BuildViewModelAsync(HtmlBodyPartViewModel model, HtmlBodyPart htmlBodyPart, BuildPartDisplayContext context)
        {
            model.Html         = htmlBodyPart.Html;
            model.HtmlBodyPart = htmlBodyPart;
            model.ContentItem  = htmlBodyPart.ContentItem;
            var settings = context.TypePartDefinition.GetSettings <HtmlBodyPartSettings>();

            if (!settings.SanitizeHtml)
            {
                model.Html = await _liquidTemplateManager.RenderStringAsync(htmlBodyPart.Html, _htmlEncoder, model,
                                                                            new Dictionary <string, FluidValue>() { ["ContentItem"] = new ObjectValue(model.ContentItem) });
            }

            model.Html = await _shortcodeService.ProcessAsync(model.Html,
                                                              new Context
            {
                ["ContentItem"]        = htmlBodyPart.ContentItem,
                ["TypePartDefinition"] = context.TypePartDefinition
            });
        }
        public override async Task <IDisplayResult> DisplayAsync(StripePaymentFormPart stripePaymentFormPart, BuildPartDisplayContext context)
        {
            var paymentPart   = stripePaymentFormPart.ContentItem.Get <PaymentPart>("PaymentPart");
            var cost          = (long)(paymentPart.Cost * 100);
            var currency      = paymentPart.Currency.Text;
            var paymentIntent = await _stripePaymentService.CreatePaymentIntent(stripePaymentFormPart.StripeSecretKey.Text, cost, currency, new Dictionary <string, string>());

            return(Initialize <StripePaymentFormPartViewModel>("StripePaymentFormPart", m =>
            {
                m.PublishableKey = stripePaymentFormPart.StripePublishableKey.Text;
                m.IntentClientSecret = paymentIntent.ClientSecret;
            })
                   .Location("Detail", "Content:5")
                   .Location("Summary", "Content:5"));
        }
Exemplo n.º 10
0
 public override IDisplayResult Display(OrderPart orderPart, BuildPartDisplayContext context)
 // TODO: add permissions
 => Initialize <OrderPartViewModel>(GetDisplayShapeType(context), m => BuildViewModel(m, orderPart))
 .Location("Detail", "Content:25")
 .Location("Summary", "Meta:10");
        public override async Task <IDisplayResult> DisplayAsync(ContextualEditPart part, BuildPartDisplayContext context)
        {
            var user = _httpContextAccessor.HttpContext?.User;

            if (user == null)
            {
                return(null);
            }

            var contentItem = await _contextualEditService.GetContentItemForRequestAsync();

            if (contentItem == null || !await _authorizationService.AuthorizeAsync(user, Contents.Permissions.EditContent, contentItem))
            {
                return(null);
            }

            return(Initialize <ContextualEditPartDisplayViewModel>("ContextualEditPart", model => {
                model.ContentItem = contentItem;
            }).Location("Content:10"));
        }
 public override IDisplayResult Display(SubscriptionGroupSelectPart part, BuildPartDisplayContext context)
 {
     return(null);
 }
Exemplo n.º 13
0
//        private readonly IHttpContextAccessor _httpContextAccessor;
//
//        public DisableThemePartDisplayDriver(IHttpContextAccessor httpContextAccessor)
//        {
//            _httpContextAccessor = httpContextAccessor;
//        }
        public override IDisplayResult Display(DisableThemePart part, BuildPartDisplayContext context)
        {
            //set here to bee picked up from emptythemeselector and switch theme
            //_httpContextAccessor.HttpContext.Items["unthemed"] = "unthemed"; //value is not important
            return(null);
        }
Exemplo n.º 14
0
        public override IDisplayResult Display(PresentationPart part, BuildPartDisplayContext context)
        {
            string shapeName = !string.IsNullOrEmpty(part.ProviderName) ? "PresentationPart" : "PresentationPart_Empty";

            return(Combine(Initialize <PresentationPartDisplayViewModel>(shapeName, async model =>
            {
                model.Part = part;

                if (!string.IsNullOrEmpty(part.ProviderName))
                {
                    //pass in existing object config object from metadtaa
                    var slidesProvider = JsonConvert.DeserializeObject <SlidesProvider>(part.ProviderMetadata, new JsonSerializerSettings
                    {
                        TypeNameHandling = TypeNameHandling.All,
                        // $type no longer needs to be first
                        MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead
                    });

                    //player shape

                    var selectedEngineProfile = await _slideshowPlayerEngineManager.GetPresentationProfileAsync(part.ProfileName);
                    var selectedPlayerEngine = _slideshowPlayerEngineManager.GetEngineInstance(selectedEngineProfile);

                    //the slides results
                    IEnumerable <dynamic> slidesResult = await GetSlides(part, slidesProvider, context);


                    var slideShowplayerShape = await selectedPlayerEngine.BuildDisplayAsync(context.ShapeFactory, selectedEngineProfile, slidesResult, part);



                    //the shape editor
                    model.SlidesDisplayShape = slideShowplayerShape;
                }
            })
                           .Location("Detail", "Content:10"),

                           Initialize <PresentationPartDisplayViewModel>("PresentationPart_Embedded", async model =>
            {
                model.Part = part;

                if (!string.IsNullOrEmpty(part.ProviderName))
                {
                    //pass in existing object config object from metadtaa
                    var slidesProvider = JsonConvert.DeserializeObject <SlidesProvider>(part.ProviderMetadata, new JsonSerializerSettings
                    {
                        TypeNameHandling = TypeNameHandling.All,
                        // $type no longer needs to be first
                        MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead
                    });

                    //player shape

                    var selectedEngineProfile = await _slideshowPlayerEngineManager.GetPresentationProfileAsync(part.ProfileName);
                    var selectedPlayerEngine = _slideshowPlayerEngineManager.GetEngineInstance(selectedEngineProfile);

                    //the slides results
                    IEnumerable <dynamic> slidesResult = await GetSlides(part, slidesProvider, context);


                    var slideShowplayerShape = await selectedPlayerEngine.BuildDisplayAsync(context.ShapeFactory, selectedEngineProfile, slidesResult, part);



                    //the shape editor
                    model.SlidesDisplayShape = slideShowplayerShape;
                }
            })
                           .Location("Embedded", "Content:1")
                           ));
        }
 public override IDisplayResult Display(LocalizedTextPart part, BuildPartDisplayContext context)
 {
     _accessor.AddLocalizedItem(part);
     return(base.Display(part, context));
 }
Exemplo n.º 16
0
 public SlidesProviderContext(ContentPart part, SlidesProvider slidesProvider, BuildPartDisplayContext buildPartDisplayContext)
 {
     DisplayContext = buildPartDisplayContext;
     Part           = part;
     SlidesProvider = slidesProvider;
     //   ShapeFactory = shapeFactory;
 }
 public override IDisplayResult Display(HtmlBodyPart HtmlBodyPart, BuildPartDisplayContext context)
 {
     return(Initialize <HtmlBodyPartViewModel>(GetDisplayShapeType(context), m => BuildViewModelAsync(m, HtmlBodyPart))
            .Location("Detail", "Content:5")
            .Location("Summary", "Content:10"));
 }
Exemplo n.º 18
0
 public override IDisplayResult Display(MarkdownBodyPart MarkdownBodyPart, BuildPartDisplayContext context)
 {
     return(Initialize <MarkdownBodyPartViewModel>("MarkdownBodyPart", m => BuildViewModel(m, MarkdownBodyPart, context.TypePartDefinition))
            .Location("Detail", "Content:10")
            .Location("Summary", "Content:10"));
 }
 public override IDisplayResult Display(MarkdownBodyPart markdownBodyPart, BuildPartDisplayContext context)
 {
     return(Initialize <MarkdownBodyPartViewModel>(GetDisplayShapeType(context), m => BuildViewModel(m, markdownBodyPart, context))
            .Location("Detail", "Content:10")
            .Location("Summary", "Content:10"));
 }
Exemplo n.º 20
0
 public override IDisplayResult Display(DeleteActionPart part, BuildPartDisplayContext context)
 {
     return(Initialize <DeleteActionPartViewModel>("DeleteActionPart", m => BuildViewModel(m, part))
            .Location("Detail", "Content:20")
            .Location("Summary", "Header:6"));
 }
Exemplo n.º 21
0
 public override IDisplayResult Display(StaffPart part, BuildPartDisplayContext context) =>
 Initialize <StaffPartViewModel>(GetDisplayShapeType(context), viewModel => PopulateViewModel(part, viewModel))
 .Location("Detail", "Content:1")
 .Location("Summary", "Content:1");
Exemplo n.º 22
0
        public override IDisplayResult Display(TaxonomyPart taxonomyPart, BuildPartDisplayContext context)
        {
            return(Initialize <DisplayTaxonomyPartViewModel>("TaxonomyPart", async model =>
            {
                await context.Updater.TryUpdateModelAsync(model, nameof(TaxonomyPart));

                var pager = await GetPagerAsync(context.Updater, taxonomyPart);

                var termContentItem = await _orchardHelper.GetTaxonomyTermAsync(taxonomyPart.ContentItem.ContentItemId, model.TermContentItemId);
                if (termContentItem != null)
                {
                    model.TermContentItem = termContentItem;
                    model.ContentItems = (await _orchardHelper
                                          .QueryCategorizedContentItemsAsync(q =>
                                                                             q.Where(x => x.TaxonomyContentItemId == taxonomyPart.ContentItem.ContentItemId &&
                                                                                     x.TermContentItemId == termContentItem.ContentItemId))).ToList();
                }

                var termContainer = termContentItem.As <TermContainerPart>();
                if (termContainer != null)
                {
                    var ctpds = termContainer.ContainedContentTypes.Select(contentType => _contentDefinitionManager.GetTypeDefinition(contentType));

                    // By design only supports the first field using the contained editor.
                    var containables = ctpds
                                       .SelectMany(ctd => ctd.Parts.Where(p => p.PartDefinition.Fields.Any(f => f.FieldDefinition.Name == nameof(TaxonomyField) &&
                                                                                                           f.GetSettings <TaxonomyFieldSettings>().TaxonomyContentItemId == taxonomyPart.ContentItem.ContentItemId &&
                                                                                                           f.Editor() == "Contained")));

                    var entries = new List <ContentTypeEntry>();

                    foreach (var ctd in containables)
                    {
                        if (!termContainer.ContainedContentTypes.Any(ct => ct == ctd.ContentTypeDefinition.Name))
                        {
                            continue;
                        }

                        var entry = new ContentTypeEntry
                        {
                            ContentTypeDefinition = ctd.ContentTypeDefinition
                        };

                        // Find first field
                        foreach (var part in ctd.ContentTypeDefinition.Parts)
                        {
                            var field = part.PartDefinition.Fields.FirstOrDefault(f => f.FieldDefinition.Name == nameof(TaxonomyField) &&
                                                                                  f.GetSettings <TaxonomyFieldSettings>().TaxonomyContentItemId == taxonomyPart.ContentItem.ContentItemId &&
                                                                                  f.Editor() == "Contained");
                            if (field != null)
                            {
                                entry.TaxonomyFieldName = field.Name;
                                break;
                            }
                        }
                        if (!String.IsNullOrEmpty(entry.TaxonomyFieldName))
                        {
                            entries.Add(entry);
                        }
                    }
                    model.ContainedContentTypeDefinitions = entries;
                }
                model.TaxonomyPart = taxonomyPart;
                model.Context = context;
                model.Pager = await context.New.PagerSlim(pager);
            })
                   .Location("DetailAdmin", "Content:10"));
        }
        public override async Task <IDisplayResult> DisplayAsync(StripePaymentFormPart stripePaymentFormPart, BuildPartDisplayContext context)
        {
            var paymentPart = stripePaymentFormPart.ContentItem.As <PaymentPart>();

            paymentPart = new PaymentPart()
            {
                Cost = 200
            };

            var paymentIntent = await _stripePaymentService.CreatePaymentIntent(paymentPart);

            return(Initialize <StripePaymentFormPartViewModel>("StripePaymentFormPart", m =>
            {
                m.IntentCleintSecret = paymentIntent.ClientSecret;
            })
                   .Location("Detail", "Content:5")
                   .Location("Summary", "Content:5"));
        }
Exemplo n.º 24
0
        public override IDisplayResult Display(CrossReferencePart part, BuildPartDisplayContext context)
        {
            return
                (Combine(
                     Initialize <CrossReferencePartViewModel>("CrossReferencePart", async model =>
            {
                //this is called from front end
                // var pager = await GetPagerAsync(context.Updater, listPart);
                var pager = await GetPagerObjectAsync(context.Updater, part, context.TypePartDefinition.Name);
                //giannis
                var settings = GetSettings(part, context.TypePartDefinition.Name);
                //this is for backend only
                model.ListViewProviders = _listViewService.Providers.ToList();
                // model.ListViewProvider = GetListViewProvider(settings.FrontEndListViewName);
                model.ListViewProviderFrontEnd = GetListViewProvider(settings.FrontEndListViewName);
                // model.AllowUserToSwitchListViews = settings.AllowUserToSwitchListViews;
                model.AllowUserToSwitchListViewsFrontEnd = settings.AllowUserToSwitchListViewsFrontEnd;
                model.FrontEndListViews = settings.FrontEndListViews;
                model.Relation = settings.Relation;
                model.AllowUserToAddChildItemsFrontEnd = settings.AllowUserToAddChildItems;
                model.ShowLatestVersion = settings.ShowLatestVersion;

                if (settings.AllowUserToSwitchListViewsFrontEnd)
                {
                    if (!String.IsNullOrEmpty(settings.FrontEndListViews))
                    {
                        IEnumerable <string> rawTypes = settings.FrontEndListViews.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                        model.FrontEndListViewProviders = rawTypes.Select(listviewType => _listViewService.GetProvider(listviewType));
                    }
                    else
                    {
                        //if FrontEndListViews is empty than show all available providers in front end
                        model.FrontEndListViewProviders = _listViewService.Providers.ToList();
                    }
                }
                //========

                model.Part = part;
                //  model.ContentItems = (await QueryListItemsAsync(listPart, pager, true)).ToArray();
                //  model.PageOfContentItems = (await QueryListItemsAsync(listPart, pager, !model.ShowLatestVersion)).ToArray();
                model.PageOfContentItems = (await QueryListItemsAsync(part, pager, !model.ShowLatestVersion, settings.Relation)).ToArray();
                model.ContainedContentTypeDefinitions = GetContainedContentTypes(part, context.TypePartDefinition.Name);
                model.Context = context;
                // model.Pager = await context.New.PagerSlim(pager);
                model.Pager = await GetViewModelPagerAsync(context, pager, part, false, settings.Relation);
                //   bool isInAdmView = AdminAttribute.IsApplied(_httpContextAccessor.HttpContext);
                var displayContext = new BuildListDisplayContext()
                {
                    ContentItem = part.ContentItem,
                    PageOfContentItems = model.PageOfContentItems,
                    //EnablePositioning = settings.EnablePositioning,

                    Pager = model.Pager,
                    PartDisplayContext = context,
                    AdminListViewName = settings.AdminListViewName,
                    FrontEndListViewName = settings.FrontEndListViewName,
                    FrontEndListViews = settings.FrontEndListViews,
                    IsInAdminView = false       //isInAdmView
                };

                var currentListViewProvider = GetListViewProvider(settings.FrontEndListViewName);
                //todo why is it that when placing await in fron of currenListViewProvider i get a null reference in view
                model.ListViewShape = await currentListViewProvider.BuildDisplayAsync(displayContext);
            })
                     .Location("Detail", "Content:10"),

                     Initialize <CrossReferencePartViewModel>("CrossReferencePart", async model =>
            {
                //this is called from back end
                //var pager = await GetPagerAsync(context.Updater, listPart);
                var pager = await GetPagerObjectAsync(context.Updater, part, context.TypePartDefinition.Name);
                //giannis
                var settings = GetSettings(part, context.TypePartDefinition.Name);

                model.ListViewProviders = _listViewService.Providers.ToList();
                model.ListViewProvider = GetListViewProvider(settings.AdminListViewName);
                model.ListViewProviderFrontEnd = GetListViewProvider(settings.FrontEndListViewName);
                model.AllowUserToSwitchListViews = settings.AllowUserToSwitchListViews;
                model.AllowUserToSwitchListViewsFrontEnd = settings.AllowUserToSwitchListViewsFrontEnd;
                model.FrontEndListViews = settings.FrontEndListViews;
                model.Relation = settings.Relation;
                model.AllowUserToAddChildItemsFrontEnd = settings.AllowUserToAddChildItems;
                model.ShowLatestVersion = settings.ShowLatestVersion;
                //========
                model.Part = part;
                // model.ContentItems = (await QueryListItemsAsync(listPart, pager, false)).ToArray();
                //  model.PageOfContentItems = (await QueryListItemsAsync(listPart, pager, !model.ShowLatestVersion)).ToArray();
                model.PageOfContentItems = (await QueryListItemsAsync(part, pager, !model.ShowLatestVersion, settings.Relation)).ToArray();
                model.ContainedContentTypeDefinitions = GetContainedContentTypes(part, context.TypePartDefinition.Name);
                model.Context = context;
                //  model.Pager = await context.New.PagerSlim(pager);
                model.Pager = await GetViewModelPagerAsync(context, pager, part, false, settings.Relation);
                var displayContext = new BuildListDisplayContext()
                {
                    ContentItem = part.ContentItem,
                    PageOfContentItems = model.PageOfContentItems,
                    // EnablePositioning = settings.EnablePositioning,

                    Pager = model.Pager,
                    PartDisplayContext = context,
                    AdminListViewName = settings.AdminListViewName,
                    FrontEndListViewName = settings.FrontEndListViewName,
                    FrontEndListViews = settings.FrontEndListViews,
                    IsInAdminView = true       //isInAdmView
                };
                var currenListViewProvider = GetListViewProvider(settings.AdminListViewName);
                //todo why is it that when placing await in fron of currenListViewProvider i get a null reference in view
                model.ListViewShape = await currenListViewProvider.BuildDisplayAsync(displayContext);
                //
            })
                     .Location("DetailAdmin", "Content:10")
                     ));
        }
Exemplo n.º 25
0
 public virtual Task <IDisplayResult> DisplayAsync(TPart part, BuildPartDisplayContext context)
 {
     return(Task.FromResult(Display(part, context)));
 }
 public override IDisplayResult Display(PersonPart part, BuildPartDisplayContext context)
 {
     return(Initialize <PersonPartViewModel>(GetDisplayShapeType(context), viewModel => PopulateViewModel(part, viewModel))
            .Location("Detail", "Content:5")
            .Location("Summary", "Content:5"));
 }
        public override async Task <IDisplayResult> DisplayAsync(WidgetsListPart part, BuildPartDisplayContext context)
        {
            if (context.DisplayType != "Detail" || !part.Widgets.Any())
            {
                return(null);
            }

            dynamic layout      = context.Layout;
            dynamic layoutZones = layout.Zones;

            var contentItemDisplayManager = _serviceProvider.GetRequiredService <IContentItemDisplayManager>();

            foreach (var zone in part.Widgets.Keys)
            {
                foreach (var widget in part.Widgets[zone])
                {
                    var layerMetadata = widget.As <WidgetMetadata>();

                    if (layerMetadata != null)
                    {
                        var widgetContent = await contentItemDisplayManager.BuildDisplayAsync(widget, context.Updater);

                        widgetContent.Classes.Add("widget");
                        widgetContent.Classes.Add("widget-" + widget.ContentItem.ContentType.HtmlClassify());

                        var contentZone = layoutZones[zone];
                        contentZone.Add(widgetContent);
                    }
                }
            }

            return(null);
        }
        public override async Task <IDisplayResult> DisplayAsync(PostcodeSearch part, BuildPartDisplayContext context)
        {
            var contents = new List <PostcodeSearchViewModel>();
            var results  = Enumerable.Empty <ContentItem>();

            ContentItem[] list = null;

            var postcode     = GetQuerystringValue(QueryStringPostcode);
            var postcodesApi = new PostcodesApi();
            var response     = await postcodesApi.GetGameData(postcode);

            if (response != null && !string.IsNullOrEmpty(postcode))
            {
                var coord = new GeoCoordinate(Convert.ToDouble(response.FirstResult.Latitude), Convert.ToDouble(response.FirstResult.Longitude));

                results = await _session.Query <ContentItem>()
                          .With <ContentItemIndex>()
                          .Where(x => x.Published)
                          .With <PostcodeIndex>()
                          .ListAsync();

                foreach (var result in results)
                {
                    contents.Add(new PostcodeSearchViewModel
                    {
                        ContentItem = result,
                        Latitude    = Convert.ToDouble(result?.ContentItem?.As <PostcodePart>()?.Latitude ?? null),
                        Longitude   = Convert.ToDouble(result?.ContentItem?.As <PostcodePart>()?.Longitude ?? null),
                        Postcode    = result?.ContentItem?.As <PostcodePart>()?.Postcode
                    });
                }

                list = contents.OrderBy(x => x.GeoCoordinate.GetDistanceTo(coord)).ToList().Select(x => x.ContentItem).ToArray();
            }

            return(Initialize <PostcodeSearchListViewModel>("PostcodeSearch_List", model =>
            {
                model.EmptyResultsContent = part.EmptyResultsContent;
                model.Postcode = postcode;
                model.PostcodeInputPlaceholder = part.PostcodeInputPlaceholder;
                model.Results = list;
                model.SubmitButtonLabel = part.SubmitButtonLabel;
            })
                   .Location("Detail", "Content:5"));
        }