public ActionResult VoteLetter(string board_id, string discussion_id, string letter_id, string delta_flags) { if (!Util.IsAjaxRequest(Request)) { Util.ThrowBadRequestException("Not ajax post."); } object ret_obj = Warehouse.RateLimiter.Validate(CarryType.VoteLetter); if (ret_obj != null) { return(Json(ret_obj)); } //checkFlags(delta_flags, 2, letter_id == SandId.HEADING_LETTER_ID); checkFlags(delta_flags, null, SandFlags.MT_ILI + SandFlags.MTV_SEPARATOR + "1", SandFlags.MT_IDLI + SandFlags.MTV_SEPARATOR + "1"); if (!DiscussionLoadStore.VoteLetter(board_id, discussion_id, letter_id, delta_flags)) { return(Json(new { err_msg = "您已經投過票了。" })); } // return new ErrorResult("您已經投過票了。"); return(Json(new { ok = true })); }
public ActionResult CreateLetter(string board_id, string discussion_id, string creator, string words, string delta_flags) { if (!Util.IsAjaxRequest(Request)) { Util.ThrowBadRequestException("Not ajax post."); } object ret_obj = Warehouse.RateLimiter.Validate(CarryType.CreateLetter); if (ret_obj != null) { return(Json(ret_obj)); } checkLetterInput(creator, words, false); delta_flags = delta_flags.Replace("\r\n", "\n"); checkEditFlags(delta_flags, false); Subtype subtype = Subtype.r; if (DiscussionLoadStore.IsCurrentUserDiscussionCreator(board_id, discussion_id)) { subtype = Subtype.s; } string letter_id = DiscussionLoadStore.CreateLetter(board_id, discussion_id, creator, words, subtype, delta_flags, Request.Files); return(Json(new { letter_id = letter_id })); }
public ActionResult ControlLetter(string board_id, string discussion_id, string letter_id, string delta_flags, string reason) { if (!Util.IsAjaxRequest(Request)) { Util.ThrowBadRequestException("Not ajax post."); } object ret_obj = Warehouse.RateLimiter.Validate(CarryType.ControlLetter); if (ret_obj != null) { return(Json(ret_obj)); } checkControlFlags(delta_flags, letter_id == SandId.HEADING_LETTER_ID); if (reason.Length > 500 * HeartsConfiguration.LENGTH_CHECK_MARGIN /*counting into foreword*/) { Util.ThrowBadRequestException("理由長度過長。"); } ControlHistory mh = DiscussionLoadStore.ControlLetter(board_id, discussion_id, letter_id, delta_flags); if (letter_id == SandId.HEADING_LETTER_ID) { delta_flags = SandFlags.Remove(delta_flags, SandFlags.MT_REPORT); DiscussionListStore.OperateFlags(board_id, discussion_id, new FlagMergeOperation(delta_flags)); } if (mh.ReportCount != 0) { DiscussionListStore.OperateFlags(board_id, discussion_id, new FlagOperation { type = FlagOperation.Type.Add, MetaTitle = SandFlags.MT_REPORT, N = mh.ReportCount }); } int id_num = SandId.ExtractIdNumber(letter_id); string remark_delta_flags = SandFlags.Add(string.Empty, SandFlags.MT_REPLY_TO, id_num); string remark_letter_id = DiscussionLoadStore.CreateLetter(board_id, discussion_id, null, reason, Subtype.d, remark_delta_flags, null); // while deleting/undeleting discussion, the remark_delta_flags is ,r0, and will be removed. return(Json(new { ok = true })); }
public ActionResult EditLetter(string board_id, string discussion_id, string letter_id, string creator, string words, string delta_flags) { if (!Util.IsAjaxRequest(Request)) { Util.ThrowBadRequestException("Not ajax post."); } object ret_obj = Warehouse.RateLimiter.Validate(CarryType.EditLetter); if (ret_obj != null) { return(Json(ret_obj)); } checkLetterInput(creator, words, true); delta_flags = delta_flags.Replace("\r\n", "\n"); if (letter_id == SandId.HEADING_LETTER_ID) { checkHeading(words); checkEditFlags(delta_flags, true); } else { checkEditFlags(delta_flags, false); } DiscussionLoadStore.EditLetter(board_id, discussion_id, letter_id, creator, words, delta_flags, Request.Files); if (letter_id == SandId.HEADING_LETTER_ID) { DiscussionListStore.EditHeading(board_id, discussion_id, words); } return(Json(new { letter_id = letter_id })); }