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()); }
/// <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))); }
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))); }