コード例 #1
0
        /// <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 }));
            }
        }
コード例 #2
0
        /// <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}"));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: BlogController.cs プロジェクト: xareas/Fanray
        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 }));
            }
        }