1
0
mirror of https://git.teknik.io/Teknikode/Teknik.git synced 2023-08-02 14:16:22 +02:00

Started work on Blog/Post views

This commit is contained in:
Uncled1023 2015-12-17 00:01:45 -08:00
parent 1d8c4fba34
commit ff8bc3d464
9 changed files with 159 additions and 42 deletions

View File

@ -16,31 +16,31 @@ namespace Teknik.Areas.Blog
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapSubdomainRoute(
"Blog_dev_index", // Route name
"Blog_dev_blog", // Route name
"dev",
"Blog", // URL with parameters
new { controller = "Blog", action = "Index" }, // Parameter defaults
"Blog/{username}", // URL with parameters
new { controller = "Blog", action = "Blog", username = UrlParameter.Optional }, // Parameter defaults
new[] { typeof(Controllers.BlogController).Namespace }
);
context.MapSubdomainRoute(
"Blog_dev_detail", // Route name
"Blog_dev_post", // Route name
"dev",
"Blog/{username}/{id}", // URL with parameters
new { controller = "Blog", action = "Details", username = "", id = UrlParameter.Optional }, // Parameter defaults
new { controller = "Blog", action = "Post", username = "", id = 0 }, // Parameter defaults
new[] { typeof(Controllers.BlogController).Namespace }
);
context.MapSubdomainRoute(
"Blog_default_index", // Route name
"Blog_default_blog", // Route name
"blog",
"", // URL with parameters
new { controller = "Blog", action = "Index" }, // Parameter defaults
"{username}", // URL with parameters
new { controller = "Blog", action = "Blog", username = UrlParameter.Optional }, // Parameter defaults
new[] { typeof(Controllers.BlogController).Namespace }
);
context.MapSubdomainRoute(
"Blog_default_detail", // Route name
"Blog_default_post", // Route name
"blog",
"{username}/{id}", // URL with parameters
new { controller = "Blog", action = "Details", username = "", id = UrlParameter.Optional }, // Parameter defaults
new { controller = "Blog", action = "Post", username = "", id = 0 }, // Parameter defaults
new[] { typeof(Controllers.BlogController).Namespace }
);

View File

@ -6,7 +6,9 @@ using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Teknik.Areas.Blog.Models;
using Teknik.Areas.Blog.ViewModels;
using Teknik.Areas.Profile.Models;
using Teknik.Controllers;
using Teknik.Helpers;
using Teknik.Models;
@ -39,22 +41,69 @@ namespace Teknik.Areas.Blog.Controllers
// GET: Blogs/Details/5
[AllowAnonymous]
public ActionResult Details(string username, int? id)
public ActionResult Blog(string username)
{
Models.Blog blog = null;
if (string.IsNullOrEmpty(username))
{
blog = db.Blogs.Find(Constants.SERVERBLOGID);
}
else
{
var blogs = db.Blogs.Include("Blog.User").Where(p => p.User.Username == username);
if (blogs.Any())
{
blog = blogs.First();
}
}
// find the post specified
if (blog != null)
{
BlogViewModel model = new BlogViewModel();
model.BlogId = blog.BlogId;
model.UserId = blog.UserId;
model.User = blog.User;
model.Posts = blog.Posts;
return View(model);
}
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
}
// GET: Blogs/Details/5
[AllowAnonymous]
public ActionResult Post(string username, int id)
{
if (string.IsNullOrEmpty(username))
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (id == null)
// find the post specified
var post = db.Posts.Include("Blog").Include("Blog.User").Where(p => p.Blog.User.Username == username && p.PostId == id);
if (post.Any())
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Post curPost = post.First();
PostViewModel model = new PostViewModel();
model.BlogId = curPost.BlogId;
model.PostId = curPost.PostId;
model.DatePosted = curPost.DatePosted;
model.Published = curPost.Published;
model.DatePublished = curPost.DatePublished;
model.Title = curPost.Title;
model.Tags = curPost.Tags;
model.Article = curPost.Article;
return View(model);
}
Models.Blog blog = db.Blogs.Find(id);
if (blog == null)
{
return HttpNotFound();
}
return View(blog);
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
}
public ActionResult GetPosts(int blogID, int startPostID, int count)
{
object model = null;
return PartialView("Post", model);
}
// GET: Blogs/Create
@ -136,14 +185,5 @@ namespace Teknik.Areas.Blog.Controllers
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}

View File

@ -10,6 +10,10 @@ namespace Teknik.Areas.Blog.Models
public int UserId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public User User { get; set; }
public List<Post> Posts { get; set; }

View File

@ -14,6 +14,10 @@ namespace Teknik.Areas.Blog.ViewModels
public int UserId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public User User { get; set; }
public List<Post> Posts { get; set; }

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using Teknik.Areas.Blog.Models;
using System.Linq;
using System.Web;
namespace Teknik.Areas.Blog.ViewModels
{
public class PostViewModel
{
public int PostId { get; set; }
public int BlogId { get; set; }
public DateTime DatePosted { get; set; }
public DateTime DatePublished { get; set; }
public bool Published { get; set; }
public string Title { get; set; }
public string Article { get; set; }
public List<string> Tags { get; set; }
}
}

View File

@ -0,0 +1,53 @@
@model Teknik.Areas.Blog.Models.Post
<script>
var converter = new Markdown.getSanitizingConverter();
// Title Conversion
var old_post = $("#title_@Model.PostId").text();
var new_post = converter.makeHtml(old_post);
$("#title_@Model.PostId").html(new_post);
// Post Conversion
var old_post = $("#post_@Model.PostId").text();
var new_post = converter.makeHtml(old_post);
$("#post_@Model.PostId").html(new_post);
</script>
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<div class="blog-post">
<h2 class="blog-post-title text-center"><a href="@Url.Action("Post", "Blog", new { area = "Blog", username = Model.Blog.User.Username, id = Model.PostId })" id="title_@Model.PostId">@Model.Title</a></h2>
<p class="blog-post-meta text-center text-muted">
Posted on @Model.DatePublished.ToString("F d, Y") by <a href="@Url.Action("Index", "Profile", new { area = "Profile" })/@Model.Blog.User.Username">@Model.Blog.User.Username</a>
<?php
if ($own_blog)
{
?>
<br />
<button type="button" class="btn btn-info edit_post" id="<?php echo $post_id; ?>" data-toggle="modal" data-target="#editPost">Edit</button>
<?php
if ($published)
{
?>
<button type="button" class="btn btn-warning unpublish_post" id="<?php echo $post_id; ?>">Unpublish</button>
<?php
}
else
{
?>
<button type="button" class="btn btn-success publish_post" id="<?php echo $post_id; ?>">Publish</button>
<?php
}
?>
<button type="button" class="btn btn-danger delete_post" id="<?php echo $post_id; ?>">Delete</button>
<?php
}
?>
</p>
<p id="post_@Model.PostId">@Model.Article</p>
</div>
</div>
</div>
<!-- NO POSTS -->
<div class="row">
<div class="col-sm-12 text-center">
<h2>There are currently no articles.</h2>
</div>
</div>

View File

@ -141,6 +141,7 @@
<Compile Include="Areas\About\Controllers\AboutController.cs" />
<Compile Include="Areas\Blog\BlogAreaRegistration.cs" />
<Compile Include="Areas\Blog\ViewModels\BlogViewModel.cs" />
<Compile Include="Areas\Blog\ViewModels\PostViewModel.cs" />
<Compile Include="Areas\Contact\ContactAreaRegistration.cs" />
<Compile Include="Areas\Contact\Controllers\ContactController.cs" />
<Compile Include="Areas\Contact\Models\Contact.cs" />
@ -203,7 +204,7 @@
<Content Include="App_Data\Config.json" />
<Content Include="ConnectionStrings.config" />
<Content Include="Areas\Blog\Views\web.config" />
<Content Include="Areas\Blog\Views\Blog\Index.cshtml" />
<Content Include="Areas\Blog\Views\Blog\Blog.cshtml" />
<Content Include="Areas\Dev\Views\web.config" />
<Content Include="Areas\Home\Views\web.config" />
<Content Include="Areas\Home\Views\_ViewStart.cshtml" />
@ -234,6 +235,7 @@
<Content Include="Content\bootstrap.css.map" />
<Content Include="Content\bootstrap-theme.min.css.map" />
<Content Include="Content\bootstrap-theme.css.map" />
<Content Include="Areas\Blog\Views\Blog\Post.cshtml" />
<None Include="Properties\PublishProfiles\Teknik Dev.pubxml" />
<None Include="Scripts\jquery-2.1.4.intellisense.js" />
<Content Include="Scripts\bootstrap.js" />

View File

@ -7,18 +7,5 @@ namespace Teknik.ViewModels
{
public abstract class ViewModelBase
{
private Config _config;
public Config Config
{
get
{
return _config;
}
set
{
_config = value;
}
}
}
}