public async Task <ActionResult <BoolResult> > Delete([FromBody] DeleteRequest request) { if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSitesTemplates)) { return(Unauthorized()); } var caching = new CacheUtils(_cacheManager); var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); if (!string.IsNullOrEmpty(request.DirectoryName)) { manager.DeleteSiteTemplate(request.DirectoryName); await _authManager.AddAdminLogAsync("删除站点模板", $"站点模板:{request.DirectoryName}"); } if (!string.IsNullOrEmpty(request.FileName)) { manager.DeleteZipSiteTemplate(request.FileName); await _authManager.AddAdminLogAsync("删除未解压站点模板", $"站点模板:{request.FileName}"); } return(new BoolResult { Value = true }); }
public async Task <ActionResult <BoolResult> > SaveData([FromBody] SaveRequest request) { if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSites)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); var siteTemplatePath = _pathManager.GetSiteTemplatesPath(request.TemplateDir); var siteContentDirectoryPath = _pathManager.GetSiteTemplateMetadataPath(siteTemplatePath, DirectoryUtils.SiteFiles.SiteTemplates.SiteContent); var caching = new CacheUtils(_cacheManager); var exportObject = new ExportObject(_pathManager, _databaseManager, caching, site); await exportObject.ExportSiteContentAsync(siteContentDirectoryPath, request.IsSaveContents, request.IsSaveAllChannels, request.CheckedChannelIds); await SiteTemplateManager.ExportSiteToSiteTemplateAsync(_pathManager, _databaseManager, caching, site, request.TemplateDir); var siteTemplateInfo = new SiteTemplateInfo { SiteTemplateName = request.TemplateName, PicFileName = string.Empty, WebSiteUrl = request.WebSiteUrl, Description = request.Description }; var xmlPath = _pathManager.GetSiteTemplateMetadataPath(siteTemplatePath, DirectoryUtils.SiteFiles.SiteTemplates.FileMetadata); XmlUtils.SaveAsXml(siteTemplateInfo, xmlPath); return(new BoolResult { Value = true, }); }
public async Task <ActionResult <GetResult> > Get() { if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSitesAdd)) { return(Unauthorized()); } var caching = new CacheUtils(_cacheManager); var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); var siteTemplates = manager.GetSiteTemplateInfoList(); var tableNameList = await _siteRepository.GetSiteTableNamesAsync(); var rootExists = await _siteRepository.GetSiteByIsRootAsync() != null; var sites = await _siteRepository.GetCascadeChildrenAsync(0); sites.Insert(0, new Cascade <int> { Value = 0, Label = "<无上级站点>" }); var siteTypes = _settingsManager.GetSiteTypes(); return(new GetResult { SiteTypes = siteTypes, SiteTemplates = siteTemplates, RootExists = rootExists, Sites = sites, TableNameList = tableNameList, Guid = StringUtils.GetShortGuid(false) }); }
public SiteSettingsDataController(PageManager pageManager, SiteContext siteContext, SiteManager siteManager, ILogger <SecurityPoolManager> logger, ClientManager clientManager, IOptions <RequestLocalizationOptions> localizationOptions, SiteTemplateManager templateManager, DirectoryManager directoryManager) : base(logger) { _pageManager = pageManager; _siteManager = siteManager; _clientManager = clientManager; _localizationOptions = localizationOptions; _directoryManager = directoryManager; }
public async Task <ActionResult <SaveSettingsResult> > SaveSettings([FromBody] SaveRequest request) { if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSites)) { return(Unauthorized()); } var caching = new CacheUtils(_cacheManager); var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); if (manager.IsSiteTemplateDirectoryExists(request.TemplateDir)) { return(this.Error("站点模板文件夹已存在,请更换站点模板文件夹!")); } var site = await _siteRepository.GetAsync(request.SiteId); var sitePath = await _pathManager.GetSitePathAsync(site); var directoryNames = DirectoryUtils.GetDirectoryNames(sitePath); var directories = new List <string>(); var siteDirList = await _siteRepository.GetSiteDirsAsync(0); foreach (var directoryName in directoryNames) { var isSiteDirectory = false; if (site.Root) { foreach (var siteDir in siteDirList) { if (StringUtils.EqualsIgnoreCase(siteDir, directoryName)) { isSiteDirectory = true; } } } if (!isSiteDirectory && !_pathManager.IsSystemDirectory(directoryName)) { directories.Add(directoryName); } } var files = DirectoryUtils.GetFileNames(sitePath); return(new SaveSettingsResult { Directories = directories, Files = files }); }
private bool SaveSiteStyles(out string errorMessage) { errorMessage = string.Empty; try { SiteTemplateManager.ExportSiteToSiteTemplate(SiteInfo, TbSiteTemplateDir.Text, AuthRequest.AdminName); return(true); } catch (Exception e) { errorMessage = e.Message; return(false); } }
private bool SaveSiteStyles(out string errorMessage) { errorMessage = string.Empty; try { SiteTemplateManager.ExportPublishmentSystemToSiteTemplate(PublishmentSystemInfo, TbSiteTemplateDir.Text); return(true); } catch (Exception e) { errorMessage = e.Message; return(false); } }
private bool SaveSiteStyles(out string errorMessage) { errorMessage = string.Empty; try { SiteTemplateManager.ExportSiteToSiteTemplate(SiteInfo, TbSiteTemplateDir.Text); return true; } catch (Exception e) { errorMessage = e.Message; return false; } }
private async Task <ListResult> GetListResultAsync() { var caching = new CacheUtils(_cacheManager); var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); var siteTemplates = manager.GetSiteTemplateInfoList(); var siteTemplateInfoList = new List <SiteTemplateInfo>(); foreach (var siteTemplate in siteTemplates) { var directoryPath = _pathManager.GetSiteTemplatesPath(siteTemplate.DirectoryName); var dirInfo = new DirectoryInfo(directoryPath); if (string.IsNullOrEmpty(siteTemplate.SiteTemplateName)) { continue; } var filePath = _pathManager.GetSiteTemplatesPath(dirInfo.Name + ".zip"); siteTemplate.FileExists = FileUtils.IsFileExists(filePath); siteTemplateInfoList.Add(siteTemplate); } var fileNames = manager.GetZipSiteTemplateList(); var fileNameList = new List <string>(); foreach (var fileName in fileNames) { if (DirectoryUtils.IsDirectoryExists( _pathManager.GetSiteTemplatesPath(PathUtils.GetFileNameWithoutExtension(fileName)))) { continue; } var filePath = _pathManager.GetSiteTemplatesPath(fileName); var fileInfo = new FileInfo(filePath); fileNameList.Add(fileInfo.Name); } var siteTemplateUrl = StringUtils.TrimSlash(_pathManager.GetSiteTemplatesUrl(string.Empty)); var siteAddPermission = await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSitesAdd); return(new ListResult { SiteTemplateInfoList = siteTemplateInfoList, FileNameList = fileNameList, SiteTemplateUrl = siteTemplateUrl, SiteAddPermission = siteAddPermission }); }
public SiteMasterPageController ( PageSecurityService pageSecurity, PageMasterManager masterPageManager, ContentManager widgetManager, SiteTemplateManager templateManager, SiteContext siteContext, IContextAccessor <UserContext> userContextAccessor ) : base() { _pageSecurity = pageSecurity; _masterPageManager = masterPageManager; _templateManager = templateManager; _siteContext = siteContext; _contentManager = widgetManager; _userContextAccessor = userContextAccessor; }
public SiteContextResolver ( SiteManager siteManager, SiteTemplateManager templateManager, ClientManager clientManager, IOptions <SiteOptions> siteOptions, IMemoryCache cache, ILoggerFactory loggerFactory ) : base(cache, loggerFactory) { _siteOptions = siteOptions; _siteManager = siteManager; _clientManager = clientManager; _templateManager = templateManager; _logger = loggerFactory.CreateLogger("SiteContextResolver"); }
public async Task <ActionResult <IntResult> > Submit([FromBody] SubmitRequest request) { if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsSitesAdd)) { return(Unauthorized()); } if (!request.Root) { if (_pathManager.IsSystemDirectory(request.SiteDir)) { return(this.Error("文件夹名称不能为系统文件夹名称,请更改文件夹名称!")); } if (!DirectoryUtils.IsDirectoryNameCompliant(request.SiteDir)) { return(this.Error("文件夹名称不符合系统要求,请更改文件夹名称!")); } var sitePath = await _pathManager.GetSitePathAsync(request.ParentId); var directories = DirectoryUtils.GetDirectoryNames(sitePath); if (ListUtils.ContainsIgnoreCase(directories, request.SiteDir)) { return(this.Error("已存在相同的文件夹,请更改文件夹名称!")); } var list = await _siteRepository.GetSiteDirsAsync(request.ParentId); if (ListUtils.ContainsIgnoreCase(list, request.SiteDir)) { return(this.Error("已存在相同的站点文件夹,请更改文件夹名称!")); } } var channelInfo = new Channel(); channelInfo.ChannelName = channelInfo.IndexName = "首页"; channelInfo.ParentId = 0; channelInfo.ContentModelPluginId = string.Empty; var tableName = string.Empty; if (StringUtils.EqualsIgnoreCase(request.SiteType, Types.SiteTypes.Web) || StringUtils.EqualsIgnoreCase(request.SiteType, Types.SiteTypes.Wx)) { if (request.TableRule == TableRule.Choose) { tableName = request.TableChoose; } else if (request.TableRule == TableRule.HandWrite) { tableName = request.TableHandWrite; if (!await _settingsManager.Database.IsTableExistsAsync(tableName)) { await _contentRepository.CreateContentTableAsync(tableName, _contentRepository.GetTableColumns(tableName)); } else { await _settingsManager.Database.AlterTableAsync(tableName, _contentRepository.GetTableColumns(tableName)); } } } var adminId = _authManager.AdminId; var siteId = await _siteRepository.InsertSiteAsync(channelInfo, new Site { SiteName = request.SiteName, SiteType = request.SiteType, SiteDir = request.SiteDir, TableName = tableName, ParentId = request.ParentId, Root = request.Root }, adminId); if (string.IsNullOrEmpty(tableName)) { tableName = await _contentRepository.CreateNewContentTableAsync(); await _siteRepository.UpdateTableNameAsync(siteId, tableName); } if (await _authManager.IsSiteAdminAsync() && !await _authManager.IsSuperAdminAsync()) { var siteIdList = await _authManager.GetSiteIdsAsync() ?? new List <int>(); siteIdList.Add(siteId); var adminInfo = await _administratorRepository.GetByUserIdAsync(adminId); await _administratorRepository.UpdateSiteIdsAsync(adminInfo, siteIdList); } var caching = new CacheUtils(_cacheManager); var site = await _siteRepository.GetAsync(siteId); caching.SetProcess(request.Guid, "任务初始化..."); if (request.CreateType == "local") { var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); await manager.ImportSiteTemplateToEmptySiteAsync(site, request.LocalDirectoryName, request.IsImportContents, request.IsImportTableStyles, adminId, request.Guid); caching.SetProcess(request.Guid, "生成站点页面..."); await _createManager.CreateByAllAsync(site.Id); caching.SetProcess(request.Guid, "清除系统缓存..."); _cacheManager.Clear(); } else if (request.CreateType == "cloud") { caching.SetProcess(request.Guid, "开始下载模板压缩包,可能需要几分钟,请耐心等待..."); var filePath = _pathManager.GetSiteTemplatesPath($"T_{request.CloudThemeName}.zip"); FileUtils.DeleteFileIfExists(filePath); var downloadUrl = CloudUtils.Dl.GetThemesDownloadUrl(request.CloudThemeUserName, request.CloudThemeName); WebClientUtils.Download(downloadUrl, filePath); caching.SetProcess(request.Guid, "模板压缩包下载成功,开始解压缩,可能需要几分钟,请耐心等待..."); var siteTemplateDir = $"T_{request.CloudThemeName}"; var directoryPath = _pathManager.GetSiteTemplatesPath(siteTemplateDir); DirectoryUtils.DeleteDirectoryIfExists(directoryPath); _pathManager.ExtractZip(filePath, directoryPath); caching.SetProcess(request.Guid, "模板压缩包解压成功,正在导入数据..."); var manager = new SiteTemplateManager(_pathManager, _databaseManager, caching); await manager.ImportSiteTemplateToEmptySiteAsync(site, siteTemplateDir, request.IsImportContents, request.IsImportTableStyles, adminId, request.Guid); caching.SetProcess(request.Guid, "生成站点页面..."); await _createManager.CreateByAllAsync(site.Id); caching.SetProcess(request.Guid, "清除系统缓存..."); _cacheManager.Clear(); } return(new IntResult { Value = siteId }); }
public SiteController(SiteTemplateManager siteTemplateManager, ImportedSiteManager importedSiteManager) { _siteTemplateManager = siteTemplateManager; _importedSiteManager = importedSiteManager; }
public static async Task <(bool Success, string name, string filePath)> PackageAsync(IPathManager pathManager, ICacheManager cacheManager, IDatabaseManager databaseManager, string directory, bool isOverride) { var site = await databaseManager.SiteRepository.GetSiteByDirectoryAsync(directory); var sitePath = await pathManager.GetSitePathAsync(site); if (site == null || !DirectoryUtils.IsDirectoryExists(sitePath)) { await WriteUtils.PrintErrorAsync($@"Invalid site directory path: ""{directory}"""); return(false, null, null); } var readme = string.Empty; Theme theme = null; var readmePath = PathUtils.Combine(sitePath, "README.md"); if (FileUtils.IsFileExists(readmePath)) { readme = FileUtils.ReadText(readmePath); var yaml = MarkdownUtils.GetYamlFrontMatter(readme); if (!string.IsNullOrEmpty(yaml)) { readme = MarkdownUtils.RemoveYamlFrontMatter(readme); theme = YamlUtils.Deserialize <Theme>(yaml); } } var writeReadme = false; if (theme == null || string.IsNullOrEmpty(theme.Name) || string.IsNullOrEmpty(theme.CoverUrl)) { writeReadme = true; theme = new Theme { Name = ReadUtils.GetString("name:"), CoverUrl = ReadUtils.GetString("cover image url:"), Summary = ReadUtils.GetString("repository url:"), Tags = ReadUtils.GetStringList("tags:"), ThumbUrls = ReadUtils.GetStringList("thumb image urls:"), Compatibilities = ReadUtils.GetStringList("compatibilities:"), Price = ReadUtils.GetYesNo("is free?") ? 0 : ReadUtils.GetDecimal("price:"), }; } if (writeReadme) { readme = @$ "--- {YamlUtils.Serialize(theme)} --- " + readme; FileUtils.WriteText(readmePath, readme); } var packageName = "T_" + theme.Name.Replace(" ", "_"); var packagePath = pathManager.GetSiteTemplatesPath(packageName); var fileName = packageName + ".zip"; var filePath = pathManager.GetSiteTemplatesPath(fileName); if (!isOverride && FileUtils.IsFileExists(filePath)) { return(true, theme.Name, filePath); } FileUtils.DeleteFileIfExists(filePath); DirectoryUtils.DeleteDirectoryIfExists(packagePath); await Console.Out.WriteLineAsync($"Theme name: {theme.Name}"); await Console.Out.WriteLineAsync($"Theme folder: {packagePath}"); await Console.Out.WriteLineAsync("Theme packaging..."); var caching = new CacheUtils(cacheManager); var manager = new SiteTemplateManager(pathManager, databaseManager, caching); if (manager.IsSiteTemplateDirectoryExists(packageName)) { manager.DeleteSiteTemplate(packageName); } var directoryNames = DirectoryUtils.GetDirectoryNames(sitePath); var directories = new List <string>(); var siteDirList = await databaseManager.SiteRepository.GetSiteDirsAsync(0); foreach (var directoryName in directoryNames) { var isSiteDirectory = false; if (site.Root) { foreach (var siteDir in siteDirList) { if (StringUtils.EqualsIgnoreCase(siteDir, directoryName)) { isSiteDirectory = true; } } } if (!isSiteDirectory && !pathManager.IsSystemDirectory(directoryName)) { directories.Add(directoryName); } } var files = DirectoryUtils.GetFileNames(sitePath); var exportObject = new ExportObject(pathManager, databaseManager, caching, site); await exportObject.ExportFilesToSiteAsync(packagePath, true, directories, files, true); var siteContentDirectoryPath = pathManager.GetSiteTemplateMetadataPath(packagePath, DirectoryUtils.SiteFiles.SiteTemplates.SiteContent); await exportObject.ExportSiteContentAsync(siteContentDirectoryPath, true, true, new List <int>()); await SiteTemplateManager.ExportSiteToSiteTemplateAsync(pathManager, databaseManager, caching, site, packageName); var siteTemplateInfo = new SiteTemplateInfo { SiteTemplateName = theme.Name, PicFileName = string.Empty, WebSiteUrl = string.Empty, Description = string.Empty }; var xmlPath = pathManager.GetSiteTemplateMetadataPath(packagePath, DirectoryUtils.SiteFiles.SiteTemplates.FileMetadata); XmlUtils.SaveAsXml(siteTemplateInfo, xmlPath); pathManager.CreateZip(filePath, packagePath); return(true, theme.Name, filePath); }
public SiteTemplateController(SiteTemplateManager siteTemplateManager) { SiteTemplateManager = siteTemplateManager; }