static public void AddBlogPost(HttpContextBase httpContext, SiteBlogPost blogPost) { if (blogPost != null) { string RequestDomain = Globals.GetRequestDomain(httpContext); string CacheKey = "BlogPost-" + RequestDomain + "-" + blogPost.Id.ToString(); httpContext.Cache.Add(CacheKey, blogPost, null, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.Normal, null); } }
public ActionResult Edit(Edit viewModel) { if (ModelState.IsValid) { using (var DB = new ApplicationDbContext()) { string RequestDomain = Globals.GetRequestDomain(); SiteBlogPost EditedPost = DB.SiteBlogPosts.SingleOrDefault(x => (x.Id == viewModel.Id) && (x.Site.Domain == RequestDomain)); if (EditedPost == null) { return(HttpNotFound()); } else { // View model to domain model ModelConverter.Convert(viewModel, EditedPost); // Assign values for fields not on form EditedPost.DateLastUpdated = DateTime.Now; // Transform values if (string.IsNullOrWhiteSpace(EditedPost.Slug)) { EditedPost.Slug = EditedPost.Title; } EditedPost.Slug = Globals.GetSlug(EditedPost.Slug, false); // No need to enforce uniqueness, since slug isn't actually used for lookup EditedPost.FullPostText = Globals.SaveImagesToDisk(EditedPost.FullPostText); EditedPost.PreviewText = Globals.SaveImagesToDisk(EditedPost.PreviewText); // Save changes DB.Entry(EditedPost).State = EntityState.Modified; DB.SaveChanges(); // Update cache Caching.ResetBlogPosts(); return(RedirectToAction("Index")); } } } else { return(View(viewModel)); } }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } else { string RequestDomain = Globals.GetRequestDomain(ControllerContext.RequestContext.HttpContext); SiteBlogPost Post = db.SiteBlogPosts.SingleOrDefault(x => (x.Id == id) && (x.Site.Domain == RequestDomain)); if (Post == null) { return(HttpNotFound()); } else { return(View(ModelConverter.Convert <Edit>(Post))); } } }
// GET: /Blog/Details/5 public ActionResult Details(int id, int?year, int?month, int?day, string slug) { SiteBlogPost BlogPost = Caching.GetBlogPost(id); if (BlogPost == null) { // TODOX Should we be throwing a 404 exception here? return(HttpNotFound()); } else { if ((year == BlogPost.DatePosted.Year) && (month == BlogPost.DatePosted.Month) && (day == BlogPost.DatePosted.Day) && (slug == BlogPost.Slug)) { return(View(BlogPost)); } else { return(RedirectToRoutePermanent("BlogPost", BlogPost.ToRouteValues())); } } }
public ActionResult Create(Create viewModel) { if (ModelState.IsValid) { using (var DB = new ApplicationDbContext()) { string RequestDomain = Globals.GetRequestDomain(); // View model to domain model SiteBlogPost NewPost = ModelConverter.Convert <SiteBlogPost>(viewModel); // Assign values for fields not on form NewPost.DateLastUpdated = DateTime.Now; NewPost.DatePosted = DateTime.Now; NewPost.SiteId = DB.Sites.Single(x => x.Domain == RequestDomain).Id; // Transform values if (string.IsNullOrWhiteSpace(viewModel.Slug)) { NewPost.Slug = NewPost.Title; } NewPost.Slug = Globals.GetSlug(NewPost.Slug, false); // No need to enforce uniqueness, since slug isn't actually used for lookup NewPost.FullPostText = Globals.SaveImagesToDisk(NewPost.FullPostText); NewPost.PreviewText = Globals.SaveImagesToDisk(NewPost.PreviewText); // Save changes DB.SiteBlogPosts.Add(NewPost); DB.SaveChanges(); // Update cache Caching.ResetBlogPosts(); return(RedirectToAction("Index")); } } else { return(View(viewModel)); } }
public ActionResult DeleteConfirmed(int id) { string RequestDomain = Globals.GetRequestDomain(ControllerContext.RequestContext.HttpContext); SiteBlogPost Post = db.SiteBlogPosts.SingleOrDefault(x => (x.Id == id) && (x.Site.Domain == RequestDomain)); if (Post == null) { return(HttpNotFound()); } else { // Update cache DatabaseCache.RemoveBlogDetails(id, ControllerContext.RequestContext.HttpContext); DatabaseCache.ResetBlogIndex(ControllerContext.RequestContext.HttpContext); // Save changes db.SiteBlogPosts.Remove(Post); db.SaveChanges(); return(RedirectToAction("Index")); } }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } else { using (var DB = new ApplicationDbContext()) { string RequestDomain = Globals.GetRequestDomain(); SiteBlogPost Post = DB.SiteBlogPosts.SingleOrDefault(x => (x.Id == id) && (x.Site.Domain == RequestDomain)); if (Post == null) { return(HttpNotFound()); } else { return(View(ModelConverter.Convert <Edit>(Post))); } } } }
public ActionResult DeleteConfirmed(int id) { using (var DB = new ApplicationDbContext()) { string RequestDomain = Globals.GetRequestDomain(); SiteBlogPost Post = DB.SiteBlogPosts.SingleOrDefault(x => (x.Id == id) && (x.Site.Domain == RequestDomain)); if (Post == null) { return(HttpNotFound()); } else { // Update cache Caching.ResetBlogPosts(); // Save changes DB.SiteBlogPosts.Remove(Post); DB.SaveChanges(); return(RedirectToAction("Index")); } } }
public ActionResult Install(Install model) { if (Globals.IsNewSite(ControllerContext.RequestContext.HttpContext)) { if (ModelState.IsValid) { using (XenonCMSContext DB = new XenonCMSContext()) { string RequestDomain = Globals.GetRequestDomain(ControllerContext.RequestContext.HttpContext); Site Site = new Site(); Site.AdminIPs = new List <SiteAdminIP>(); Site.BlogPosts = new List <SiteBlogPost>(); Site.Pages = new List <SitePage>(); SiteAdminIP NewAdminIP = new SiteAdminIP(); NewAdminIP.Address = ControllerContext.RequestContext.HttpContext.Request.UserHostAddress; Site.AdminIPs.Add(NewAdminIP); SiteBlogPost NewBlogPost = new SiteBlogPost(); NewBlogPost.DateLastUpdated = DateTime.Now; NewBlogPost.DatePosted = DateTime.Now; NewBlogPost.FullPostText = "XenonCMS has been successfully installed and is ready for use on " + RequestDomain + "!"; NewBlogPost.Slug = "xenoncms-installed"; NewBlogPost.Title = "XenonCMS Installed"; Site.BlogPosts.Add(NewBlogPost); Site.ContactEmail = "contact@" + RequestDomain; Site.Domain = RequestDomain; Site.NavBarInverted = false; SitePage NewPageHome = new SitePage(); NewPageHome.DateAdded = DateTime.Now; NewPageHome.DateLastUpdated = DateTime.Now; NewPageHome.DisplayOrder = 1; NewPageHome.Html = "XenonCMS has been successfully installed and is ready for use on " + RequestDomain + "!"; NewPageHome.Layout = "JumbotronNoSidebar"; NewPageHome.Text = "Home"; NewPageHome.Slug = "home"; NewPageHome.ParentId = 0; NewPageHome.RequireAdmin = false; NewPageHome.RightAlign = false; NewPageHome.ShowInMenu = true; NewPageHome.ShowTitleOnPage = true; NewPageHome.Title = "XenonCMS Installed"; Site.Pages.Add(NewPageHome); SitePage NewPageBlog = new SitePage(); NewPageBlog.DateAdded = DateTime.Now; NewPageBlog.DateLastUpdated = DateTime.Now; NewPageBlog.DisplayOrder = 2; NewPageBlog.Html = "N/A"; NewPageBlog.Layout = "NormalSidebar"; NewPageBlog.Text = "Blog"; NewPageBlog.Slug = "blog"; NewPageBlog.ParentId = 0; NewPageBlog.RequireAdmin = false; NewPageBlog.RightAlign = false; NewPageBlog.ShowInMenu = true; NewPageBlog.ShowTitleOnPage = true; NewPageBlog.Title = "Blog"; Site.Pages.Add(NewPageBlog); SitePage NewPageContact = new SitePage(); NewPageContact.DateAdded = DateTime.Now; NewPageContact.DateLastUpdated = DateTime.Now; NewPageContact.DisplayOrder = 3; NewPageContact.Html = "N/A"; NewPageContact.Layout = "NormalSidebar"; NewPageContact.Text = "Contact"; NewPageContact.Slug = "contact"; NewPageContact.ParentId = 0; NewPageContact.RequireAdmin = false; NewPageContact.RightAlign = false; NewPageContact.ShowInMenu = true; NewPageContact.ShowTitleOnPage = true; NewPageContact.Title = "Contact"; Site.Pages.Add(NewPageContact); Site.Sidebar = "<div class=\"panel panel-default\"><div class=\"panel-heading\"><h3 class=\"panel-title\">XenonCMS Installed</h3></div><div class=\"panel-body\">XenonCMS has been successfully installed and is ready for use on " + RequestDomain + "!</div></div>"; Site.Theme = "Cerulean"; Site.Title = RequestDomain; DB.Sites.Add(Site); DB.SaveChanges(); DatabaseCache.AddSite(ControllerContext.RequestContext.HttpContext, Site); DatabaseCache.ResetAdminIPs(ControllerContext.RequestContext.HttpContext); DatabaseCache.ResetBlogPosts(ControllerContext.RequestContext.HttpContext); DatabaseCache.ResetNavMenuItems(ControllerContext.RequestContext.HttpContext); DatabaseCache.ResetSidebars(ControllerContext.RequestContext.HttpContext); } return(RedirectToAction("Index")); } else { return(View(model)); } } else { return(RedirectToAction("Index")); } }