コード例 #1
0
ファイル: ChannelWikiController.cs プロジェクト: x1987624/SNS
        public ActionResult ShowPageVersionDifferent(IEnumerable <long> VersionId)
        {
            bool IsSpeech = Request.Form.Get <bool>("IsSpeech", false);

            ViewData["IsSpeech"] = IsSpeech;
            if (VersionId != null && VersionId.Count() == 2)
            {
                WikiPageVersion v1   = wikiService.GetPageVersion(VersionId.ToList()[1]);
                WikiPageVersion v2   = wikiService.GetPageVersion(VersionId.ToList()[0]);
                string          str1 = v1.ResolvedBody;
                string          str2 = v2.ResolvedBody;
                //IEnumerable<int> versionnums = Request.Form.Get<IEnumerable<int>>("versionnum");
                string        nums  = Request.Form.Get <string>("saveNums");
                List <string> _nums = nums.Split(',').ToList();
                if (_nums != null && _nums.Count() >= 2)
                {
                    v1.VersionNum = int.Parse(_nums[1]);
                    v2.VersionNum = int.Parse(_nums[0]);
                }
                HtmlDiff diffHelper = new HtmlDiff(v1.ResolvedBody, v2.ResolvedBody);
                ViewData["diffString"]       = diffHelper.Build();
                ViewData["WikiPageVersion1"] = v1;
                ViewData["WikiPageVersion2"] = v2;
                pageResourceManager.InsertTitlePart("词条历史版本比较");
                return(View());
            }
            return(View());
        }
コード例 #2
0
ファイル: ChannelWikiController.cs プロジェクト: x1987624/SNS
        /// <summary>
        /// 回滚到历史版本
        /// </summary>
        public ActionResult RollbackPageVersion(long versionId, int versionNum)
        {
            WikiPageVersion wikiPageVersion = wikiService.GetPageVersion(versionId);

            if (wikiPageVersion == null)
            {
                return(HttpNotFound());
            }
            WikiPage wikiPage = wikiService.Get(wikiPageVersion.PageId);

            if (wikiPage == null)
            {
                return(HttpNotFound());
            }
            if (!DIContainer.Resolve <Authorizer>().Page_Manage(wikiPage))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    StatusMessageType = StatusMessageType.Hint,
                    Title = "没有权限",
                    Body = "没有回滚词条的权限"
                })));
            }
            wikiService.RollbackPageVersion(versionId, versionNum);
            return(Redirect(SiteUrls.Instance().HistoryVersion(wikiPage.PageId)));
        }
コード例 #3
0
ファイル: ChannelWikiController.cs プロジェクト: x1987624/SNS
        public ActionResult EditPage(WikiPageEditModel editModel)
        {
            if (UserContext.CurrentUser == null)
            {
                return(Redirect(SiteUrls.Instance().Login(true)));
            }

            //声明必要的变量
            WikiPage        page        = null;
            WikiPageVersion pageVersion = null;

            #region 敏感词过滤

            string errorMessage = string.Empty;
            if (ModelState.HasBannedWord(out errorMessage))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "发布失败",
                    Body = errorMessage,
                    StatusMessageType = StatusMessageType.Error
                })));
            }

            #endregion

            if (editModel.PageId < 1)//新建词条
            {
                page = editModel.AsWikiPage();
                bool valid = wikiService.IsExists(page.Title);
                if (valid)
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Title = "发布同名词条失败",
                        Body = "发布失败,请稍后再试!",
                        StatusMessageType = StatusMessageType.Error
                    })));
                }

                bool isCreated = wikiService.Create(page, editModel.Body);

                if (page.PageId < 1)
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Title = "发布失败",
                        Body = "发布失败,请稍后再试!",
                        StatusMessageType = StatusMessageType.Error
                    })));
                }

                pageVersion = page.LastestVersion;
            }
            else//编辑词条
            {
                //userFocusCategoryService.del
                page = wikiService.Get(editModel.PageId);
                if (page == null)
                {
                    return(HttpNotFound());
                }

                //判断一下是否可以编辑
                bool  IsCanEdit = !page.IsLocked;
                IUser user      = UserContext.CurrentUser;
                if (page.OwnerId == user.UserId || DIContainer.Resolve <Authorizer>().IsAdministrator(ApplicationIds.Instance().Wiki()))
                {
                    IsCanEdit = true;
                }
                if (!IsCanEdit)
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Title = "编辑失败",
                        Body = "编辑失败,该词条已经被锁定,请稍后再试!",
                        StatusMessageType = StatusMessageType.Error
                    })));
                }


                categoryService.DeleteItemInCategory(page.SiteCategory.CategoryId, page.PageId);

                page = editModel.AsWikiPage();

                wikiService.Update(page);

                pageVersion        = editModel.AsWikiPageVersion();
                pageVersion.PageId = page.PageId;
                wikiService.CreatePageVersion(pageVersion);

                if (pageVersion.VersionId < 1)
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Title = "编辑失败",
                        Body = "编辑失败,请稍后再试!",
                        StatusMessageType = StatusMessageType.Error
                    })));
                }
            }

            #region 分类、标签

            if (editModel.SiteCategoryId > 0)
            {
                categoryService.AddCategoriesToItem(new List <long> {
                    editModel.SiteCategoryId
                }, page.PageId);
            }
            string tags = string.Join(",", editModel.TagNames);
            if (!string.IsNullOrEmpty(tags))
            {
                tagService.ClearTagsFromItem(page.PageId, pageVersion.UserId);
                tagService.AddTagsToItem(tags, pageVersion.UserId, page.PageId);
            }

            #endregion


            return(Redirect(SiteUrls.Instance().PageDetail(page.PageId)));
        }