public void Seed(SmartObjectContext context) { context.MigrateLocaleResources(MigrateLocaleResources); var permissionMigrator = new PermissionMigrator(context); permissionMigrator.AddPermission(new PermissionRecord { Name = "Admin area. Manage Exports", SystemName = "ManageExports", Category = "Configuration" }, new string[] { SystemCustomerRoleNames.Administrators }); }
public void Seed(SmartObjectContext context) { context.MigrateLocaleResources(MigrateLocaleResources); var permissionMigrator = new PermissionMigrator(context); var activityLogMigrator = new ActivityLogTypeMigrator(context); permissionMigrator.AddPermission(new PermissionRecord { Name = "Admin area. Manage Imports", SystemName = "ManageImports", Category = "Configuration" }, new string[] { SystemCustomerRoleNames.Administrators }); activityLogMigrator.AddActivityLogType("DeleteOrder", "Delete order", "Auftrag gel�scht"); context.MigrateSettings(x => { var seoSettings = new SeoSettings(); x.Add("seosettings.seonamecharconversion", seoSettings.SeoNameCharConversion); }); }
public static void CreateSystemMenus(IDbContext context) { var ctx = context as SmartObjectContext; if (ctx == null) { throw new ArgumentException("Passed context must be an instance of type '{0}'.".FormatInvariant(typeof(SmartObjectContext)), nameof(context)); } const string entityProvider = "entity"; const string routeProvider = "route"; const string routeTemplate = "{{\"routename\":\"{0}\"}}"; var resourceNames = new string[] { "Footer.Info", "Footer.Service", "Footer.Company", "Manufacturers.List", "Admin.Catalog.Categories", "Products.NewProducts", "Products.RecentlyViewedProducts", "Products.Compare.List", "ContactUs", "Blog", "Forum.Forums", "Account.Login", "Menu.ServiceMenu" }; var settingNames = new string[] { "CatalogSettings.RecentlyAddedProductsEnabled", "CatalogSettings.RecentlyViewedProductsEnabled", "CatalogSettings.CompareProductsEnabled", "BlogSettings.Enabled", "ForumSettings.ForumsEnabled", "CustomerSettings.UserRegistrationType" }; Dictionary<string, string> resources = null; Dictionary<string, string> settings = null; using (var scope = new DbContextScope(ctx: context, validateOnSave: false, hooksEnabled: false, autoCommit: false)) { var permissionMigrator = new PermissionMigrator(ctx); permissionMigrator.AddPermission(new PermissionRecord { Name = "Admin area. Manage Menus", SystemName = "ManageMenus", Category = "Content Management" }, new string[] { SystemCustomerRoleNames.Administrators }); var menuSet = context.Set<MenuRecord>(); var menuItemSet = context.Set<MenuItemRecord>(); var defaultLang = context.Set<Language>().OrderBy(x => x.DisplayOrder).First(); var manufacturerCount = context.Set<Manufacturer>().Count(); var order = 0; resources = context.Set<LocaleStringResource>().AsNoTracking() .Where(x => x.LanguageId == defaultLang.Id && resourceNames.Contains(x.ResourceName)) .Select(x => new { x.ResourceName, x.ResourceValue }) .ToList() .ToDictionarySafe(x => x.ResourceName, x => x.ResourceValue, StringComparer.OrdinalIgnoreCase); settings = context.Set<Setting>().AsNoTracking() .Where(x => x.StoreId == 0 && settingNames.Contains(x.Name)) .Select(x => new { x.Name, x.Value }) .ToList() .ToDictionarySafe(x => x.Name, x => x.Value, StringComparer.OrdinalIgnoreCase); #region System menus var mainMenu = menuSet.Add(new MenuRecord { SystemName = "Main", IsSystemMenu = true, Published = true, Template = "Navbar", Title = GetResource("Admin.Catalog.Categories") }); var footerInfo = menuSet.Add(new MenuRecord { SystemName = "FooterInformation", IsSystemMenu = true, Published = true, Template = "LinkList", Title = "Footer - " + GetResource("Footer.Info") }); var footerService = menuSet.Add(new MenuRecord { SystemName = "FooterService", IsSystemMenu = true, Published = true, Template = "LinkList", Title = "Footer - " + GetResource("Footer.Service") }); var footerCompany = menuSet.Add(new MenuRecord { SystemName = "FooterCompany", IsSystemMenu = true, Published = true, Template = "LinkList", Title = "Footer - " + GetResource("Footer.Company") }); var serviceMenu = menuSet.Add(new MenuRecord { SystemName = "HelpAndService", IsSystemMenu = true, Published = true, Template = "Dropdown", Title = GetResource("Menu.ServiceMenu").NullEmpty() ?? "Service" }); scope.Commit(); #endregion #region Main and footer menus menuItemSet.Add(new MenuItemRecord { MenuId = mainMenu.Id, ProviderName = "catalog", Published = true }); menuItemSet.Add(new MenuItemRecord { MenuId = footerInfo.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("ManufacturerList"), Title = GetResource("Manufacturers.List"), DisplayOrder = ++order, Published = manufacturerCount > 0 }); menuItemSet.Add(new MenuItemRecord { MenuId = footerInfo.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("RecentlyAddedProducts"), Title = GetResource("Products.NewProducts"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.RecentlyAddedProductsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = footerInfo.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("RecentlyViewedProducts"), Title = GetResource("Products.RecentlyViewedProducts"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.RecentlyViewedProductsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = footerInfo.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("CompareProducts"), Title = GetResource("Products.Compare.List"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.CompareProductsEnabled", true) }); scope.Commit(); order = 0; menuItemSet.Add(new MenuItemRecord { MenuId = footerService.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("contactus"), Title = GetResource("ContactUs"), DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerService.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("Blog"), Title = GetResource("Blog"), DisplayOrder = ++order, Published = GetSetting("BlogSettings.Enabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = footerService.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("Boards"), Title = GetResource("Forum.Forums"), DisplayOrder = ++order, Published = GetSetting("ForumSettings.ForumsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = footerService.Id, ProviderName = entityProvider, Model = "topic:shippinginfo", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerService.Id, ProviderName = entityProvider, Model = "topic:paymentinfo", DisplayOrder = ++order }); scope.Commit(); order = 0; menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = entityProvider, Model = "topic:aboutus", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = entityProvider, Model = "topic:imprint", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = entityProvider, Model = "topic:disclaimer", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = entityProvider, Model = "topic:privacyinfo", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = entityProvider, Model = "topic:conditionsofuse", DisplayOrder = ++order }); if (GetSetting("CustomerSettings.UserRegistrationType", "").IsCaseInsensitiveEqual("Disabled")) { menuItemSet.Add(new MenuItemRecord { MenuId = footerCompany.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("Login"), Title = GetResource("Account.Login"), DisplayOrder = ++order }); } scope.Commit(); order = 0; #endregion #region Help & Service menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("RecentlyAddedProducts"), Title = GetResource("Products.NewProducts"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.RecentlyAddedProductsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("ManufacturerList"), Title = GetResource("Manufacturers.List"), DisplayOrder = ++order, Published = manufacturerCount > 0 }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("RecentlyViewedProducts"), Title = GetResource("Products.RecentlyViewedProducts"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.RecentlyViewedProductsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = routeProvider, Model = routeTemplate.FormatInvariant("CompareProducts"), Title = GetResource("Products.Compare.List"), DisplayOrder = ++order, Published = GetSetting("CatalogSettings.CompareProductsEnabled", true) }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = entityProvider, Model = "topic:aboutus", DisplayOrder = ++order, BeginGroup = true }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = entityProvider, Model = "topic:disclaimer", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = entityProvider, Model = "topic:shippinginfo", DisplayOrder = ++order }); menuItemSet.Add(new MenuItemRecord { MenuId = serviceMenu.Id, ProviderName = entityProvider, Model = "topic:conditionsofuse", DisplayOrder = ++order }); scope.Commit(); order = 0; #endregion #region Localization var resourceSet = context.Set<LocaleStringResource>(); var removeNames = new List<string> { "Menu.ServiceMenu" }; var removeResources = resourceSet.Where(x => removeNames.Contains(x.ResourceName)).ToList(); resourceSet.RemoveRange(removeResources); scope.Commit(); #endregion } #region Utilities string GetResource(string name) { return resources.TryGetValue(name, out var value) ? value : string.Empty; } T GetSetting<T>(string name, T defaultValue = default(T)) { try { if (settings.TryGetValue(name, out var str) && CommonHelper.TryConvert(str, out T value)) { return value; } } catch { } return defaultValue; } #endregion }