Example #1
0
        /// <summary>
        /// PDF用
        /// </summary>
        /// <param name="ArticleId"></param>
        /// <returns></returns>
        public ActionResult SimplePDF(string ArticleId)
        {
            if (string.IsNullOrEmpty(ArticleId))
            {
                return(Redirect("/"));
            }
            var articlebody = ArticleListManager.GetArticleBodyById(ArticleId);

            if (articlebody == null)
            {
                return(Redirect("/"));
            }
            if (!articlebody.ArticleInfo.IsPrivate && articlebody.ArticleInfo.PublishStatus != ApproveStatus.Accept)
            {
                //公开文章,但是没有发布
                return(Redirect("/"));
            }
            if (articlebody.ArticleInfo.IsPrivate)
            {
                if (Session[ConstHelper.Session_USERID] == null)
                {
                    return(Redirect("/"));
                }
                if (!Session[ConstHelper.Session_USERID].ToString().Equals(articlebody.ArticleInfo.OwnerId))
                {
                    return(Redirect("/"));
                }
            }
            ViewBag.Html   = ArticleContent.GetHtmlString(ArticleId);
            ViewData.Model = articlebody;
            return(View());
        }
Example #2
0
        /// <summary>
        /// 个人首页
        /// </summary>
        /// <returns></returns>
        public ActionResult PersonIndex(int PageNo = 1)
        {
            if (Session[ConstHelper.Session_USERID] == null)
            {
                return(Redirect("/Home/Index"));
            }
            var u = UserInfo.GetUserInfoBySn(Session[ConstHelper.Session_USERID].ToString());

            ArticleListManager.ArticleQueryFilter filter = ArticleListManager.FirstPageArticleQueryFileter;
            //难度和分类
            filter.Levelist    = u.Level.Count == 0 ? null : u.Level.ToArray();
            filter.Cataloglist = u.Catalog.Count == 0 ? null : u.Catalog.ToArray();
            filter.ContainTag  = string.IsNullOrEmpty(u.ContainTag) ? null : u.ContainTag.Split(";".ToArray());
            filter.AntiTag     = string.IsNullOrEmpty(u.AntiTag) ? null : u.AntiTag.Split(";".ToArray());
            //TODO:标签
            Pages p = new Pages(ArticleListManager.GetArticleCnt(filter), 20)
            {
                CurrentPageNo = PageNo
            };
            var currentpageList = ArticleListManager.GetPublicListForArticleByPage(p, filter);

            ViewData.Model      = currentpageList;
            ViewBag.TopArticle  = ArticleListManager.GetTopArticle();
            ViewBag.Pages       = p;
            ViewBag.TopArticle  = ArticleListManager.GetTopArticle();
            ViewBag.AsideFirst  = ASideColumnManager.MostArticleAuthor(10);
            ViewBag.AsideSecond = ASideColumnManager.MostHotTag(10);
            ViewBag.AsideThird  = ASideColumnManager.HotArticle(10, 72);
            return(View());
        }
        /// <summary>
        /// 编辑列表
        /// </summary>
        /// <param name="CollectionId"></param>
        /// <returns></returns>
        public ActionResult PostList(string CollectionId = "")
        {
            if (Session[ConstHelper.Session_USERID] == null)
            {
                return(Redirect("/Home/Index"));
            }
            string OwnerId        = Session[ConstHelper.Session_USERID].ToString();
            var    collectionlist = Collection.GetCollectionListByOwnerId(OwnerId);

            ViewBag.CollectionId   = CollectionId;
            ViewBag.CollectionList = collectionlist;
            if (collectionlist.Count == 0)
            {
                //如果没有文集,则什么都不显示
                ViewData.Model = new List <ArticleItemBody>();
            }
            else
            {
                //显示第一个或者指定文集
                var CurrentCollectionId = string.IsNullOrEmpty(CollectionId) ? collectionlist[0].Sn : CollectionId;
                //自己的文章,则并非只是发布到首页的
                var ArticleList = Article.GetArticleByColIdAndPublish(CurrentCollectionId, false);
                ViewData.Model       = ArticleListManager.GetArticleItemBodyListByArticleList(ArticleList);
                ViewBag.CollectionId = CurrentCollectionId;
            }
            ViewBag.Title = "列表";
            return(View());
        }
Example #4
0
        /// <summary>
        /// 作者专题页
        /// </summary>
        /// <param name="accountid"></param>
        /// <param name="PageNo"></param>
        /// <returns></returns>
        public ActionResult TopicPage(string accountid, int PageNo = 1)
        {
            if (accountid == null)
            {
                return(Redirect("/"));
            }
            var user = UserInfo.GetUserInfoBySn(accountid);

            if (user == null)
            {
                return(Redirect("/"));
            }
            var topic = Topic.GetTopicByAccountId(accountid);

            if (topic == null)
            {
                return(Redirect("/"));
            }

            var   topicArticles = ArticleListManager.GetTopicArticleList(accountid, true);
            Pages p             = new Pages(topicArticles.Count, 50);

            p.CurrentPageNo = PageNo;
            ViewBag.Pages   = p;
            ViewData.Model  = p.GetList(topicArticles);
            ViewBag.Title   = topic.Title;
            return(View());
        }
Example #5
0
        /// <summary>
        /// 收藏者
        /// </summary>
        /// <param name="ArticleId"></param>
        /// <returns></returns>
        public ActionResult StockUserList(string ArticleId)
        {
            var articlebody = ArticleListManager.GetArticleBodyById(ArticleId);

            ViewData.Model = articlebody.StockAccountList;
            ViewBag.Title  = articlebody.ArticleInfo.Title + " 收藏者";
            return(View("UserList"));
        }
Example #6
0
 /// <summary>
 /// 系列教程一览
 /// </summary>
 /// <returns></returns>
 public ActionResult SerialList()
 {
     ViewData.Model      = Collection.getAllSerial();
     ViewBag.TopArticle  = ArticleListManager.GetTopArticle();
     ViewBag.AsideFirst  = ASideColumnManager.MostArticleAuthor(10);
     ViewBag.AsideSecond = ASideColumnManager.MostHotTag(10);
     ViewBag.AsideThird  = ASideColumnManager.HotArticle(10, 72);
     return(View());
 }
Example #7
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);
        }
Example #8
0
        /// <summary>
        /// 进入单篇文章
        /// </summary>
        /// <returns></returns>
        public ActionResult Index(string ArticleId)
        {
            if (string.IsNullOrEmpty(ArticleId))
            {
                return(Redirect("/"));
            }
            var article = Article.GetArticleBySn(ArticleId);

            if (article == null)
            {
                return(Redirect("/"));
            }
            if (!article.IsPrivate && (article.PublishStatus != ApproveStatus.Accept && article.PublishStatus != ApproveStatus.NotNeed))
            {
                //公开文章,但是没有发布
                return(Redirect("/"));
            }
            if (article.IsPrivate)
            {
                if (Session[ConstHelper.Session_USERID] == null)
                {
                    return(Redirect("/"));
                }
                if (!Session[ConstHelper.Session_USERID].ToString().Equals(article.OwnerId))
                {
                    return(Redirect("/"));
                }
            }
            //获得IP地址
            var visit = new Visitor()
            {
                UserAgent       = HttpContext.Request.UserAgent,
                UserHostAddress = HttpContext.Request.UserHostAddress,
                UserHostName    = HttpContext.Request.UserHostName,
                UserLanguages   = HttpContext.Request.UserLanguages.ToList(),
                ArticleID       = ArticleId,
                UserInfoId      = Session[ConstHelper.Session_USERID] != null ? Session[ConstHelper.Session_USERID].ToString() : null,
            };

            if (visit.IsSpider)
            {
                Visitor.InsertSpider(visit);
            }
            else
            {
                Visitor.InsertVisitor(visit);
            }
            var articlebody = ArticleListManager.GetArticleBodyById(ArticleId);

            ViewData.Model      = articlebody;
            ViewBag.CommentList = ArticleListManager.GetCommentBodyList(ArticleId);
            ViewBag.Title       = articlebody.ArticleInfo.Title;
            ViewBag.AuthorId    = articlebody.AuthorInfo.Sn;
            return(View());
        }
Example #9
0
        /// <summary>
        /// 获得某人收藏列表
        /// </summary>
        /// <param name="accountId"></param>
        /// <returns></returns>
        public static List <ArticleItemBody> GetStockByAccount(string accountId)
        {
            IMongoQuery AuthorQuery     = Query.EQ(nameof(OwnerId), accountId);
            var         StockList       = MongoDbRepository.GetRecList <Stock>(AuthorQuery);
            var         articleItembody = new List <ArticleItemBody>();

            foreach (var stock in StockList)
            {
                articleItembody.Add(ArticleListManager.GetArticleItemBodyById(stock.ArticleID));
            }
            return(articleItembody);
        }
 public static void RefreshAllPDF()
 {
     foreach (var articleId in ArticleListManager.GetListForArticleId())
     {
         string filepath = PDFFolder + articleId + ".pdf";
         if (System.IO.File.Exists(filepath))
         {
             System.IO.File.Delete(filepath);
         }
         ConvertUrlToPdf(BaseUrl + "/Article/SimplePdf?ArticleId=" + articleId, articleId);
     }
 }
Example #11
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;
                }
            }
        }
Example #12
0
        /// <summary>
        /// 文集内文章列表
        /// </summary>
        /// <param name="CollectionId"></param>
        /// <returns></returns>
        public ActionResult CollectionList(string CollectionId)
        {
            if (string.IsNullOrEmpty(CollectionId))
            {
                return(Redirect("/"));
            }
            //文章展示页面,链接到该文章所属文集,所以是对于大众的,只要是 发布的 ,不论是否在首页
            var ArticleList = Article.GetArticleByColIdAndPublish(CollectionId, true);

            ViewData.Model = ArticleListManager.GetArticleItemBodyListByArticleList(ArticleList);
            var Col = Collection.GetCollectionBySn(CollectionId);

            ViewBag.Title = Col.Title;
            return(View());
        }
Example #13
0
        /// <summary>
        /// 首页文章加载
        /// </summary>
        /// <param name="PageNo"></param>
        /// <returns></returns>
        public ActionResult Index(int PageNo = 1)
        {
            Pages p = new Pages(ArticleListManager.GetArticleCnt(ArticleListManager.FirstPageArticleQueryFileter), 20)
            {
                CurrentPageNo = PageNo
            };
            var currentpageList = ArticleListManager.GetPublicListForArticleByPage(p, ArticleListManager.FirstPageArticleQueryFileter);

            ViewData.Model      = currentpageList;
            ViewBag.TopArticle  = ArticleListManager.GetTopArticle();
            ViewBag.Pages       = p;
            ViewBag.AsideFirst  = ASideColumnManager.MostArticleAuthor(10);
            ViewBag.AsideSecond = ASideColumnManager.MostHotTag(10);
            ViewBag.AsideThird  = ASideColumnManager.HotArticle(10, 72);
            return(View());
        }
Example #14
0
        /// <summary>
        /// 管理专题
        /// </summary>
        /// <param name="PageNo"></param>
        /// <returns></returns>
        public ActionResult ManagerTopic(int PageNo = 1)
        {
            if (Session[ConstHelper.Session_USERID] == null)
            {
                return(Redirect("/"));
            }
            string accountid     = Session[ConstHelper.Session_USERID].ToString();
            var    topicArticles = ArticleListManager.GetTopicArticleList(accountid, false);
            Pages  p             = new Pages(topicArticles.Count, 50);

            p.CurrentPageNo = PageNo;
            ViewBag.Pages   = p;
            ViewBag.Title   = "管理专题";
            ViewData.Model  = p.GetList(topicArticles);
            return(View());
        }
Example #15
0
        /// <summary>
        /// 检索
        /// </summary>
        /// <returns></returns>
        public ActionResult Search(int PageNo = 1)
        {
            //先从Post里面获得
            string KeyWord = Request.Form["txtKeyword"];

            if (string.IsNullOrEmpty(KeyWord))
            {
                //再从URL中取得
                KeyWord = Request.QueryString["Keyword"];
            }

            if (string.IsNullOrEmpty(KeyWord))
            {
                //两次取得都为空的话,退出
                return(Redirect("/"));
            }
            ViewBag.KeyWord = KeyWord;
            ViewBag.Title   = KeyWord + "的检索结果";
            string SearchMethod   = ConfigurationManager.AppSettings["SearchMethod"];
            var    resultArticles = new List <Article>();

            switch (SearchMethod)
            {
            case ConstHelper.MongoTextSearch:
                //设置Text索引用以检索(ElasticSearch)
                resultArticles = Article.Search(KeyWord);
                break;

            case ConstHelper.ElasticSearch:
                resultArticles = SearchManager.Search(KeyWord, nameof(Article.Title));
                break;
            }
            //公开发布的文章
            resultArticles = resultArticles.Where((x) => { return(!x.IsPrivate && x.PublishStatus == ApproveStatus.Accept); }).ToList();
            var resultArticleItems = ArticleListManager.GetArticleItemBodyListByArticleList(resultArticles);

            //按照评分排序
            resultArticleItems.Sort((x, y) => { return(y.Score.CompareTo(x.Score)); });
            Pages p = new Pages(resultArticles.Count, 20)
            {
                CurrentPageNo = PageNo
            };

            ViewBag.Pages  = p;
            ViewData.Model = p.GetList(resultArticleItems);
            return(View());
        }
Example #16
0
        /// <summary>
        /// 所有文章一览(公开的)
        /// </summary>
        /// <param name="PageNo"></param>
        /// <returns></returns>
        public ActionResult ArticleList(int PageNo = 1)
        {
            if (Session[ConstHelper.Session_USERID] == null || (UserType)Session[ConstHelper.Session_PRIVILEGE] != UserType.Admin)
            {
                return(Redirect("/"));
            }
            ViewBag.Title = "文章管理";
            //公开的审核通过的所有文章
            Pages p = new Pages(ArticleListManager.GetArticleCnt(ArticleListManager.PublicArticleQueryFilter), 50);

            p.CurrentPageNo = PageNo;
            var currentpageList = ArticleListManager.GetPublicListForArticleByPage(p, ArticleListManager.PublicArticleQueryFilter);

            ViewData.Model = currentpageList;
            ViewBag.Pages  = p;
            return(View());
        }
Example #17
0
        /// <summary>
        /// 标签列表
        /// </summary>
        /// <param name="TagName"></param>
        /// <returns></returns>
        public ActionResult TagList(string TagName, int PageNo = 1)
        {
            var   articles = Article.GetArticleListByTag(TagName);
            Pages p        = new Pages(articles.Count, 50)
            {
                CurrentPageNo = PageNo
            };

            ViewBag.TagArticleCnt = articles.Count;
            ViewBag.Pages         = p;
            var articlebodys = ArticleListManager.GetArticleItemBodyListByArticleList(p.GetList(articles));

            ViewBag.MostAuthorByTag = ASideColumnManager.GetMostAuthorByTag(TagName, 10);
            ViewData.Model          = articlebodys;
            ViewBag.TagStockCnt     = articlebodys.Sum((x) => { return(x.StockCnt); });
            ViewBag.Title           = TagName;
            return(View());
        }
Example #18
0
 /// <summary>
 /// 文章察看
 /// </summary>
 /// <param name="ArticleId"></param>
 /// <returns></returns>
 public ActionResult ViewArticle(string ArticleId)
 {
     if (string.IsNullOrEmpty(ArticleId))
     {
         return(Redirect("/"));
     }
     if (Session[ConstHelper.Session_USERID] == null)
     {
         return(Redirect("/"));
     }
     if ((UserType)Session[ConstHelper.Session_PRIVILEGE] != UserType.Admin &&
         (UserType)Session[ConstHelper.Session_PRIVILEGE] != UserType.Editor)
     {
         return(Redirect("/"));
     }
     ViewData.Model = ArticleListManager.GetArticleBodyById(ArticleId);
     return(View());
 }
Example #19
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);
            }
        }
Example #20
0
        /// <summary>
        /// 设定首页推荐文章
        /// </summary>
        /// <param name="ArticleId"></param>
        /// <returns></returns>
        public ActionResult SetTopArticle(string ArticleId)
        {
            if (Session[ConstHelper.Session_USERID] == null || (UserType)Session[ConstHelper.Session_PRIVILEGE] != UserType.Admin)
            {
                return(Redirect("/"));
            }
            if (string.IsNullOrEmpty(ArticleId))
            {
                return(Redirect("/"));
            }
            ViewBag.Title = "设定首页推荐文章";
            ArticleListManager.SetTopArticle(ArticleId);
            var config = SiteConfig.GetSiteConfigBySn("00000001");

            if (config != null)
            {
                config.TopArticleID = ArticleId;
                SiteConfig.UpdateSiteConfig(config);
            }
            return(Redirect("/"));
        }
Example #21
0
        /// <summary>
        /// 获得配置文件内容
        /// </summary>
        public static void GetConfig()
        {
            var config = SiteConfig.GetSiteConfigBySn("00000001");

            if (config == null)
            {
                MongoDbRepository.InsertRec(new SiteConfig());
            }
            else
            {
                if (config.CatalogItem != null && config.CatalogItem.Length != 0)
                {
                    Article.CatalogItem = config.CatalogItem;
                }
                else
                {
                    config.CatalogItem = Article.CatalogItem;
                    SiteConfig.UpdateSiteConfig(config);
                }
                ArticleListManager.SetTopArticle(config.TopArticleID);
            }
        }
Example #22
0
        /// <summary>
        /// 作者页
        /// </summary>
        /// <param name="accountid"></param>
        /// <returns></returns>
        public ActionResult Index(string CollectionId, string accountid)
        {
            if (accountid == null)
            {
                return(Redirect("/"));
            }
            var user = UserInfo.GetUserInfoBySn(accountid);

            if (user == null)
            {
                return(Redirect("/"));
            }

            var collectionlist = Collection.GetCollectionListByOwnerId(accountid);

            if (CollectionId == "0")
            {
                if (collectionlist.Count > 0)
                {
                    CollectionId = collectionlist[0].Sn;
                }
            }

            ViewBag.CollectionId   = CollectionId;
            ViewBag.CollectionList = collectionlist;
            if (collectionlist.Count == 0)
            {
                //如果没有文集,则什么都不显示
                ViewBag.CollectionArticles = new List <Article>();
            }
            else
            {
                //显示第一个或者指定文集
                var CurrentCollectionId = string.IsNullOrEmpty(CollectionId) ? collectionlist[0].Sn : CollectionId;
                ArticleListManager.ArticleQueryFilter aqf = new ArticleListManager.ArticleQueryFilter()
                {
                    collectionid = CurrentCollectionId,
                    isPrivate    = false,
                    statuslist   = new ApproveStatus[] { ApproveStatus.Accept, ApproveStatus.NotNeed }
                };
                if (Session[ConstHelper.Session_USERID] != null && Session[ConstHelper.Session_USERID].ToString().Equals(accountid))
                {
                    //自己看自己
                    aqf.isPrivate  = null;
                    aqf.statuslist = null;
                }
                var ArticleList = ArticleListManager.GetArticleItemBodyListByArticleList(ArticleListManager.GetArticles(aqf));
                ViewBag.CollectionArticles = ArticleList;
            }
            var userbody = UserManager.GetUserBody(accountid);

            ViewData.Model = userbody;
            ViewBag.Title  = user.NickName;
            ArticleListManager.ArticleQueryFilter publicAQF = new ArticleListManager.ArticleQueryFilter()
            {
                ownid      = accountid,
                isPrivate  = false,
                statuslist = new ApproveStatus[] { ApproveStatus.Accept, ApproveStatus.NotNeed }
            };
            var articles    = ArticleListManager.GetArticles(publicAQF);
            var rankContain = TagUtility.Statistics(articles);

            ViewBag.PersonalTagAside   = ASideColumnManager.CreateTagRankAside(rankContain, 10);
            ViewBag.PersonalHobbyAside = ASideColumnManager.TagHobby(accountid, 10);
            ViewBag.RankTagDic         = rankContain.RankKeyDic;
            return(View());
        }
        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));
            }
        }