public async Task <ActionResult <GetResult> > Get([FromQuery] ChannelRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.View)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(this.Error("无法确定内容对应的栏目")); } var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); var(isChecked, checkedLevel) = await CheckManager.GetUserCheckLevelAsync(_authManager, site, request.SiteId); var checkedLevels = CheckManager.GetCheckedLevels(site, isChecked, checkedLevel, true); return(new GetResult { Value = columns, CheckedLevels = checkedLevels, CheckedLevel = checkedLevel }); }
public async Task <ActionResult <BoolResult> > Width([FromBody] WidthRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (!string.IsNullOrEmpty(request.PrevAttributeName) && request.PrevWidth > 0) { var prevName = ColumnsManager.GetColumnWidthName(request.PrevAttributeName); channel.Set(prevName, request.PrevWidth); } if (!string.IsNullOrEmpty(request.NextAttributeName) && request.NextWidth > 0) { var nextName = ColumnsManager.GetColumnWidthName(request.NextAttributeName); channel.Set(nextName, request.NextWidth); } await _channelRepository.UpdateAsync(channel); return(new BoolResult { Value = true }); }
public async Task <Content> DecodeContentAsync(Site site, Channel channel, Content content) { content = content.Clone <Content>(); var tableStyles = await _tableStyleRepository.GetContentStylesAsync(site, channel); foreach (var style in tableStyles) { if (style.InputType == InputType.Image || style.InputType == InputType.Video || style.InputType == InputType.File) { var countName = ColumnsManager.GetCountName(style.AttributeName); var count = content.Get <int>(countName); for (var i = 0; i <= count; i++) { var extendName = ColumnsManager.GetExtendName(style.AttributeName, i); var value = content.Get <string>(extendName); value = await ParseSiteUrlAsync(site, value, false); content.Set(extendName, value); } } else if (style.InputType == InputType.TextEditor) { var value = content.Get <string>(style.AttributeName); value = await DecodeTextEditorAsync(site, value, true); value = UEditorUtils.TranslateToHtml(value); content.Set(style.AttributeName, value); } } return(content); }
public async Task <List <Content> > GetContentsByCsvFileAsync(string filePath, Site site, Channel channel) { var contentInfoList = new List <Content>(); CsvUtils.Import(filePath, out var head, out var rows); if (rows.Count <= 0) { return(contentInfoList); } var styles = ColumnsManager.GetContentListStyles(await _databaseManager.TableStyleRepository.GetContentStylesAsync(site, channel)); var nameValueCollection = new NameValueCollection(); foreach (var style in styles) { nameValueCollection[style.DisplayName] = StringUtils.ToLower(style.AttributeName); } var attributeNames = new List <string>(); foreach (var columnName in head) { attributeNames.Add(!string.IsNullOrEmpty(nameValueCollection[columnName]) ? nameValueCollection[columnName] : columnName); } foreach (var row in rows) { if (row.Count != attributeNames.Count) { continue; } var dict = new Dictionary <string, object>(); for (var i = 0; i < attributeNames.Count; i++) { var attributeName = attributeNames[i]; if (!string.IsNullOrEmpty(attributeName)) { dict[attributeName] = row[i]; } } var content = new Content(); content.LoadDict(dict); if (!string.IsNullOrEmpty(content.Title)) { content.SiteId = site.Id; content.ChannelId = channel.Id; contentInfoList.Add(content); } } return(contentInfoList); }
public async Task <ActionResult <GetResult> > Get([FromQuery] ChannelRequest request) { if (!await _authManager.HasChannelPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ChannelPermissions.Edit)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(NotFound()); } var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var attributes = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); return(new GetResult { Attributes = attributes }); }
public async Task <ActionResult <BoolResult> > Width([FromBody] WidthRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.ContentsSearch)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.SiteId); var name = ColumnsManager.GetColumnWidthName(request.AttributeName); channel.Set(name, request.Width); await _channelRepository.UpdateAsync(channel); return(new BoolResult { Value = true }); }
public async Task <List <Content> > GetContentsByFileAsync(string filePath, Site site, Channel channel) { var contents = new List <Content>(); var styles = ColumnsManager.GetContentListStyles(await _databaseManager.TableStyleRepository.GetContentStylesAsync(site, channel)); var sheet = ExcelUtils.GetDataTable(filePath); if (sheet != null) { var columns = new List <string>(); for (var i = 1; i < sheet.Rows.Count; i++) //行 { var row = sheet.Rows[i]; if (i == 1) { for (var j = 0; j < sheet.Columns.Count; j++) { var value = row[j].ToString().Trim(); columns.Add(value); } continue; } var dict = new Dictionary <string, object>(); for (var j = 0; j < columns.Count; j++) { var columnName = columns[j]; var value = row[j].ToString().Trim(); var style = styles.FirstOrDefault(x => StringUtils.EqualsIgnoreCase(x.AttributeName, columnName) || StringUtils.EqualsIgnoreCase(x.DisplayName, columnName)); var attributeName = style != null ? style.AttributeName : columnName; if (!string.IsNullOrEmpty(attributeName)) { dict[attributeName] = value; } } var content = new Content(); content.LoadDict(dict); if (!string.IsNullOrEmpty(content.Title)) { content.SiteId = site.Id; content.ChannelId = channel.Id; contents.Add(content); } } } return(contents); }
public async Task <ActionResult <QueryResult> > GetContents([FromBody] QueryRequest request) { if (!await _accessTokenRepository.IsScopeAsync(_authManager.ApiToken, Constants.ScopeContents)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var tableName = site.TableName; var query = await GetQueryAsync(request.SiteId, request.ChannelId, request); var totalCount = await _contentRepository.GetCountAsync(tableName, query); var page = request.Page > 0 ? request.Page : 1; var perPage = request.PerPage > 0 ? request.PerPage : site.PageSize; query.ForPage(page, perPage); var summaries = await _contentRepository.GetSummariesAsync(tableName, query); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var channel = request.ChannelId.HasValue && request.ChannelId.Value > 0 ? await _channelRepository.GetAsync(request.ChannelId.Value) : await _channelRepository.GetAsync(request.SiteId); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); var sequence = page * perPage + 1; var pageContents = new List <Content>(); foreach (var summary in summaries) { var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); var pageContent = await columnsManager.CalculateContentListAsync(sequence ++, site, content.ChannelId, content, columns); var navigationUrl = await _parseManager.PathManager.GetContentUrlAsync(site, content, false); pageContent.Set("NavigationUrl", navigationUrl); pageContents.Add(pageContent); } return(new QueryResult { Contents = pageContents, TotalCount = totalCount }); }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var gridColumnSettings = (GridColumnSettings)values[0]; string valueStringFormat = (string)values[1]; object exampleValue = ColumnsManager.GetColumnExampleValue(gridColumnSettings); string example = FormatExample(exampleValue, valueStringFormat); return(example); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.SettingsSite)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); var styles = await GetInputStylesAsync(request.SiteId); foreach (var style in styles) { var inputType = style.InputType; if (inputType == InputType.TextEditor) { var value = request.Get(style.AttributeName, string.Empty); value = await _pathManager.EncodeTextEditorAsync(site, value); value = UEditorUtils.TranslateToStlElement(value); site.Set(style.AttributeName, value); } else if (inputType == InputType.Image || inputType == InputType.Video || inputType == InputType.File) { var count = request.Get(ColumnsManager.GetCountName(style.AttributeName), 0); site.Set(ColumnsManager.GetCountName(style.AttributeName), count); for (var n = 0; n <= count; n++) { site.Set(ColumnsManager.GetExtendName(style.AttributeName, n), request.Get(ColumnsManager.GetExtendName(style.AttributeName, n), string.Empty)); } } else if (inputType == InputType.CheckBox || style.InputType == InputType.SelectMultiple) { var list = request.Get <List <object> >(style.AttributeName); site.Set(style.AttributeName, ListUtils.ToString(list)); } else { var value = request.Get(style.AttributeName, string.Empty); site.Set(style.AttributeName, value); } } await _siteRepository.UpdateAsync(site); await _authManager.AddSiteLogAsync(request.SiteId, "修改站点设置"); return(new BoolResult { Value = true }); }
public async Task <ActionResult <ListResult> > List([FromBody] ListRequest request) { var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId > 0?request.ChannelId : request.SiteId); var isAdd = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Add); var pageContents = new List <Content>(); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.SearchContents); var offset = site.PageSize * (request.Page - 1); int?channelId = null; if (channel.Id != request.SiteId) { channelId = channel.Id; } var(total, pageSummaries) = await _contentRepository.UserWriteSearch(_authManager.UserId, site, request.Page, channelId, request.IsCheckedLevels, request.CheckedLevels, request.GroupNames, request.TagNames); if (total > 0) { var sequence = offset + 1; foreach (var summary in pageSummaries) { var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); if (content == null) { continue; } var pageContent = await columnsManager.CalculateContentListAsync(sequence ++, site, request.SiteId, content, columns); pageContents.Add(pageContent); } } return(new ListResult { IsAdd = isAdd, PageContents = pageContents, Total = total, PageSize = site.PageSize }); }
public async Task <ActionResult <ListResult> > List([FromBody] ListRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.ContentsCheck)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.SiteId); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.CheckContents); var pageContents = new List <Content>(); var(total, pageSummaries) = await _contentRepository.CheckSearchAsync(site, request.Page, request.ChannelId, request.StartDate, request.EndDate, request.Items, request.IsCheckedLevels, request.CheckedLevels, request.IsTop, request.IsRecommend, request.IsHot, request.IsColor, request.GroupNames, request.TagNames); if (total > 0) { var offset = site.PageSize * (request.Page - 1); var sequence = offset + 1; foreach (var summary in pageSummaries) { var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); if (content == null) { continue; } var pageContent = await columnsManager.CalculateContentListAsync(sequence ++, site, request.SiteId, content, columns); pageContents.Add(pageContent); } } return(new ListResult { PageContents = pageContents, Total = total, PageSize = site.PageSize }); }
public async Task <ActionResult <TreeResult> > Tree([FromBody] SiteRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.ContentsCheck)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.SiteId); var root = await _channelRepository.GetCascadeAsync(site, channel); var siteUrl = await _pathManager.GetSiteUrlAsync(site, true); var groupNames = await _contentGroupRepository.GetGroupNamesAsync(request.SiteId); var tagNames = await _contentTagRepository.GetTagNamesAsync(request.SiteId); var allLevels = CheckManager.GetCheckedLevels(site, true, site.CheckContentLevel, true); var levels = new List <KeyValuePair <int, string> >(); foreach (var level in allLevels) { if (level.Key == CheckManager.LevelInt.CaoGao || level.Key > 0) { continue; } levels.Add(level); } var checkedLevels = ElementUtils.GetCheckBoxes(levels); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.CheckContents); return(new TreeResult { Root = root, SiteUrl = siteUrl, GroupNames = groupNames, TagNames = tagNames, CheckedLevels = checkedLevels, Columns = columns }); }
public async Task CreateExcelFileForContentsAsync(string filePath, Site site, Channel channel, IEnumerable <int> contentIdList, List <string> displayAttributes, bool isPeriods, string startDate, string endDate, bool?checkedState) { DirectoryUtils.CreateDirectoryIfNotExists(DirectoryUtils.GetDirectoryPath(filePath)); FileUtils.DeleteFileIfExists(filePath); var head = new List <string>(); var rows = new List <List <string> >(); var styles = ColumnsManager.GetContentListStyles(await _databaseManager.TableStyleRepository.GetContentStylesAsync(site, channel)); foreach (var style in styles) { if (displayAttributes.Contains(style.AttributeName)) { head.Add(style.DisplayName); } } if (contentIdList == null) { contentIdList = await _databaseManager.ContentRepository.GetContentIdsAsync(site, channel, isPeriods, startDate, endDate, checkedState); } foreach (var contentId in contentIdList) { var contentInfo = await _databaseManager.ContentRepository.GetAsync(site, channel, contentId); if (contentInfo != null) { var row = new List <string>(); foreach (var style in styles) { if (displayAttributes.Contains(style.AttributeName)) { var value = contentInfo.Get <string>(style.AttributeName); row.Add(StringUtils.StripTags(value)); } } rows.Add(row); } } CsvUtils.Export(filePath, head, rows); }
public async Task <ActionResult <GetResult> > Get([FromQuery] SiteRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, Types.SitePermissions.SettingsSite)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); var entity = new Entity(); var styles = await GetInputStylesAsync(request.SiteId); foreach (var style in styles) { if (style.InputType == InputType.Image || style.InputType == InputType.Video || style.InputType == InputType.File) { var count = site.Get(ColumnsManager.GetCountName(style.AttributeName), 0); entity.Set(ColumnsManager.GetCountName(style.AttributeName), count); for (var n = 0; n <= count; n++) { var extendName = ColumnsManager.GetExtendName(style.AttributeName, n); entity.Set(extendName, site.Get(extendName)); } } else if (style.InputType == InputType.CheckBox || style.InputType == InputType.SelectMultiple) { var list = ListUtils.GetStringList(site.Get(style.AttributeName, string.Empty)); entity.Set(style.AttributeName, list); } else { entity.Set(style.AttributeName, site.Get(style.AttributeName)); } } var siteUrl = await _pathManager.GetSiteUrlAsync(site, true); return(new GetResult { SiteUrl = StringUtils.TrimEndSlash(siteUrl), Entity = entity, Styles = styles }); }
public async Task <ActionResult <GetResult> > Get([FromQuery] GetRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.View)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(NotFound()); } var content = await _contentRepository.GetAsync(site, channel, request.ContentId); if (content == null) { return(NotFound()); } content.Set(ColumnsManager.CheckState, CheckManager.GetCheckState(site, content)); var channelName = await _channelRepository.GetChannelNameNavigationAsync(request.SiteId, request.ChannelId); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var attributes = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); return(new GetResult { Content = content, ChannelName = channelName, Attributes = attributes }); }
void Start() { if (instance == null) { instance = this; } else { Destroy(gameObject); } pos = new Vector3(-4.7f, 2.0f, -0.05f); columns = new List <Column>(); for (int i = 0; i < GameConfig.columnsNum; i++) { columns.Add(Instantiate(columnPrefab, pos, new Quaternion(0, 0, 0, 1), transform).GetComponent <Column>()); pos.x += 2.0f; } PrepareCards(); }
public async Task <ActionResult <TreeResult> > Tree([FromBody] SiteRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.ContentsRecycle)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.SiteId); var root = await _channelRepository.GetCascadeAsync(site, channel); var siteUrl = await _pathManager.GetSiteUrlAsync(site, true); var groupNames = await _contentGroupRepository.GetGroupNamesAsync(request.SiteId); var tagNames = await _contentTagRepository.GetTagNamesAsync(request.SiteId); var checkedLevels = ElementUtils.GetCheckBoxes(CheckManager.GetCheckedLevels(site, true, site.CheckContentLevel, true)); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.RecycleContents); return(new TreeResult { Root = root, SiteUrl = siteUrl, GroupNames = groupNames, TagNames = tagNames, CheckedLevels = checkedLevels, Columns = columns }); }
public async Task CreateExcelFileForContentsAsync(string filePath, Site site, Channel channel, List <Content> contentInfoList, List <string> columnNames) { DirectoryUtils.CreateDirectoryIfNotExists(DirectoryUtils.GetDirectoryPath(filePath)); FileUtils.DeleteFileIfExists(filePath); var head = new List <string>(); var rows = new List <List <string> >(); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); foreach (var column in columns) { if (ListUtils.ContainsIgnoreCase(columnNames, column.AttributeName)) { head.Add(column.DisplayName); } } foreach (var contentInfo in contentInfoList) { var row = new List <string>(); foreach (var column in columns) { if (ListUtils.ContainsIgnoreCase(columnNames, column.AttributeName)) { var value = contentInfo.Get <string>(column.AttributeName); row.Add(StringUtils.StripTags(value)); } } rows.Add(row); } CsvUtils.Export(filePath, head, rows); }
public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request) { if (!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); if (channel == null) { return(NotFound()); } var styles = await _tableStyleRepository.GetContentStylesAsync(site, channel); var isChecked = request.CheckedLevel >= site.CheckContentLevel; var adminId = _authManager.AdminId; var userId = _authManager.UserId; var contentIdList = new List <int>(); foreach (var file in request.Files) { if (string.IsNullOrEmpty(file.FileName) || string.IsNullOrEmpty(file.Title)) { continue; } var filePath = _pathManager.GetTemporaryFilesPath(file.FileName); var(title, imageUrl, content) = await WordManager.GetWordAsync(_pathManager, site, request.IsFirstLineTitle, request.IsClearFormat, request.IsFirstLineIndent, request.IsClearFontSize, request.IsClearFontFamily, request.IsClearImages, filePath, file.Title); if (string.IsNullOrEmpty(title)) { continue; } var dict = await ColumnsManager.SaveAttributesAsync(_pathManager, site, styles, new NameValueCollection(), ColumnsManager.MetadataAttributes.Value); var contentInfo = new Content { ChannelId = channel.Id, SiteId = request.SiteId, AddDate = DateTime.Now, SourceId = SourceManager.User, AdminId = adminId, UserId = userId, LastEditAdminId = adminId, Checked = isChecked, CheckedLevel = request.CheckedLevel }; contentInfo.LoadDict(dict); contentInfo.Title = title; contentInfo.ImageUrl = imageUrl; contentInfo.Body = content; contentInfo.Id = await _contentRepository.InsertAsync(site, channel, contentInfo); contentIdList.Add(contentInfo.Id); } if (isChecked) { foreach (var contentId in contentIdList) { await _createManager.CreateContentAsync(request.SiteId, channel.Id, contentId); } await _createManager.TriggerContentChangedEventAsync(request.SiteId, channel.Id); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <ListResult> > List([FromBody] ListRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Contents) || !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.View, MenuUtils.ContentPermissions.Add, MenuUtils.ContentPermissions.Edit, MenuUtils.ContentPermissions.Delete, MenuUtils.ContentPermissions.Translate, MenuUtils.ContentPermissions.Arrange, MenuUtils.ContentPermissions.CheckLevel1, MenuUtils.ContentPermissions.CheckLevel2, MenuUtils.ContentPermissions.CheckLevel3, MenuUtils.ContentPermissions.CheckLevel4, MenuUtils.ContentPermissions.CheckLevel5)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(this.Error("无法确定内容对应的栏目")); } var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); var pageContents = new List <Content>(); List <ContentSummary> summaries; if (!string.IsNullOrEmpty(request.SearchType) && !string.IsNullOrEmpty(request.SearchText) || request.IsAdvanced) { summaries = await _contentRepository.Search(site, channel, channel.IsAllContents, request.SearchType, request.SearchText, request.IsAdvanced, request.CheckedLevels, request.IsTop, request.IsRecommend, request.IsHot, request.IsColor, request.GroupNames, request.TagNames); } else { summaries = await _contentRepository.GetSummariesAsync(site, channel, channel.IsAllContents); } var total = summaries.Count; var channelPlugins = _pluginManager.GetPlugins(request.SiteId, request.ChannelId); var contentMenus = new List <Menu>(); foreach (var plugin in channelPlugins) { var pluginMenus = plugin.GetMenus() .Where(x => ListUtils.ContainsIgnoreCase(x.Type, Types.Resources.Content)).ToList(); if (pluginMenus.Count == 0) { continue; } contentMenus.AddRange(pluginMenus); } if (total > 0) { var offset = site.PageSize * (request.Page - 1); var pageSummaries = summaries.Skip(offset).Take(site.PageSize).ToList(); var sequence = offset + 1; foreach (var summary in pageSummaries) { var content = await _contentRepository.GetAsync(site, summary.ChannelId, summary.Id); if (content == null) { continue; } var pageContent = await columnsManager.CalculateContentListAsync(sequence ++, site, request.ChannelId, content, columns); pageContents.Add(pageContent); } } var(isChecked, checkedLevel) = await CheckManager.GetUserCheckLevelAsync(_authManager, site, request.ChannelId); var checkedLevels = ElementUtils.GetCheckBoxes(CheckManager.GetCheckedLevels(site, isChecked, checkedLevel, true)); var permissions = new Permissions { IsAdd = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Add), IsDelete = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Delete), IsEdit = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Edit), IsArrange = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Arrange), IsTranslate = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Translate), IsCheck = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.CheckLevel1), IsCreate = await _authManager.HasSitePermissionsAsync(site.Id, MenuUtils.SitePermissions.CreateContents) || await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Create), IsChannelEdit = await _authManager.HasChannelPermissionsAsync(site.Id, channel.Id, MenuUtils.ChannelPermissions.Edit) }; return(new ListResult { PageContents = pageContents, Total = total, PageSize = site.PageSize, Columns = columns, IsAllContents = channel.IsAllContents, CheckedLevels = checkedLevels, Permissions = permissions, Menus = contentMenus }); }
public async Task <ActionResult <SubmitResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, Types.ContentPermissions.View)) { return(Unauthorized()); } var summaries = ContentUtility.ParseSummaries(request.ChannelContentIds); var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(request.ChannelId); if (channel == null) { return(this.Error("无法确定内容对应的栏目")); } var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.Contents); var contentInfoList = new List <Content>(); var calculatedContentInfoList = new List <Content>(); if (summaries.Count == 0) { var ccIds = await _contentRepository.GetSummariesAsync(site, channel, channel.IsAllContents); var count = ccIds.Count; var pages = Convert.ToInt32(Math.Ceiling((double)count / site.PageSize)); if (pages == 0) { pages = 1; } if (count > 0) { for (var page = 1; page <= pages; page++) { var offset = site.PageSize * (page - 1); var limit = site.PageSize; var pageCcIds = ccIds.Skip(offset).Take(limit).ToList(); var sequence = offset + 1; foreach (var channelContentId in pageCcIds) { var contentInfo = await _contentRepository.GetAsync(site, channelContentId.ChannelId, channelContentId.Id); if (contentInfo == null) { continue; } if (!request.IsAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.Checked) { checkedLevel = site.CheckContentLevel; } if (!request.CheckedLevelKeys.Contains(checkedLevel)) { continue; } } if (!request.IsAllDate) { if (contentInfo.AddDate < request.StartDate || contentInfo.AddDate > request.EndDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(await columnsManager.CalculateContentListAsync(sequence++, site, request.ChannelId, contentInfo, columns)); } } } } else { var sequence = 1; foreach (var channelContentId in summaries) { var contentInfo = await _contentRepository.GetAsync(site, channelContentId.ChannelId, channelContentId.Id); if (contentInfo == null) { continue; } if (!request.IsAllCheckedLevel) { var checkedLevel = contentInfo.CheckedLevel; if (contentInfo.Checked) { checkedLevel = site.CheckContentLevel; } if (!request.CheckedLevelKeys.Contains(checkedLevel)) { continue; } } if (!request.IsAllDate) { if (contentInfo.AddDate < request.StartDate || contentInfo.AddDate > request.EndDate) { continue; } } contentInfoList.Add(contentInfo); calculatedContentInfoList.Add(await columnsManager.CalculateContentListAsync(sequence++, site, request.ChannelId, contentInfo, columns)); } } var downloadUrl = string.Empty; if (contentInfoList.Count > 0) { if (request.ExportType == "zip") { var fileName = $"{channel.ChannelName}.zip"; var filePath = _pathManager.GetTemporaryFilesPath(fileName); var caching = new CacheUtils(_cacheManager); var exportObject = new ExportObject(_pathManager, _databaseManager, caching, site); contentInfoList.Reverse(); if (await exportObject.ExportContentsAsync(filePath, contentInfoList)) { downloadUrl = _pathManager.GetTemporaryFilesUrl(fileName); } } else if (request.ExportType == "excel") { var exportColumnNames = request.IsAllColumns ? columns.Select(x => x.AttributeName).ToList() : request.ColumnNames; var fileName = $"{channel.ChannelName}.csv"; var filePath = _pathManager.GetTemporaryFilesPath(fileName); var excelObject = new ExcelObject(_databaseManager, _pathManager); await excelObject.CreateExcelFileForContentsAsync(filePath, site, channel, calculatedContentInfoList, exportColumnNames); downloadUrl = _pathManager.GetTemporaryFilesUrl(fileName); } } return(new SubmitResult { Value = downloadUrl, IsSuccess = !string.IsNullOrEmpty(downloadUrl) }); }
private static async Task <string> ParseImplAsync(IParseManager parseManager, string type, int no, string src, bool isFileName, bool isFileType, bool isFileSize, bool isCount, bool isLower, bool isUpper, string leftText, string rightText, NameValueCollection attributes) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; if (!string.IsNullOrEmpty(contextInfo.InnerHtml)) { var innerBuilder = new StringBuilder(contextInfo.InnerHtml); await parseManager.ParseInnerContentAsync(innerBuilder); contextInfo.InnerHtml = innerBuilder.ToString(); } var contentInfo = await parseManager.GetContentAsync(); var fileUrl = string.Empty; if (!string.IsNullOrEmpty(src)) { fileUrl = src; } else { if (contextInfo.ContextType == ParseType.Undefined) { contextInfo.ContextType = ParseType.Content; } if (contextInfo.ContextType == ParseType.Content) { if (contextInfo.ContentId != 0) { if (!string.IsNullOrEmpty(contentInfo?.Get <string>(type))) { if (no <= 1) { fileUrl = contentInfo.Get <string>(type); } else { var extendName = ColumnsManager.GetExtendName(type, no - 1); fileUrl = contentInfo.Get <string>(extendName); } } } } else if (contextInfo.ContextType == ParseType.Each) { fileUrl = contextInfo.ItemContainer.EachItem.Value as string; } } string parsedContent; if (isFileName) { parsedContent = PathUtils.RemoveExtension(PageUtils.GetFileNameFromUrl(fileUrl)); if (isLower) { parsedContent = StringUtils.ToLower(parsedContent); } if (isUpper) { parsedContent = StringUtils.ToUpper(parsedContent); } } else if (isFileType) { var filePath = await parseManager.PathManager.ParseSitePathAsync(pageInfo.Site, fileUrl); parsedContent = PathUtils.GetExtension(filePath).Trim('.'); if (isLower) { parsedContent = StringUtils.ToLower(parsedContent); } if (isUpper) { parsedContent = StringUtils.ToUpper(parsedContent); } } else if (isFileSize) { var filePath = await parseManager.PathManager.ParseSitePathAsync(pageInfo.Site, fileUrl); parsedContent = FileUtils.GetFileSizeByFilePath(filePath); } else if (isCount) { parsedContent = (contentInfo?.Downloads ?? 0).ToString(); } else { var inputParser = new InputParserManager(parseManager.PathManager); parsedContent = contentInfo != null ? inputParser.GetFileHtmlWithCount(pageInfo.Site, contentInfo.ChannelId, contentInfo.Id, fileUrl, attributes, contextInfo.InnerHtml, contextInfo.IsStlEntity, isLower, isUpper) : inputParser.GetFileHtmlWithoutCount(pageInfo.Site, fileUrl, attributes, contextInfo.InnerHtml, contextInfo.IsStlEntity, isLower, isUpper); } if (!string.IsNullOrEmpty(parsedContent)) { parsedContent = leftText + parsedContent + rightText; } return(parsedContent); }
public async Task <ActionResult <ChannelResult> > Get(int siteId, int channelId) { if (!await _authManager.HasSitePermissionsAsync(siteId, MenuUtils.SitePermissions.Channels)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(siteId); if (site == null) { return(NotFound()); } var channel = await _channelRepository.GetAsync(channelId); var styles = await GetStylesAsync(channel); var entity = new Entity(channel.ToDictionary()); foreach (var style in styles) { if (style.InputType == InputType.Image || style.InputType == InputType.Video || style.InputType == InputType.File) { var count = channel.Get(ColumnsManager.GetCountName(style.AttributeName), 0); entity.Set(ColumnsManager.GetCountName(style.AttributeName), count); for (var n = 0; n <= count; n++) { var extendName = ColumnsManager.GetExtendName(style.AttributeName, n); entity.Set(extendName, channel.Get(extendName)); } } else if (style.InputType == InputType.CheckBox || style.InputType == InputType.SelectMultiple) { var list = ListUtils.GetStringList(channel.Get(style.AttributeName, string.Empty)); entity.Set(style.AttributeName, list); } else if (style.InputType == InputType.TextEditor) { var value = channel.Get(style.AttributeName, string.Empty); value = await _pathManager.DecodeTextEditorAsync(site, value, true); value = UEditorUtils.TranslateToHtml(value); entity.Set(style.AttributeName, value); } else { entity.Set(style.AttributeName, channel.Get(style.AttributeName)); } } var filePath = channel.FilePath; var channelFilePathRule = channel.ChannelFilePathRule; var contentFilePathRule = channel.ContentFilePathRule; return(new ChannelResult { Entity = entity, Styles = styles, FilePath = filePath, ChannelFilePathRule = channelFilePathRule, ContentFilePathRule = contentFilePathRule }); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return(ColumnsManager.GetInitialColumnHeader((GridColumnSettings)value)); }
private static async Task <object> ParseImplAsync(IParseManager parseManager, NameValueCollection attributes, bool isGetPicUrlFromAttribute, string channelIndex, string channelName, int upLevel, int topLevel, string type, int no, bool isOriginal, string src, string altSrc) { var databaseManager = parseManager.DatabaseManager; var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; object parsedContent = null; var contentId = 0; //判断是否图片地址由标签属性获得 if (!isGetPicUrlFromAttribute) { contentId = contextInfo.ContentId; } var contextType = contextInfo.ContextType; var picUrl = string.Empty; if (!string.IsNullOrEmpty(src)) { picUrl = src; } else { if (contextType == ParseType.Undefined) { contextType = contentId != 0 ? ParseType.Content : ParseType.Channel; } if (contextType == ParseType.Content)//获取内容图片 { var contentInfo = await parseManager.GetContentAsync(); if (isOriginal) { if (contentInfo != null && contentInfo.ReferenceId > 0 && contentInfo.SourceId > 0) { var targetChannelId = contentInfo.SourceId; //var targetSiteId = databaseManager.ChannelRepository.GetSiteId(targetChannelId); var targetSiteId = await databaseManager.ChannelRepository.GetSiteIdAsync(targetChannelId); var targetSite = await databaseManager.SiteRepository.GetAsync(targetSiteId); var targetNodeInfo = await databaseManager.ChannelRepository.GetAsync(targetChannelId); //var targetContentInfo = databaseManager.ContentRepository.GetContentInfo(tableStyle, tableName, contentInfo.ReferenceId); var targetContentInfo = await databaseManager.ContentRepository.GetAsync(targetSite, targetNodeInfo, contentInfo.ReferenceId); if (targetContentInfo != null && targetContentInfo.ChannelId > 0) { contentInfo = targetContentInfo; } } } if (contentInfo == null) { contentInfo = await databaseManager.ContentRepository.GetAsync(pageInfo.Site, contextInfo.ChannelId, contentId); } if (contentInfo != null) { if (no <= 1) { picUrl = contentInfo.Get <string>(type); } else { var extendName = ColumnsManager.GetExtendName(type, no - 1); picUrl = contentInfo.Get <string>(extendName); } } } else if (contextType == ParseType.Channel)//获取栏目图片 { var dataManager = new StlDataManager(parseManager.DatabaseManager); var channelId = await dataManager.GetChannelIdByLevelAsync(pageInfo.SiteId, contextInfo.ChannelId, upLevel, topLevel); channelId = await dataManager.GetChannelIdByChannelIdOrChannelIndexOrChannelNameAsync(pageInfo.SiteId, channelId, channelIndex, channelName); var channel = await databaseManager.ChannelRepository.GetAsync(channelId); picUrl = channel.ImageUrl; } else if (contextType == ParseType.Each) { picUrl = contextInfo.ItemContainer.EachItem.Value as string; } } if (string.IsNullOrEmpty(picUrl)) { picUrl = altSrc; } if (!string.IsNullOrEmpty(picUrl)) { var extension = PathUtils.GetExtension(picUrl); if (FileUtils.IsFlash(extension)) { parsedContent = await StlFlash.ParseAsync(parseManager); } else if (FileUtils.IsPlayer(extension)) { parsedContent = await StlPlayer.ParseAsync(parseManager); } else { attributes["src"] = await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, picUrl, pageInfo.IsLocal); parsedContent = $@"<img {TranslateUtils.ToAttributesString(attributes)}>"; } } return(parsedContent); }
private static async Task <object> ParseAsync(IParseManager parseManager, NameValueCollection attributes, bool isGetPicUrlFromAttribute, string channelIndex, string channelName, int upLevel, int topLevel, string type, int no, bool isOriginal, bool isClearTags, string src, string altSrc) { var databaseManager = parseManager.DatabaseManager; var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; var contentId = 0; if (!isGetPicUrlFromAttribute) { contentId = contextInfo.ContentId; } var contextType = contextInfo.ContextType; var picUrl = string.Empty; if (!string.IsNullOrEmpty(src)) { picUrl = src; } else { if (contextType == ParseType.Undefined) { contextType = contentId != 0 ? ParseType.Content : ParseType.Channel; } if (contextType == ParseType.Content) { var contentInfo = await parseManager.GetContentAsync(); if (isOriginal) { if (contentInfo != null && contentInfo.ReferenceId > 0 && contentInfo.SourceId > 0) { var targetChannelId = contentInfo.SourceId; var targetSiteId = await databaseManager.ChannelRepository.GetSiteIdAsync(targetChannelId); var targetSite = await databaseManager.SiteRepository.GetAsync(targetSiteId); var targetNodeInfo = await databaseManager.ChannelRepository.GetAsync(targetChannelId); var targetContentInfo = await databaseManager.ContentRepository.GetAsync(targetSite, targetNodeInfo, contentInfo.ReferenceId); if (targetContentInfo != null && targetContentInfo.ChannelId > 0) { contentInfo = targetContentInfo; } } } if (contentInfo == null) { contentInfo = await databaseManager.ContentRepository.GetAsync(pageInfo.Site, contextInfo.ChannelId, contentId); } if (contentInfo != null) { if (no <= 1) { picUrl = contentInfo.Get <string>(type); } else { var extendName = ColumnsManager.GetExtendName(type, no - 1); picUrl = contentInfo.Get <string>(extendName); } } } else if (contextType == ParseType.Channel) //获取栏目图片 { var dataManager = new StlDataManager(parseManager.DatabaseManager); var channelId = await dataManager.GetChannelIdByLevelAsync(pageInfo.SiteId, contextInfo.ChannelId, upLevel, topLevel); channelId = await dataManager.GetChannelIdByChannelIdOrChannelIndexOrChannelNameAsync( pageInfo.SiteId, channelId, channelIndex, channelName); var channel = await databaseManager.ChannelRepository.GetAsync(channelId); if (no <= 1) { picUrl = channel.Get <string>(type); } else { var extendName = ColumnsManager.GetExtendName(type, no - 1); picUrl = channel.Get <string>(extendName); } } else if (contextType == ParseType.Each) { picUrl = contextInfo.ItemContainer.EachItem.Value as string; } } if (string.IsNullOrEmpty(picUrl)) { picUrl = altSrc; } if (string.IsNullOrEmpty(picUrl)) { return(string.Empty); } var extension = PathUtils.GetExtension(picUrl); if (FileUtils.IsFlash(extension)) { return(await StlPdf.ParseAsync(parseManager)); } if (FileUtils.IsPlayer(extension)) { return(await StlPlayer.ParseAsync(parseManager)); } picUrl = await parseManager.PathManager.ParseSiteUrlAsync(pageInfo.Site, picUrl, pageInfo.IsLocal); if (isClearTags || contextInfo.IsStlEntity) { return(picUrl); } attributes["src"] = picUrl; var parsedContent = string.Empty; if (pageInfo.EditMode == EditMode.Visual) { var elementId = StringUtils.GetElementId(); VisualUtility.AddEditableToAttributes(attributes, elementId, contextInfo.ElementName); parsedContent = GetParsedContent(attributes); VisualUtility.AddEditableToPage(pageInfo, elementId, contextInfo, parsedContent); } else { parsedContent = GetParsedContent(attributes); } return(parsedContent); }
public async Task <ActionResult <GetResult> > Get() { var siteIds = await _authManager.GetSiteIdsAsync(); if (siteIds.Count == 0) { return(new GetResult { Unauthorized = true }); } var sites = new List <Select <int> >(); foreach (var siteId in siteIds) { var permissionSite = await _siteRepository.GetAsync(siteId); sites.Add(new Select <int> { Value = permissionSite.Id, Label = permissionSite.SiteName }); } var site = await _siteRepository.GetAsync(siteIds[0]); var channel = await _channelRepository.GetAsync(site.Id); var root = await _channelRepository.GetCascadeAsync(site, channel, async summary => { var count = await _contentRepository.GetCountAsync(site, summary); return(new { Count = count }); }); var siteUrl = await _pathManager.GetSiteUrlAsync(site, true); var groupNames = await _contentGroupRepository.GetGroupNamesAsync(site.Id); var tagNames = await _contentTagRepository.GetTagNamesAsync(site.Id); var checkedLevels = ElementUtils.GetCheckBoxes(CheckManager.GetCheckedLevels(site, true, site.CheckContentLevel, true)); var columnsManager = new ColumnsManager(_databaseManager, _pathManager); var columns = await columnsManager.GetContentListColumnsAsync(site, channel, ColumnsManager.PageType.SearchContents); var permissions = new GetPermissions { IsAdd = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Add), IsDelete = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Delete), IsEdit = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Edit), IsArrange = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Arrange), IsTranslate = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Translate), IsCheck = await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.CheckLevel1), IsCreate = await _authManager.HasSitePermissionsAsync(site.Id, MenuUtils.SitePermissions.CreateContents) || await _authManager.HasContentPermissionsAsync(site.Id, channel.Id, MenuUtils.ContentPermissions.Create), IsChannelEdit = await _authManager.HasChannelPermissionsAsync(site.Id, channel.Id, MenuUtils.ChannelPermissions.Edit) }; return(new GetResult { Unauthorized = false, Sites = sites, SiteId = site.Id, SiteName = site.SiteName, SiteUrl = siteUrl, Root = root, GroupNames = groupNames, TagNames = tagNames, CheckedLevels = checkedLevels, Columns = columns, Permissions = permissions }); }
private static async Task <string> ParseImplAsync(IParseManager parseManager, string type, int no, string src, string fallbackLink, bool forceIframe, string height, int page, string width, bool full, NameValueCollection attributes) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; var elementId = StringUtils.GetElementId(); var contentInfo = await parseManager.GetContentAsync(); var fileUrl = string.Empty; if (!string.IsNullOrEmpty(src)) { fileUrl = src; } else { if (contextInfo.ContextType == ParseType.Undefined) { contextInfo.ContextType = ParseType.Content; } if (contextInfo.ContextType == ParseType.Content) { if (contextInfo.ContentId != 0) { if (!string.IsNullOrEmpty(contentInfo?.Get <string>(type))) { if (no <= 1) { fileUrl = contentInfo.Get <string>(type); } else { var extendName = ColumnsManager.GetExtendName(type, no - 1); fileUrl = contentInfo.Get <string>(extendName); } } } } else if (contextInfo.ContextType == ParseType.Each) { fileUrl = contextInfo.ItemContainer.EachItem.Value as string; } } await pageInfo.AddPageBodyCodeIfNotExistsAsync(ParsePage.Const.PdfObject); dynamic options = new { }; if (!string.IsNullOrEmpty(fallbackLink)) { options.fallbackLink = fallbackLink; } options.forceIframe = forceIframe; if (page > 0) { options.page = page; } if (full) { return($@"<script>PDFObject.embed(""{fileUrl}"", document.body, {JsonConvert.SerializeObject(options)});</script>"); } if (!string.IsNullOrEmpty(height)) { options.height = height; } if (!string.IsNullOrEmpty(width)) { options.width = width; } attributes["id"] = elementId; return($@"<div {TranslateUtils.ToAttributesString(attributes)}></div><script>PDFObject.embed(""{fileUrl}"", ""#{elementId}"", {JsonConvert.SerializeObject(options)});</script>"); }
public async Task <ActionResult <List <int> > > Edit([FromBody] PutRequest request) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.Channels)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(NotFound()); } if (string.IsNullOrEmpty(request.ChannelName)) { return(this.Error("栏目修改失败,必须填写栏目名称!")); } var channel = await _channelRepository.GetAsync(request.Id); if (!StringUtils.Equals(channel.IndexName, request.IndexName) && !string.IsNullOrEmpty(request.IndexName)) { if (await _channelRepository.IsIndexNameExistsAsync(request.SiteId, request.IndexName)) { return(this.Error("栏目修改失败,栏目索引已存在!")); } } if (!StringUtils.Equals(channel.FilePath, request.FilePath) && !string.IsNullOrEmpty(request.FilePath)) { if (!DirectoryUtils.IsDirectoryNameCompliant(request.FilePath)) { return(this.Error("栏目页面路径不符合系统要求!")); } if (PathUtils.IsDirectoryPath(request.FilePath)) { request.FilePath = PageUtils.Combine(request.FilePath, "index.html"); } if (await _channelRepository.IsFilePathExistsAsync(request.SiteId, request.FilePath)) { return(this.Error("栏目修改失败,栏目页面路径已存在!")); } } if (!string.IsNullOrEmpty(request.ChannelFilePathRule)) { var filePathRule = request.ChannelFilePathRule.Replace("|", string.Empty); if (!DirectoryUtils.IsDirectoryNameCompliant(filePathRule)) { return(this.Error("栏目页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePathRule)) { return(this.Error("栏目页面命名规则必须包含生成文件的后缀!")); } } if (!string.IsNullOrEmpty(request.ContentFilePathRule)) { var filePathRule = request.ContentFilePathRule.Replace("|", string.Empty); if (!DirectoryUtils.IsDirectoryNameCompliant(filePathRule)) { return(this.Error("内容页面命名规则不符合系统要求!")); } if (PathUtils.IsDirectoryPath(filePathRule)) { return(this.Error("内容页面命名规则必须包含生成文件的后缀!")); } } var styles = await GetInputStylesAsync(channel); foreach (var style in styles) { var inputType = style.InputType; if (inputType == InputType.TextEditor) { var value = request.Get(style.AttributeName, string.Empty); value = await _pathManager.EncodeTextEditorAsync(site, value); value = UEditorUtils.TranslateToStlElement(value); channel.Set(style.AttributeName, value); } else if (inputType == InputType.Image || inputType == InputType.Video || inputType == InputType.File) { var count = request.Get(ColumnsManager.GetCountName(style.AttributeName), 0); channel.Set(ColumnsManager.GetCountName(style.AttributeName), count); for (var n = 0; n <= count; n++) { channel.Set(ColumnsManager.GetExtendName(style.AttributeName, n), request.Get(ColumnsManager.GetExtendName(style.AttributeName, n), string.Empty)); } } else if (inputType == InputType.CheckBox || style.InputType == InputType.SelectMultiple) { var list = request.Get <List <object> >(style.AttributeName); channel.Set(style.AttributeName, ListUtils.ToString(list)); } else { var value = request.Get(style.AttributeName, string.Empty); channel.Set(style.AttributeName, value); } } channel.ChannelName = request.ChannelName; channel.IndexName = request.IndexName; channel.GroupNames = request.GroupNames; //channel.Content = request.Content; channel.ChannelTemplateId = request.ChannelTemplateId; channel.ContentTemplateId = request.ContentTemplateId; channel.LinkUrl = request.LinkUrl; channel.LinkType = request.LinkType; channel.DefaultTaxisType = request.DefaultTaxisType; channel.FilePath = request.FilePath; channel.ChannelFilePathRule = request.ChannelFilePathRule; channel.ContentFilePathRule = request.ContentFilePathRule; channel.Keywords = request.Keywords; channel.Description = request.Description; await _channelRepository.UpdateAsync(channel); var expendedChannelIds = new List <int> { request.SiteId }; if (!expendedChannelIds.Contains(channel.ParentId)) { expendedChannelIds.Add(channel.ParentId); } return(expendedChannelIds); }