private static IEnumerable<Rendering> MapRenderings(PresentationModel apiPresentation) { return apiPresentation.Renderings.Select(r => new Rendering(r.Placeholder, r.Datasource, r.Controller, r.Action, r.Parameters, new Caching(r.Caching.Cacheable, r.Caching.VaryByItem, r.Caching.VaryByParm, r.Caching.VaryByQueryString))); }
private PresentationModel MapPresentation(Item item, string device) { var deviceItem = item.Database.Resources.Devices["/sitecore/layout/devices/" + device]; if (deviceItem == null) { return null; } var layout = item.Visualization.GetLayout(deviceItem); if (layout == null) { return null; } var presentation = new PresentationModel { Layout = new LayoutModel { Path = layout.FilePath } }; var controllerRenderings = item.Visualization.GetRenderings(deviceItem, false) .Where(r => r.RenderingItem.InnerItem.TemplateID == _controllerRenderingTemplateId); presentation.Renderings = controllerRenderings.Select(rendering => { var action = rendering.RenderingItem.InnerItem["Action"]; var datasource = rendering.Settings.DataSource; var parameters = new Dictionary<string, string>(); if (!string.IsNullOrEmpty(rendering.Settings.Parameters)) { parameters = rendering.Settings.Parameters.Split('&').Select(p => p.Split('=')).ToDictionary(param => param[0], param => param[1]); } return new RenderingModel { Placeholder = rendering.Placeholder, Controller = rendering.RenderingItem.InnerItem["Controller"], Action = !string.IsNullOrEmpty(action) ? action : "Index", Datasource = !string.IsNullOrEmpty(datasource) ? datasource : item.ID.Guid.ToString(), Parameters = parameters, Caching = new RenderingCachingModel { Cacheable = rendering.Settings.Caching.Cacheable, VaryByItem = rendering.Settings.Caching.VaryByData, VaryByParm = rendering.Settings.Caching.VaryByParm, VaryByQueryString = rendering.Settings.Caching.VaryByQueryString } }; }); return presentation; }