コード例 #1
0
ファイル: ContentController.cs プロジェクト: Jonkins/Pokefans
        /// <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);
        }
コード例 #2
0
ファイル: ContentController.cs プロジェクト: Jonkins/Pokefans
        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);
        }