コード例 #1
0
ファイル: CMSController.cs プロジェクト: ColJ75/PD_MVC
        public async Task <IActionResult> DeleteConfirmed(int pageId)
        {
            var cmsPage = await _context.CMSPage.SingleOrDefaultAsync(p => p.PageId == pageId);

            cmsPage.Status = Core.Enums.CMS.PageStatus.Deleted;
            //_context.CMSPage.Remove(cmsPage);

            // add the history item for this update
            CMSPageHistory cmsPageHistory = new CMSPageHistory();

            cmsPageHistory.VersionId    = cmsPage.VersionId;
            cmsPageHistory.Title        = cmsPage.Title;
            cmsPageHistory.Url          = cmsPage.Url;
            cmsPageHistory.Status       = cmsPage.Status;
            cmsPageHistory.ModifiedBy   = _userManager.GetUserId(User);
            cmsPageHistory.ModifiedDate = DateTime.Now;
            _context.Add(cmsPageHistory);

            // write changes to the database
            await _context.SaveChangesAsync();

            // update sitemap.json
            Core.Sitemap.Rebuild(_context);

            return(RedirectToAction("Index"));
        }
コード例 #2
0
ファイル: CMSController.cs プロジェクト: ColJ75/PD_MVC
        public async Task <IActionResult> UseVersion(int pageId, int id)
        {
            CMSPage cmsPage = _context.CMSPage.SingleOrDefault(p => p.PageId == pageId);

            if (cmsPage == null)
            {
                return(NotFound());
            }

            try
            {
                // get current user id
                string userId = _userManager.GetUserId(User);

                // update page to reflect version change
                cmsPage.ModifiedBy   = userId;
                cmsPage.ModifiedDate = DateTime.Now;
                cmsPage.VersionId    = id;
                _context.Update(cmsPage);

                // add the history item for this update
                CMSPageHistory cmsPageHistory = new CMSPageHistory()
                {
                    PageId       = pageId,
                    VersionId    = (int)cmsPage.VersionId,
                    Title        = cmsPage.Title,
                    Url          = cmsPage.Url,
                    Status       = cmsPage.Status,
                    ModifiedBy   = userId,
                    ModifiedDate = DateTime.Now
                };
                _context.Add(cmsPageHistory);

                // write changes to the database
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CMSPageExists(cmsPage.Url))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(RedirectToAction("Edit", new { url = cmsPage.Url }));
        }
コード例 #3
0
ファイル: CMSController.cs プロジェクト: ColJ75/PD_MVC
        public async Task <IActionResult> Render(string url, [Bind("PageId,Content")] CMSPageVersion cmsPageVersion, [Bind("PageId")] CMSPageHistory cmsPageHistory)
        {
            if (url == null && HttpContext.Items["CMSUrl"] != null)
            {
                url = (string)HttpContext.Items["CMSUrl"];
            }
            if (url == null)
            {
                return(NotFound());
            }

            var cmsPage = await _context.CMSPage.SingleOrDefaultAsync(p => p.Url == url);

            if (cmsPage == null)
            {
                return(NotFound());
            }

            // check if the content has changed from the last active version - if not then don't do anything
            var testVersion = (cmsPage.VersionId != null && cmsPage.VersionId > 0) ? await _context.CMSPageVersion.SingleOrDefaultAsync(v => v.VersionId == cmsPage.VersionId) : null;

            if (testVersion == null || cmsPageVersion.Content != testVersion.Content)
            {
                // add the new content version to the database
                cmsPageVersion.Status = 1;
                _context.Add(cmsPageVersion);

                // write changes to the database
                await _context.SaveChangesAsync();

                // get current user id
                string userId = _userManager.GetUserId(User);

                // add the history item for this update
                cmsPageHistory.VersionId    = cmsPageVersion.VersionId;
                cmsPageHistory.Title        = cmsPage.Title;
                cmsPageHistory.Url          = cmsPage.Url;
                cmsPageHistory.Status       = cmsPage.Status;
                cmsPageHistory.ModifiedBy   = userId;
                cmsPageHistory.ModifiedDate = DateTime.Now;
                _context.Add(cmsPageHistory);

                // update page info to reflect the update
                cmsPage.VersionId    = cmsPageVersion.VersionId;
                cmsPage.ModifiedBy   = cmsPageHistory.ModifiedBy;
                cmsPage.ModifiedDate = cmsPageHistory.ModifiedDate;
                _context.Update(cmsPage);

                // write changes to the database
                await _context.SaveChangesAsync();
            }

            // reload the page
            return(Redirect("/" + url));
        }
コード例 #4
0
ファイル: CMSController.cs プロジェクト: ColJ75/PD_MVC
        public async Task <IActionResult> Save(int pageId)
        {
            var cmsPage = await _context.CMSPage.SingleOrDefaultAsync(p => p.PageId == pageId);

            if (cmsPage == null)
            {
                return(NotFound());
            }

            // check if anything has changed, and if everything looks ok
            if (ModelState.IsValid && (
                    cmsPage.Title != Request.Form["Page.Title"] ||
                    cmsPage.Url != Request.Form["Page.Url"] ||
                    cmsPage.Status != (Core.Enums.CMS.PageStatus) int.Parse(Request.Form["Page.Status"])
                    ))
            {
                try
                {
                    cmsPage.Title        = Request.Form["Page.Title"];
                    cmsPage.Url          = Request.Form["Page.Url"];
                    cmsPage.Status       = (Core.Enums.CMS.PageStatus) int.Parse(Request.Form["Page.Status"]);
                    cmsPage.ModifiedDate = DateTime.Now;
                    _context.Update(cmsPage);

                    // add the history item for this update
                    CMSPageHistory cmsPageHistory = new CMSPageHistory();
                    cmsPageHistory.VersionId    = cmsPage.VersionId;
                    cmsPageHistory.PageId       = cmsPage.PageId;
                    cmsPageHistory.Title        = cmsPage.Title;
                    cmsPageHistory.Url          = cmsPage.Url;
                    cmsPageHistory.Status       = cmsPage.Status;
                    cmsPageHistory.ModifiedBy   = _userManager.GetUserId(User);
                    cmsPageHistory.ModifiedDate = DateTime.Now;
                    _context.Add(cmsPageHistory);

                    // write changes to the database
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CMSPageExists(cmsPage.Url))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }

                // update sitemap.json
                Core.Sitemap.Rebuild(_context);

                return(RedirectToAction("Index"));
            }

            // if we're still here then something is wrong, so build the view model incorporating history and versions
            CMSViewModel model = new CMSViewModel()
            {
                Page = cmsPage
            };
            var q = from h in _context.CMSPageHistory
                    join u in _context.Users on h.ModifiedBy equals u.Id
                    where h.PageId == cmsPage.PageId
                    orderby h.ModifiedDate descending
                    select new CMSPageHistoryViewModel()
            {
                ItemId         = h.ItemId,
                PageId         = h.PageId,
                Status         = h.Status,
                Title          = h.Title,
                Url            = h.Url,
                ModifiedDate   = h.ModifiedDate,
                ModifiedBy     = h.ModifiedBy,
                ModifiedByName = string.Format("{0} {1}", u.FirstName, u.LastName),
                VersionId      = h.VersionId
            };

            model.History = await q.ToListAsync();

            model.Versions = await _context.CMSPageVersion.Where(p => p.PageId == cmsPage.PageId && p.Status == 1).OrderByDescending(v => v.VersionId).ToListAsync();

            model.Content     = model.Versions.Count() > 0 ? model.Versions.OrderByDescending(v => v.VersionId).First().Content : string.Empty;
            model.Page.Title  = Request.Form["Page.Title"];
            model.Page.Url    = Request.Form["Page.Url"];
            model.Page.Status = (Core.Enums.CMS.PageStatus) int.Parse(Request.Form["Page.Status"]);

            // if the url was passed in via the context, use the render view, otherwise show the detail view
            return(View("Edit", model));
        }