using System; using System.Collections.Generic; using System.Web; using System.Web.Routing; using Autofac; using Orchard.Commands; using Orchard.Commands.Builtin; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; using Orchard.ContentManagement.MetaData.Builders; using Orchard.Data.Migration.Interpreters; using Orchard.Data.Providers; using Orchard.Data.Migration; using Orchard.DisplayManagement; using Orchard.DisplayManagement.Descriptors; using Orchard.DisplayManagement.Implementation; using Orchard.DisplayManagement.Shapes; using Orchard.Environment; 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.Mvc.ViewEngines.Razor; using Orchard.Mvc.ViewEngines.ThemeAwareness; using Orchard.Mvc.ViewEngines.WebForms; using Orchard.Settings; using Orchard.Themes; using Orchard.UI.Notify; using Orchard.UI.PageClass; using Orchard.UI.PageTitle; namespace Orchard.Setup { public class SetupMode : Module { protected override void Load(ContainerBuilder builder) { // standard services needed in setup mode builder.RegisterModule(new MvcModule()); builder.RegisterModule(new CommandModule()); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As(); // setup mode specific implementations of needed service interfaces builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); // in progress - adding services for display/shape support in setup builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As().As(); } 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 GetInstalledThemes() { return new[] { _theme }; } public void InstallTheme(HttpPostedFileBase file) { } public void UninstallTheme(string themeName) { } } class SafeModeSiteService : ISiteService { public ISite GetSiteSettings() { var siteType = new ContentTypeDefinitionBuilder().Named("Site").Build(); var site = new ContentItemBuilder(siteType) .Weld() .Build(); return site.As(); } } 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(); } } public string SiteCulture { get { return ""; } set { throw new NotImplementedException(); } } } } }