public IHttpActionResult Delete() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var specialId = request.GetPostInt("specialId"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.SitePermissions.Specials)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); var specialInfo = SpecialManager.DeleteSpecialInfo(siteInfo, specialId); request.AddSiteLog(siteId, "删除专题", $"专题名称:{specialInfo.Title}"); var specialInfoList = DataProvider.SpecialDao.GetSpecialInfoList(siteId); return(Ok(new { Value = specialInfoList })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var targetSiteId = request.GetPostInt("targetSiteId"); var targetChannelId = request.GetPostInt("targetChannelId"); var copyType = request.GetPostString("copyType"); var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var targetSiteInfo = SiteManager.GetSiteInfo(targetSiteId); if (targetSiteInfo == null) { return(BadRequest("无法确定转发对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } foreach (var contentId in contentIdList) { if (targetChannelId != 0) { CrossSiteTransUtility.TransContentInfo(siteInfo, channelInfo, contentId, targetSiteInfo, targetChannelId); } } //request.AddSiteLog(siteId, channelId, "批量跨站转发", string.Empty); request.AddSiteLog(siteId, channelId, "内容跨站转发", $"转发到站点:{targetSiteInfo.SiteName}"); CreateManager.TriggerContentChangedEvent(siteId, channelId); return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex, "批量跨站转发失败"); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.SiteId; if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.SitePermissions.ConfigSite)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); var siteName = request.GetPostString("siteName"); var charset = ECharsetUtils.GetEnumType(request.GetPostString("charset")); var pageSize = request.GetPostInt("pageSize", siteInfo.Additional.PageSize); var isCreateDoubleClick = request.GetPostBool("isCreateDoubleClick"); siteInfo.SiteName = siteName; siteInfo.Additional.Charset = ECharsetUtils.GetValue(charset); siteInfo.Additional.PageSize = pageSize; siteInfo.Additional.IsCreateDoubleClick = isCreateDoubleClick; //修改所有模板编码 var templateInfoList = DataProvider.TemplateDao.GetTemplateInfoListBySiteId(siteId); foreach (var templateInfo in templateInfoList) { if (templateInfo.Charset == charset) { continue; } var templateContent = TemplateManager.GetTemplateContent(siteInfo, templateInfo); templateInfo.Charset = charset; DataProvider.TemplateDao.Update(siteInfo, templateInfo, templateContent, request.AdminName); } DataProvider.SiteDao.Update(siteInfo); request.AddSiteLog(siteId, "修改站点设置"); return(Ok(new { Value = siteInfo, Config = siteInfo.Additional, })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var channelContentIds = MinContentInfo.ParseMinContentInfoList(request.GetPostString("channelContentIds")); var targetSiteId = request.GetPostInt("targetSiteId"); var targetChannelId = request.GetPostInt("targetChannelId"); var copyType = request.GetPostString("copyType"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentTranslate)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } foreach (var channelContentId in channelContentIds) { ContentUtility.Translate(siteInfo, channelContentId.ChannelId, channelContentId.Id, targetSiteId, targetChannelId, ETranslateContentTypeUtils.GetEnumType(copyType)); } request.AddSiteLog(siteId, channelId, "复制内容", string.Empty); CreateManager.TriggerContentChangedEvent(siteId, channelId); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var targetSiteId = request.GetPostInt("targetSiteId"); var targetChannelId = request.GetPostInt("targetChannelId"); if (!request.IsUserLoggin || !request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentTranslate)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } foreach (var contentId in contentIdList) { ContentUtility.Translate(siteInfo, channelId, contentId, targetSiteId, targetChannelId, ETranslateContentType.Cut); } request.AddSiteLog(siteId, channelId, "转移内容", string.Empty); CreateManager.TriggerContentChangedEvent(siteId, channelId); return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ChannelEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var attributeNames = request.GetPostString("attributeNames"); var isAllContents = request.GetPostBool("isAllContents"); var isSelfOnly = request.GetPostBool("isSelfOnly"); channelInfo.Additional.ContentAttributesOfDisplay = attributeNames; channelInfo.Additional.IsAllContents = isAllContents; channelInfo.Additional.IsSelfOnly = isSelfOnly; DataProvider.ChannelDao.Update(channelInfo); request.AddSiteLog(siteId, "设置内容选项"); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var attributeName = request.GetPostString("attributeName"); var isDesc = request.GetPostBool("isDesc"); if (!request.IsUserLoggin || !request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); DataProvider.ContentDao.UpdateArrangeTaxis(tableName, channelId, attributeName, isDesc); request.AddSiteLog(siteId, "批量整理", string.Empty); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public NameValueCollection Recovery(int siteId, bool isDeleteChannels, bool isDeleteTemplates, bool isDeleteFiles, bool isZip, string path, bool isOverride, bool isUseTable, string userKeyPrefix, AuthenticatedRequest request) { //返回“运行结果”和“错误信息”的字符串数组 NameValueCollection retVal; try { BackupUtility.RecoverySite(siteId, isDeleteChannels, isDeleteTemplates, isDeleteFiles, isZip, PageUtils.UrlDecode(path), isOverride, isUseTable, request.AdminName); request.AddSiteLog(siteId, "恢复备份数据", request.AdminName); retVal = AjaxManager.GetWaitingTaskNameValueCollection("数据恢复成功!", string.Empty, string.Empty); //retVal = new string[] { "数据恢复成功!", string.Empty, string.Empty }; } catch (Exception ex) { //retVal = new string[] { string.Empty, ex.Message, string.Empty }; retVal = AjaxManager.GetWaitingTaskNameValueCollection(string.Empty, ex.Message, string.Empty); LogUtils.AddErrorLog(ex); } return(retVal); }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var checkedLevel = request.GetPostInt("checkedLevel"); var isTranslate = request.GetPostBool("isTranslate"); var translateChannelId = request.GetPostInt("translateChannelId"); var reasons = request.GetPostString("reasons"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentCheck)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var isChecked = checkedLevel >= siteInfo.Additional.CheckContentLevel; if (isChecked) { checkedLevel = 0; } var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); var contentInfoList = new List <ContentInfo>(); foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } contentInfo.Set(ContentAttribute.CheckUserName, request.AdminName); contentInfo.Set(ContentAttribute.CheckDate, DateTime.Now); contentInfo.Set(ContentAttribute.CheckReasons, reasons); contentInfo.IsChecked = isChecked; contentInfo.CheckedLevel = checkedLevel; if (isTranslate && translateChannelId > 0) { var translateChannelInfo = ChannelManager.GetChannelInfo(siteId, translateChannelId); contentInfo.ChannelId = translateChannelInfo.Id; DataProvider.ContentDao.Update(siteInfo, translateChannelInfo, contentInfo); } else { DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } contentInfoList.Add(contentInfo); var checkInfo = new ContentCheckInfo(0, tableName, siteId, contentInfo.ChannelId, contentInfo.Id, request.AdminName, isChecked, checkedLevel, DateTime.Now, reasons); DataProvider.ContentCheckDao.Insert(checkInfo); } if (isTranslate && translateChannelId > 0) { ContentManager.RemoveCache(tableName, channelId); var translateTableName = ChannelManager.GetTableName(siteInfo, translateChannelId); ContentManager.RemoveCache(translateTableName, translateChannelId); } request.AddSiteLog(siteId, "批量审核内容"); foreach (var contentInfo in contentInfoList) { CreateManager.CreateContent(siteId, contentInfo.ChannelId, contentInfo.Id); } CreateManager.TriggerContentChangedEvent(siteId, channelId); if (isTranslate && translateChannelId > 0) { CreateManager.TriggerContentChangedEvent(siteId, translateChannelId); } return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var pageType = request.GetPostString("pageType"); var isRecommend = request.GetPostBool("isRecommend"); var isHot = request.GetPostBool("isHot"); var isColor = request.GetPostBool("isColor"); var isTop = request.GetPostBool("isTop"); var hits = request.GetPostInt("hits"); if (!request.IsUserLoggin || !request.UserPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } if (pageType == "setAttributes") { if (isRecommend || isHot || isColor || isTop) { foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } if (isRecommend) { contentInfo.IsRecommend = true; } if (isHot) { contentInfo.IsHot = true; } if (isColor) { contentInfo.IsColor = true; } if (isTop) { contentInfo.IsTop = true; } DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "设置内容属性"); } } else if (pageType == "cancelAttributes") { if (isRecommend || isHot || isColor || isTop) { foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } if (isRecommend) { contentInfo.IsRecommend = false; } if (isHot) { contentInfo.IsHot = false; } if (isColor) { contentInfo.IsColor = false; } if (isTop) { contentInfo.IsTop = false; } DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "取消内容属性"); } } else if (pageType == "setHits") { foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } contentInfo.Hits = hits; DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "设置内容点击量"); } return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var contentIdList = TranslateUtils.StringCollectionToIntList(request.GetPostString("contentIds")); var isUp = request.GetPostBool("isUp"); var taxis = request.GetPostInt("taxis"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } if (ETaxisTypeUtils.Equals(channelInfo.Additional.DefaultTaxisType, ETaxisType.OrderByTaxis)) { isUp = !isUp; } if (isUp == false) { contentIdList.Reverse(); } var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); foreach (var contentId in contentIdList) { var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, contentId); if (contentInfo == null) { continue; } var isTop = contentInfo.IsTop; for (var i = 1; i <= taxis; i++) { if (isUp) { if (DataProvider.ContentDao.SetTaxisToUp(tableName, channelId, contentId, isTop) == false) { break; } } else { if (DataProvider.ContentDao.SetTaxisToDown(tableName, channelId, contentId, isTop) == false) { break; } } } } CreateManager.TriggerContentChangedEvent(siteId, channelId); request.AddSiteLog(siteId, channelId, 0, "对内容排序", string.Empty); return(Ok(new { Value = contentIdList })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Create(int siteId) { try { var request = new AuthenticatedRequest(); var parentId = request.GetPostInt(ChannelAttribute.ParentId, siteId); var isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeChannels) || request.IsAdminLoggin && request.AdminPermissions.HasChannelPermissions(siteId, parentId, ConfigManager.ChannelPermissions.ChannelAdd); if (!isAuth) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var contentModelPluginId = request.GetPostString(ChannelAttribute.ContentModelPluginId); var contentRelatedPluginIds = request.GetPostString(ChannelAttribute.ContentRelatedPluginIds); var channelName = request.GetPostString(ChannelAttribute.ChannelName); var indexName = request.GetPostString(ChannelAttribute.IndexName); var filePath = request.GetPostString(ChannelAttribute.FilePath); var channelFilePathRule = request.GetPostString(ChannelAttribute.ChannelFilePathRule); var contentFilePathRule = request.GetPostString(ChannelAttribute.ContentFilePathRule); var groupNameCollection = request.GetPostString(ChannelAttribute.GroupNameCollection); var imageUrl = request.GetPostString(ChannelAttribute.ImageUrl); var content = request.GetPostString(ChannelAttribute.Content); var keywords = request.GetPostString(ChannelAttribute.Keywords); var description = request.GetPostString(ChannelAttribute.Description); var linkUrl = request.GetPostString(ChannelAttribute.LinkUrl); var linkType = request.GetPostString(ChannelAttribute.LinkType); var channelTemplateId = request.GetPostInt(ChannelAttribute.ChannelTemplateId); var contentTemplateId = request.GetPostInt(ChannelAttribute.ContentTemplateId); var channelInfo = new ChannelInfo { SiteId = siteId, ParentId = parentId, ContentModelPluginId = contentModelPluginId, ContentRelatedPluginIds = contentRelatedPluginIds }; if (!string.IsNullOrEmpty(indexName)) { var indexNameList = DataProvider.ChannelDao.GetIndexNameList(siteId); if (indexNameList.IndexOf(indexName) != -1) { return(BadRequest("栏目添加失败,栏目索引已存在!")); } } if (!string.IsNullOrEmpty(filePath)) { if (!DirectoryUtils.IsDirectoryNameCompliant(filePath)) { return(BadRequest("栏目页面路径不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePath)) { filePath = PageUtils.Combine(filePath, "index.html"); } var filePathList = DataProvider.ChannelDao.GetAllFilePathBySiteId(siteId); if (filePathList.IndexOf(filePath) != -1) { return(BadRequest("栏目添加失败,栏目页面路径已存在!")); } } if (!string.IsNullOrEmpty(channelFilePathRule)) { if (!DirectoryUtils.IsDirectoryNameCompliant(channelFilePathRule)) { return(BadRequest("栏目页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(channelFilePathRule)) { return(BadRequest("栏目页面命名规则必须包含生成文件的后缀!")); } } if (!string.IsNullOrEmpty(contentFilePathRule)) { if (!DirectoryUtils.IsDirectoryNameCompliant(contentFilePathRule)) { return(BadRequest("内容页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(contentFilePathRule)) { return(BadRequest("内容页面命名规则必须包含生成文件的后缀!")); } } //var parentChannelInfo = ChannelManager.GetChannelInfo(siteId, parentId); //var styleInfoList = TableStyleManager.GetChannelStyleInfoList(parentChannelInfo); //var extendedAttributes = BackgroundInputTypeParser.SaveAttributes(siteInfo, styleInfoList, Request.Form, null); channelInfo.Additional.Load(request.GetPostObject <Dictionary <string, object> >()); //foreach (string key in attributes) //{ // channelInfo.Additional.SetExtendedAttribute(key, attributes[key]); //} channelInfo.ChannelName = channelName; channelInfo.IndexName = indexName; channelInfo.FilePath = filePath; channelInfo.ChannelFilePathRule = channelFilePathRule; channelInfo.ContentFilePathRule = contentFilePathRule; channelInfo.GroupNameCollection = groupNameCollection; channelInfo.ImageUrl = imageUrl; channelInfo.Content = content; channelInfo.Keywords = keywords; channelInfo.Description = description; channelInfo.LinkUrl = linkUrl; channelInfo.LinkType = linkType; channelInfo.ChannelTemplateId = channelTemplateId; channelInfo.ContentTemplateId = contentTemplateId; channelInfo.AddDate = DateTime.Now; channelInfo.Id = DataProvider.ChannelDao.Insert(channelInfo); //栏目选择投票样式后,内容 CreateManager.CreateChannel(siteId, channelInfo.Id); request.AddSiteLog(siteId, "添加栏目", $"栏目:{channelName}"); return(Ok(new { Value = channelInfo.ToDictionary() })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var guid = request.GetPostString("guid"); var specialId = request.GetPostInt("specialId"); var isEditOnly = request.GetPostBool("isEditOnly"); var isUploadOnly = request.GetPostBool("isUploadOnly"); var title = request.GetPostString("title"); var url = request.GetPostString("url"); var fileNames = TranslateUtils.StringCollectionToStringList(request.GetPostString("fileNames")); var siteInfo = SiteManager.GetSiteInfo(siteId); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.SitePermissions.Specials)) { return(Unauthorized()); } if (specialId > 0 && isEditOnly) { var specialInfo = SpecialManager.GetSpecialInfo(siteId, specialId); var oldDirectoryPath = string.Empty; var newDirectoryPath = string.Empty; if (specialInfo.Title != title && DataProvider.SpecialDao.IsTitleExists(siteId, title)) { return(BadRequest("专题修改失败,专题名称已存在!")); } if (specialInfo.Url != url) { if (DataProvider.SpecialDao.IsUrlExists(siteId, url)) { return(BadRequest("专题修改失败,专题访问地址已存在!")); } oldDirectoryPath = SpecialManager.GetSpecialDirectoryPath(siteInfo, specialInfo.Url); newDirectoryPath = SpecialManager.GetSpecialDirectoryPath(siteInfo, url); } specialInfo.Title = title; specialInfo.Url = url; DataProvider.SpecialDao.Update(specialInfo); if (oldDirectoryPath != newDirectoryPath) { DirectoryUtils.MoveDirectory(oldDirectoryPath, newDirectoryPath, true); } } else if (specialId > 0 && isUploadOnly) { var specialInfo = SpecialManager.GetSpecialInfo(siteId, specialId); var directoryPath = SpecialManager.GetSpecialDirectoryPath(siteInfo, specialInfo.Url); var srcDirectoryPath = SpecialManager.GetSpecialSrcDirectoryPath(directoryPath); DirectoryUtils.CreateDirectoryIfNotExists(srcDirectoryPath); var uploadDirectoryPath = PathUtils.GetTemporaryFilesPath(guid); foreach (var filePath in DirectoryUtils.GetFilePaths(uploadDirectoryPath)) { var fileName = PathUtils.GetFileName(filePath); if (!StringUtils.ContainsIgnoreCase(fileNames, fileName)) { continue; } if (EFileSystemTypeUtils.IsZip(PathUtils.GetExtension(filePath))) { ZipUtils.ExtractZip(filePath, srcDirectoryPath); } else { FileUtils.MoveFile(filePath, PathUtils.Combine(srcDirectoryPath, fileName), true); } } DirectoryUtils.Copy(srcDirectoryPath, directoryPath); } else if (specialId == 0) { if (DataProvider.SpecialDao.IsTitleExists(siteId, title)) { return(BadRequest("专题添加失败,专题名称已存在!")); } if (DataProvider.SpecialDao.IsUrlExists(siteId, url)) { return(BadRequest("专题添加失败,专题访问地址已存在!")); } var directoryPath = SpecialManager.GetSpecialDirectoryPath(siteInfo, url); var srcDirectoryPath = SpecialManager.GetSpecialSrcDirectoryPath(directoryPath); DirectoryUtils.CreateDirectoryIfNotExists(srcDirectoryPath); var uploadDirectoryPath = PathUtils.GetTemporaryFilesPath(guid); foreach (var filePath in DirectoryUtils.GetFilePaths(uploadDirectoryPath)) { var fileName = PathUtils.GetFileName(filePath); if (!StringUtils.ContainsIgnoreCase(fileNames, fileName)) { continue; } if (EFileSystemTypeUtils.IsZip(PathUtils.GetExtension(filePath))) { ZipUtils.ExtractZip(filePath, srcDirectoryPath); } else { FileUtils.MoveFile(filePath, PathUtils.Combine(srcDirectoryPath, fileName), true); } } DirectoryUtils.Copy(srcDirectoryPath, directoryPath); specialId = DataProvider.SpecialDao.Insert(new SpecialInfo { Id = 0, SiteId = siteId, Title = title, Url = url, AddDate = DateTime.Now }); request.AddSiteLog(siteId, "新建专题", $"专题名称:{title}"); } CreateManager.CreateSpecial(siteId, specialId); return(Ok(new { Value = specialId })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public CheckResult Check([FromBody] CheckRequest request) { var req = new AuthenticatedRequest(); if (!req.IsApiAuthenticated || !AccessTokenManager.IsScope(req.ApiToken, AccessTokenManager.ScopeContents)) { return(Request.Unauthorized <CheckResult>()); } var site = SiteManager.GetSiteInfo(request.SiteId); if (site == null) { return(Request.BadRequest <CheckResult>("无法确定内容对应的站点")); } var contents = new List <Dictionary <string, object> >(); foreach (var channelContentId in request.Contents) { var channel = ChannelManager.GetChannelInfo(request.SiteId, channelContentId.ChannelId); var tableName = ChannelManager.GetTableName(site, channel); var content = ContentManager.GetContentInfo(site, channel, channelContentId.Id); if (content == null) { continue; } content.Set(ContentAttribute.CheckUserName, req.AdminName); content.Set(ContentAttribute.CheckDate, DateTime.Now); content.Set(ContentAttribute.CheckReasons, request.Reasons); content.Checked = true; content.CheckedLevel = 0; DataProvider.ContentDao.Update(site, channel, content); contents.Add(content.ToDictionary()); var contentCheck = new ContentCheckInfo { TableName = tableName, SiteId = request.SiteId, ChannelId = content.ChannelId, ContentId = content.Id, UserName = req.AdminName, IsChecked = true, CheckedLevel = 0, CheckDate = DateTime.Now, Reasons = request.Reasons }; DataProvider.ContentCheckDao.Insert(contentCheck); } req.AddSiteLog(request.SiteId, "批量审核内容"); foreach (var content in request.Contents) { CreateManager.CreateContent(request.SiteId, content.ChannelId, content.Id); } foreach (var distinctChannelId in request.Contents.Select(x => x.ChannelId).Distinct()) { CreateManager.TriggerContentChangedEvent(request.SiteId, distinctChannelId); } CreateManager.CreateChannel(request.SiteId, request.SiteId); return(new CheckResult { Contents = contents }); }
public IHttpActionResult Update(int siteId, int channelId, int id) { try { var request = new AuthenticatedRequest(); var sourceId = request.GetPostInt(ContentAttribute.SourceId.ToCamelCase()); bool isAuth; if (sourceId == SourceManager.User) { isAuth = request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit); } else { isAuth = request.IsApiAuthenticated && AccessTokenManager.IsScope(request.ApiToken, AccessTokenManager.ScopeContents) || request.IsUserLoggin && request.UserPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit) || request.IsAdminLoggin && request.AdminPermissions.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentEdit); } if (!isAuth) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var attributes = request.GetPostObject <Dictionary <string, object> >(); if (attributes == null) { return(BadRequest("无法从body中获取内容实体")); } var adminName = request.AdminName; var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, id); if (contentInfo == null) { return(NotFound()); } contentInfo.Load(attributes); contentInfo.Load(new { SiteId = siteId, ChannelId = channelId, AddUserName = adminName, LastEditDate = DateTime.Now, LastEditUserName = adminName, SourceId = sourceId }); var postCheckedLevel = request.GetPostInt(ContentAttribute.CheckedLevel.ToCamelCase()); var isChecked = postCheckedLevel >= siteInfo.Additional.CheckContentLevel; var checkedLevel = postCheckedLevel; contentInfo.Load(new { IsChecked = isChecked, CheckedLevel = checkedLevel }); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); foreach (var service in PluginManager.Services) { try { service.OnContentFormSubmit(new ContentFormSubmitEventArgs(siteId, channelId, contentInfo.Id, attributes, contentInfo)); } catch (Exception ex) { LogUtils.AddErrorLog(service.PluginId, ex, nameof(IService.ContentFormSubmit)); } } if (contentInfo.IsChecked) { CreateManager.CreateContent(siteId, channelId, contentInfo.Id); CreateManager.TriggerContentChangedEvent(siteId, channelId); } request.AddSiteLog(siteId, channelId, contentInfo.Id, "修改内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, contentInfo.ChannelId)},内容标题:{contentInfo.Title}"); return(Ok(new { Value = contentInfo.ToDictionary() })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var channelContentIds = MinContentInfo.ParseMinContentInfoList(request.GetPostString("channelContentIds")); var isRetainFiles = request.GetPostBool("isRetainFiles"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentDelete)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } if (!isRetainFiles) { foreach (var channelContentId in channelContentIds) { DeleteManager.DeleteContent(siteInfo, channelContentId.ChannelId, channelContentId.Id); } } var tableName = ChannelManager.GetTableName(siteInfo, channelInfo); if (channelContentIds.Count == 1) { var channelContentId = channelContentIds[0]; var contentTitle = DataProvider.ContentDao.GetValue(tableName, channelContentId.Id, ContentAttribute.Title); request.AddSiteLog(siteId, channelContentId.ChannelId, channelContentId.Id, "删除内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelContentId.ChannelId)},内容标题:{contentTitle}"); } else { request.AddSiteLog(siteId, "批量删除内容", $"栏目:{ChannelManager.GetChannelNameNavigation(siteId, channelId)},内容条数:{channelContentIds.Count}"); } foreach (var distinctChannelId in channelContentIds.Select(x => x.ChannelId).Distinct()) { var contentIdList = channelContentIds.Where(x => x.ChannelId == distinctChannelId) .Select(x => x.Id).ToList(); DataProvider.ContentDao.UpdateTrashContents(siteId, distinctChannelId, tableName, contentIdList); CreateManager.TriggerContentChangedEvent(siteId, distinctChannelId); } return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); var channelId = request.GetPostInt("channelId"); var importType = request.GetPostString("importType"); var checkedLevel = request.GetPostInt("checkedLevel"); var isOverride = request.GetPostBool("isOverride"); var fileNames = request.GetPostObject <List <string> >("fileNames"); if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasChannelPermissions(siteId, channelId, ConfigManager.ChannelPermissions.ContentAdd)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } var channelInfo = ChannelManager.GetChannelInfo(siteId, channelId); if (channelInfo == null) { return(BadRequest("无法确定内容对应的栏目")); } var isChecked = checkedLevel >= siteInfo.Additional.CheckContentLevel; if (importType == "zip") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Zip, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByZipFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } else if (importType == "csv") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Csv, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByCsvFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } else if (importType == "txt") { foreach (var fileName in fileNames) { var localFilePath = PathUtils.GetTemporaryFilesPath(fileName); if (!EFileSystemTypeUtils.Equals(EFileSystemType.Txt, PathUtils.GetExtension(localFilePath))) { continue; } var importObject = new ImportObject(siteId, request.AdminName); importObject.ImportContentsByTxtFile(channelInfo, localFilePath, isOverride, isChecked, checkedLevel, request.AdminId, 0, SourceManager.Default); } } request.AddSiteLog(siteId, channelId, 0, "导入内容", string.Empty); return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.GetPostInt("siteId"); //var channelId = request.GetPostInt("channelId"); var channelContentIds = MinContentInfo.ParseMinContentInfoList(request.GetPostString("channelContentIds")); var pageType = request.GetPostString("pageType"); var groupNames = TranslateUtils.StringCollectionToStringList(request.GetPostString("groupNames")); var groupName = request.GetPostString("groupName"); var description = request.GetPostString("description"); if (!request.IsAdminLoggin) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); if (siteInfo == null) { return(BadRequest("无法确定内容对应的站点")); } if (pageType == "setGroup") { foreach (var channelContentId in channelContentIds) { var channelInfo = ChannelManager.GetChannelInfo(siteId, channelContentId.ChannelId); var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, channelContentId.Id); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); foreach (var name in groupNames) { if (!list.Contains(name)) { list.Add(name); } } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量设置内容组", $"内容组:{TranslateUtils.ObjectCollectionToString(groupNames)}"); } else if (pageType == "cancelGroup") { foreach (var channelContentId in channelContentIds) { var channelInfo = ChannelManager.GetChannelInfo(siteId, channelContentId.ChannelId); var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, channelContentId.Id); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); foreach (var name in groupNames) { if (list.Contains(name)) { list.Remove(name); } } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量取消内容组", $"内容组:{TranslateUtils.ObjectCollectionToString(groupNames)}"); } else if (pageType == "addGroup") { var groupInfo = new ContentGroupInfo { GroupName = AttackUtils.FilterXss(groupName), SiteId = siteId, Description = AttackUtils.FilterXss(description) }; if (ContentGroupManager.IsExists(siteId, groupInfo.GroupName)) { DataProvider.ContentGroupDao.Update(groupInfo); request.AddSiteLog(siteId, "修改内容组", $"内容组:{groupInfo.GroupName}"); } else { DataProvider.ContentGroupDao.Insert(groupInfo); request.AddSiteLog(siteId, "添加内容组", $"内容组:{groupInfo.GroupName}"); } foreach (var channelContentId in channelContentIds) { var channelInfo = ChannelManager.GetChannelInfo(siteId, channelContentId.ChannelId); var contentInfo = ContentManager.GetContentInfo(siteInfo, channelInfo, channelContentId.Id); if (contentInfo == null) { continue; } var list = TranslateUtils.StringCollectionToStringList(contentInfo.GroupNameCollection); if (!list.Contains(groupInfo.GroupName)) { list.Add(groupInfo.GroupName); } contentInfo.GroupNameCollection = TranslateUtils.ObjectCollectionToString(list); DataProvider.ContentDao.Update(siteInfo, channelInfo, contentInfo); } request.AddSiteLog(siteId, "批量设置内容组", $"内容组:{groupInfo.GroupName}"); } return(Ok(new { Value = true })); } catch (Exception ex) { LogUtils.AddErrorLog(ex); return(InternalServerError(ex)); } }
public IHttpActionResult Submit() { try { var request = new AuthenticatedRequest(); var siteId = request.SiteId; if (!request.IsAdminLoggin || !request.AdminPermissionsImpl.HasSitePermissions(siteId, ConfigManager.SitePermissions.ConfigContents)) { return(Unauthorized()); } var siteInfo = SiteManager.GetSiteInfo(siteId); var isSaveImageInTextEditor = request.GetPostBool("isSaveImageInTextEditor", true); var isAutoPageInTextEditor = request.GetPostBool("isAutoPageInTextEditor"); var autoPageWordNum = request.GetPostInt("autoPageWordNum", siteInfo.Additional.AutoPageWordNum); var isContentTitleBreakLine = request.GetPostBool("isContentTitleBreakLine", true); var isContentSubTitleBreakLine = request.GetPostBool("isContentSubTitleBreakLine", true); var isAutoCheckKeywords = request.GetPostBool("isAutoCheckKeywords", true); var isCheckContentLevel = request.GetPostBool("isCheckContentLevel"); var checkContentLevel = request.GetPostInt("checkContentLevel"); var checkContentDefaultLevel = request.GetPostInt("checkContentDefaultLevel"); siteInfo.Additional.IsSaveImageInTextEditor = isSaveImageInTextEditor; var isReCalculate = false; if (isAutoPageInTextEditor) { if (siteInfo.Additional.IsAutoPageInTextEditor == false) { isReCalculate = true; } else if (siteInfo.Additional.AutoPageWordNum != autoPageWordNum) { isReCalculate = true; } } siteInfo.Additional.IsAutoPageInTextEditor = isAutoPageInTextEditor; siteInfo.Additional.AutoPageWordNum = autoPageWordNum; siteInfo.Additional.IsContentTitleBreakLine = isContentTitleBreakLine; siteInfo.Additional.IsContentSubTitleBreakLine = isContentSubTitleBreakLine; siteInfo.Additional.IsAutoCheckKeywords = isAutoCheckKeywords; siteInfo.Additional.IsCheckContentLevel = isCheckContentLevel; if (siteInfo.Additional.IsCheckContentLevel) { siteInfo.Additional.CheckContentLevel = checkContentLevel; } siteInfo.Additional.CheckContentDefaultLevel = checkContentDefaultLevel; DataProvider.SiteDao.Update(siteInfo); if (isReCalculate) { DataProvider.ContentDao.SetAutoPageContentToSite(siteInfo); } request.AddSiteLog(siteId, "修改内容设置"); return(Ok(new { Value = siteInfo, Config = siteInfo.Additional, })); } catch (Exception ex) { return(InternalServerError(ex)); } }