Пример #1
0
        public IActionResult SavePage(ISitePage page)
        {
            //ignore move for now...
            if (Request.Form.ContainsKey("OldUrl") && (string)Request.Form["OldUrl"] != page.Url)
            {
                string message = $"Moving pages not allowed yet, tried to move {Request.Form["OldUrl"]} to new location: {page.Url}";
                _webSite.Logger?.LogError(message);
                return new JsonResult(new { result = false, message = message });
            }

            //keep sections only change page properties
            ISitePage oldPage = _webSite.Pages.FirstOrDefault(p => p.Url == page.Url);
            if (oldPage != null)
            {
                page.Sections = oldPage.Sections;
            }
            else
            {
                //new page
                page.Created = DateTime.Now;
                page.Sections = _webSite.GetDefaultContentForTemplate(page.Template);
            }
            _webSite.SaveSitePage(page);
            return new JsonResult(new { result = true, url = _webSite.GetPageUrl(page) });
        }
 private static string SectionContent(IHtmlHelper html, ISitePage sitepage, IPageSection model)
 {
     using (StringWriter result = new StringWriter())
     {
         foreach (var item in model.Items)
         {
             item.Page = sitepage;
             html.Partial(item.Template, item).WriteTo(result, HtmlEncoder.Default);
         }
         return result.ToString();
     }
 }
Пример #3
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();
        }
Пример #4
0
 public void DeleteSitePage(ISitePage sitePage)
 {
     Context.RemoveRange(Context.ContentItems.Where(c => c.PageUrl == sitePage.Url));
     Context.Remove(Context.Pages.First(p => p.Url == sitePage.Url));
     Context.SaveChanges();
 }
 private string SectionContent(IHtmlHelper html, ISitePage sitepage, string section)
 {
     if (sitepage?.Sections?.Any(s => s?.Key == section) == true)
     {
         return SectionContent(html, sitepage, sitepage.Sections.First(s => s.Key == section));
     }
     return String.Empty;
 }
Пример #6
0
 public void SaveSitePage(ISitePage page, bool storeImages = false)
 {
     Logger?.LogInformation($"Saving page {page.Url}");
     page.LastModified = DateTime.Now;
     if (page.Sections == null)
     {
         page.Sections = new List<IPageSection>();
     }
     if (storeImages)
     {
         //NOTE(RC): save current with base 64 so at least it's saved.
         ContentStorage.StoreSitePage(page);
         //NOTE(RC): can this be done saner?
         foreach (var item in page.Sections.SelectMany(s => s.Items).Where(i => i.Values.Any(kv => kv.Value.Contains("data:"))))
         {
             for (var i = 0; i < item.Values.Count; i++)
             {
                 var kv = item.Values.ElementAt(i);
                 item.Values[kv.Key] = SaveEmbeddedImages(item.Values[kv.Key]);
             }
         }
     }
     ContentStorage.StoreSitePage(page);
     ReloadPages();
 }
Пример #7
0
 public string GetPageUrl(ISitePage page)
 {
     if (page == null)
     {
         return "/";
     }
     if (string.IsNullOrWhiteSpace(Configuration.PageExtension))
     {
         return $"/{page.Url}";
     }
     return $"/{page.Url}.{Configuration.PageExtension}";
 }
Пример #8
0
 public void DeleteSitePage(ISitePage page)
 {
     Logger?.LogInformation($"Deleting page {page.Url}");
     ContentStorage.DeleteSitePage(page);
     ReloadPages();
 }