public void SaveSitePage(SitePage page, bool storeImages = false)
 {
     Logger?.LogInformation($"Saving page {page.Url}");
     page.LastModified = DateTime.Now;
     if (page.Sections == null)
     {
         page.Sections = new List <PageSection>();
     }
     if (storeImages)
     {
         //NOTE(RC): save current with base 64 so at least it's saved.
         Storage.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]);
             }
         }
     }
     Storage.StoreSitePage(page);
     ReloadPages();
 }
Exemple #2
0
        public IActionResult Index(string url)
        {
            _webSite.Logger?.LogInformation($"index action {Request.Path.Value}");
            if (Request.Query["reloadpages"] == "true")
            {
                _webSite.ReloadPages();
            }
            if (string.IsNullOrWhiteSpace(url) || url == "/")
            {
                _webSite.Logger?.LogVerbose("Homepage");
                url = _webSite.Configuration.DefaultPage;
            }
            SitePage page = _webSite.GetPageByUrl(url, _webSite.IsAuthenticated(User));

            ViewBag.CurrentUrl = page.Url;
            if (_webSite.Configuration.RedirectToFirstSub && page.Pages.Any())
            {
                return(Redirect(page.Pages.First().Url));
            }
            if (page.Url == "404")
            {
                Response.StatusCode = 404;
            }

            return(View(page.Template, page));
        }
        public IActionResult SavePage(SitePage 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
            SitePage 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) }));
        }
Exemple #4
0
 private string SectionContent(IHtmlHelper html, SitePage 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 IActionResult RemovePage(string url)
        {
            _webSite.Logger?.LogInformation($"remove {url}");
            SitePage page = _webSite.Pages.FirstOrDefault(p => p.Url == url);

            _webSite.DeleteSitePage(page);
            var redirectUrl = page.Parent == null ? _webSite.Configuration.DefaultPage : _webSite.GetPageUrl(page.Parent);

            return(new JsonResult(new { result = true, url = redirectUrl }));
        }
 public string GetPageUrl(SitePage page)
 {
     if (page == null)
     {
         return("/");
     }
     if (string.IsNullOrWhiteSpace(Configuration.PageExtension))
     {
         return($"/{page.Url}");
     }
     return($"/{page.Url}.{Configuration.PageExtension}");
 }
Exemple #7
0
 private static string SectionContent(IHtmlHelper html, SitePage sitepage, PageSection model)
 {
     using (StringWriter result = new StringWriter())
     {
         foreach (ContentItem item in model.Items)
         {
             item.Page = sitepage;
             html.Partial(item.Template, item).WriteTo(result, HtmlEncoder.Default);
         }
         return(result.ToString());
     }
 }
        public IActionResult SaveContent(string url, string items)
        {
            SitePage page = _webSite.Pages.FirstOrDefault(p => p.Url == url);

            if (page != null)
            {
                _webSite.Logger?.LogInformation($"save PAGE found {page.Url}");
                var newSections = Newtonsoft.Json.JsonConvert.DeserializeObject <IEnumerable <PageSection> >(items);
                page.Sections.Clear();
                page.Sections.AddRange(newSections);

                _webSite.SaveSitePage(page, true);
                return(new JsonResult(new { result = true }));
            }
            return(new JsonResult(new { result = false }));
        }
 public void DeleteSitePage(SitePage page)
 {
     Logger?.LogInformation($"Deleting page {page.Url}");
     Storage.DeleteSitePage(page);
     ReloadPages();
 }