public void BeforeAll() { var kernel = new StandardKernel(); IoC.Configure(kernel); _source = Builder<Region>.CreateNew().Build(); var mapper = kernel.Get<IMapper<Region, RegionModel>>(); _result = mapper.Map(_source); }
private PostEditModel Transform(DynamicPost post, bool isDraft) { var type = App.PostTypes.GetById(post.TypeId); var model = new PostEditModel { Id = post.Id, BlogId = post.BlogId, TypeId = post.TypeId, Title = post.Title, Slug = post.Slug, MetaKeywords = post.MetaKeywords, MetaDescription = post.MetaDescription, Published = post.Published.HasValue ? post.Published.Value.ToString("yyyy-MM-dd HH:mm") : null, RedirectUrl = post.RedirectUrl, RedirectType = post.RedirectType.ToString(), State = GetState(post, isDraft), UseBlocks = type.UseBlocks }; foreach (var regionType in type.Regions) { var region = new RegionModel { Meta = new RegionMeta { Id = regionType.Id, Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)post.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldModel { Meta = new FieldMeta { Id = fieldType.Id, Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth), Description = fieldType.Description } }; if (typeof(Extend.Fields.SelectFieldBase).IsAssignableFrom(appFieldType.Type)) { foreach (var item in ((Extend.Fields.SelectFieldBase)Activator.CreateInstance(appFieldType.Type)).Items) { field.Meta.Options.Add(Convert.ToInt32(item.Value), item.Title); } } if (regionType.Fields.Count > 1) { field.Model = (Extend.IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (Extend.IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } foreach (var block in post.Blocks) { var blockType = App.Blocks.GetByType(block.Type); if (block is Extend.BlockGroup) { var group = new BlockGroupModel { Id = block.Id, Type = block.Type, Meta = new BlockMeta { Name = blockType.Name, Icon = blockType.Icon, Component = "block-group", IsGroup = true } }; if (blockType.Display != BlockDisplayMode.MasterDetail) { group.Meta.Component = blockType.Display == BlockDisplayMode.Horizontal ? "block-group-horizontal" : "block-group-vertical"; } foreach (var prop in block.GetType().GetProperties(App.PropertyBindings)) { if (typeof(Extend.IField).IsAssignableFrom(prop.PropertyType)) { var fieldType = App.Fields.GetByType(prop.PropertyType); group.Fields.Add(new FieldModel { Model = (Extend.IField)prop.GetValue(block), Meta = new FieldMeta { Id = prop.Name, Name = prop.Name, Component = fieldType.Component, } }); } } bool firstChild = true; foreach (var child in ((Extend.BlockGroup)block).Items) { blockType = App.Blocks.GetByType(child.Type); group.Items.Add(new BlockItemModel { IsActive = firstChild, Model = child, Meta = new BlockMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); firstChild = false; } model.Blocks.Add(group); } else { model.Blocks.Add(new BlockItemModel { Model = block, Meta = new BlockMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); } } // Custom editors foreach (var editor in type.CustomEditors) { model.Editors.Add(new EditorModel { Component = editor.Component, Icon = editor.Icon, Name = editor.Title }); } return(model); }
private SiteContentEditModel Transform(DynamicSiteContent site) { var type = App.SiteTypes.GetById(site.TypeId); var model = new SiteContentEditModel { Id = site.Id, TypeId = site.TypeId, Title = site.Title, UseBlocks = false }; foreach (var regionType in type.Regions) { var region = new RegionModel { Meta = new RegionMeta { Id = regionType.Id, Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Expanded = regionType.ListExpand, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)site.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldModel { Meta = new FieldMeta { Id = fieldType.Id, Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth), Description = fieldType.Description } }; if (typeof(SelectFieldBase).IsAssignableFrom(appFieldType.Type)) { foreach (var item in ((SelectFieldBase)Activator.CreateInstance(appFieldType.Type)).Items) { field.Meta.Options.Add(Convert.ToInt32(item.Value), item.Title); } } if (regionType.Fields.Count > 1) { field.Model = (IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } return(model); }
public LatLng GetCoordinate(RegionModel region) { return(new LatLng()); }
/// <summary> /// Generates semantic markup (HTML/RDFa attributes) for a given Region Model. /// </summary> /// <param name="htmlHelper">The HtmlHelper instance on which the extension method operates.</param> /// <param name="region">The Region Model to generate semantic markup for.</param> /// <returns>The HTML/RDFa attributes for the Region. These should be included in an HTML start tag.</returns> public static MvcHtmlString DxaRegionMarkup(this HtmlHelper htmlHelper, RegionModel region) { return(Markup.RenderRegionAttributes(region)); }
public void Resolve(RegionModel model) { this.Result = this.populator.Populate(model, this.valueResolver); }
public void Resolve(RegionModel model) { this.ResultOpt = null; }
public static List <Select2Item> SearchRegion(string searchVal) { RegionModel regionModel = new RegionModel(); return(regionModel.SearchRegion(searchVal)); }
private async Task <HttpResponseMessage> GetContentIfRedirectedAsync(string requestBaseUrl, string url, bool followRedirects, int maxRedirections, RegionModel regionModel, IHeaderDictionary headers) { HttpResponseMessage response = null; var httpClient = httpClientFactory.GetClientForRegionEndpoint(regionModel.RegionEndpoint); for (int i = 0; i < maxRedirections; i++) { var request = new HttpRequestMessage(HttpMethod.Get, url); foreach (var(key, value) in headers.Where(h => headerSettings.SupportedHeaders .Any(sh => string.Equals(sh, h.Key, StringComparison.CurrentCultureIgnoreCase)))) { request.Headers.Add(key, value.ToArray()); } response = await httpClient.SendAsync(request); if (!response.IsRedirectionStatus()) { return(response); } if (!followRedirects) { var redirectUrl = response.Headers.Location.IsAbsoluteUri ? response.Headers.Location.ToString() : $"{requestBaseUrl}{response.Headers.Location.ToString()}"; throw new RedirectException(new Uri(url), new Uri(redirectUrl), response.StatusCode == HttpStatusCode.PermanentRedirect); } url = response.Headers.Location.IsAbsoluteUri ? response.Headers.Location.ToString() : $"{requestBaseUrl}/{response.Headers.Location.ToString().TrimStart('/')}"; logger.LogWarning($"{nameof(GetContent)}: Redirecting get of child response from: {url}"); } return(null); }
public async Task <PostResponseModel> PostContent(string url, string path, RegionModel regionModel, IEnumerable <KeyValuePair <string, string> > formParameters, string requestBaseUrl) { _ = regionModel ?? throw new ArgumentNullException(nameof(regionModel)); var results = new PostResponseModel(); try { if (regionModel.IsHealthy) { logger.LogInformation($"{nameof(PostContent)}: Posting child response from: {url}"); var request = new HttpRequestMessage(HttpMethod.Post, url) { Content = formParameters != null ? new FormUrlEncodedContent(formParameters) : null, }; var httpClient = httpClientFactory.GetClientForRegionEndpoint(regionModel.RegionEndpoint); var response = await httpClient.SendAsync(request); if (response.IsRedirectionStatus()) { responseHandler.Process(response); var redirectUrl = requestBaseUrl; redirectUrl += response.Headers.Location.IsAbsoluteUri ? response.Headers.Location.PathAndQuery.ToString(CultureInfo.InvariantCulture) : response.Headers.Location.ToString(); throw new RedirectException(new Uri(url), new Uri(redirectUrl), response.StatusCode == HttpStatusCode.PermanentRedirect); } if (!response.IsSuccessStatusCode) { throw new EnhancedHttpException(response.StatusCode, response.ReasonPhrase, url); } var mediaType = response.Content.Headers.ContentType.MediaType; if (FileDownloadContentTypes.TryGetValue(mediaType, out var fileExtension)) { results.FileDownloadModel = new FileDownloadModel { FileBytes = await response.Content.ReadAsByteArrayAsync(), FileContentType = mediaType, FileName = !string.IsNullOrWhiteSpace(response.Content.Headers.ContentDisposition.FileNameStar) ? response.Content.Headers.ContentDisposition.FileNameStar : $"NCS file download.{fileExtension}", }; } else { results.Html = await response.Content.ReadAsStringAsync(); } logger.LogInformation($"{nameof(PostContent)}: Received child response from: {url}"); } else { results.Html = !string.IsNullOrWhiteSpace(regionModel.OfflineHtml) ? regionModel.OfflineHtml : markupMessages.GetRegionOfflineHtml(regionModel.PageRegion); } } catch (BrokenCircuitException ex) { logger.LogError(ex, $"{nameof(ContentRetriever)}: BrokenCircuit: {url} - {ex.Message}"); if (regionModel.HealthCheckRequired) { await appRegistryDataService.SetRegionHealthState(path, regionModel.PageRegion, false); } results.Html = !string.IsNullOrWhiteSpace(regionModel.OfflineHtml) ? regionModel.OfflineHtml : markupMessages.GetRegionOfflineHtml(regionModel.PageRegion); } catch (Exception ex) { logger.LogInformation($"{nameof(PostContent)}: Received error response from: {url}. {ex.Message}"); throw; } return(results); }
public static List <RegionModel> ToModel(this ICollection <Region> input) { return(input.AsEnumerable().Select(RegionModel => RegionModel.ToModel()).ToList()); }
public static bool RequiresHealthCheck(this RegionModel regionModel) { return(!(regionModel?.IsHealthy).GetValueOrDefault() && (regionModel?.HealthCheckRequired).GetValueOrDefault()); }
public RegionModel Update(RegionModel model) { return(_repository.Update(model)); }
public RegionModel Add(RegionModel model) { return(_repository.Add(model)); }
private async Task <string> GetContent_WithoutCaching(string url, string path, RegionModel regionModel, bool followRedirects, string requestBaseUrl, IHeaderDictionary headers) { const int MaxRedirections = 10; _ = regionModel ?? throw new ArgumentNullException(nameof(regionModel)); string results = null; try { if (regionModel.IsHealthy) { logger.LogInformation($"{nameof(GetContent)}: Getting child response from: {url}"); var response = await GetContentIfRedirectedAsync(requestBaseUrl, url, followRedirects, MaxRedirections, regionModel, headers); if (response != null && !response.IsSuccessStatusCode) { throw new EnhancedHttpException(response.StatusCode, response.ReasonPhrase, url); } responseHandler.Process(response); if (response != null) { results = await response.Content.ReadAsStringAsync(); } logger.LogInformation($"{nameof(GetContent)}: Received child response from: {url}"); } else { results = !string.IsNullOrWhiteSpace(regionModel.OfflineHtml) ? regionModel.OfflineHtml : markupMessages.GetRegionOfflineHtml(regionModel.PageRegion); } } catch (BrokenCircuitException ex) { logger.LogError(ex, $"{nameof(ContentRetriever)}: BrokenCircuit: {url} - {ex.Message}"); if (regionModel.HealthCheckRequired) { await appRegistryDataService.SetRegionHealthState(path, regionModel.PageRegion, false); } results = !string.IsNullOrWhiteSpace(regionModel.OfflineHtml) ? regionModel.OfflineHtml : markupMessages.GetRegionOfflineHtml(regionModel.PageRegion); } return(results); }
private static void AddCommentsViews(PageModel pageModel, RegionModel region, Localization localization, RegionModel ugcRegion) { List <EntityModel> regionEntities = new List <EntityModel>(); foreach (var entity in region.Entities.Where(e => e.ExtensionData != null)) { if (entity.ExtensionData == null) { continue; } // comments get added to the ugcRegion if it exists else we place in same region as entity IList <EntityModel> entities = ugcRegion != null ? ugcRegion.Entities : regionEntities; if (entity.ExtensionData.ContainsKey(CommentsEntityRegionExt)) { // comment region specified for this entity so lets find it and use that var targetRegion = FindRegion(pageModel.Regions, (string)entity.ExtensionData[CommentsEntityRegionExt]); if (targetRegion != null && targetRegion != region) { entities = targetRegion.Entities; } else if (targetRegion == null || targetRegion == region) { entities = regionEntities; } } if (entity.ExtensionData.ContainsKey(ShowCommentsExtData) && (bool)entity.ExtensionData[ShowCommentsExtData]) { entities.Add(CreateUgcCommentsEntity(localization, entity.Id, ItemType.Component)); } if (entity.ExtensionData.ContainsKey(PostCommentsExtData) && entity.ExtensionData[PostCommentsExtData] != null) { entities.Add(CreateUgcPostCommentEntity(localization, entity.Id, ItemType.Component, (ContentModelData)entity.ExtensionData[PostCommentsExtData])); } } // Add our ugc views to either the same region as the entity we have comments enabled for or the ugc "Comments" region if available foreach (var x in regionEntities) { region.Entities.Add(x); } foreach (var childRegion in region.Regions) { AddCommentsViews(pageModel, childRegion, localization, ugcRegion); } }
public List <RegionsVilleModel> GetRegion() { RegionModel reg = new RegionModel(); return(reg.GetRegionsVilles()); }
public async Task <JsonResult> SaveRegion(RegionModel region) { return(new JsonResult(await _regionsService.AddRegion(region))); }
protected virtual RegionModel CreateRegionModel(RegionModelData regionModelData, ILocalization localization) { MvcData mvcData = CreateMvcData(regionModelData.MvcData, "Region"); Type regionModelType = ModelTypeRegistry.GetViewModelType(mvcData); RegionModel result = (RegionModel)regionModelType.CreateInstance(regionModelData.Name); result.ExtensionData = regionModelData.ExtensionData; result.HtmlClasses = regionModelData.HtmlClasses; result.MvcData = mvcData; result.XpmMetadata = localization.IsXpmEnabled ? regionModelData.XpmMetadata : null; result.SchemaId = regionModelData.SchemaId; if (!string.IsNullOrEmpty(regionModelData.SchemaId)) { SemanticSchema semanticSchema = SemanticMapping.GetSchema(regionModelData.SchemaId, localization); Type modelType = ModelTypeRegistry.GetViewModelType(mvcData); MappingData mappingData = new MappingData { SourceViewModel = regionModelData, ModelType = modelType, PropertyValidation = new Validation { MainSchema = semanticSchema, InheritedSchemas = GetInheritedSemanticSchemas(regionModelData, localization) }, Fields = null, MetadataFields = regionModelData.Metadata, Localization = localization }; MapSemanticProperties(result, mappingData); } if (regionModelData.Regions != null) { IEnumerable <RegionModel> nestedRegionModels = regionModelData.Regions.Select(data => CreateRegionModel(data, localization)); result.Regions.UnionWith(nestedRegionModels); result.IsVolatile |= result.Regions.Any(region => region.IsVolatile); } if (regionModelData.Entities != null) { foreach (EntityModelData entityModelData in regionModelData.Entities) { EntityModel entityModel; try { entityModel = ModelBuilderPipeline.CreateEntityModel(entityModelData, null, localization); // indicate to region model that this region is potentially volatile if it contains a volatile entity result.IsVolatile |= entityModel.IsVolatile; entityModel.MvcData.RegionName = regionModelData.Name; } catch (Exception ex) { // If there is a problem mapping an Entity, we replace it with an ExceptionEntity which holds the error details and carry on. Log.Error(ex); entityModel = new ExceptionEntity(ex); } result.Entities.Add(entityModel); } } return(result); }
private PageEditModel Transform(DynamicPage page, bool isDraft) { var config = new Config(_api); var type = App.PageTypes.GetById(page.TypeId); var route = type.Routes.FirstOrDefault(r => r.Route == page.Route) ?? type.Routes.FirstOrDefault(); var model = new PageEditModel { Id = page.Id, SiteId = page.SiteId, ParentId = page.ParentId, OriginalId = page.OriginalPageId, SortOrder = page.SortOrder, TypeId = page.TypeId, Title = page.Title, NavigationTitle = page.NavigationTitle, Slug = page.Slug, MetaKeywords = page.MetaKeywords, MetaDescription = page.MetaDescription, IsHidden = page.IsHidden, Published = page.Published.HasValue ? page.Published.Value.ToString("yyyy-MM-dd HH:mm") : null, RedirectUrl = page.RedirectUrl, RedirectType = page.RedirectType.ToString(), State = GetState(page, isDraft), UseBlocks = type.UseBlocks, SelectedRoute = route == null ? null : new RouteModel { Title = route.Title, Route = route.Route } }; foreach (var r in type.Routes) { model.Routes.Add(new RouteModel { Title = r.Title, Route = r.Route }); } foreach (var regionType in type.Regions) { var region = new RegionModel { Meta = new RegionMeta { Id = regionType.Id, Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)page.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldModel { Meta = new FieldMeta { Id = fieldType.Id, Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth), Description = fieldType.Description } }; if (typeof(Extend.Fields.SelectFieldBase).IsAssignableFrom(appFieldType.Type)) { foreach (var item in ((Extend.Fields.SelectFieldBase)Activator.CreateInstance(appFieldType.Type)).Items) { field.Meta.Options.Add(Convert.ToInt32(item.Value), item.Title); } } if (regionType.Fields.Count > 1) { field.Model = (Extend.IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (Extend.IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } foreach (var block in page.Blocks) { var blockType = App.Blocks.GetByType(block.Type); if (block is Extend.BlockGroup) { var group = new BlockGroupModel { Id = block.Id, Type = block.Type, Meta = new BlockMeta { Name = blockType.Name, Icon = blockType.Icon, Component = "block-group", IsGroup = true, IsReadonly = page.OriginalPageId.HasValue, isCollapsed = config.ManagerDefaultCollapsedBlocks, ShowHeader = !config.ManagerDefaultCollapsedBlockGroupHeaders } }; if (blockType.Display != BlockDisplayMode.MasterDetail) { group.Meta.Component = blockType.Display == BlockDisplayMode.Horizontal ? "block-group-horizontal" : "block-group-vertical"; } foreach (var prop in block.GetType().GetProperties(App.PropertyBindings)) { if (typeof(Extend.IField).IsAssignableFrom(prop.PropertyType)) { var fieldType = App.Fields.GetByType(prop.PropertyType); var field = new FieldModel { Model = (Extend.IField)prop.GetValue(block), Meta = new FieldMeta { Id = prop.Name, Name = prop.Name, Component = fieldType.Component, } }; // Check if this is a select field if (typeof(Extend.Fields.SelectFieldBase).IsAssignableFrom(fieldType.Type)) { foreach (var item in ((Extend.Fields.SelectFieldBase)Activator.CreateInstance(fieldType.Type)).Items) { field.Meta.Options.Add(Convert.ToInt32(item.Value), item.Title); } } // Check if we have field meta-data available var attr = prop.GetCustomAttribute <Extend.FieldAttribute>(); if (attr != null) { field.Meta.Name = !string.IsNullOrWhiteSpace(attr.Title) ? attr.Title : field.Meta.Name; field.Meta.Placeholder = attr.Placeholder; field.Meta.IsHalfWidth = attr.Options.HasFlag(FieldOption.HalfWidth); } // Check if we have field description meta-data available var descAttr = prop.GetCustomAttribute <Extend.FieldDescriptionAttribute>(); if (descAttr != null) { field.Meta.Description = descAttr.Text; } group.Fields.Add(field); } } bool firstChild = true; foreach (var child in ((Extend.BlockGroup)block).Items) { blockType = App.Blocks.GetByType(child.Type); group.Items.Add(new BlockItemModel { IsActive = firstChild, Model = child, Meta = new BlockMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); firstChild = false; } model.Blocks.Add(group); } else { model.Blocks.Add(new BlockItemModel { Model = block, Meta = new BlockMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component, IsReadonly = page.OriginalPageId.HasValue, isCollapsed = config.ManagerDefaultCollapsedBlocks } }); } } // Custom editors foreach (var editor in type.CustomEditors) { model.Editors.Add(new EditorModel { Component = editor.Component, Icon = editor.Icon, Name = editor.Title }); } return(model); }
public async Task <string> PostContent(string url, RegionModel regionModel, IEnumerable <KeyValuePair <string, string> > formParameters, string requestBaseUrl) { if (regionModel == null) { throw new ArgumentNullException(nameof(regionModel)); } string results = null; try { if (regionModel.IsHealthy) { logger.LogInformation($"{nameof(PostContent)}: Posting child response from: {url}"); var request = new HttpRequestMessage(HttpMethod.Post, url) { Content = formParameters != null ? new FormUrlEncodedContent(formParameters) : null, }; var response = await httpClient.SendAsync(request).ConfigureAwait(false); if (response.IsRedirectionStatus()) { var redirectUrl = requestBaseUrl; redirectUrl += response.Headers.Location.IsAbsoluteUri ? response.Headers.Location.PathAndQuery.ToString(CultureInfo.InvariantCulture) : response.Headers.Location.ToString(); throw new RedirectException(new Uri(url), new Uri(redirectUrl), response.StatusCode == HttpStatusCode.PermanentRedirect); } if (!response.IsSuccessStatusCode) { throw new EnhancedHttpException(response.StatusCode, response.ReasonPhrase, url); } results = await response.Content.ReadAsStringAsync().ConfigureAwait(false); logger.LogInformation($"{nameof(PostContent)}: Received child response from: {url}"); } else if (!string.IsNullOrWhiteSpace(regionModel.OfflineHTML)) { results = regionModel.OfflineHTML; } } catch (BrokenCircuitException ex) { logger.LogError(ex, $"{nameof(ContentRetriever)}: BrokenCircuit: {url} - {ex.Message}"); if (regionModel.HealthCheckRequired) { await regionService.SetRegionHealthState(regionModel.Path, regionModel.PageRegion, false).ConfigureAwait(false); } results = regionModel.OfflineHTML; } return(results); }
/// <summary> /// Generates semantic markup (HTML/RDFa attributes) for the current Region Model. /// </summary> /// <param name="htmlHelper">The HtmlHelper instance on which the extension method operates.</param> /// <returns>The HTML/RDFa attributes for the Region. These should be included in an HTML start tag.</returns> /// <remarks>This method will throw an exception if the current Model does not represent a Region.</remarks> public static MvcHtmlString DxaRegionMarkup(this HtmlHelper htmlHelper) { RegionModel region = (RegionModel)htmlHelper.ViewData.Model; return(htmlHelper.DxaRegionMarkup(region)); }
public async Task <PageEditModel> GetById(Guid id) { var page = await _api.Pages.GetByIdAsync(id); if (page != null) { var type = App.PageTypes.GetById(page.TypeId); var model = new PageEditModel { Id = page.Id, SiteId = page.SiteId, ParentId = page.ParentId, SortOrder = page.SortOrder, TypeId = page.TypeId, Title = page.Title, NavigationTitle = page.NavigationTitle, Slug = page.Slug, MetaKeywords = page.MetaKeywords, MetaDescription = page.MetaDescription, Published = page.Published.HasValue ? page.Published.Value.ToString("yyyy-MM-dd HH:mm") : null }; foreach (var regionType in type.Regions) { var region = new RegionModel { Meta = new RegionMeta { Id = regionType.Id, Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)page.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldModel { Meta = new FieldMeta { Id = fieldType.Id, Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth) } }; if (regionType.Fields.Count > 1) { field.Model = (Extend.IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (Extend.IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } foreach (var block in page.Blocks) { var blockType = App.Blocks.GetByType(block.Type); if (block is Extend.BlockGroup) { var group = new BlockGroupModel { Id = block.Id, Type = block.Type, Meta = new BlockMeta { Name = blockType.Name, Icon = blockType.Icon, Component = "block-group", IsGroup = true } }; if (blockType.Display != BlockDisplayMode.MasterDetail) { group.Meta.Component = blockType.Display == BlockDisplayMode.Horizontal ? "block-group-horizontal" : "block-group-vertical"; } foreach (var prop in block.GetType().GetProperties(App.PropertyBindings)) { if (typeof(Extend.IField).IsAssignableFrom(prop.PropertyType)) { var fieldType = App.Fields.GetByType(prop.PropertyType); group.Fields.Add(new FieldModel { Model = (Extend.IField)prop.GetValue(block), Meta = new FieldMeta { Id = prop.Name, Name = prop.Name, Component = fieldType.Component, } }); } } bool firstChild = true; foreach (var child in ((Extend.BlockGroup)block).Items) { blockType = App.Blocks.GetByType(child.Type); group.Items.Add(new BlockItemModel { IsActive = firstChild, Model = child, Meta = new BlockMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); firstChild = false; } model.Blocks.Add(group); } else { model.Blocks.Add(new BlockItemModel { Model = block, Meta = new BlockMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); } } return(model); } return(null); }
public List <RegionModel> Get(RegionModel filter) { RegionDA da = new RegionDA(); return(da.Get(filter)); }
public void Resolve(RegionModel model) { model.IsExpanded = true; }
public void SetRegionPanel(RegionModel model) { info = model; RegionName.Key = info.Name; Flag.sprite = Resources.Load <Sprite>("Flag" + info.Id); }
public void TestInitialize() { _region1 = ModelsFactory.NewRegionModel(1, "First Region"); _traffic1 = ModelsFactory.NewTrafficModel(_region1.Code, 2, "No jams"); }
public void Resolve(RegionModel model) { // do nothing }
public async Task Post([FromBody] RegionModel model) { await _regionService.CreateAsync(model.Id, model.Name, model.ParentId); }
private PostEditModel Transform(DynamicPost post, bool isDraft) { var config = new Config(_api); var type = App.PostTypes.GetById(post.TypeId); var route = type.Routes.FirstOrDefault(r => r.Route == post.Route) ?? type.Routes.FirstOrDefault(); var model = new PostEditModel { Id = post.Id, BlogId = post.BlogId, TypeId = post.TypeId, PrimaryImage = post.PrimaryImage, Title = post.Title, Slug = post.Slug, MetaTitle = post.MetaTitle, MetaKeywords = post.MetaKeywords, MetaDescription = post.MetaDescription, OgTitle = post.OgTitle, OgDescription = post.OgDescription, OgImage = post.OgImage, Excerpt = post.Excerpt, Published = post.Published?.ToString("yyyy-MM-dd HH:mm"), RedirectUrl = post.RedirectUrl, RedirectType = post.RedirectType.ToString(), EnableComments = post.EnableComments, CloseCommentsAfterDays = post.CloseCommentsAfterDays, CommentCount = post.CommentCount, State = post.GetState(isDraft), UseBlocks = type.UseBlocks, UsePrimaryImage = type.UsePrimaryImage, UseExcerpt = type.UseExcerpt, UseHtmlExcerpt = config.HtmlExcerpt, SelectedRoute = route == null ? null : new RouteModel { Title = route.Title, Route = route.Route }, Permissions = App.Permissions .GetPublicPermissions() .Select(p => new KeyValuePair <string, string>(p.Name, p.Title)) .ToList(), SelectedPermissions = post.Permissions }; foreach (var r in type.Routes) { model.Routes.Add(new RouteModel { Title = r.Title, Route = r.Route }); } foreach (var regionType in type.Regions) { var region = new RegionModel { Meta = new RegionMeta { Id = regionType.Id, Name = regionType.Title, Description = regionType.Description, Placeholder = regionType.ListTitlePlaceholder, IsCollection = regionType.Collection, Expanded = regionType.ListExpand, Icon = regionType.Icon, Display = regionType.Display.ToString().ToLower() } }; var regionListModel = ((IDictionary <string, object>)post.Regions)[regionType.Id]; if (!regionType.Collection) { var regionModel = (IRegionList)Activator.CreateInstance(typeof(RegionList <>).MakeGenericType(regionListModel.GetType())); regionModel.Add(regionListModel); regionListModel = regionModel; } foreach (var regionModel in (IEnumerable)regionListModel) { var regionItem = new RegionItemModel(); foreach (var fieldType in regionType.Fields) { var appFieldType = App.Fields.GetByType(fieldType.Type); var field = new FieldModel { Meta = new FieldMeta { Id = fieldType.Id, Name = fieldType.Title, Component = appFieldType.Component, Placeholder = fieldType.Placeholder, IsHalfWidth = fieldType.Options.HasFlag(FieldOption.HalfWidth), Description = fieldType.Description } }; if (typeof(SelectFieldBase).IsAssignableFrom(appFieldType.Type)) { foreach (var item in ((SelectFieldBase)Activator.CreateInstance(appFieldType.Type)).Items) { field.Meta.Options.Add(Convert.ToInt32(item.Value), item.Title); } } if (regionType.Fields.Count > 1) { field.Model = (IField)((IDictionary <string, object>)regionModel)[fieldType.Id]; if (regionType.ListTitleField == fieldType.Id) { regionItem.Title = field.Model.GetTitle(); field.Meta.NotifyChange = true; } } else { field.Model = (IField)regionModel; field.Meta.NotifyChange = true; regionItem.Title = field.Model.GetTitle(); } regionItem.Fields.Add(field); } if (string.IsNullOrWhiteSpace(regionItem.Title)) { regionItem.Title = "..."; } region.Items.Add(regionItem); } model.Regions.Add(region); } foreach (var block in post.Blocks) { var blockType = App.Blocks.GetByType(block.Type); if (block is BlockGroup blockGroup) { var group = new BlockGroupModel { Id = block.Id, Type = block.Type, Meta = new BlockMeta { Name = blockType.Name, Icon = blockType.Icon, Component = "block-group", IsGroup = true, isCollapsed = config.ManagerDefaultCollapsedBlocks, ShowHeader = !config.ManagerDefaultCollapsedBlockGroupHeaders } }; if (blockType.Display != BlockDisplayMode.MasterDetail) { group.Meta.Component = blockType.Display == BlockDisplayMode.Horizontal ? "block-group-horizontal" : "block-group-vertical"; } group.Fields = ContentUtils.GetBlockFields(block); bool firstChild = true; foreach (var child in blockGroup.Items) { blockType = App.Blocks.GetByType(child.Type); if (!blockType.IsGeneric) { group.Items.Add(new BlockItemModel { IsActive = firstChild, Model = child, Meta = new BlockMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component } }); } else { // Generic block item model group.Items.Add(new BlockGenericModel { IsActive = firstChild, Model = ContentUtils.GetBlockFields(child), Type = child.Type, Meta = new BlockMeta { Name = blockType.Name, Title = child.GetTitle(), Icon = blockType.Icon, Component = blockType.Component, } }); } firstChild = false; } model.Blocks.Add(group); } else { if (!blockType.IsGeneric) { // Regular block item model model.Blocks.Add(new BlockItemModel { Model = block, Meta = new BlockMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component, isCollapsed = config.ManagerDefaultCollapsedBlocks } }); } else { // Generic block item model model.Blocks.Add(new BlockGenericModel { Model = ContentUtils.GetBlockFields(block), Type = block.Type, Meta = new BlockMeta { Name = blockType.Name, Title = block.GetTitle(), Icon = blockType.Icon, Component = blockType.Component, isCollapsed = config.ManagerDefaultCollapsedBlocks } }); } } } // Custom editors foreach (var editor in type.CustomEditors) { model.Editors.Add(new EditorModel { Component = editor.Component, Icon = editor.Icon, Name = editor.Title }); } return(model); }
public void BuildPageModel(ref PageModel pageModel, DD4T.ContentModel.IPage page, IEnumerable <DD4T.ContentModel.IPage> includes, Localization localization) { var containers = new List <AbstractContainerModel>(); // Get absolute order of the different container items // var regionAbsoluteOrder = new Dictionary <string, IList <int> >(); var containerAbsoluteOrder = new List <int>(); int index = 0; foreach (var cp in page.ComponentPresentations) { if (cp.ComponentTemplate.MetadataFields.ContainsKey("regionName")) { string regionName = (string)cp.ComponentTemplate.MetadataFields["regionName"].Values[0]; IList <int> orderList = null; regionAbsoluteOrder.TryGetValue(regionName, out orderList); if (orderList == null) { orderList = new List <int>(); regionAbsoluteOrder.Add(regionName, orderList); } orderList.Add(index); } else if (cp.ComponentTemplate.MetadataFields.ContainsKey("action")) { string controllerAction = (string)cp.ComponentTemplate.MetadataFields["action"].Values[0]; if (controllerAction.Equals("Container")) { containerAbsoluteOrder.Add(index); } } index++; } // Go through the entity list and extract all containers // index = 1; foreach (var region in pageModel.Regions) { // TODO: Remove container region from the top level? Otherwise XPM drop zones are generated for them as well? foreach (var entity in region.Entities) { if (entity is AbstractContainerModel) { AbstractContainerModel container = (AbstractContainerModel)entity; // Override region name using MVC route values // string containerRegionName = null; container.MvcData.RouteValues.TryGetValue("containerRegion", out containerRegionName); if (containerRegionName != null) { container.Name = containerRegionName; } // TODO: if no container region name -> should we skip this container then??? try { container.Region = new ContainerRegionModel(container); } catch (DxaException e) { throw new DxaException("Could not create empty region for container: " + container.Name, e); } container.Index = index; index++; containers.Add(container); } } } // Move all container items to the containers (to avoid the container items to be rendered outside the container) // foreach (var container in containers) { if (containerAbsoluteOrder.Count == 0) { break; } int containerIndex = containerAbsoluteOrder[0]; containerAbsoluteOrder.RemoveAt(0); RegionModel regionWithContainerItems = null; pageModel.Regions.TryGetValue(container.Name, out regionWithContainerItems); if (regionWithContainerItems == null) { // No container items found on the page -> continue // continue; } IList <int> orderList = null; regionAbsoluteOrder.TryGetValue(container.Name, out orderList); if (orderList != null && orderList.Count > 0) { index = orderList[0]; if (containerIndex + 1 == index) { int noOfItems = 0; foreach (var entity in regionWithContainerItems.Entities) { container.Region.Entities.Add(entity); noOfItems++; orderList.RemoveAt(0); if (orderList.Count == 0) { break; } int nextIndex = orderList[0]; if (nextIndex != index + 1) { break; } else { index = nextIndex; } } for (int i = 0; i < noOfItems; i++) { regionWithContainerItems.Entities.RemoveAt(0); } } } } }