diff --git a/src/Orchard.Web/Core/Settings/Services/SiteService.cs b/src/Orchard.Web/Core/Settings/Services/SiteService.cs index 23d22a8df..d9ec52112 100644 --- a/src/Orchard.Web/Core/Settings/Services/SiteService.cs +++ b/src/Orchard.Web/Core/Settings/Services/SiteService.cs @@ -33,6 +33,8 @@ namespace Orchard.Core.Settings.Services { item.Record.SiteName = "My Orchard Project Application"; item.Record.PageTitleSeparator = " - "; }); + // ensure subsequent calls will locate this object + _contentManager.Flush(); return site; } return _contentManager.Get(record.Id); diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs index 7976f7038..6e5327f59 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs @@ -8,6 +8,7 @@ using Orchard.Data.Migrations; using Orchard.Environment; using Orchard.Environment.Configuration; using Orchard.Security; +using Orchard.Settings; using Orchard.Setup.ViewModels; using Orchard.Localization; using Orchard.UI.Notify; @@ -55,24 +56,21 @@ namespace Orchard.Setup.Controllers { // components will exist entirely in isolation - no crossover between the safemode container currently in effect var shellSettings = new ShellSettings { Name = "temp" }; - if (!_shellSettingsLoader.SaveSettings(shellSettings)) { - _notifier.Error(T("Site settings could not be saved. (Name = \"{0}\")", shellSettings.Name)); - return Index(model); - } using (var finiteEnvironment = _orchardHost.CreateStandaloneEnvironment(shellSettings)) { var contentManager = finiteEnvironment.Resolve(); + // create superuser var membershipService = finiteEnvironment.Resolve(); var user = membershipService.CreateUser(new CreateUserParams(model.AdminUsername, model.AdminPassword, String.Empty, String.Empty, String.Empty, true)); // set site name and settings - contentManager.Create("site", item => { - item.Record.SiteSalt = Guid.NewGuid().ToString("N"); - item.Record.SiteName = model.SiteName; - item.Record.SuperUser = model.AdminUsername; - item.Record.PageTitleSeparator = " - "; - }); + var siteService = finiteEnvironment.Resolve(); + var siteSettings = siteService.GetSiteSettings().As(); + siteSettings.Record.SiteSalt = Guid.NewGuid().ToString("N"); + siteSettings.Record.SiteName = model.SiteName; + siteSettings.Record.SuperUser = model.AdminUsername; + siteSettings.Record.PageTitleSeparator = " - "; // create home page as a CMS page var page = contentManager.Create("page"); @@ -86,9 +84,15 @@ namespace Orchard.Setup.Controllers { var authenticationService = finiteEnvironment.Resolve(); authenticationService.SignIn(user, true); - //_orchardHost.Reinitialize(); } + if (!_shellSettingsLoader.SaveSettings(shellSettings)) { + _notifier.Error(T("Site settings could not be saved. (Name = \"{0}\")", shellSettings.Name)); + return Index(model); + } + + _orchardHost.Reinitialize(); + _notifier.Information(T("Setup succeeded")); // redirect to the welcome page. diff --git a/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs b/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs index 535a1f4e5..80fb02fa0 100644 --- a/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs +++ b/src/Orchard/Environment/Configuration/ShellSettingsLoader.cs @@ -20,6 +20,9 @@ namespace Orchard.Environment.Configuration { if (settings != null && !string.IsNullOrEmpty(settings.Name)) { var sitesPath = HostingEnvironment.MapPath("~/App_Data/Sites"); if (sitesPath != null) { + if (!Directory.Exists(sitesPath)) + Directory.CreateDirectory(sitesPath); + var filePath = Path.Combine(sitesPath, string.Format("{0}.txt", settings.Name)); File.WriteAllText(filePath, ComposeSettings(settings)); return true;