Esempio n. 1
0
        /// <summary>
        /// 拒绝首页申请
        /// </summary>
        /// <param name="ArticleId"></param>
        public static void Reject(string ArticleId, string strMessage)
        {
            var article = GetArticleBySn(ArticleId);

            article.PublishStatus    = ApproveStatus.Reject;
            article.FirstPageMessage = strMessage;
            article.ConfirmDateTime  = DateTime.Now;
            UpdateArticle(article);
            ArticleListManager.RemoveArticleItemBody(article.Sn);
        }
Esempio n. 2
0
        /// <summary>
        /// 发布
        /// </summary>
        /// <param name="ArticleId"></param>
        public static void Publish(string ArticleId, string MarkDownContent, string HTMLContent)
        {
            Article article = GetArticleBySn(ArticleId);

            if (article.IsFirstPage)
            {
                //首页的处理
                article.PublishDateTime = DateTime.Now;
                switch (article.PublishStatus)
                {
                case ApproveStatus.None:
                    //未发布
                    article.PublishStatus = ApproveStatus.Pending;
                    UpdateArticle(article);
                    ArticleListManager.RemoveArticleItemBody(article.Sn);
                    ArticleContent.SaveMarkDownVersion(ArticleId, MarkDownContent, article.OwnerId, RevisionType.First);
                    switch (UserInfo.GetUserInfoBySn(article.OwnerId).Privilege)
                    {
                    case UserType.Admin:
                    case UserType.Editor:
                    case UserType.Author:
                        //管理员,编辑,特约作者直接获得批准
                        Accept(ArticleId);
                        break;

                    default:
                        break;
                    }
                    break;

                case ApproveStatus.Pending:
                    //第一次发布,还没有获得批准的
                    ArticleContent.SaveMarkDownVersion(ArticleId, MarkDownContent, article.OwnerId, RevisionType.First);
                    break;

                case ApproveStatus.Accept:
                    //已经发布的
                    ArticleContent.SaveMarkDownVersion(ArticleId, MarkDownContent, article.OwnerId, RevisionType.Current);
                    break;

                case ApproveStatus.Reject:
                    //拒绝的,变成待审核状态
                    article.PublishStatus = ApproveStatus.Pending;
                    UpdateArticle(article);
                    ArticleListManager.RemoveArticleItemBody(article.Sn);
                    ArticleContent.SaveMarkDownVersion(ArticleId, MarkDownContent, article.OwnerId, RevisionType.First);
                    break;

                default:
                    break;
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 接受首页申请
        /// </summary>
        /// <param name="ArticleId"></param>
        public static void Accept(string ArticleId)
        {
            var article = GetArticleBySn(ArticleId);

            article.PublishStatus    = ApproveStatus.Accept;
            article.ConfirmDateTime  = DateTime.Now;
            article.FirstPageMessage = "审核通过";
            UpdateArticle(article);
            ArticleListManager.RemoveArticleItemBody(article.Sn);
            var md = ArticleContent.GetMarkDown(ArticleId, RevisionType.First);

            md.Revision = RevisionType.Current;
            ArticleContent.InsertArticleContent(md, md.OwnerId);
            string SearchMethod = ConfigurationManager.AppSettings["SearchMethod"];

            if (SearchMethod.Equals("ElasticSearch") && !article.IsPrivate)
            {
                //非私有的进行索引
                SearchManager.Index(article);
            }
        }
Esempio n. 4
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/json";
            string json = string.Empty;

            if (context.Session[ConstHelper.Session_USERID] == null)
            {
                var SessionTimeout = new
                {
                    success = ConstHelper.Fail,
                    message = "系统超时,请重新登陆",
                };
                json = JsonConvert.SerializeObject(SessionTimeout);
                context.Response.Write(json);
                return;
            }
            string  strArticleID = context.Request.Unvalidated.Form["ArticleID"];
            string  strMarkDown  = context.Request.Unvalidated.Form["Content"];
            string  strHTML      = context.Request.Unvalidated.Form["HTML"];
            Article article      = Article.GetArticleBySn(strArticleID);

            if (!article.OwnerId.Equals(context.Session[ConstHelper.Session_USERID].ToString()))
            {
                var NotTheOwner = new
                {
                    success = ConstHelper.Fail,
                    message = "你所编辑的文章的所有者和您的登陆用户不匹配",
                };
                json = JsonConvert.SerializeObject(NotTheOwner);
                context.Response.Write(json);
                return;
            }

            ArticleContent.SaveMarkDownVersion(strArticleID, strMarkDown, article.Sn, RevisionType.Draft);
            ArticleContent.SaveHTMLVersion(strArticleID, strHTML, article.Sn);
            if (article.IsFirstPage)
            {
                //首页发布处理
                Article.Publish(strArticleID, strMarkDown, strHTML);
            }
            else
            {
                //非首页处理
                ArticleContent.SaveMarkDownVersion(strArticleID, strMarkDown, article.Sn, RevisionType.Current);
            }
            if (!article.IsPrivate && !article.IsFirstPage)
            {
                //公开非首页,变成发布状态
                article.PublishStatus   = ApproveStatus.Accept;
                article.PublishDateTime = System.DateTime.Now;
                if (article.IsPutToMyTopic)
                {
                    //发布后则加入到自己专题
                    var topic = Topic.GetTopicByAccountId(context.Session[ConstHelper.Session_USERID].ToString());
                    if (topic != null)
                    {
                        TopicArticle.InsertTopicArticle(new TopicArticle()
                        {
                            ArticleID     = article.Sn,
                            TopicID       = topic.Sn,
                            PublishStatus = ApproveStatus.NotNeed
                        });
                    }
                }
                Article.UpdateArticle(article);
                ArticleListManager.RemoveArticleItemBody(article.Sn);
            }
            var Success = new
            {
                success = ConstHelper.Success,
                message = "保存成功",
            };

            json = JsonConvert.SerializeObject(Success);
            context.Response.Write(json);
        }
        public ActionResult ArticleEdit(FormCollection collection)
        {
            if (Session[ConstHelper.Session_USERID] == null)
            {
                return(Redirect("/Home/Index"));
            }
            string ownerId   = Session[ConstHelper.Session_USERID].ToString();
            string ArticleId = Request.QueryString["ArticleId"];
            //Article
            Article NewArticle = new Article()
            {
                OwnerId             = ownerId,
                CollectionID        = Request.QueryString[nameof(Article.CollectionID)],
                Title               = collection[nameof(Article.Title)],
                CustomTagList       = collection[nameof(Article.CustomTagList)],
                IsFirstPage         = collection[nameof(Article.IsFirstPage)] != null,
                IsCloseComment      = collection[nameof(Article.IsCloseComment)] != null,
                IsOriginal          = collection[nameof(Article.IsOriginal)] != null,
                IsPrivate           = collection[nameof(Article.IsPrivate)] != null,
                AdvLink             = collection[nameof(Article.AdvLink)],
                AdvText             = collection[nameof(Article.AdvText)],
                AdvImageUrl         = collection[nameof(Article.AdvImageUrl)],
                Catalog             = collection[nameof(Article.Catalog)],
                IsNeedTopicApproval = collection[nameof(Article.IsNeedTopicApproval)] != null,
                IsPutToMyTopic      = collection[nameof(Article.IsPutToMyTopic)] != null,
                IsTopicable         = collection[nameof(Article.IsTopicable)] != null,
                IsEnableAliPay      = collection[nameof(Article.IsEnableAliPay)] != null,
            };

            NewArticle.Title         = NewArticle.Title.Trim();
            NewArticle.CustomTagList = NewArticle.CustomTagList.Trim();
            NewArticle.TagName       = TagUtility.getTagsFromTitle(NewArticle.Title);
            NewArticle.Level         = (ArticleLevel)System.Enum.Parse(typeof(ArticleLevel), collection["Level"]);
            ViewData.Model           = NewArticle;
            if (NewArticle.Title.Length < 5)
            {
                ViewData.ModelState.AddModelError("Title", "标题字数过少");
                return(View());
            }
            if (NewArticle.IsFirstPage)
            {
                if (NewArticle.IsCloseComment)
                {
                    ViewData.ModelState.AddModelError("IsCloseComment", "关闭评论的文章无法发布到首页");
                    return(View());
                }
                if (!NewArticle.IsOriginal)
                {
                    ViewData.ModelState.AddModelError("IsOriginal", "转载的文章无法发布到首页");
                    return(View());
                }
                if (NewArticle.IsPrivate)
                {
                    ViewData.ModelState.AddModelError("IsPrivate", "私有的文章无法发布到首页");
                    return(View());
                }
            }
            if (NewArticle.IsPrivate)
            {
                if (NewArticle.IsTopicable || NewArticle.IsPutToMyTopic)
                {
                    ViewData.ModelState.AddModelError("IsTopicable", "私有文章无法被专题收录");
                    return(View());
                }
            }
            if (NewArticle.IsNeedTopicApproval && !NewArticle.IsTopicable)
            {
                ViewData.ModelState.AddModelError("IsNeedTopicApproval", "不能被收录到专题的文章无法设定收录审核");
                return(View());
            }
            if (string.IsNullOrEmpty(ArticleId))
            {
                ViewBag.Title = "新建";
                if (NewArticle.IsPrivate)
                {
                    NewArticle.PublishStatus = ApproveStatus.NotNeed;
                }
                else
                {
                    NewArticle.PublishStatus = ApproveStatus.None;
                }
                NewArticle.TagName = TagUtility.GetTagNameList(NewArticle.Title, NewArticle.CustomTagList);
                var SerialNumber = Article.InsertArticle(NewArticle, ownerId);
                //加入草稿,保证可以编辑
                ArticleContent.InsertArticleContent(
                    new ArticleContent()
                {
                    Revision    = RevisionType.Draft,
                    ArticleID   = SerialNumber,
                    ContentType = ArticleContent.MarkDown
                }, ownerId);
                if (NewArticle.IsPrivate)
                {
                    //私人的,没有发布的概念,当前版本也建立好
                    ArticleContent.InsertArticleContent(
                        new ArticleContent()
                    {
                        Revision    = RevisionType.Current,
                        ArticleID   = SerialNumber,
                        ContentType = ArticleContent.MarkDown
                    }, ownerId);
                    //私人的,没有发布的概念,当前版本也建立好
                    ArticleContent.InsertArticleContent(
                        new ArticleContent()
                    {
                        Revision    = RevisionType.Current,
                        ArticleID   = SerialNumber,
                        ContentType = ArticleContent.HTML
                    }, ownerId);
                }
                //转移到EditPost
                return(Redirect("MarkDownEditor?ArticleID=" + SerialNumber));
            }
            else
            {
                var OldArticle = Article.GetArticleBySn(ArticleId);
                OldArticle.Title         = NewArticle.Title;
                OldArticle.CustomTagList = NewArticle.CustomTagList;
                OldArticle.TagName       = TagUtility.GetTagNameList(OldArticle.Title, OldArticle.CustomTagList);
                //考虑到如果是非首页文章,没有发布审核环节
                //如果已经发布的文章,不允许更改IsFirstPage
                if (OldArticle.IsPrivate && !NewArticle.IsPrivate)
                {
                    //旧的是私有,新的不是私有
                    //必须将状态改为初始化,不然会饶过审核系统
                    OldArticle.PublishStatus = ApproveStatus.None;
                }
                if (OldArticle.PublishStatus != ApproveStatus.Accept)
                {
                    //已经发布的公开的文章不允许
                    //1. 修改为首页或者私有
                    OldArticle.IsFirstPage = NewArticle.IsFirstPage;
                    OldArticle.IsPrivate   = NewArticle.IsPrivate;
                    //2. 修改专题
                    OldArticle.IsTopicable         = NewArticle.IsTopicable;
                    OldArticle.IsPutToMyTopic      = NewArticle.IsPutToMyTopic;
                    OldArticle.IsNeedTopicApproval = NewArticle.IsNeedTopicApproval;
                    //3 .推广
                    OldArticle.AdvLink     = NewArticle.AdvLink;
                    OldArticle.AdvText     = NewArticle.AdvText;
                    OldArticle.AdvImageUrl = NewArticle.AdvImageUrl;
                }
                OldArticle.IsOriginal     = NewArticle.IsOriginal;
                OldArticle.IsCloseComment = NewArticle.IsCloseComment;
                OldArticle.Level          = NewArticle.Level;
                OldArticle.Catalog        = NewArticle.Catalog;

                Article.UpdateArticle(OldArticle);
                ArticleListManager.RemoveArticleItemBody(ArticleId);
                ViewBag.Title = "修改";
                return(Redirect("/PostEdit/PostList?CollectionId=" + NewArticle.CollectionID));
            }
        }