summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-04-07 09:57:24 -0400
committerMichael <[email protected]>2017-04-07 09:57:24 -0400
commit5860170c1fed2342232d7e35015b669e8b8ec471 (patch)
treebfd2113a5b98421c94344d313cf35c2d1e2d171c
parent6989516207321b6d99c6b04879b5a9a438527107 (diff)
downloadproject-unite-5860170c1fed2342232d7e35015b669e8b8ec471.tar.gz
project-unite-5860170c1fed2342232d7e35015b669e8b8ec471.tar.bz2
project-unite-5860170c1fed2342232d7e35015b669e8b8ec471.zip
Add "edit page" button to wiki
-rw-r--r--Project-Unite/Controllers/WikiControllerController.cs44
-rw-r--r--Project-Unite/Models/WikiModels.cs1
-rw-r--r--Project-Unite/Project-Unite.csproj1
-rw-r--r--Project-Unite/Views/Wiki/EditPage.cshtml29
-rw-r--r--Project-Unite/Views/Wiki/Index.cshtml7
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)