diff options
| -rw-r--r-- | Project-Unite/Controllers/WikiControllerController.cs | 44 | ||||
| -rw-r--r-- | Project-Unite/Models/WikiModels.cs | 1 | ||||
| -rw-r--r-- | Project-Unite/Project-Unite.csproj | 1 | ||||
| -rw-r--r-- | Project-Unite/Views/Wiki/EditPage.cshtml | 29 | ||||
| -rw-r--r-- | Project-Unite/Views/Wiki/Index.cshtml | 7 |
5 files changed, 82 insertions, 0 deletions
diff --git a/Project-Unite/Controllers/WikiControllerController.cs b/Project-Unite/Controllers/WikiControllerController.cs index a8e9f26..391c57d 100644 --- a/Project-Unite/Controllers/WikiControllerController.cs +++ b/Project-Unite/Controllers/WikiControllerController.cs @@ -22,6 +22,50 @@ namespace Project_Unite.Controllers return View(model); } + [Authorize] + public ActionResult EditPage(string id) + { + var db = new ApplicationDbContext(); + var model = new AddWikiPageViewModel(); + var wiki = db.WikiPages.FirstOrDefault(x => x.Id == id); + if (wiki == null) + return new HttpStatusCodeResult(404); + model.Content = wiki.Contents; + model.Name = wiki.Name; + model.ParentId = wiki.CategoryId; + model.PageId = id; + return View(model); + } + + [Authorize] + [ValidateAntiForgeryToken] + [HttpPost] + public ActionResult EditPage(AddWikiPageViewModel model) + { + if (!ModelState.IsValid) + return View(model); + var db = new ApplicationDbContext(); + + var wiki = db.WikiPages.FirstOrDefault(x => x.Id == model.PageId); + if (wiki == null) + return new HttpStatusCodeResult(404); + var edit = new ForumPostEdit(); + edit.PreviousState = wiki.Contents; + edit.EditedAt = DateTime.Now; + edit.UserId = User.Identity.GetUserId(); + edit.Id = Guid.NewGuid().ToString(); + edit.Parent = wiki.Id; + + db.ForumPostEdits.Add(edit); + + wiki.Contents = model.Content; + wiki.CategoryId = model.ParentId; + + db.SaveChanges(); + + return RedirectToAction("Index", new { id = model.PageId }); + } + public ActionResult Random() { var db = new ApplicationDbContext(); diff --git a/Project-Unite/Models/WikiModels.cs b/Project-Unite/Models/WikiModels.cs index 29144d3..fee128f 100644 --- a/Project-Unite/Models/WikiModels.cs +++ b/Project-Unite/Models/WikiModels.cs @@ -16,6 +16,7 @@ namespace Project_Unite.Models [AllowHtml] [Required(ErrorMessage = "Please enter content for your page.")] public string Content { get; set; } + public string PageId { get; set; } } public class AddWikiCategoryViewModel diff --git a/Project-Unite/Project-Unite.csproj b/Project-Unite/Project-Unite.csproj index 42daee2..b5724bd 100644 --- a/Project-Unite/Project-Unite.csproj +++ b/Project-Unite/Project-Unite.csproj @@ -546,6 +546,7 @@ <Content Include="Views\Developer\Wiki.cshtml" /> <Content Include="Views\Developer\AddWikiCategory.cshtml" /> <Content Include="Views\Wiki\AddPage.cshtml" /> + <Content Include="Views\Wiki\EditPage.cshtml" /> </ItemGroup> <ItemGroup> <Folder Include="App_Data\" /> diff --git a/Project-Unite/Views/Wiki/EditPage.cshtml b/Project-Unite/Views/Wiki/EditPage.cshtml new file mode 100644 index 0000000..6c75028 --- /dev/null +++ b/Project-Unite/Views/Wiki/EditPage.cshtml @@ -0,0 +1,29 @@ +@model Project_Unite.Models.AddWikiPageViewModel +@{ + ViewBag.Title = "Edit page"; +} + +<h2>Edit @Model.Name</h2> + +@using (Html.BeginForm()) +{ + @Html.AntiForgeryToken() + @Html.HiddenFor(Model=>Model.PageId) + @Html.HiddenFor(Model=>Model.Name) + + <table class="table"> + <tr> + <td style="width:35%">Category:</td> + <td>@Html.DropDownListFor(Model=>Model.ParentId, Model.Parents, new{@class="form-control"})</td> + </tr> + <tr> + <td>Contents:</td> + <td>@Html.TextAreaFor(Model=>Model.Content, new{@class="form-control", rows="10"})</td> + </tr> + <tr> + <td></td> + <td><input type="submit" class="btn btn-primary" value="Edit" /></td> + </tr> + </table> +} + diff --git a/Project-Unite/Views/Wiki/Index.cshtml b/Project-Unite/Views/Wiki/Index.cshtml index d3772a2..02c2845 100644 --- a/Project-Unite/Views/Wiki/Index.cshtml +++ b/Project-Unite/Views/Wiki/Index.cshtml @@ -81,6 +81,13 @@ <p><strong>Last edited by @Html.UserLink(edit.UserId) on @edit.EditedAt</strong></p> + if (Request.IsAuthenticated) + { + <ul> + <li><a href="@Url.Action("EditPage", new { id = Model.Page.Id })"><span class="glyphicon glyphicon-pencil"></span> Edit this page</a></li> + </ul> + } + <p>@Html.Markdown(Model.Page.Contents)</p> if (Request.IsAuthenticated) |
