Esempio n. 1
0
        public async Task <PostPreviewViewModel> GetPreviewAsync(string id)
        {
            var post = await _repository.FindAsync <Post, string>(SqlConstants.GetPreviewPost, id);

            if (post == null)
            {
                throw new BlogException(StatusCodes.Status404NotFound, "没有找到相应文章");
            }

            var categories =
                await _repository.GetListAsync <CategoryViewModel>(SqlConstants.GetCategoriesByPost, new { ids = post.CategoryIds.ToArray() });

            var postPreviewViewModel = new PostPreviewViewModel
            {
                Id              = post.Id,
                Title           = post.Title,
                Content         = post.Content.AddLazyLoadToImgTag(),
                CreationTime    = post.CreationTime,
                ContentAbstract = post.ContentAbstract,
                Categories      = categories.ToList(),
                LastModifyTime  = post.LastModifyTime
            };

            return(postPreviewViewModel);
        }
Esempio n. 2
0
        public IActionResult Index(int?forumThreadId, int page = 1)
        {
            // Pokud není Id vlákna příspěvků specifikované, využiju první vlákno příspěvků ...
            var forumThread = forumThreadId.HasValue
                                ? this.unitOfWork.ForumThreadRepository.GetById(forumThreadId.Value)
                                : this.unitOfWork.ForumThreadRepository.FirstOrDefault();

            if (forumThread != null)
            {
                var forumThreadInfoPanelViewModel = new ForumThreadInfoPanelViewModel(forumThread.Id, forumThread.Name, forumThread.Description);

                var forumThreadsViewModels = this.unitOfWork.ForumThreadRepository
                                             .GetAll()
                                             .ToList()
                                             .Select(ft => ForumThreadInfoViewModel.CreateFromEntity(ft));

                var postsViewModels = this.unitOfWork.PostRepository
                                      .GetPostsByForumThreadId(forumThread.Id)
                                      .ToList()
                                      .Select(p => PostPreviewViewModel.CreateFromEntity(p));

                var pagedPosts = PagingList.Create(postsViewModels, 5, page);

                var model = new HomeIndexViewModel(pagedPosts, forumThreadsViewModels, forumThreadInfoPanelViewModel);

                return(View(model));
            }
            else
            {
                return(RedirectToAction(nameof(Index)));
            }
        }
        public async Task <IActionResult> Preview(PostFormViewModel model)
        {
            if (model == null)
            {
                return(new HttpStatusCodeResult((int)HttpStatusCode.BadRequest));
            }

            var vm = new PostPreviewViewModel()
            {
                Theme = this._settings.Theme,
                HeadPartialViewPath   = this._themeService.GetHeadPartialViewPath(this._settings.Theme),
                HeaderPartialViewPath = this._themeService.GetHeaderPartialViewPath(this._settings.Theme),
                PostPartialViewPath   = this._themeService.GetPostPartialViewPath(this._settings.Theme),
                FooterPartialViewPath = this._themeService.GetFooterPartialViewPath(this._settings.Theme),
            };

            var page = new PageSettings();

            page.Title       = "Hello World";
            page.Description = "This is description";
            page.Author      = new Author()
            {
                Name = "joebloggs"
            };
            page.Date    = DateTime.Today;
            page.BaseUrl = this._settings.BaseUrl;
            page.Url     = "/posts/post.html";
            page.Pages   = new List <PageSettings>();

            vm.Page = page;

            var env = this.Resolver.GetService(typeof(IApplicationEnvironment)) as IApplicationEnvironment;

            var loader = new ThemeLoader(this._settings, new FileHelper(this._settings));
            var site   = await loader.LoadAsync(env).ConfigureAwait(false);

            vm.Site = site;

            var parsedHtml = this._markdownHelper.Parse(model.Body);

            vm.Html = parsedHtml;

            return(this.View(vm));
        }