コード例 #1
0
ファイル: ItemFactory.cs プロジェクト: jballe/Lightcore
 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)));
 }
コード例 #2
0
ファイル: ItemSerializer.cs プロジェクト: jballe/Lightcore
        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;
        }