Пример #1
0
        public ActionResult ExportSite(ConfigurationViewModel model)
        {
            if (model.LocalSelectedSiteName.IsNullOrEmpty())
            {
                model = GetConfigurationViewModel();
                ModelState.AddModelError(nameof(model.LocalSelectedSiteName), "Site is required.");
                return(View("Index", model));
            }

            var site = SiteDefinitionRepository.List()
                       .FirstOrDefault(_ => _.Name.Equals(model.LocalSelectedSiteName));

            if (site == null)
            {
                model = GetConfigurationViewModel();
                ModelState.AddModelError(nameof(model.LocalSelectedSiteName), "Site is required.");
                return(View("Index", model));
            }

            if (model.SiteExportLocation.Equals("Remote", StringComparison.InvariantCultureIgnoreCase) && model.LocalSiteName.IsNullOrEmpty())
            {
                model = GetConfigurationViewModel();
                ModelState.AddModelError(nameof(model.LocalSiteName), "Blob Storage Site name is required.");
                return(View("Index", model));
            }

            var fileName = model.LocalSiteName;

            if (fileName.IsNullOrEmpty())
            {
                fileName = $"{site.Name}.episerverdata";
            }

            if (!fileName.EndsWith(".episerverdata", StringComparison.InvariantCultureIgnoreCase))
            {
                fileName += ".episerverdata";
            }

            if (model.SiteExportLocation.Equals("Remote", StringComparison.InvariantCultureIgnoreCase))
            {
                using (var exportStream = InstallService.ExportEpiserverContent(site.StartPage, ContentExport.ExportPages | ContentExport.ExportVisitorGroups))
                {
                    StorageService.Add($"Sites/{fileName}", exportStream, exportStream.Length);
                    return(RedirectToAction("Index"));
                }
            }

            var stream = InstallService.ExportEpiserverContent(site.StartPage, ContentExport.ExportPages | ContentExport.ExportVisitorGroups);

            return(File(stream, "application/octet-stream", fileName));
        }
        /// <summary>
        /// Gets the site definition of which the specified content is a member
        /// Returns the Current definition when no definition could be determined.
        /// </summary>
        public static SiteDefinition GetSiteDefinition(this ContentReference content)
        {
            var siteDefRepo = new SiteDefinitionRepository(
                ServiceLocator.Current.GetInstance <DynamicDataStoreFactory>(),
                ServiceLocator.Current.GetInstance <ISynchronizedObjectInstanceCache>());
            var sites = siteDefRepo.List();

            var current = Repo.Get <IContent>(content);

            while (current.ContentLink != ContentReference.EmptyReference)
            {
                var site = sites.FirstOrDefault(s => s.StartPage.Equals(current.ContentLink));
                if (site != null)
                {
                    return(site);
                }
                current = Repo.Get <IContent>(current.ParentLink);
            }

            return(SiteDefinition.Current);
        }
Пример #3
0
 protected virtual List <SiteDefinition> GetLocalSites()
 {
     return(SiteDefinitionRepository.List()
            .ToList());
 }