Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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)));
                }
            }
        }
Ejemplo n.º 4
0
        // 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()));
                }
            }
        }
Ejemplo n.º 5
0
        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));
            }
        }
Ejemplo n.º 6
0
        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"));
            }
        }
Ejemplo n.º 7
0
        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)));
                    }
                }
            }
        }
Ejemplo n.º 8
0
        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"));
                }
            }
        }
Ejemplo n.º 9
0
        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"));
            }
        }