private static Layout AddLayout(PagesApiContext pagesApi) { var layouts = pagesApi.GetLayouts(new GetLayoutsRequest(l => l.LayoutPath == Template.LayoutPath)); if (layouts.Items.Count > 0) { return layouts.Items[0]; } var request = new CreateLayoutRequest() { Name = Template.Name, LayoutPath = Template.LayoutPath, Regions = new[] { Template.Regions.Main, Template.Regions.Header, Template.Regions.Footer } }; return pagesApi.CreateLayout(request); }
/// <summary> /// Creates the layout. /// </summary> /// <param name="request">The request.</param> /// <returns> /// Created layout entity /// </returns> public Layout CreateLayout(CreateLayoutRequest request) { ValidateRequest(request); try { UnitOfWork.BeginTransaction(); var layout = new Layout { LayoutPath = request.LayoutPath, Name = request.Name, PreviewUrl = request.PreviewUrl }; // reference or create new regions by identifiers if (request.Regions != null) { layout.LayoutRegions = new List<LayoutRegion>(); foreach (var regionIdentifier in request.Regions) { if (string.IsNullOrWhiteSpace(regionIdentifier)) { continue; } var region = LoadOrCreateRegion(regionIdentifier); var layoutRegion = new LayoutRegion { Layout = layout, Region = region }; layout.LayoutRegions.Add(layoutRegion); } } Repository.Save(layout); UnitOfWork.Commit(); return layout; } catch (Exception inner) { var message = string.Format("Failed to create layout. Path: {0}, Name: {1}, Url: {2}", request.LayoutPath, request.Name, request.PreviewUrl); Logger.Error(message, inner); throw new CmsApiException(message, inner); } }