protected SitemapXmlGenerator(ISitemapRepository sitemapRepository)
 {
     this._sitemapRepository        = sitemapRepository;
     this._contentRepository        = ServiceLocator.Current.GetInstance <IContentRepository>();
     this._urlResolver              = ServiceLocator.Current.GetInstance <UrlResolver>();
     this._siteDefinitionRepository = ServiceLocator.Current.GetInstance <SiteDefinitionRepository>();
     this._urlSet = new HashSet <string>();
 }
 public CachingUrlResolver(RouteCollection routes,
                           IContentLoader contentLoader,
                           SiteDefinitionRepository siteDefinitionRepository,
                           TemplateResolver templateResolver,
                           IPermanentLinkMapper permanentLinkMapper,
                           IObjectInstanceCache cache)
     : base(routes, contentLoader, siteDefinitionRepository, templateResolver, permanentLinkMapper)
 {
     _cache = cache;
 }
 protected SitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository)
 {
     this.SitemapRepository = sitemapRepository;
     this.ContentRepository = contentRepository;
     this.UrlResolver = urlResolver;
     this.SiteDefinitionRepository = siteDefinitionRepository;
     this.LanguageBranchRepository = languageBranchRepository;
     this.EnabledLanguages = this.LanguageBranchRepository.ListEnabled();
     this._urlSet = new HashSet<string>();
 }
예제 #4
0
 protected SitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository)
 {
     this.SitemapRepository        = sitemapRepository;
     this.ContentRepository        = contentRepository;
     this.UrlResolver              = urlResolver;
     this.SiteDefinitionRepository = siteDefinitionRepository;
     this.LanguageBranchRepository = languageBranchRepository;
     this.EnabledLanguages         = this.LanguageBranchRepository.ListEnabled();
     this.UrlSet = new HashSet <string>();
 }
예제 #5
0
 public CachingUrlResolver(RouteCollection routes,
                           IContentLoader contentLoader,
                           SiteDefinitionRepository siteDefinitionRepository,
                           TemplateResolver templateResolver,
                           IPermanentLinkMapper permanentLinkMapper,
                           IObjectInstanceCache cache)
     : base(routes, contentLoader, siteDefinitionRepository, templateResolver, permanentLinkMapper)
 {
     _cache = cache;
 }
예제 #6
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);
        }
예제 #8
0
 public MobileSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository) : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository)
 {
 }
 public CommerceAndStandardSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository, ReferenceConverter referenceConverter)
     : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository, referenceConverter)
 {
 }
예제 #10
0
        public ActionResult AddSite(ConfigurationViewModel model)
        {
            if (model.SiteName.IsNullOrEmpty())
            {
                model = GetConfigurationViewModel();
                ModelState.AddModelError(nameof(model.SelectedSiteName), "Site name is required.");
                return(View("Index", model));
            }

            if (model.SiteDomainName.IsNullOrEmpty())
            {
                model = GetConfigurationViewModel();
                ModelState.AddModelError(nameof(model.SiteDomainName), "Site domain name is required.");
                return(View("Index", model));
            }

            Stream siteStream = null;

            if (model.SiteImportLocation.Equals("Remote"))
            {
                if (model.SelectedSiteName.IsNullOrEmpty())
                {
                    model = GetConfigurationViewModel();
                    ModelState.AddModelError(nameof(model.SelectedSiteName), "Site is required.");
                    return(View("Index", model));
                }

                var file = StorageService.GetCloudBlockBlob(new Uri(model.SelectedSiteName));
                if (!file.Exists())
                {
                    throw new Exception("Site blob does not exist");
                }
                siteStream = file.OpenRead();
            }
            else
            {
                siteStream = model.SiteImportFile?.FirstOrDefault()?.InputStream;
                if (siteStream == null)
                {
                    ModelState.AddModelError(nameof(model.SiteImportFile), "File is required for disk import.");
                    return(View("Index"));
                }
            }

            var domainName = model.SiteDomainName;

            if (model.SiteDomainName.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase))
            {
                domainName = domainName.Replace("http://", "");
            }
            else if (model.SiteDomainName.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase))
            {
                domainName = domainName.Replace("https://", "");
            }

            var siteDefinition = SiteDefinitionRepository.Get(model.SiteName);

            if (siteDefinition == null)
            {
                siteDefinition = new SiteDefinition
                {
                    Name    = model.SiteName,
                    SiteUrl = new Uri($"http://{domainName}"),
                    Hosts   = new List <HostDefinition>()
                    {
                        new HostDefinition {
                            Name = domainName, Type = HostDefinitionType.Undefined
                        }
                    }
                };
            }

            CreateSite(siteStream, siteDefinition, ContentReference.IsNullOrEmpty(siteDefinition.StartPage) ? ContentReference.RootPage : siteDefinition.StartPage);
            RunIndexJob();
            return(RedirectToAction("Index"));
        }
예제 #11
0
 protected virtual List <SiteDefinition> GetLocalSites()
 {
     return(SiteDefinitionRepository.List()
            .ToList());
 }
 public CommerceSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository, ReferenceConverter referenceConverter) : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository)
 {
     if (referenceConverter == null) throw new ArgumentNullException("referenceConverter");
     _referenceConverter = referenceConverter;
 }
 public CommerceAndStandardSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository, ReferenceConverter referenceConverter)
     : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository, referenceConverter)
 {
 }
예제 #14
0
 public ContentIndexingJob()
 {
     _siteDefinitionRepository = ServiceLocator.Current.GetInstance<SiteDefinitionRepository>();
 }
 public MobileSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository) : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository)
 {
 }
예제 #16
0
 public CommerceSitemapXmlGenerator(ISitemapRepository sitemapRepository, IContentRepository contentRepository, UrlResolver urlResolver, SiteDefinitionRepository siteDefinitionRepository, ILanguageBranchRepository languageBranchRepository, ReferenceConverter referenceConverter) : base(sitemapRepository, contentRepository, urlResolver, siteDefinitionRepository, languageBranchRepository)
 {
     if (referenceConverter == null)
     {
         throw new ArgumentNullException("referenceConverter");
     }
     _referenceConverter = referenceConverter;
 }