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

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

            // build 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;

            // if the url was passed in via the context, use the render view, otherwise show the detail view
            return(View(model));
        }
コード例 #2
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));
        }