Incremental changes towards enabling setup module

Setup controller can render initial screen
SafeMode container factory moved into Orchard.Setup module
ShellBuilders namespace files compacted a bit
Core feature named "Orchard.Framework" and is not used in setup mode

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-04-17 21:33:36 -07:00
parent a137d84732
commit 71e019a0b8
22 changed files with 198 additions and 265 deletions

View File

@@ -31,6 +31,10 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Autofac, Version=2.1.13.813, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\lib\autofac\Autofac.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.ComponentModel.DataAnnotations">
@@ -66,6 +70,7 @@
<Compile Include="Controllers\SetupController.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Routes.cs" />
<Compile Include="SetupMode.cs" />
<Compile Include="ViewModels\SetupViewModel.cs" />
</ItemGroup>
<ItemGroup>

View File

@@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Routing;
using Autofac;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Data.Builders;
using Orchard.Environment.Extensions;
using Orchard.Localization;
using Orchard.Mvc;
using Orchard.Mvc.Filters;
using Orchard.Mvc.ModelBinders;
using Orchard.Mvc.Routes;
using Orchard.Mvc.ViewEngines;
using Orchard.Settings;
using Orchard.Themes;
using Orchard.UI.Notify;
using Orchard.UI.PageClass;
using Orchard.UI.PageTitle;
using Orchard.UI.Zones;
namespace Orchard.Setup {
public class SetupMode : Module {
protected override void Load(ContainerBuilder builder) {
// standard services needed in setup mode
builder.RegisterModule(new MvcModule());
builder.RegisterType<RoutePublisher>().As<IRoutePublisher>().InstancePerLifetimeScope();
builder.RegisterType<ModelBinderPublisher>().As<IModelBinderPublisher>().InstancePerLifetimeScope();
builder.RegisterType<WebFormsViewEngineProvider>().As<IViewEngineProvider>().InstancePerLifetimeScope();
builder.RegisterType<ViewEngineFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
builder.RegisterType<ThemeFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
builder.RegisterType<PageTitleBuilder>().As<IPageTitleBuilder>().InstancePerLifetimeScope();
builder.RegisterType<ZoneManager>().As<IZoneManager>().InstancePerLifetimeScope();
builder.RegisterType<PageClassBuilder>().As<IPageClassBuilder>().InstancePerLifetimeScope();
builder.RegisterType<Notifier>().As<INotifier>().InstancePerLifetimeScope();
builder.RegisterType<NotifyFilter>().As<IFilterProvider>().InstancePerLifetimeScope();
builder.RegisterType<SessionFactoryBuilder>().As<ISessionFactoryBuilder>().InstancePerLifetimeScope();
// setup mode specific implementations of needed service interfaces
builder.RegisterType<NullHackInstallationGenerator>().As<IHackInstallationGenerator>().InstancePerLifetimeScope();
builder.RegisterType<SafeModeThemeService>().As<IThemeService>().InstancePerLifetimeScope();
builder.RegisterType<SafeModeText>().As<IText>().InstancePerLifetimeScope();
builder.RegisterType<SafeModeSiteService>().As<ISiteService>().InstancePerLifetimeScope();
}
class SafeModeText : IText {
public LocalizedString Get(string textHint, params object[] args) {
if (args == null || args.Length == 0) {
return new LocalizedString(textHint);
}
return new LocalizedString(string.Format(textHint, args));
}
}
class SafeModeThemeService : IThemeService {
class SafeModeTheme : ITheme {
public ContentItem ContentItem { get; set; }
public string ThemeName { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
public string Version { get; set; }
public string Author { get; set; }
public string HomePage { get; set; }
public string Tags { get; set; }
}
private readonly SafeModeTheme _theme = new SafeModeTheme {
ThemeName = "SafeMode",
DisplayName = "SafeMode",
};
public ITheme GetThemeByName(string themeName) { return _theme; }
public ITheme GetSiteTheme() { return _theme; }
public void SetSiteTheme(string themeName) { }
public ITheme GetRequestTheme(RequestContext requestContext) { return _theme; }
public IEnumerable<ITheme> GetInstalledThemes() { return new[] { _theme }; }
public void InstallTheme(HttpPostedFileBase file) { }
public void UninstallTheme(string themeName) { }
}
class NullHackInstallationGenerator : IHackInstallationGenerator {
public void GenerateInstallEvents() { }
public void GenerateActivateEvents() { }
}
class SafeModeSiteService : ISiteService {
public ISite GetSiteSettings() {
var site = new ContentItemBuilder("site")
.Weld<SafeModeSite>()
.Build();
return site.As<ISite>();
}
}
class SafeModeSite : ContentPart, ISite {
public string PageTitleSeparator {
get { return "*"; }
}
public string SiteName {
get { return "Orchard Setup"; }
}
public string SiteSalt {
get { return "42"; }
}
public string SiteUrl {
get { return "/"; }
}
public string SuperUser {
get { return ""; }
}
public string HomePage {
get { return ""; }
set { throw new NotImplementedException(); }
}
}
}
}