Some more work on setup

- shell settings config saved to ~/App_Data/Sites/<ShellSettings Name>.txt
- initial page owner set
- orchardHost reinitialized (<- left commented out)

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-02-08 23:37:13 -08:00
parent 21c024dd97
commit fd79fd9774
4 changed files with 38 additions and 10 deletions

View File

@@ -51,12 +51,16 @@ namespace Orchard.Tests.Environment {
} }
public class StubShellSettingsLoader : IShellSettingsLoader { public class StubShellSettingsLoader : IShellSettingsLoader {
private readonly List<IShellSettings> _shellSettings = new List<IShellSettings>
{new ShellSettings {Name = "testing"}};
public IEnumerable<IShellSettings> LoadSettings() { public IEnumerable<IShellSettings> LoadSettings() {
return new[] { new ShellSettings { Name = "testing" } }; return _shellSettings.AsEnumerable();
} }
public void SaveSettings(IShellSettings settings) { public bool SaveSettings(IShellSettings settings) {
_shellSettings.Add(settings);
return true;
} }
} }

View File

@@ -73,7 +73,7 @@ foreach (var pageEntry in Model.PageEntries)
<td><%=Html.Encode(pageEntry.Page.Title ?? T("(no title)").ToString())%></td> <td><%=Html.Encode(pageEntry.Page.Title ?? T("(no title)").ToString())%></td>
<td><% if (pageEntry.Page.HasPublished) <td><% if (pageEntry.Page.HasPublished)
{ %> { %>
<%=Html.ActionLink(pageEntry.Page.Slug ?? T("(no slug)").ToString(), "Item", new { controller = "Page", slug = pageEntry.Page.PublishedSlug })%> <%=Html.ActionLink(!string.IsNullOrEmpty(pageEntry.Page.Slug) ? pageEntry.Page.Slug : T("(no slug)").ToString(), "Item", new { controller = "Page", slug = pageEntry.Page.PublishedSlug })%>
<% } <% }
else else
{%> {%>

View File

@@ -17,14 +17,17 @@ namespace Orchard.Setup.Controllers {
private readonly INotifier _notifier; private readonly INotifier _notifier;
private readonly IDatabaseMigrationManager _databaseMigrationManager; private readonly IDatabaseMigrationManager _databaseMigrationManager;
private readonly IOrchardHost _orchardHost; private readonly IOrchardHost _orchardHost;
private readonly IShellSettingsLoader _shellSettingsLoader;
public SetupController( public SetupController(
INotifier notifier, INotifier notifier,
IDatabaseMigrationManager databaseMigrationManager, IDatabaseMigrationManager databaseMigrationManager,
IOrchardHost orchardHost) { IOrchardHost orchardHost,
IShellSettingsLoader shellSettingsLoader) {
_notifier = notifier; _notifier = notifier;
_databaseMigrationManager = databaseMigrationManager; _databaseMigrationManager = databaseMigrationManager;
_orchardHost = orchardHost; _orchardHost = orchardHost;
_shellSettingsLoader = shellSettingsLoader;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
} }
@@ -51,6 +54,12 @@ namespace Orchard.Setup.Controllers {
// in theory this environment can be used to resolve any normal components by interface, and those // in theory this environment can be used to resolve any normal components by interface, and those
// components will exist entirely in isolation - no crossover between the safemode container currently in effect // components will exist entirely in isolation - no crossover between the safemode container currently in effect
var shellSettings = new ShellSettings { Name = "temp" }; 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)) { using (var finiteEnvironment = _orchardHost.CreateStandaloneEnvironment(shellSettings)) {
var contentManager = finiteEnvironment.Resolve<IContentManager>(); var contentManager = finiteEnvironment.Resolve<IContentManager>();
// create superuser // create superuser
@@ -71,10 +80,13 @@ namespace Orchard.Setup.Controllers {
page.As<RoutableAspect>().Slug = ""; page.As<RoutableAspect>().Slug = "";
page.As<RoutableAspect>().Title = model.SiteName; page.As<RoutableAspect>().Title = model.SiteName;
page.As<HasComments>().CommentsShown = false; page.As<HasComments>().CommentsShown = false;
page.As<CommonAspect>().Owner = user;
contentManager.Publish(page); contentManager.Publish(page);
var authenticationService = finiteEnvironment.Resolve<IAuthenticationService>(); var authenticationService = finiteEnvironment.Resolve<IAuthenticationService>();
authenticationService.SignIn(user, true); authenticationService.SignIn(user, true);
//_orchardHost.Reinitialize();
} }
_notifier.Information(T("Setup succeeded")); _notifier.Information(T("Setup succeeded"));

View File

@@ -1,5 +1,4 @@
using System; using System.Collections.Generic;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Web.Hosting; using System.Web.Hosting;
@@ -8,7 +7,7 @@ using Yaml.Grammar;
namespace Orchard.Environment.Configuration { namespace Orchard.Environment.Configuration {
public interface IShellSettingsLoader { public interface IShellSettingsLoader {
IEnumerable<IShellSettings> LoadSettings(); IEnumerable<IShellSettings> LoadSettings();
void SaveSettings(IShellSettings settings); bool SaveSettings(IShellSettings settings);
} }
public class ShellSettingsLoader : IShellSettingsLoader { public class ShellSettingsLoader : IShellSettingsLoader {
@@ -17,8 +16,17 @@ namespace Orchard.Environment.Configuration {
return LoadSettings().ToArray(); return LoadSettings().ToArray();
} }
public void SaveSettings(IShellSettings settings) { public bool SaveSettings(IShellSettings settings) {
if (settings != null && !string.IsNullOrEmpty(settings.Name)) {
var sitesPath = HostingEnvironment.MapPath("~/App_Data/Sites");
if (sitesPath != null) {
var filePath = Path.Combine(sitesPath, string.Format("{0}.txt", settings.Name));
File.WriteAllText(filePath, ComposeSettings(settings));
return true;
}
}
return false;
} }
static IEnumerable<IShellSettings> LoadSettings() { static IEnumerable<IShellSettings> LoadSettings() {
@@ -53,5 +61,9 @@ namespace Orchard.Environment.Configuration {
DataItem value; DataItem value;
return fields.TryGetValue(key, out value) ? value.ToString() : null; return fields.TryGetValue(key, out value) ? value.ToString() : null;
} }
static string ComposeSettings(IShellSettings shellSettings) {
return shellSettings == null ? "" : string.Format("Name: {0}", shellSettings.Name);
}
} }
} }