Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
[ValidateAntiForgeryToken(Salt = antiForgeryTokenSalt)] [AcceptVerbs(HttpVerbs.Post)] [OxiteAuthorize(Roles = "SiteOwner,AreaOwner")] public virtual ActionResult Index(string pagePath, FormCollection form, Guid? parentID, RequestMode mode) { string[] pagePathParts = pagePath.Split('/'); string viewName = "Manage"; if (string.Compare(pagePathParts.Last(), "edit", true) == 0) mode = RequestMode.Edit; else if (string.Compare(pagePathParts.Last(), "add", true) == 0) mode = RequestMode.Add; else if (string.Compare(pagePathParts.Last(), "remove", true) == 0) return removePage(string.Join("/", pagePathParts.Take(pagePathParts.Length - 1).ToArray()), form["returnUri"]); else return NotFound(); pagePath = string.Join("/", pagePathParts.Take(pagePathParts.Length - 1).ToArray()); IPost page = mode != RequestMode.Add ? pagePath.LoadPage((g, s) => PostRepository.GetPost(g, s)) : null; IPost newParent = PostRepository.GetPost(parentID ?? Guid.Empty) ?? pagePath.LoadPage((g, s) => PostRepository.GetPost(g, s)); bool urlIsLocked = page != null && page.State == (byte)EntityState.Normal && page.Published.HasValue && ConvertToLocalTime(page.Published.Value).AddHours(Config.Site.PostEditTimeout) < DateTime.Now; if (mode == RequestMode.Edit) PageTitle.AdditionalPageTitleSegments = new string[] { Localize("Edit Page") }; else PageTitle.AdditionalPageTitleSegments = new string[] { Localize("Create Page") }; List<ITag> tags = form.LoadTags((s) => TagRepository.GetTag(s), (s) => TagRepository.CreateTag(s), ModelState) as List<ITag>; IPost pageFromRequest = form.LoadPost(() => PostRepository.CreatePost(), ModelState); if (!urlIsLocked && isDuplicateUri(page, pageFromRequest.Slug, newParent)) { ModelState.Add("Post.Slug", new ModelState() { AttemptedValue = pageFromRequest.Slug }); ModelState["Post.Slug"].Errors.Add(new ModelError(Localize("This slug is already being used!"))); } if (pageFromRequest != null && ModelState.IsValid) { if (page == null) { page = PostRepository.CreatePost(); page.CreatorUserID = User.ID; } page.Slug = pageFromRequest.Slug; page.Title = pageFromRequest.Title; page.Body = pageFromRequest.Body; page.BodyShort = string.Empty; page.State = pageFromRequest.State; page.Published = pageFromRequest.Published.HasValue ? ConvertFromLocalTime(pageFromRequest.Published.Value) : (DateTime?)null; page.Modified = pageFromRequest.Modified; if (page.ID == Guid.Empty) { page.Created = DateTime.Now.ToUniversalTime(); ISubscription subscription = null; if (Config.Site.AuthorAutoSubscribe) { subscription = PostRepository.CreateSubscription(); subscription.UserID = User.ID; } PostRepository.AddPost(page, subscription); } IPost currentParent = PostRepository.GetParentPost(page.ID); if (currentParent == null || newParent == null || currentParent.ID != newParent.ID) { if (currentParent != null) PostRepository.RemovePostRelationship(page.ID); PostRepository.AddPostRelationship(Config.Site.ID, page.ID, newParent != null ? newParent.ID : Guid.Empty); } foreach (ITag tag in tags) { if (tag.ID == Guid.Empty) TagRepository.AddTag(tag); PostRepository.AddPostToTag(page.ID, tag.ID); } page.Tags.ToList().FindAll(tP => !tags.Exists(t => t.ID == tP.ID)).ForEach(t => PostRepository.RemovePostFromTag(page.ID, t.ID)); PostRepository.SubmitChanges(); if (!string.IsNullOrEmpty(form["returnUri"])) return new RedirectResult(form["returnUri"]); else return Redirect(page.GetPageUrl(ControllerContext, Routes)); } ViewData["Post"] = page ?? PostRepository.CreatePost(); ViewData["NewParentPostID"] = newParent != null ? newParent.ID : Guid.Empty; ViewData["Pages"] = addRootPage(PostRepository.GetPostsWithFullSlug(Config.Site.ID)); ViewData["Creator"] = page != null ? page.CreatorUser : User; ViewData["RequestMode"] = mode; ViewData["UrlIsLocked"] = urlIsLocked; ViewData["ReturnUri"] = form["returnUri"]; ViewData["Meta.Description"] = page != null ? page.GetBodyShort() : string.Empty; ViewData["AntiForgeryTokenSalt"] = antiForgeryTokenSalt; return View(viewName); }
This paste will be private.
From the Design Piracy series on my blog: