public static IEnumerable <CommentModel> GetFeaturedCommentsForArticle(ArticleModel article) { if (article.DiscourseTopicId != null) { var comments = DiscourseHelper.GetFeaturedCommentsForArticle((int)article.Id); return(comments.Select(c => CommentModel.FromDiscourse(c))); } return(new CommentModel[0]); }
public ActionResult EditArticle(EditArticleViewModel post) { if (string.IsNullOrEmpty(post.Article.Series.Slug)) { this.ModelState.AddModelError(string.Empty, "A series is required"); } if (string.IsNullOrEmpty(post.Article.Author.Slug)) { this.ModelState.AddModelError(string.Empty, "An author is required"); } if (!string.IsNullOrEmpty(post.Article.Author.Slug) && !this.User.IsAdmin && post.Article.Author.Slug != this.User.Identity.Name) { this.ModelState.AddModelError(string.Empty, "Only administrators can change authors."); } if (!this.ModelState.IsValid) { return(View(post)); } try { if (post.OpenCommentDiscussionChecked && post.Article.DiscourseTopicId > 0) { DiscourseHelper.OpenCommentDiscussion((int)post.Article.Id, (int)post.Article.DiscourseTopicId); } Logger.Information("Creating or updating article \"{0}\".", post.Article.Title); int?articleId = StoredProcs.Articles_CreateOrUpdateArticle( post.Article.Id, post.Article.Slug ?? this.User.Identity.Name, post.PublishedDate, post.Article.Status, post.Article.Author.Slug, post.Article.Title, post.Article.Series.Slug, post.Article.BodyHtml, post.Article.DiscourseTopicId ).Execute(); post.Article.Id = post.Article.Id ?? articleId; if (post.CreateCommentDiscussionChecked) { DiscourseHelper.CreateCommentDiscussion(post.Article); } return(RedirectToAction("index")); } catch (Exception ex) { post.ErrorMessage = ex.ToString(); return(View(post)); } }
public ActionResult EditArticle(EditArticleViewModel post) { if (string.IsNullOrEmpty(post.Article.Series.Slug)) { this.ModelState.AddModelError(string.Empty, "A series is required"); } if (string.IsNullOrEmpty(post.Article.Author.Slug)) { this.ModelState.AddModelError(string.Empty, "An author is required"); } if (!this.ModelState.IsValid) { return(View(post)); } try { int?newlyCreatedTopicId = null; if (post.CreateCommentDiscussionChecked) { newlyCreatedTopicId = DiscourseHelper.CreateCommentDiscussion(post.Article); } if (post.OpenCommentDiscussionChecked && post.Article.DiscourseTopicId > 0) { DiscourseHelper.OpenCommentDiscussion((int)post.Article.Id, (int)post.Article.DiscourseTopicId); } StoredProcs.Articles_CreateOrUpdateArticle( post.Article.Id, post.Article.Slug, post.PublishedDate, post.Article.Status, post.Article.Author.Slug, post.Article.Title, post.Article.Series.Slug, post.Article.BodyHtml, newlyCreatedTopicId ?? post.Article.DiscourseTopicId ).Execute(); return(RedirectToAction("index")); } catch (Exception ex) { post.ErrorMessage = ex.ToString(); return(View(post)); } }
public ActionResult ViewArticleComments(string articleSlug) { var article = ArticleModel.GetArticleBySlug(articleSlug); if (article == null) { return(HttpNotFound()); } if (!article.DiscourseTopicOpened && article.DiscourseTopicId != null && article.PublishedDate < DateTime.Now) { DiscourseHelper.OpenCommentDiscussion((int)article.Id, (int)article.DiscourseTopicId); } bool commentsPulled = DiscourseHelper.PullCommentsFromDiscourse(article); if (commentsPulled) { article = ArticleModel.GetArticleBySlug(articleSlug); // reload article with cached comments } return(View(new ViewCommentsViewModel(article))); }
public static ArticleModel FromTable(Tables.Articles_Extended article) { DateTime lastCommentDate = DateTime.Now; var model = new ArticleModel() { Id = article.Article_Id, Slug = article.Article_Slug, Author = AuthorModel.FromTable(article), BodyHtml = article.Body_Html, DiscourseCommentCount = (int)article.Cached_Comment_Count, CachedCommentCount = (int)article.Cached_Comment_Count, DiscourseTopicId = article.Discourse_Topic_Id, DiscourseTopicOpened = article.Discourse_Topic_Opened == "Y", LastCommentDate = lastCommentDate, PublishedDate = article.Published_Date, Series = SeriesModel.FromTable(article), Status = article.PublishedStatus_Name, SummaryHtml = ArticleModel.ExtractSummary(article.Body_Html), Title = article.Title_Text, PreviousArticleId = article.Previous_Article_Id, PreviousArticleSlug = article.Previous_Article_Slug, PreviousArticleTitle = article.Previous_Title_Text, NextArticleId = article.Next_Article_Id, NextArticleSlug = article.Next_Article_Slug, NextArticleTitle = article.Next_Title_Text }; if (article.Discourse_Topic_Id != null) { var topic = DiscourseHelper.GetDiscussionTopic((int)article.Discourse_Topic_Id); model.LastCommentDate = topic.LastPostedAt; model.DiscourseCommentCount = topic.PostsCount; model.DiscourseTopicSlug = topic.Slug; } return(model); }
public ActionResult ReenableDiscourse() { DiscourseHelper.UnpauseDiscourseConnections(); return(Redirect("/admin")); }
public IEnumerable <Topic> GetSideBarWtfs() { return(DiscourseHelper.GetSideBarWtfs()); }