public static void Configure() { var instanceManager = EngineContext.Current.Resolve <ICommerceInstanceManager>(); // Ensure sqlce db folder for each instances var instances = instanceManager.GetInstances().ToList(); foreach (var instance in instances) { var folder = DataFolders.Instances.GetFolder(instance.Name).GetFolder("Multilingual"); if (!folder.Exists) { folder.Create(); } } // Configure DbConfiguration DbConfiguration.Loaded += DbConfiguration_Loaded; // Register stores foreach (var instance in instances) { LanguageStores.Register(instance.Name, new CachedLanguageStore(new SqlceLanguageStore(instance.Name, instanceManager))); TranslationStores.Register(instance.Name, new CachedTranslactionStore(new SqlceTranslationStore(instance.Name, instanceManager))); } }
public void Handle(CommerceInstanceCreated @event, CommerceInstance instance) { var folder = DataFolders.Instances.GetFolder(@event.Settings.Name).GetFolder("Multilingual"); folder.Create(); var instanceManager = EngineContext.Current.Resolve <ICommerceInstanceManager>(); // Register stores LanguageStores.Register(@event.InstanceName, new CachedLanguageStore(new SqlceLanguageStore(instance.Name, instanceManager))); TranslationStores.Register(@event.InstanceName, new CachedTranslactionStore(new SqlceTranslationStore(instance.Name, instanceManager))); }
public override void Inject(MenuItem menu, System.Web.Mvc.ControllerContext controllerContext) { if (CommerceInstance.Current == null) { return; } var root = new MenuItem { Name = "Multiligual", Text = "Multiligual" }; menu.Items.Add(root); root.Items.Add(new MultilingualMenuItem { Name = "Languages", Text = "Languages", Controller = "Language", Action = "Index" }); var instance = CommerceInstance.Current; var database = instance.Database; foreach (var lang in LanguageStores.Get(instance.Name).All()) { var langItem = new MenuItem { Name = "Language-" + lang.Name, Text = lang.Name }; root.Items.Add(langItem); AddLanguageChildItems(langItem, lang, database); } }
public object Execute(CommerceDataSourceContext context) { var culture = CultureInfo.InvariantCulture; if (!String.IsNullOrEmpty(context.Site.Culture)) { var languageStore = LanguageStores.Get(context.Instance); if (languageStore.Exists(context.Site.Culture)) { culture = CultureInfo.GetCultureInfo(context.Site.Culture); } } var store = IndexStores.Get <ProductModel>(context.Instance, culture); var query = store.Query(); // Apply defined filters if (Filters != null) { query = query.ApplyFilters(ParseFilters(context), culture); } // Apply implicit facet filters repsented in url query IList <Filter> facetFilters = null; if (IncludeFacets && Facets != null && Facets.Count > 0) { facetFilters = GetFacetFilters(context); if (facetFilters.Count > 0) { query = query.ApplyFilters(facetFilters, culture); } } // Apply sorting var sortField = ParameterizedFieldValue.GetFieldValue(SortField, context.ValueProvider); if (!String.IsNullOrEmpty(sortField)) { query.AddOrderBy(sortField); } // Execute result var result = new ProductSearchResult(); var pagination = query.Paginate(EvaluatePageNumber(context) - 1, EvaluatePageSize(context)); result.Total = pagination.TotalItems; result.Products = ToProducts(pagination.Cast <ProductModel>().ToList(), context.Site.Commerce()); // Get facets if (IncludeFacets && Facets != null && Facets.Count > 0) { result.Facets = query.ToFacets(Facets); // Generate facet urls var url = HttpContext.Current.Request.RawUrl; CategoryTree localizedCategoryTree = null; foreach (var facetResult in result.Facets) { // Categories are in tree structure, and all level of categories of a product are indexed for seaier search. // If Category facet is not presented in url query, we should only return the ROOT level categories. // If Category facet is presented in url query, we should only return it's children categories. // Otherwise there'll be too many category results. if (facetResult.Field == FacetDefinition.Category.Field) { if (localizedCategoryTree == null) { localizedCategoryTree = CategoryTree.Get(context.Instance).Localize(culture, "Name"); } var filter = facetFilters.FirstOrDefault(f => f.Name == FacetDefinition.Category.Name); if (filter != null) { var category = localizedCategoryTree.Desendants().FirstOrDefault(c => c.Name == filter.FieldValue); foreach (var value in facetResult.Values.ToList()) { if (!category.Children.Any(c => c.Name == value.Term)) { facetResult.Values.Remove(value); } } } else { foreach (var value in facetResult.Values.ToList()) { if (!localizedCategoryTree.Categories.Any(c => c.Name == value.Term)) { facetResult.Values.Remove(value); } } } } foreach (var value in facetResult.Values) { var paramName = facetResult.Name; value.Url = UrlUtility.RemoveQuery(url, paramName); value.Url = UrlUtility.AddQueryParam(value.Url, paramName, value.Term); } } } return(result); }
public ProductEventsSubscription() { _languageStore = LanguageStores.Get(CommerceInstance.Current.Name); }
public IndexesController() { _languageStore = LanguageStores.Get(CommerceInstance.Current.Name); }
public void Handle(CommerceInstanceDeleted @event, CommerceInstance instance) { LanguageStores.Remove(@event.InstanceName); TranslationStores.Remove(@event.InstanceName); }
public LanguageController() { _languageStore = LanguageStores.Get(CurrentInstance.Name); }