/// <summary> /// Returns previewing of a single post. /// </summary> /// <param name="year"></param> /// <param name="month"></param> /// <param name="day"></param> /// <param name="slug"></param> /// <returns></returns> public async Task <IActionResult> Preview(int year, int month, int day, string slug) { try { // Get back blog post from TempData DateTime dt = new DateTime(year, month, day); var link = BlogRoutes.GetPostPreviewRelativeLink(dt, slug); var blogPost = TempData.Get <BlogPost>(link); // Prep it blogPost.Body = _shortcodeSvc.Parse(blogPost.Body); blogPost.Body = OembedParser.Parse(blogPost.Body); var blogSettings = await _settingSvc.GetSettingsAsync <BlogSettings>(); blogSettings.DisqusShortname = ""; // when preview turn off disqus var vm = new BlogPostViewModel(blogPost, blogSettings, Request); // Show it return(View("Post", vm)); } catch (Exception) { // when user access the preview link directly or when user clicks on other links // and navigates away during the preview, hacky need to find a better way. return(RedirectToAction("ErrorCode", "Home", new { statusCode = 404 })); } }
/// <summary> /// Preview /// </summary> /// <param name="post"></param> /// <returns></returns> public async Task <JsonResult> OnPostPreviewAsync([FromBody] PostVM post) { // prep blog post List <Tag> tags = new List <Tag>(); foreach (var title in post.Tags) // titles { tags.Add(await _tagSvc.GetByTitleAsync(title)); } var blogPost = new BlogPost { User = await _userManager.GetUserAsync(HttpContext.User), UserId = Convert.ToInt32(_userManager.GetUserId(HttpContext.User)), Category = await _catSvc.GetAsync(post.CategoryId), CreatedOn = GetCreatedOn(post.PostDate), Tags = tags, Slug = post.Slug.IsNullOrEmpty() ? "untitled" : post.Slug, Excerpt = post.Excerpt, Title = post.Title.IsNullOrEmpty() ? "Untitled" : post.Title, Body = post.Body, }; // prep TempData var prevRelLink = BlogRoutes.GetPostPreviewRelativeLink(blogPost.CreatedOn, blogPost.Slug); TempData.Put(prevRelLink, blogPost); // return preview url return(new JsonResult($"{Request.Scheme}://{Request.Host}{prevRelLink}")); }
public void GetPostPreviewRelativeLink_returns_relative_link_starts_with_slash() { var createdOn = new DateTimeOffset(2018, 9, 9, 0, 0, 0, TimeSpan.Zero); var slug = "my-post"; var relativeLink = BlogRoutes.GetPostPreviewRelativeLink(createdOn, slug); Assert.StartsWith("/", relativeLink); Assert.Equal("/preview/post/2018/09/09/my-post", relativeLink); }
public async Task <IActionResult> PreviewPost(int year, int month, int day, string slug) { try { // Get back blog post from TempData DateTime dt = new DateTime(year, month, day); var link = BlogRoutes.GetPostPreviewRelativeLink(dt, slug); var blogPost = TempData.Get <BlogPost>(link); // Prep vm var blogPostVM = await blogViewModelHelper.GetBlogPostVMPreviewAsync(blogPost); // Show it return(View("Post", blogPostVM)); } catch (Exception) { // when user access the preview link directly or when user clicks on other links // and navigates away during the preview, hacky need to find a better way. return(RedirectToAction("ErrorCode", "Home", new { statusCode = 404 })); } }