示例#1
0
            public void OnActionExecuting(ActionExecutingContext context)
            {
                string remoteIP = context.HttpContext.Connection.RemoteIpAddress.ToString();



                if (!_actionCooldownService.IsCoolingCompletion(_actionCooldownType, remoteIP))
                {
                    var options = _optionsCache.Get().Result;

                    string cdtime = "";
                    switch (_actionCooldownType)
                    {
                    case ActionCooldownType.CommentsPost:
                        cdtime = options.postcommentscd;
                        break;
                    }

                    var controller = context.Controller as BaseController;

                    var Message_result = new ViewResult();
                    Message_result.ViewName = "Themes/" + options.theme + "/_Message";
                    Message_result.ViewData = new ViewDataDictionary(_modelMetadataProvider, context.ModelState);
                    Message_result.ViewData.Add("Message.Title", "你的操作过于频繁");
                    Message_result.ViewData.Add("Message.Content", $"请等待:{cdtime}秒后再尝试此操作。");

                    context.Result = Message_result;
                }
            }
示例#2
0
        //通过内容标识ID和评论父级ID获取评论
        public async Task <IViewComponentResult> InvokeAsync(
            int cid, int parentcoid = 0)
        {
            var options = await optionsCache.Get();

            var data = await cms.GetListAsync(cid, parentcoid);

            return(View(options.theme + "/View", data));
        }
        public void SetCooldown(ActionCooldownType actionCooldownType, string ip)
        {
            long cooldowntime = 0;
            var  options      = _optionsCache.Get().Result;

            switch (actionCooldownType)
            {
            case ActionCooldownType.CommentsPost:
                cooldowntime = long.Parse(options.postcommentscd);
                break;
            }
            _cache.Set(actionCooldownType + ip, "0", cooldowntime);
        }
示例#4
0
            public override void OnException(ExceptionContext context)
            {
                if (context.Exception is MessageException)
                {
                    var options         = _optionsCache.Get().Result;
                    MessageException me = context.Exception as MessageException;
                    var result          = new ViewResult {
                        ViewName = "Themes/" + options.theme + "/_Message"
                    };
                    result.ViewData = new ViewDataDictionary(_modelMetadataProvider, context.ModelState);

                    result.ViewData.Add("Message.Title", me.Message.Title);
                    result.ViewData.Add("Message.Content", me.Message.Content);
                    context.Result           = result;
                    context.ExceptionHandled = true;
                }
            }
示例#5
0
        public async Task <IActionResult> Index(string search, int?mid, int pageindex = 1)
        {
            var options = await optionsCache.Get();

            var VM = new IndexViewModel();

            VM.search      = search;
            VM.contentlist = await cms.GetContentsAsync(0, search, mid ?? 0, pageindex, int.Parse(options.postslistsize), 0);

            VM.mid = mid;
            if (mid > 0)
            {
                VM.meta = await mms.GetByMidAsync(mid.Value);
            }

            ViewData.Model = VM;

            return(View());
        }
示例#6
0
        public async Task <JsonResult> Get(int cid, int parentcoid, int page = 1, int pagesize = 10, int skip = 0)
        {
            var options = await optionsCache.Get();

            var data = await coms.GetAjaxPageListAsync(cid, page, pagesize, parentcoid, skip);

            var rd = new CommentsModel();

            rd.comments = data;
            if (data != null)
            {
                rd.totalcontents = data.TotalContents;
                rd.totalpages    = data.TotalPages;
                rd.pageindex     = data.PageIndex;
                rd.hascount      = data.HasCount;
            }

            return(Json(rd));
        }
示例#7
0
            public void OnActionExecuted(ActionExecutedContext context)
            {
                var controller = context.Controller as BaseController;
                var options    = optionsCache.Get().Result;



                var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
                var result = new ViewResult();

                result.ViewName = "Themes/" + options.theme + "/" + controllerActionDescriptor.ControllerName + "/" + controllerActionDescriptor.ActionName;

                result.ViewData = controller.ViewData;


                var pagelist = pageCache.GetListAsync().Result;

                result.ViewData.Add("pagelist", pagelist);
                result.ViewData.Add("options", options);

                context.Result = result;
            }
示例#8
0
        public async Task <IActionResult> Comment_Post(int cid, int type, int parentcoid, string nickname, string email, string content)
        {
            var options = await optionsCache.Get();

            if (options.allowcomments == "1")
            {
                Message.Show(new Widget.MessageModel()
                {
                    Content = "站点评论功能已关闭,请返回。"
                });
            }
            var contentdata = await cms.GetByCidAsync(cid, false);

            if (contentdata == null)
            {
                Message.Show(new Widget.MessageModel()
                {
                    Content = "评论的内容似乎已经丢失,请返回。"
                });
            }
            else if (contentdata.allowcomment == 1)
            {
                Message.Show(new Widget.MessageModel()
                {
                    Content = "内容评论功能已关闭,请返回。"
                });
            }


            var comment = new Comments();

            comment.cid        = cid;
            comment.nickname   = nickname;
            comment.mail       = email;
            comment.content    = content;
            comment.createtime = DateTime.Now;
            comment.parentcoid = 0;


            if (parentcoid > 0)
            {
                var parentcomment = await coms.GetAsync(parentcoid);

                if (parentcomment == null)
                {
                    Message.Show(new Widget.MessageModel()
                    {
                        Content = "回复的评论已被删除,请返回重新提交。"
                    });
                }
                else
                {
                    comment.parentcoid = parentcomment.parentcoid == 0 ? parentcoid : parentcomment.parentcoid;
                    comment.reply      = parentcomment.nickname;
                }
            }
            if (TryValidateModel(comment))
            {
                //设置冷却时间
                _actioncd.SetCooldown(ActionCooldownType.CommentsPost, RemoteIP);
                await coms.AddAsync(comment);
            }
            else
            {
                Message.Show(new Widget.MessageModel()
                {
                    Content = "输入有误,请返回重新提交。"
                });
            }
            return(RedirectToAction(type == 0 ? nameof(Article) : nameof(Page), new { cid }));
        }