public override IEnumerable <XElement> Install()
        {
            Log.LogInformation(nameof(PreConfigurationInstaller), "Start");

            try
            {
                // Default dependency is not registered in Console Mode
                var builder = new ContainerBuilder();
                builder.Register(c => ComposerOvertureClient.CreateFromConfig()).As <IOvertureClient>().SingleInstance();
                builder.RegisterType <NullCacheProvider>().As <ICacheProvider>();
                builder.RegisterType <CategoryRepository>().As <ICategoryRepository>().SingleInstance();
                builder.RegisterType <CategoryAndNavigationBuilder>().As <ICategoryAndNavigationBuilder>().SingleInstance();
                var container = builder.Build();

                var categoryAndNavigationBuilder = container.Resolve <ICategoryAndNavigationBuilder>();

                Dictionary <string, string> displayNames = null;

                var mainMenuDisplayNames = Configuration.SingleOrDefault(f => f.Name == "MainMenuDisplayNames");

                if (mainMenuDisplayNames != null)
                {
                    displayNames = new Dictionary <string, string>();
                    mainMenuDisplayNames.Elements("add").ToList()
                    .ForEach(d =>
                    {
                        var locale      = d.Attributes("locale").Select(a => a.Value).FirstOrDefault();
                        var displayName = d.Value;
                        if (!string.IsNullOrWhiteSpace(locale))
                        {
                            displayNames[locale] = displayName;
                            Log.LogInformation("PreConfigurationInstaller", $"{locale}: '{displayName}'");
                        }
                    });
                }


                categoryAndNavigationBuilder.ReBuildCategoriesAndMenu(displayNames);
            }
            catch (Exception ex) {
                Log.LogError(nameof(PreConfigurationInstaller), ex);
            }
            Log.LogInformation(nameof(PreConfigurationInstaller), "End");
            yield break;
        }
Exemple #2
0
        private static void RegisterSitemapGenerationDependencies(ContainerBuilder builder)
        {
            // Register overture client + product url provider + scope provider + culture service
            builder.Register(container => ComposerOvertureClient.CreateFromConfig()).As <IOvertureClient>().SingleInstance();

            builder.RegisterType <WebsiteProductUrlProvider>().As <IProductUrlProvider>();
            builder.RegisterType <ProductUrlParamFactory>().As <IProductUrlParamFactory>();
            builder.RegisterType <SiteConfiguration>().As <ISiteConfiguration>();
            builder.RegisterType <PageService>().As <IPageService>();

            builder.Register(container => ServiceLocator.GetService <ICookieAccesserSettings>()).SingleInstance();
            builder.Register(container => ServiceLocator.GetService <ICdnDamProviderSettings>()).SingleInstance();
            builder.Register(container => ServiceLocator.GetService <IC1SitemapConfiguration>()).SingleInstance();

            builder.RegisterType <ScopeProvider>().As <IScopeProvider>().SingleInstance();
            builder.RegisterType <CultureService>().As <ICultureService>().SingleInstance();

            // C1 content sitemap provider
            builder.RegisterType <C1ContentSitemapEntryProvider>().AsSelf().SingleInstance();
            builder.RegisterType <C1ContentSitemapProviderConfig>().AsSelf().SingleInstance();
            builder.RegisterType <C1ContentSitemapProvider>().As <ISitemapProvider>().SingleInstance();
            builder.RegisterType <C1ContentSitemapPageExcludeProvider>().As <IC1ContentSitemapPageExcludeProvider>().SingleInstance();
            builder.RegisterType <C1ContentSitemapDataTypesIncluder>().As <IC1ContentSitemapDataTypesIncluder>().SingleInstance();

            // Product sitemap provider
            builder.RegisterType <ProductSitemapEntryProvider>().AsSelf().SingleInstance();
            builder.RegisterType <ProductSitemapProviderConfig>().AsSelf().SingleInstance();
            builder.RegisterType <ProductSitemapProvider>().As <ISitemapProvider>().SingleInstance();

            // Sitemap index generator
            builder.RegisterType <SitemapIndexGenerator>().As <ISitemapIndexGenerator>().SingleInstance();

            // Sitemap Generator
            builder.Register(container => ServiceLocator.GetService <ISitemapGeneratorConfig>()).SingleInstance();
            builder.RegisterType <SitemapGenerator>().AsSelf().As <ISitemapGenerator>().SingleInstance();
        }