protected void LoadSiteTemplates(List <Site> sites) { foreach (var site in sites) { site.SiteTemplate = _templateManager.GetTemplate(site.SiteTemplateId); } }
//TODO: Depricate this old version - use new version that accepts a list of files to decomple // from the template public async Task <ContentVersion> CreateInitialVersion(string pageMasterId, bool seedFromTemplate) { var masterPage = await _db.PageMasters .Include(x => x.Site) .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == pageMasterId); if (masterPage == null) { throw new NullReferenceException($"Cannot locate MasterPage {pageMasterId}"); } var siteTemplate = _templateManager.GetTemplate(masterPage.Site.SiteTemplateId); var pageTemplate = siteTemplate.PageTemplates.FirstOrDefault(x => x.Id == masterPage.TemplateId); var seedFiles = pageTemplate.SeedData?.Select(file => _coreOptions.FileSystemRoot + "\\" + siteTemplate.DataFolder + "\\" + file ); return(await CreateInitialVersion(pageMasterId, seedFiles.ToArray())); }
public async Task CreateInitialVersion(Site site) { // Set the site's client object if needed if (site.Client == null) { site.Client = await _clientManager.GetByIdAsync(site.ClientId); } // Get the site template _siteTemplate = _templateManager.GetTemplate(site.SiteTemplateId); _pageTemplates = _siteTemplate.PageTemplates; if (_siteTemplate.Schema == SiteTemplateExporter.CURRENT_SCHEMA) { // Site Templates contain master pages - use new logic var masterPageMap = CreateMasterPagesV1(site); var sitePageMap = CreateSitePagesV1(site, masterPageMap); // Site Templates contain navigation menus CreateSiteNavigationV1(site, sitePageMap); } else { // Create Pages & Content var masterPages = CreateMasterPagesV0(site); var sitePages = CreateSitePagesV0(site, masterPages); // Seed Navigation CreateSiteNavigationV0(site, sitePages); } // Seed Site Roles CreateSiteRoles(site); // Seed Site Css CreateSiteCss(site); // Seed Document Library await CreateLibraryAndRootFolder(site); }
public async Task ExportSiteAsTemplate(string siteId, string templateId, string templateTitle, string processId) { if (siteId == null) { throw new ArgumentNullException(nameof(siteId)); } if (string.IsNullOrWhiteSpace(templateId)) { throw new ArgumentNullException(nameof(templateId)); } if (string.IsNullOrWhiteSpace(templateTitle)) { throw new ArgumentNullException(nameof(templateTitle)); } templateId = templateId.Replace(" ", String.Empty).ToLower(); // Get the site and site template for common access _site = await _siteManager.GetByIdAsync(siteId); _baseTemplate = _templateManager.GetTemplate(_site.SiteTemplateId); // Set IO paths for common access _exportTemplateFolder = Path.Combine(_exportRootFolder, templateId); _exportDataFolder = Path.Combine(_exportTemplateFolder, SiteTemplate.DATA_FOLDER_NAME); _exportDefaultThemeFolder = Path.Combine(_exportTemplateFolder, SiteTemplate.THEMES_FOLDER_NAME, SiteTemplate.THEMES_DEFAULT_NAME); _baseTemplateFolder = Path.Combine(_coreOptions.FileSystemRoot, _baseTemplate.TemplateFolder.Replace("/", @"\")); _baseDefaultThemeFolder = Path.Combine(_baseTemplateFolder, SiteTemplate.THEMES_FOLDER_NAME, SiteTemplate.THEMES_DEFAULT_NAME); _logger.SetCategory("Jobs.ExportTemplate", processId ?? Guid.NewGuid().ToString()); _logger.Log($"Exporting site {_site.Title} as Template {templateTitle}, version {CURRENT_SCHEMA}"); // Initialize a new template to export _exportTemplate = new SiteTemplate() { Schema = CURRENT_SCHEMA, Id = templateId, Title = templateTitle, PageTemplates = new List <PageTemplate>(), Pages = new List <SiteTemplatePage>(), MasterPages = new List <SiteTemplateMasterPage>(), NavMenus = new List <SiteTemplateNav>(), Themes = new List <SiteTemplateTheme>(), // scripts can be set directly from base w/o modification Scripts = _baseTemplate.Scripts }; // Perform export steps ScaffoldExportFolder(); ExportDefaultTheme(); ExportPageTemplates(); await ExportSiteCssAsTemplateCss(); await ExportMasterPages(); await ExportPages(); WriteTemplateConfigFile(); _logger.Log("Export complete"); // Refresh template manager cache to pickup the exported template _templateManager.RefreshInternalCache(); }