public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
 {
     foreach (var type in typeFinder.FindClassesOfType <ITopbarCommand>())
     {
         containerManager.AddComponent(typeof(ITopbarCommand), type, type.FullName, ComponentLifeStyle.Transient);
     }
 }
示例#2
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            // Current instance providers
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(ThreadScopeCurrentInstanceProvider), "ThreadScopeCurrentInstanceProvider", ComponentLifeStyle.Singleton);
            containerManager.AddComponent(typeof(ICurrentInstanceProvider), typeof(SiteAwareHttpCurrentInstanceProvider), "SiteAwareHttpCurrentInstanceProvider", ComponentLifeStyle.Transient);

            // Data folder factory
            containerManager.AddComponentInstance <DataFolderFactory>(DataFolderFactory.Current);

            // Instance intializers
            foreach (var type in typeFinder.FindClassesOfType <IInstanceInitializer>())
            {
                containerManager.AddComponent(typeof(IInstanceInitializer), type, type.FullName, ComponentLifeStyle.Transient);
            }

            // Repository and ICommerceDatabase
            var container = ((Kooboo.CMS.Common.Runtime.Dependency.Ninject.ContainerManager)containerManager).Container;

            container.Bind <CommerceInstance>()
            .ToMethod(ctx => CommerceInstance.Current);

            container.Bind <ICommerceDatabase>()
            .ToMethod(ctx =>
            {
                var instance = CommerceInstance.Current;
                if (instance == null)
                {
                    throw new InvalidOperationException("Cannot resolve ICommerceDatabase, because there's no commerce instance in the context.");
                }

                return(instance.Database);
            });

            container.Bind(typeof(IRepository <>)).To(typeof(CommerceRepository <>));
        }
 public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
 {
     foreach (var type in typeFinder.FindClassesOfType <ICommerceDbProvider>())
     {
         CommerceDbProviders.Providers.Add((ICommerceDbProvider)containerManager.Resolve(type));
     }
 }
示例#4
0
 public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
 {
     foreach (var type in typeFinder.FindClassesOfType <ICommerceDataSource>())
     {
         if (type.IsClass && !type.IsAbstract)
         {
             containerManager.AddComponent(typeof(ICommerceDataSource), type, type.FullName, ComponentLifeStyle.Transient);
         }
     }
 }
示例#5
0
 static void RegisterActivities(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
 {
     foreach (var activityType in typeFinder.FindClassesOfType <IActivity>())
     {
         if (activityType.IsClass && !activityType.IsAbstract)
         {
             containerManager.AddComponent(typeof(IActivity), activityType, activityType.FullName, ComponentLifeStyle.Transient);
         }
     }
 }
 public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
 {
     foreach (var type in typeFinder.FindClassesOfType <IRuleParameterProvider>())
     {
         if (type != typeof(DefaultRuleParameterProvider))
         {
             var provider = Activator.CreateInstance(type) as IRuleParameterProvider;
             RuleParameterProviders.Providers.Add(provider);
         }
     }
 }
示例#7
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            containerManager.AddComponent(typeof(IMenuInjection), typeof(GlobalMenuInjection), "GlobalMenuInjection", ComponentLifeStyle.Singleton);
            containerManager.AddComponent(typeof(IMenuInjection), typeof(InstanceMenuInjection), "InstanceMenuInjection", ComponentLifeStyle.Singleton);

            foreach (var type in typeFinder.FindClassesOfType <IMenuInjection>())
            {
                if (typeof(CommerceMenuInjection).IsAssignableFrom(type) &&
                    type != typeof(GlobalMenuInjection) &&
                    type != typeof(InstanceMenuInjection))
                {
                    containerManager.AddComponent(typeof(IMenuInjection), type, type.FullName, ComponentLifeStyle.Transient);
                }
            }
        }
示例#8
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            RegisterActivities(containerManager, typeFinder);

            var manager = EventSlotManager.Instance;

            manager.Register <BrandCreated>("Brands", "Created");
            manager.Register <BrandUpdated>("Brands", "Updated");
            manager.Register <BrandDeleted>("Brands", "Deleted");

            manager.Register <CategoryCreated>("Categories", "Created");
            manager.Register <CategoryUpdated>("Categories", "Updated");
            manager.Register <CategoryDeleted>("Categories", "Deleted");

            manager.Register <ProductTypeEnabled>("Product Types", "Enabled");
            manager.Register <ProductTypeDisabled>("Product Types", "Disabled");

            manager.Register <ProductCreated>("Products", "Created");
            manager.Register <ProductUpdated>("Products", "Updated");
            manager.Register <ProductDeleted>("Products", "Deleted");
            manager.Register <ProductPublished>("Products", "Published");
            manager.Register <ProductUnpublished>("Products", "Unpublished");
            manager.Register <GetPrice>("Products");

            manager.Register <CustomerCreated>("Customers", "Created");
            manager.Register <CustomerUpdated>("Customers", "Updated");
            manager.Register <CustomerDeleted>("Customers", "Deleted");

            manager.Register <PromotionEnabled>("Promotions", "Enabled");
            manager.Register <PromotionDisabled>("Promotions", "Disabled");

            manager.Register <CartCreated>("Carts", "Created");
            manager.Register <CartItemAdded>("Carts", "Item Added");
            manager.Register <CartItemQuantityChanged>("Carts", "Item Quantity Changed");
            manager.Register <CartItemRemoved>("Carts", "Item Removed");
            manager.Register <CartPriceCalculated>("Carts", "Price Calculated");
            manager.Register <CartExpired>("Carts", "Expires");

            manager.Register <OrderCreated>("Orders", "Created");
            manager.Register <OrderStatusChanged>("Orders", "Status Changed");
            manager.Register <PaymentStatusChanged>("Orders", "Payment Status Changed");

            manager.Register <PaymentMethodEnabled>("Payment Methods", "Enabled");
            manager.Register <PaymentMethodDisabled>("Payment Methods", "Disabled");

            manager.Register <ShippingMethodEnabled>("Shipping Methods", "Enabled");
            manager.Register <ShippingMethodDisabled>("Shipping Methods", "Disabled");
        }
示例#9
0
        public void Register(IContainerManager containerManager, CMS.Common.Runtime.ITypeFinder typeFinder)
        {
            var assemblies = typeFinder.GetAssemblies()
                             .Where(x => !IsIgnoredAssembly(x))
                             .ToList();

            foreach (var assembly in assemblies)
            {
                foreach (var handlerType in assembly.GetTypes())
                {
                    if (!handlerType.IsClass || handlerType.IsAbstract || handlerType.IsGenericType)
                    {
                        continue;
                    }

                    foreach (var eventType in GetHandledEventTypes(handlerType))
                    {
                        Event.Listen(eventType, handlerType);
                    }
                }
            }
        }