Пример #1
0
        public ActionResult Index()
        {
            var siteList = _siteDefinitionRepository.List();

            ViewBag.SiteList = siteList;
            return(View("~/Views/admin/LuceneSiteIndex/Index.cshtml"));
        }
Пример #2
0
        public List <string> GetActiveSites()
        {
            var siteDefinitionNames = _siteDefinitionRepository.List().Select(x => x.Name);

            var resultList = new List <string> {
                Constants.AllFilterKey
            };

            resultList.AddRange(siteDefinitionNames);

            return(resultList);
        }
Пример #3
0
        private string GetFallbackLanguage()
        {
            if (!HostingEnvironment.IsHosted)
            {
                return(FallbackLanguage);
            }

            ContentReference startPageLink = ContentReference.StartPage;

            if (startPageLink == null || startPageLink == ContentReference.EmptyReference)
            {
                // Fallback to first defined site if StartPage is empty (no context or star-mapping)
                var firstSite = _siteDefinitionRepository.List().FirstOrDefault();
                if (firstSite != null)
                {
                    startPageLink = firstSite.StartPage;
                }
            }

            // Try to fetch master language from startpage
            if (startPageLink != null && startPageLink != ContentReference.EmptyReference)
            {
                var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>();
                if (contentLoader.TryGet(startPageLink, out PageData startPage))
                {
                    return(startPage.MasterLanguage.Name);
                }
            }

            Logger.Warning("Could not retrieve StartPage. Are you missing a wildcard mapping in CMS Admin -> Manage Websites?");

            return(FallbackLanguage);
        }
        private int MergeSiteDefinitions(IEnumerable <SiteDefinition> siteDefinitionsToUpdate)
        {
            var updatedSites  = 0;
            var existingSites = _siteDefinitionRepository.List();

            foreach (var siteDefinitionToUpdate in siteDefinitionsToUpdate)
            {
                SiteDefinition site = GetExistingSiteDefinition(existingSites, siteDefinitionToUpdate);
                if (site != null)
                {
                    site = site.CreateWritableClone();
                    if (!string.IsNullOrEmpty(siteDefinitionToUpdate.Name) && site.Name != siteDefinitionToUpdate.Name)
                    {
                        // Will set the name of the site to the provided Name if Id exist and Name is specified and different from the found existing site.
                        site.Name = siteDefinitionToUpdate.Name;
                    }
                    site.SiteUrl = siteDefinitionToUpdate.SiteUrl;
                    site.Hosts   = siteDefinitionToUpdate.Hosts;

                    _siteDefinitionRepository.Save(site);
                    updatedSites++;
                    Logger.Information($"Updated {siteDefinitionToUpdate.Name} to site URL {siteDefinitionToUpdate.SiteUrl} and {siteDefinitionToUpdate.Hosts.Count} hostnames.");
                    resultLog.AppendLine($"Updated {siteDefinitionToUpdate.Name} to site URL {siteDefinitionToUpdate.SiteUrl} and {siteDefinitionToUpdate.Hosts.Count} hostnames.<br />");
                }
                else
                {
                    Logger.Warning($"Could not find site {siteDefinitionToUpdate.Name} or site already has site URL {siteDefinitionToUpdate.SiteUrl}.");
                    resultLog.AppendLine($"Could not find site {siteDefinitionToUpdate.Name} or site already has site URL {siteDefinitionToUpdate.SiteUrl}.<br />");
                }
            }

            return(updatedSites);
        }
 public void Clear()
 {
     foreach (var site in _repository.List())
     {
         _repository.Delete(site.Id);
     }
 }
Пример #6
0
        public CustomStartPageResolver(ISiteDefinitionRepository siteDefinitionRepository, UrlResolver urlResolver, IContentLoader contentLoader)
        {
            _urlResolver   = urlResolver;
            _contentLoader = contentLoader;

            _siteDefinitions = new Lazy <List <SiteDefinition> >(() => siteDefinitionRepository.List().ToList());
        }
Пример #7
0
        public ActionResult Index()
        {
            ViewBag.Sites            = _siteDefinitionRepository.List();
            ViewBag.LanguageBranches = _languageBranchRepository.ListEnabled();

            return(View());
        }
Пример #8
0
        public ActionResult Index()
        {
            var hostLookUpArray = _siteDefinitionRepository.List().SelectMany(sd => sd.Hosts, (sd, host) => host.Name).ToArray();
            var siteKey         = _manifestJsonService.GetSiteKey(SiteDefinition.Current.Id, hostLookUpArray.Contains(Request.Url.Host) ? Request.Url.Host : "*");

            return(Content(_manifestJsonService.Get(siteKey), "application/manifest+json"));
        }
Пример #9
0
 public string[] GetGlobalHostOptions()
 {
     return(_siteDefinitionRepository.List()
            .SelectMany(s => s.Hosts.Select(h => h.Name))
            .Where(h => !h.Equals("*", StringComparison.InvariantCultureIgnoreCase))
            .OrderBy(h => h)
            .ToArray());
 }
Пример #10
0
 private List <SelectListItem> GetHostsSelectListItems()
 {
     return(_siteDefinitionRepository.List().SelectMany(d => d.Hosts, (s, h) =>
                                                        new SelectListItem
     {
         Value = _manifestJsonService.GetSiteKey(s.Id, h.Name),
         Text = $"{s.Name} > {h.Name}"
     }).ToList());
 }
Пример #11
0
 public StartPageUrlResolver(ISiteDefinitionRepository siteDefinitionRepository, UrlResolver urlResolver, IContentLoader contentLoader)
 {
     _urlResolver   = urlResolver;
     _contentLoader = contentLoader;
     _startPages    = new Lazy <IEnumerable <ContentReference> >(() =>
     {
         return(siteDefinitionRepository.List().Select(x => x.StartPage.ToReferenceWithoutVersion()));
     });
 }
Пример #12
0
        /// <summary>
        /// Gets a list of all sites
        /// </summary>
        /// <returns></returns>
        public List <SiteDefinition> GetSiteDefinitions()
        {
            var list = _siteDefinitionRepository.List()
                       .ToList();

            list.Add(new SiteDefinition {
                Id = Guid.Empty, Name = "DOES NOT BELONG TO ANY SITE"
            });
            return(list);
        }
Пример #13
0
 public EpiBaseImplementation(
     IContentLoader contentLoader,
     ISiteDefinitionRepository siteDefinitionRepository,
     ReferenceConverter referenceConverter,
     IPricingService pricingService) :
     base(contentLoader, referenceConverter)
 {
     _pricingService = pricingService;
     _siteUrl        = siteDefinitionRepository.List().FirstOrDefault()?.SiteUrl.ToString();
 }
Пример #14
0
        private StartPage GetStartPage()
        {
            var siteDefintion = _siteDefinitionRepository.List().FirstOrDefault();

            if (siteDefintion != null)
            {
                return(_contentRepository.Get <StartPage>(siteDefintion.StartPage));
            }
            return(null);
        }
Пример #15
0
        public string Execute(params string[] parameters)
        {
            int cnt = 0;


            foreach (var r in _siteRepo.List())
            {
                OnCommandOutput?.Invoke(this, r);
                cnt++;
            }

            return($"Done, listing {cnt} sites");
        }
Пример #16
0
        public Task ExecuteAsync()
        {
            var allSites = _siteDefinitionRepository.List();

            foreach (var siteDefinition in allSites)
            {
                var clone = siteDefinition.CreateWritableClone();
                clone.Hosts.Add(new HostDefinition()
                {
                    Name = "*",
                    UseSecureConnection = true
                });
                _siteDefinitionRepository.Save(clone);
            }

            return(Task.CompletedTask);
        }
Пример #17
0
        public Task ExecuteAsync()
        {
            var primaryWebsiteUrl = SiteConfiguration.Site.PrimaryUrl;

            var home = _contentRepository.GetDefault <HomePage>(ContentReference.RootPage);

            home.Name = SiteConfiguration.Site.Name;
            var homeReference = _contentRepository.Save(home, SaveAction.Publish);

            var siteDefinitions = _siteDefinitionRepository.List().ToArray();

            if (siteDefinitions.Any())
            {
                foreach (var siteDefinition in siteDefinitions.Select(d => d.CreateWritableClone()))
                {
                    siteDefinition.StartPage = homeReference;
                    _siteDefinitionRepository.Save(siteDefinition);
                }
            }
            else
            {
                var primaryWebsiteUri = new Uri(primaryWebsiteUrl);

                _siteDefinitionRepository.Save(new SiteDefinition
                {
                    Name      = SiteConfiguration.Site.Name,
                    Id        = Guid.NewGuid(),
                    StartPage = homeReference,
                    SiteUrl   = new Uri(primaryWebsiteUrl),
                    Hosts     = new[]
                    {
                        new HostDefinition
                        {
                            Language            = new CultureInfo("no"),
                            Name                = primaryWebsiteUri.Authority,
                            Type                = HostDefinitionType.Primary,
                            UseSecureConnection = "https".Equals(primaryWebsiteUri.Scheme,
                                                                 StringComparison.OrdinalIgnoreCase)
                        }
                    }
                });
            }

            return(Task.CompletedTask);
        }
Пример #18
0
        private static void EnsureSiteDefinition(ISiteDefinitionRepository siteDefinitionRepository,
                                                 ContentReference startPage, ContentReference assetsFolder)
        {
            var siteDefinition = siteDefinitionRepository.List()
                                 .FirstOrDefault(x => x.StartPage.CompareToIgnoreWorkID(startPage));

            if (siteDefinition != null)
            {
                return;
            }

            siteDefinition = new SiteDefinition
            {
                Name           = "Static Website",
                StartPage      = startPage,
                SiteAssetsRoot = assetsFolder,
                SiteUrl        = new Uri(StaticWebsiteUrl) // To do: Should come from configuration?
            };

            siteDefinitionRepository.Save(siteDefinition);
        }
Пример #19
0
        private Product GetByCode(FashionProduct item)
        {
            var siteUrl = _siteDefinitionRepository.List().FirstOrDefault()?.SiteUrl;

            var variants       = _catalogContentService.GetVariants <FashionVariant>(item).ToList();
            var defaultVariant = variants.FirstOrDefault();

            var viewModel = _catalogEntryViewModelFactory.Create(item, defaultVariant?.Code);
            var product   = new Product
            {
                Code        = item.Code,
                Title       = item.DisplayName,
                Description = item.Description.ToHtmlString(),
                Price       = viewModel.ListingPrice.Amount,
                SalePrice   = viewModel.DiscountedPrice?.Amount ?? 0,
                Brand       = viewModel.Product.Brand,
                Image       = siteUrl + viewModel.Images?.FirstOrDefault(),
                LargeImage  = siteUrl + viewModel.Images?.FirstOrDefault()
            };

            var sizes = new List <ProductSize>();

            foreach (var variant in variants)
            {
                sizes.Add(new ProductSize
                {
                    Size  = variant.Size,
                    Stock =
                        _warehouseService.GetWarehouseAvailability(variant.Code)?.Select(x => new ProductSizeStock
                    {
                        StorePageId = 295,
                        StoreCode   = x?.Warehouse?.Code,
                        StoreName   = x?.Warehouse?.Name,
                        Available   = (int)x?.InStock
                    }).ToArray()
                });
            }
            product.Sizes = sizes.ToArray();
            return(product);
        }
Пример #20
0
        private string GetLocalizedAssetsFolderName(string name)
        {
            ISiteDefinitionRepository definitionRepository = this.GetSiteDefinitionRepository();
            LocalizationService       localizationService  = this.GetLocalizationService();

            if (definitionRepository != null && localizationService != null)
            {
                foreach (SiteDefinition siteDefinition in definitionRepository.List())
                {
                    if (ParentLink.CompareToIgnoreWorkID(siteDefinition.GlobalAssetsRoot))
                    {
                        return(localizationService.GetString("/episerver/cms/widget/hierachicallist/roots/globalroot/label", name));
                    }

                    if (ParentLink.CompareToIgnoreWorkID(siteDefinition.SiteAssetsRoot))
                    {
                        return(localizationService.GetString("/episerver/cms/widget/hierachicallist/roots/siteroot/label", name));
                    }
                }
            }

            return(name);
        }
        public static bool CreateSite(
            ISiteDefinitionRepository siteDefinitionRepository,
            IContent homePage,
            string siteUrl)
        {
            Guard.ValidateObject(siteDefinitionRepository);

            if (siteDefinitionRepository.List().Any())
            {
                return(true);
            }

            var siteDefinition = new SiteDefinition
            {
                Name      = "JonDJones.Website",
                SiteUrl   = new Uri(siteUrl),
                StartPage = homePage.ContentLink,
                Hosts     = GetHostDefinitions()
            };

            siteDefinitionRepository.Save(siteDefinition);
            return(true);
        }
Пример #22
0
        public override List <Feed> Build()
        {
            var generatedFeeds = new List <Feed>();
            var siteUrl        = _siteDefinitionRepository.List().FirstOrDefault()?.SiteUrl.ToString();

            var feed = new Feed
            {
                Updated = DateTime.UtcNow,
                Title   = "My products",
                Link    = siteUrl
            };

            var entries           = new List <Entry>();
            var catalogReferences = _contentLoader.GetDescendents(_referenceConverter.GetRootLink());

            foreach (var catalogReference in catalogReferences)
            {
                var catalogContent   = _contentLoader.Get <CatalogContentBase>(catalogReference);
                var variationContent = catalogContent as FashionVariant;
                if (variationContent != null)
                {
                    var product      = _contentLoader.Get <CatalogContentBase>(variationContent.GetParentProducts().FirstOrDefault()) as FashionProduct;
                    var variantCode  = variationContent.Code;
                    var defaultPrice = _pricingService.GetDefaultPrice(variantCode);

                    var entry = new Entry
                    {
                        Id                    = variantCode,
                        Title                 = variationContent.DisplayName,
                        Description           = product?.Description.ToHtmlString(),
                        Link                  = variationContent.GetUrl(),
                        Condition             = "new",
                        Availability          = "in stock",
                        Brand                 = product?.Brand,
                        MPN                   = string.Empty,
                        GTIN                  = "725272730706",
                        GoogleProductCategory = string.Empty,
                        Shipping              = new List <Shipping>
                        {
                            new Shipping
                            {
                                Price   = "1 USD",
                                Country = "US",
                                Service = "Standard"
                            }
                        }
                    };

                    var image = variationContent.GetDefaultAsset <IContentImage>();
                    if (!string.IsNullOrEmpty(image))
                    {
                        entry.ImageLink = Uri.TryCreate(new Uri(siteUrl), image, out var imageUri) ? imageUri.ToString() : image;
                    }

                    if (defaultPrice != null)
                    {
                        var discountPrice = _pricingService.GetDiscountPrice(variantCode);

                        entry.Price     = defaultPrice.UnitPrice.FormatPrice();
                        entry.SalePrice = discountPrice != null?discountPrice.UnitPrice.FormatPrice() : string.Empty;

                        entry.SalePriceEffectiveDate = $"{DateTime.UtcNow:yyyy-MM-ddThh:mm:ss}/{DateTime.UtcNow.AddDays(7):yyyy-MM-ddThh:mm:ss}";
                    }

                    entries.Add(entry);
                }
            }

            feed.Entries = entries;
            generatedFeeds.Add(feed);

            return(generatedFeeds);
        }
Пример #23
0
 /// <summary>
 /// Gets a list of all sites
 /// </summary>
 /// <returns></returns>
 public List <SiteDefinition> GetSiteDefinitions()
 {
     return(_siteDefinitionRepository.List()
            .ToList());
 }
        private List <int> GetAllSiteRoots()
        {
            var siteList = _siteDefinitionRepository.List().Select(x => x.StartPage.ID).ToList();

            return(siteList);
        }