public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Translate)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channelInfo = await _channelRepository.GetAsync(request.ChannelId); if (channelInfo == null) { return(NotFound()); } foreach (var contentId in request.ContentIds) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, request.ChannelId, contentId, request.TargetSiteId, request.TargetChannelId, request.CopyType, _createManager, _authManager.AdminId); } await _authManager.AddSiteLogAsync(request.SiteId, request.ChannelId, "复制内容", string.Empty); await _createManager.TriggerContentChangedEventAsync(request.SiteId, request.ChannelId); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Translate)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); summaries.Reverse(); foreach (var summary in summaries) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, summary.ChannelId, summary.Id, request.TransSiteId, request.TransChannelId, request.CopyType, _createManager, _authManager.AdminId); } await _authManager.AddSiteLogAsync(request.SiteId, request.ChannelId, "复制内容", string.Empty); await _createManager.TriggerContentChangedEventAsync(request.SiteId, request.ChannelId); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Insert([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Add)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); var content = await _pathManager.EncodeContentAsync(site, channel, request.Content); content.SiteId = site.Id; content.ChannelId = channel.Id; content.AdminId = _authManager.AdminId; content.LastEditAdminId = _authManager.AdminId; content.Checked = request.Content.CheckedLevel >= site.CheckContentLevel; if (content.Checked) { content.CheckedLevel = 0; } var contentId = await _contentRepository.InsertAsync(site, channel, content); await _contentTagRepository.UpdateTagsAsync(null, content.TagNames, request.SiteId, contentId); var translates = await _translateRepository.GetTranslatesAsync(request.SiteId, request.ChannelId); if (request.Translates != null && request.Translates.Count > 0) { translates.AddRange(request.Translates); } foreach (var translate in translates) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, content.ChannelId, content.Id, translate.TargetSiteId, translate.TargetChannelId, translate.TranslateType, _createManager, _authManager.AdminId); } await _createManager.CreateContentAsync(request.SiteId, channel.Id, content.Id); await _createManager.TriggerContentChangedEventAsync(request.SiteId, channel.Id); return(new BoolResult { Value = true }); }
private async Task TranslateContentAsync(Site site, int channelId, int targetSiteId, int targetChannelId, bool isDeleteAfterTranslate) { var channel = await _channelRepository.GetAsync(channelId); var contentIdList = await _contentRepository.GetContentIdsAsync(site, channel); var translateType = isDeleteAfterTranslate ? TranslateType.Cut : TranslateType.Copy; foreach (var contentId in contentIdList) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, channelId, contentId, targetSiteId, targetChannelId, translateType, _createManager, _authManager.AdminId); } }
public async Task <ActionResult <BoolResult> > Update([FromBody] SaveRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); var source = await _contentRepository.GetAsync(site, channel, request.ContentId); var adminId = _authManager.AdminId; var content = await _pathManager.EncodeContentAsync(site, channel, request.Content); content.SiteId = site.Id; content.ChannelId = channel.Id; content.LastEditAdminId = adminId; var isChecked = request.Content.CheckedLevel >= site.CheckContentLevel; if (isChecked != source.Checked) { content.Set(ColumnsManager.CheckAdminId, adminId); content.Set(ColumnsManager.CheckDate, DateTime.Now); content.Set(ColumnsManager.CheckReasons, string.Empty); content.Checked = isChecked; if (isChecked) { content.CheckedLevel = 0; } await _contentCheckRepository.InsertAsync(new ContentCheck { SiteId = request.SiteId, ChannelId = content.ChannelId, ContentId = content.Id, AdminId = adminId, Checked = content.Checked, CheckedLevel = content.CheckedLevel, CheckDate = DateTime.Now, Reasons = string.Empty }); } await _contentRepository.UpdateAsync(site, channel, content); await _contentTagRepository.UpdateTagsAsync(source.TagNames, content.TagNames, request.SiteId, content.Id); if (request.Translates != null && request.Translates.Count > 0) { foreach (var translate in request.Translates) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, content.ChannelId, content.Id, translate.TargetSiteId, translate.TargetChannelId, translate.TranslateType, _createManager, _authManager.AdminId); } } await _createManager.CreateContentAsync(request.SiteId, channel.Id, content.Id); await _createManager.TriggerContentChangedEventAsync(request.SiteId, channel.Id); return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.CheckLevel1)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var isChecked = request.CheckedLevel >= site.CheckContentLevel; if (isChecked) { request.CheckedLevel = 0; } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); summaries.Reverse(); var adminId = _authManager.AdminId; foreach (var summary in summaries) { var contentChannelInfo = await _channelRepository.GetAsync(summary.ChannelId); var contentInfo = await _contentRepository.GetAsync(site, contentChannelInfo, summary.Id); if (contentInfo == null) { continue; } contentInfo.Set(ColumnsManager.CheckAdminId, adminId); contentInfo.Set(ColumnsManager.CheckDate, DateTime.Now); contentInfo.Set(ColumnsManager.CheckReasons, request.Reasons); contentInfo.Checked = isChecked; contentInfo.CheckedLevel = request.CheckedLevel; await _contentRepository.UpdateAsync(site, contentChannelInfo, contentInfo); await _contentCheckRepository.InsertAsync(new ContentCheck { SiteId = request.SiteId, ChannelId = contentInfo.ChannelId, ContentId = contentInfo.Id, AdminId = adminId, Checked = isChecked, CheckedLevel = request.CheckedLevel, CheckDate = DateTime.Now, Reasons = request.Reasons }); if (request.IsTranslate) { await ContentUtility.TranslateAsync(_pathManager, _databaseManager, _pluginManager, site, summary.ChannelId, summary.Id, request.TransSiteId, request.TransChannelId, TranslateType.Cut, _createManager, _authManager.AdminId); } } await _authManager.AddSiteLogAsync(request.SiteId, "批量审核内容"); if (request.IsTranslate) { await _createManager.TriggerContentChangedEventAsync(request.TransSiteId, request.TransChannelId); } else { foreach (var summary in summaries) { await _createManager.CreateContentAsync(request.SiteId, summary.ChannelId, summary.Id); } } foreach (var distinctChannelId in summaries.Select(x => x.ChannelId).Distinct()) { await _createManager.TriggerContentChangedEventAsync(request.SiteId, distinctChannelId); } return(new BoolResult { Value = true }); }