Ejemplo n.º 1
0
 protected void LoadSiteTemplates(List <Site> sites)
 {
     foreach (var site in sites)
     {
         site.SiteTemplate = _templateManager.GetTemplate(site.SiteTemplateId);
     }
 }
Ejemplo n.º 2
0
        //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()));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }