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(); } }
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(); }
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; }
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(); }
public string GetPageUrl(ISitePage page) { if (page == null) { return "/"; } if (string.IsNullOrWhiteSpace(Configuration.PageExtension)) { return $"/{page.Url}"; } return $"/{page.Url}.{Configuration.PageExtension}"; }
public void DeleteSitePage(ISitePage page) { Logger?.LogInformation($"Deleting page {page.Url}"); ContentStorage.DeleteSitePage(page); ReloadPages(); }