示例#1
0
 private static ISitePage GetSitePage(DbSitePage p)
 {
     //make sure Sections Collection is Set
     p.Sections = p.Items?.GroupBy(i => i.SectionKey).Select(g => new PageSection()
         {
             Key = g.Key,
             Items = g.Select(i => new ContentItem()
             {
                 Template = i.Template,
                 Page = p,
                 Values = JsonConvert.DeserializeObject<Dictionary<string, string>>(i.Values)
             }).ToList<IContentItem>() ?? new List<IContentItem>()
         }).ToList<IPageSection>() ?? new List<IPageSection>();
     return p;
 }
示例#2
0
        public void StoreSitePage(ISitePage sitePage)
        {
            var oldPage = Context.Pages.FirstOrDefault(p => p.Url == sitePage.Url);
            if (oldPage != null)
            {
                oldPage.Template = sitePage.Template;
                oldPage.Layout = sitePage.Layout;
                oldPage.Title = sitePage.Title;
                oldPage.Created = sitePage.Created;
                oldPage.LastModified = DateTime.Now;
                oldPage.MetaTitle = sitePage.MetaTitle;
                oldPage.MetaDescription = sitePage.MetaDescription;
                oldPage.ShowInMenu = sitePage.ShowInMenu;
                oldPage.SortOrder = sitePage.SortOrder;
                oldPage.Visible = sitePage.Visible;
                Context.Pages.Update(oldPage);

                //todo(rc): can this be done without?
                Context.RemoveRange(Context.ContentItems.Where(c => c.PageUrl == sitePage.Url));
                Context.SaveChanges();

                //need to clear because items are removed but still in page.items collection
                oldPage.Items.Clear();

                foreach (var section in sitePage.Sections.Where(s => s.Items.Any()))
                {
                    Context.AddRange(section.Items.Select((item, index) => new DbContentItem()
                    {
                        Template = item.Template,
                        PageUrl = sitePage.Url,
                        SectionKey = section.Key,
                        Sortorder = index + 1,
                        Values = JsonConvert.SerializeObject(item.Values)
                    }));
                }
            }
            else
            {
                DbSitePage dbPage = new DbSitePage()
                {
                    Url = sitePage.Url,
                    Template = sitePage.Template,
                    Layout = sitePage.Layout,
                    Title = sitePage.Title,
                    Created = sitePage.Created,
                    LastModified = DateTime.Now,
                    MetaTitle = sitePage.MetaTitle,
                    MetaDescription = sitePage.MetaDescription,
                    ShowInMenu = sitePage.ShowInMenu,
                    SortOrder = sitePage.SortOrder,
                    Visible = sitePage.Visible
                };
                Context.Pages.Add(dbPage);
                foreach (var section in sitePage.Sections.Where(s => s.Items.Any()))
                {
                    Context.AddRange(section.Items.Select((item, index) => new DbContentItem()
                    {
                        Template = item.Template,
                        PageUrl = sitePage.Url,
                        SectionKey = section.Key,
                        Sortorder = index + 1,
                        Values = JsonConvert.SerializeObject(item.Values)
                    }));
                }
            }
            Context.SaveChanges();
        }