public async Task <IViewComponentResult> InvokeAsync(DomainReference domainReference) { var q = new QuerySubverseModerators(domainReference.Name); var r = await q.ExecuteAsync(); return(View(r)); }
// url: "/comments/" + submission + "/" + parentId + "/" + command + "/" + startingIndex + "/" + count + "/" + nestingLevel + "/" + sort + "/", // GET: Renders a Section of Comments within the already existing tree //Leaving (string command) in for backwards compat with mobile html clients. this is no longer used public async Task <ActionResult> CommentSegment(int submissionID, int?parentID, string command, int startingIndex, string sort) { #region Validation if (submissionID <= 0) { return(GenericErrorView(new ErrorViewModel() { Description = "Can not find what was requested because input is not valid" })); } var submission = DataCache.Submission.Retrieve(submissionID); if (submission == null) { return(NotFoundErrorView()); } var subverse = DataCache.Subverse.Retrieve(submission.Subverse); //var subverse = _db.Subverse.Find(subversetoshow); if (subverse == null) { return(NotFoundErrorView()); } if (subverse.IsAdminDisabled.HasValue && subverse.IsAdminDisabled.Value) { ViewBag.Subverse = subverse.Name; return(SubverseDisabledErrorView()); } #endregion #region Set ViewBag ViewBag.Subverse = subverse; ViewBag.Submission = submission; //Temp cache user votes for this thread ViewBag.VoteCache = UserCommentVotesBySubmission(submission.ID); ViewBag.SavedCommentCache = UserSavedCommentsBySubmission(submission.ID); //ViewBag.CCP = Karma.CommentKarma(User.Identity.Name); var SortingMode = (sort == null ? "top" : sort).ToLower(); ViewBag.SortingMode = SortingMode; #endregion var q = new QuerySubverseModerators(subverse.Name); ViewBag.ModeratorList = await q.ExecuteAsync(); var results = await GetCommentSegment(submissionID, parentID, startingIndex, sort); return(PartialView("~/Views/Shared/Comments/_CommentSegment.cshtml", results)); }
private static IEnumerable <Data.Models.SubverseModerator> GetModerators(string subverse, IEnumerable <Data.Models.SubverseModerator> modList = null) { if (modList != null) { //just ensure we filter - probably don't have to but this protects a bit return(modList.Where(x => x.Subverse.Equals(subverse, StringComparison.OrdinalIgnoreCase))); } else { var q = new QuerySubverseModerators(subverse); return(q.Execute()); } }
// url: "/comments/" + submission + "/" + parentId + "/" + command + "/" + startingIndex + "/" + count + "/" + nestingLevel + "/" + sort + "/", // GET: Renders a Section of Comments within the already existing tree //Leaving (string command) in for backwards compat with mobile html clients. this is no longer used public async Task <ActionResult> CommentSegment(int submissionID, int?parentID, string command, int startingIndex, string sort) { #region Validation if (submissionID <= 0) { return(ErrorView(new ErrorViewModel() { Description = "Can not find what was requested because input is not valid" })); } var q = new QuerySubmission(submissionID, false); var submission = await q.ExecuteAsync().ConfigureAwait(false); if (submission == null) { return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound))); } var subverse = DataCache.Subverse.Retrieve(submission.Subverse); if (subverse == null) { return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound))); } if (subverse.IsAdminDisabled.HasValue && subverse.IsAdminDisabled.Value) { ViewBag.Subverse = subverse.Name; return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.SubverseDisabled))); } #endregion #region Set ViewBag ViewBag.Subverse = subverse; ViewBag.Submission = submission; var sortingMode = GetSortMode(sort); ViewBag.SortingMode = sortingMode; #endregion var q2 = new QuerySubverseModerators(subverse.Name); ViewBag.ModeratorList = await q2.ExecuteAsync(); var results = await GetCommentSegment(submissionID, parentID, startingIndex, sortingMode); return(PartialView("~/Views/Shared/Comments/_CommentSegment.cshtml", results)); }
// GET: Renders Primary Submission Comments Page public async Task <ActionResult> Comments(int?submissionID, string subverseName, int?commentID, string sort, int?context) { #region Validation if (submissionID == null) { return(GenericErrorView(new ErrorViewModel() { Description = "Can not find what was requested because input is not valid" })); } var submission = _db.Submissions.Find(submissionID.Value); if (submission == null) { return(NotFoundErrorView()); } // make sure that the combination of selected subverse and submission subverse are linked if (!submission.Subverse.Equals(subverseName, StringComparison.OrdinalIgnoreCase)) { return(NotFoundErrorView()); } var subverse = DataCache.Subverse.Retrieve(subverseName); //var subverse = _db.Subverse.Find(subversetoshow); if (subverse == null) { return(NotFoundErrorView()); } if (subverse.IsAdminDisabled.HasValue && subverse.IsAdminDisabled.Value) { ViewBag.Subverse = subverse.Name; return(SubverseDisabledErrorView()); } #endregion if (commentID != null) { ViewBag.StartingCommentId = commentID; ViewBag.CommentToHighLight = commentID; } #region Set ViewBag ViewBag.Subverse = subverse; ViewBag.Submission = submission; //This is a required view bag property in _Layout.cshtml ViewBag.SelectedSubverse = subverse.Name; var SortingMode = (sort == null ? "top" : sort).ToLower(); ViewBag.SortingMode = SortingMode; #endregion #region Track Views // experimental: register a new session for this subverse string clientIpAddress = UserHelper.UserIpAddress(Request); if (clientIpAddress != String.Empty) { // generate salted hash of client IP address string ipHash = IpHash.CreateHash(clientIpAddress); // register a new session for this subverse SessionHelper.Add(subverse.Name, ipHash); //TODO: This needs to be executed in seperate task #region TODO // register a new view for this thread // check if this hash is present for this submission id in viewstatistics table var existingView = _db.ViewStatistics.Find(submission.ID, ipHash); // this IP has already viwed this thread, skip registering a new view if (existingView == null) { // this is a new view, register it for this submission var view = new ViewStatistic { SubmissionID = submission.ID, ViewerID = ipHash }; _db.ViewStatistics.Add(view); submission.Views++; await _db.SaveChangesAsync(); } #endregion } #endregion CommentSegment model = null; if (commentID != null) { ViewBag.CommentToHighLight = commentID.Value; model = await GetCommentContext(submission.ID, commentID.Value, context, sort); } else { model = await GetCommentSegment(submission.ID, null, 0, sort); } var q = new QuerySubverseModerators(subverseName); ViewBag.ModeratorList = await q.ExecuteAsync(); return(View("~/Views/Home/Comments.cshtml", model)); }
//// POST: votecomment/{commentId}/{typeOfVote} //[HttpPost] //[Authorize] //[VoatValidateAntiForgeryToken] //public async Task<JsonResult> VoteComment(int commentId, int typeOfVote) //{ // var cmd = new CommentVoteCommand(commentId, typeOfVote, IpHash.CreateHash(UserHelper.UserIpAddress(this.Request))); // var result = await cmd.Execute(); // return Json(result); //} // GET: Renders Primary Submission Comments Page public async Task <ActionResult> Comments(int?submissionID, string subverseName, int?commentID, string sort, int?context) { #region Validation if (submissionID == null) { return(ErrorView(new ErrorViewModel() { Description = "Can not find what was requested because input is not valid" })); } var q = new QuerySubmission(submissionID.Value, true).SetUserContext(User); var submission = await q.ExecuteAsync().ConfigureAwait(false); if (submission == null) { return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound))); } // make sure that the combination of selected subverse and submission subverse are linked if (!submission.Subverse.IsEqual(subverseName)) { return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound))); } var subverse = DataCache.Subverse.Retrieve(subverseName); if (subverse == null) { return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.NotFound))); } if (subverse.IsAdminDisabled.HasValue && subverse.IsAdminDisabled.Value) { ViewBag.Subverse = subverse.Name; return(ErrorView(ErrorViewModel.GetErrorViewModel(ErrorType.SubverseDisabled))); } #endregion if (commentID != null) { ViewBag.StartingCommentId = commentID; ViewBag.CommentToHighLight = commentID; } #region Set ViewBag ViewBag.Subverse = subverse; ViewBag.Submission = submission; //This is a required view bag property in _Layout.cshtml - Update: hmmm, don't think so but too lazy to look ViewBag.SelectedSubverse = subverse.Name; var sortingMode = GetSortMode(sort); ViewBag.SortingMode = sortingMode; #endregion var cmd = new LogVisitCommand(null, submissionID.Value, Request.RemoteAddress()).SetUserContext(User); cmd.Execute(); CommentSegment model = null; if (commentID != null) { ViewBag.CommentToHighLight = commentID.Value; model = await GetCommentContext(submission.ID, commentID.Value, context, sortingMode); } else { model = await GetCommentSegment(submission.ID, null, 0, sortingMode); } var q2 = new QuerySubverseModerators(subverseName).SetUserContext(User); ViewBag.ModeratorList = await q2.ExecuteAsync(); ViewBag.NavigationViewModel = new NavigationViewModel() { Description = "Subverse", Name = subverseName, MenuType = MenuType.Subverse, BasePath = VoatUrlFormatter.BasePath(new DomainReference(DomainType.Subverse, subverseName)), Sort = null }; return(View("~/Views/Home/Comments.cshtml", model)); }