public virtual ActionResult AddMedia(AddMediaVM.AddMediaPurpose purpose, AddMediaVM.AddMediaType type, long? memberId) { ActionResult returnValue = null; AddMediaVM viewModel = new AddMediaVM { Type = type, Purpose = purpose }; if (purpose == AddMediaVM.AddMediaPurpose.TinyMce || purpose == AddMediaVM.AddMediaPurpose.ProfileImageAjax) { returnValue = View(MVC.Shared.Views.AddMediaStandalone, viewModel); } else if (purpose == AddMediaVM.AddMediaPurpose.ProfileImage) { returnValue = View("AddMedia", viewModel); } else { if (this.Request.IsAjaxRequest()) { var viewModelError = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.failure, StatusMessage = "Unsupported purpose" }; returnValue = Json(viewModelError); } else { var viewModelError = new MessageVM { Image = ImageLibrary.Alert, CssClassContainer = "failure", Message = "Unsupported purpose ", Title = ErrorStrings.TITLE_ERROR, LinkText = "Continue", LinkHref = Url.Action(MVC.Home.Index()), }; returnValue = View("Message", viewModelError); } } return returnValue; }
public virtual JsonResult AddComment(long articleId, string textComment, long? conversationId) { ProviderCurrentMember currentMember = ProviderCurrentMember.Instance; AjaxReturnMsgVM viewModel = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.success, StatusMessage = String.Empty }; ContentCheck result = null; if (!currentMember.IsSuperAdmin) { string email = string.Empty; string domain = string.Empty; if (currentMember.HasValidAltId(ProviderAlternateMemberId.AlternateType.Email)) { email = currentMember.Emails[0].Email.Address; } if (currentMember.HasValidAltId(ProviderAlternateMemberId.AlternateType.Domain)) { domain = currentMember.Domains[0].Domain.AbsoluteUri; } // The mollom client crashes if passed in special html chars ( ) so strip those before sending it over string cleanedTextComment = HtmlParser.StripSpecialChars(textComment); MollomClient client = new MollomClient(InsideWordWebSettings.MollomPrivateKey, InsideWordWebSettings.MollomPublicKey); result = client.CheckContent(string.Empty, cleanedTextComment, currentMember.DisplayAdministrativeName, email, domain, HttpContext.Request.UserHostAddress); } if (!currentMember.IsLoggedOn) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "You must be logged in to Comment."; } else if (!ProviderArticle.Exists(articleId)) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "The article you commented on no longer exists."; } else if(string.IsNullOrEmpty(textComment) || textComment.Length < 2) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "A comment needs more than 1 character."; } else if(textComment.Length > ProviderComment.TextSize) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "A comment can't be more than "+ProviderComment.TextSize+ " characters."; } else if (result != null && result.Classification == ContentClassification.Spam) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "Your comment has been blocked as spam."; } else if (result != null && result.Quality < InsideWordWebSettings.MollomCommentQuality) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = "The quality of your comment is too low. Try improving things such as spelling and grammar."; } else { ProviderArticle anArticle = new ProviderArticle(articleId); ProviderConversation conversation; if (conversationId.HasValue) { conversation = new ProviderConversation(conversationId.Value); } else { conversation = new ProviderConversation(); } ProviderComment comment = new ProviderComment(); CommentBL.AddComment(textComment, currentMember, anArticle, ref conversation, ref comment); ProviderMember author = anArticle.Author; long? articleAuthorId = null; if (author != null) { articleAuthorId = author.Id; } bool isReply = conversation.Comments.Count > 1; if (isReply) { CommentVM commentVM = new CommentVM(comment, currentMember, articleAuthorId); commentVM.IsReply = isReply; viewModel.Content = ControllerExtension.RenderPartialViewToString(this, MVC.Child.Views.Comment, (object)commentVM); } else { ConversationVM conversationVM = new ConversationVM(conversation, ProviderCurrentMember.Instance, articleAuthorId); viewModel.Content = ControllerExtension.RenderPartialViewToString(this, MVC.Child.Views.Conversation, (object)conversationVM); } if (author != null && author.Id != currentMember.Id && author.HasValidAltId(ProviderAlternateMemberId.AlternateType.Email)) { // do some calculations to determine if we should send the e-mail int commentCount = anArticle.CountComments; int n = (int)Math.Log((double)commentCount, 2); if (n < 0) { n = 0; } if (commentCount % (1 << n) == 0) { EmailManager.Instance.SendCommentNotificationEmail(author.Emails[0].Email, anArticle, currentMember); } } } return Json(viewModel); }
public virtual JsonResult RefreshArticleStatus() { AjaxReturnMsgVM returnMessage = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.failure, StatusMessage = string.Empty, Content = string.Empty }; if (AsyncRefreshArticleManager.Instance.IsBusy) { returnMessage.StatusCode = AjaxReturnMsgVM.Status.success; returnMessage.StatusMessage = AsyncRefreshArticleManager.Instance.Progress.ToString() + " remaining"; string errorHtml = string.Empty; if (AsyncRefreshArticleManager.Instance.ErrorList.Count > 0) { errorHtml = "<ol><li>" + string.Join("</li>\n<li>", AsyncRefreshArticleManager.Instance.ErrorList) + "</li><ol>"; } returnMessage.Content = errorHtml; } else if (AsyncRefreshArticleManager.Instance.Completed) { returnMessage.StatusCode = AjaxReturnMsgVM.Status.successAndStop; returnMessage.StatusMessage = AsyncRefreshArticleManager.Instance.Progress.ToString() + " remaining"; string errorHtml = "no errors encountered."; if (AsyncRefreshArticleManager.Instance.ErrorList.Count > 0) { errorHtml = "<ol><li>" + string.Join("</li>\n<li>", AsyncRefreshArticleManager.Instance.ErrorList) + "</li><ol>"; } returnMessage.Content = errorHtml; AsyncRefreshArticleManager.Instance.Clear(); } return Json(returnMessage, JsonRequestBehavior.AllowGet); }
public virtual JsonResult RefreshArticle(RefreshArticleVM model) { AjaxReturnMsgVM returnValue = null; AsyncRefreshArticleManager.Instance.AddBy(AsyncRefreshArticleManager.LoadEnum.All); if(returnValue == null) { returnValue = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.success, StatusMessage = string.Empty, Content = string.Empty }; } return Json(returnValue); }
public virtual ActionResult AddMedia(AddMediaVM model) { ActionResult returnValue = null; ProviderCurrentMember currentMember = ProviderCurrentMember.Instance; ProviderMember aMember = null; // try to get the member from the model, otherwise just use current member // TODO check this logic if (model.MemberId != null) { aMember = new ProviderMember(model.MemberId.Value); } else { aMember = currentMember; } HttpPostedFileBase filePhoto = Request.Files[model.FilePhotoKey] as HttpPostedFileBase; bool isValidPhoto = ProviderPhoto.Validate(filePhoto); ProviderPhoto originalPhoto = null; if (isValidPhoto) { originalPhoto = PhotoBL.CreatePhoto(aMember, filePhoto); } if (model.Purpose == AddMediaVM.AddMediaPurpose.TinyMce) { if (isValidPhoto) { returnValue = View("AddMediaDone", new AddMediaDoneVM { FileURL = originalPhoto.ImageUrl.AbsoluteUri }); } else { ModelState.AddModelError("", ErrorStrings.INVALID_IMAGE); returnValue = View(MVC.Shared.Views.AddMediaStandalone, model); } } else if (model.Purpose == AddMediaVM.AddMediaPurpose.ProfileImage || model.Purpose == AddMediaVM.AddMediaPurpose.ProfileImageAjax) { if(isValidPhoto) { aMember.ProfilePhotoId = originalPhoto.Id; aMember.Save(); } if (model.Purpose == AddMediaVM.AddMediaPurpose.ProfileImageAjax) { var viewModel = new AjaxReturnMsgVM(); if(isValidPhoto) { viewModel.StatusCode = AjaxReturnMsgVM.Status.success; viewModel.StatusMessage = originalPhoto.Thumbnail(ProviderPhotoRecord.ImageTypeEnum.ProfileThumbnail) .ImageUrl .AbsoluteUri; } else { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.StatusMessage = ErrorStrings.INVALID_IMAGE; } returnValue = Json(viewModel); } else if (model.Purpose == AddMediaVM.AddMediaPurpose.ProfileImage) { if (isValidPhoto) { var viewModel = new MessageVM { Image = ImageLibrary.Success, CssClassContainer = "success", Message = "Profile Image updated", Title = "Profile Image updated", LinkText = "Continue", LinkHref = Url.Action(MVC.Member.Account(aMember.Id.Value, null)), }; returnValue = View("Message", viewModel); } else { ModelState.AddModelError("", ErrorStrings.INVALID_IMAGE); returnValue = View(model); } } } else { if(this.Request.IsAjaxRequest()) { var viewModel = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.failure, StatusMessage = "Unsupported purpose" }; returnValue = Json(viewModel); } else { var viewModel = new MessageVM { Image = ImageLibrary.Alert, CssClassContainer = "failure", Message = "Unsupported purpose ", Title = ErrorStrings.TITLE_ERROR, LinkText = "Continue", LinkHref = Url.Action(MVC.Home.Index()), }; returnValue = View("Message", viewModel); } } return returnValue; }
public virtual JsonResult Vote(long articleId, long voteValue) { // direction: true = vote up, false = vote down AjaxReturnMsgVM viewModel = new AjaxReturnMsgVM { StatusCode = AjaxReturnMsgVM.Status.failure, StatusMessage = string.Empty, Content = string.Empty }; ProviderCurrentMember currentMember = ProviderCurrentMember.Instance; if ( !currentMember.IsLoggedOn ) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.Content = "You must be logged on to vote."; } else if (!ProviderArticle.Exists(articleId)) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.Content = "The article you voted on no longer exists."; } else if(ProviderArticleVote.HasVoted(articleId, currentMember.Id.Value)) { viewModel.StatusCode = AjaxReturnMsgVM.Status.failure; viewModel.Content = "You have already voted on this article."; } else { ProviderArticleVote aVote = new ProviderArticleVote(); aVote.ArticleId = articleId; aVote.MemberId = currentMember.Id.Value; aVote.IsUpVote = voteValue > 0; aVote.IsDownVote = voteValue < 0; aVote.Save(); ProviderArticle anArticle = new ProviderArticle(articleId); viewModel.StatusCode = AjaxReturnMsgVM.Status.success; viewModel.Content = InsideWordUtility.FormatVotes(anArticle.CountVotes); ProviderMember author = anArticle.Author; if (aVote.IsUpVote && author != null && author.Id != currentMember.Id && author.HasValidAltId(ProviderAlternateMemberId.AlternateType.Email)) { // do some calculations to determine if we should send the e-mail int voteCount = anArticle.CountVotes; int n = (int)Math.Log((double)voteCount, 2); if (n < 0) { n = 0; } if (voteCount % (1 << n) == 0) { EmailManager.Instance.SendVoteNotificationEmail(author.Emails[0].Email, anArticle); } } } return Json(viewModel); }