/// <summary> /// List all Urls /// </summary> /// <param name="contentId"></param> /// <param name="detailId"></param> /// <returns></returns> public ActionResult Urls(int? contentId, int? detailId) { var content = _entities.Contents .Include(c => c.Urls) .FirstOrDefault(c => c.Id == contentId); if (content == null) { return RedirectToRoute("ContentIndex"); } if (detailId != null) { if (!User.IsInRole("artikel-administrator")) { return RedirectToRoute("ContentDetail", new { contentId = content.Id, action = "urls" }); } var url = _entities.ContentUrls .FirstOrDefault(u => u.Id == detailId); if (url == null || url.ContentId != contentId || url.Enabled == false || url.Type == UrlType.System) { return RedirectToRoute("ContentDetail", new { contentId = content.Id, action = "urls" }); } url.Enabled = false; _entities.SaveChanges(); return RedirectToRoute("ContentDetail", new { contentId = content.Id, action = "urls" }); } var model = new ContentUrlsViewModel { Content = content, ContentId = content.Id, IsContentAdministrator = User.IsInRole("artikel-administrator") }; return View("~/Areas/mitarbeit/Views/Content/Urls.cshtml", model); }
public ActionResult Urls(ContentUrlsViewModel model) { if (!User.IsInRole("artikel-administrator")) { return RedirectToRoute("ContentIndex"); } var content = _entities.Contents .Include(c => c.Urls) .FirstOrDefault(c => c.Id == model.ContentId); if (content == null) { return RedirectToRoute("ContentIndex"); } if (ModelState.IsValid) { // remove leading and trailing slashes model.UrlName = model.UrlName.Trim(' ', '/'); var urls = _entities.ContentUrls.Where(u => u.Url == model.UrlName).Include("Content"); if (!urls.Any() || urls.First().Enabled == false) { // Remove Urls with the same name, if they were disabled before _entities.ContentUrls.RemoveRange(urls); var url = new ContentUrl { Url = model.UrlName, ContentId = content.Id, Type = model.SetDefault ? UrlType.Default : UrlType.Alternative, Enabled = true }; if (model.SetDefault) { if (content.DefaultUrl != null && content.DefaultUrl.Type != UrlType.System) { content.DefaultUrl.Type = UrlType.Alternative; } content.DefaultUrl = url; } _entities.ContentUrls.Add(url); _entities.SaveChanges(); model.Saved = true; } else { ViewBag.Error = String.Format("Die URL {0} existiert bereits.", model.UrlName); } } model.Content = content; model.IsContentAdministrator = User.IsInRole("artikel-administrator"); return View("~/Areas/mitarbeit/Views/Content/Urls.cshtml", model); }