Migrating Site Settings

--HG--
branch : dev
This commit is contained in:
Sébastien Ros
2010-09-15 09:06:17 -07:00
parent 4308b063b4
commit f3bdad2ffc
15 changed files with 140 additions and 68 deletions

View File

@@ -1,20 +1,18 @@
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.ContentsLocation.Models;
using Orchard.Core.Messaging.Models;
using Orchard.Core.Messaging.Services;
using Orchard.Core.Messaging.ViewModels;
using Orchard.Localization;
using Orchard.Messaging.Services;
namespace Orchard.Core.Messaging.Drivers {
[UsedImplicitly]
public class ContentSubscriptionPartDriver : ContentPartDriver<MessageSettingsPart> {
public class MessageSettingsPartDriver : ContentPartDriver<MessageSettingsPart> {
private readonly IMessageManager _messageQueueManager;
public IOrchardServices Services { get; set; }
public ContentSubscriptionPartDriver(IOrchardServices services, IMessageManager messageQueueManager) {
public MessageSettingsPartDriver(IOrchardServices services, IMessageManager messageQueueManager) {
_messageQueueManager = messageQueueManager;
Services = services;
T = NullLocalizer.Instance;

View File

@@ -5,8 +5,8 @@ using Orchard.ContentManagement.Handlers;
namespace Orchard.Core.Messaging.Handlers {
[UsedImplicitly]
public class SmtpSettingsPartHandler : ContentHandler {
public SmtpSettingsPartHandler(IRepository<MessageSettingsPartRecord> repository) {
public class MessageSettingsPartHandler : ContentHandler {
public MessageSettingsPartHandler(IRepository<MessageSettingsPartRecord> repository) {
Filters.Add(new ActivatingFilter<MessageSettingsPart>("Site"));
Filters.Add(StorageFilter.For(repository));
}

View File

@@ -200,6 +200,7 @@
<Compile Include="Scheduling\Services\ScheduledTaskExecutor.cs" />
<Compile Include="Scheduling\Models\Task.cs" />
<Compile Include="Settings\DataMigrations\SettingsDataMigration.cs" />
<Compile Include="Settings\Drivers\SiteSettingsPartDriver.cs" />
<Compile Include="Settings\ViewModels\SiteCulturesViewModel.cs" />
<Compile Include="Settings\Metadata\ContentDefinitionManager.cs" />
<Compile Include="Settings\Metadata\Records\ContentFieldDefinitionRecord.cs" />
@@ -221,7 +222,7 @@
<Compile Include="Settings\Handlers\SiteSettingsPartHandler.cs" />
<Compile Include="Settings\Models\SiteSettingsPart.cs" />
<Compile Include="Settings\Services\SiteService.cs" />
<Compile Include="Settings\ViewModels\SettingsIndexViewModel.cs" />
<Compile Include="Settings\ViewModels\SiteSettingsPartViewModel.cs" />
<Compile Include="Shapes\CoreShapes.cs" />
<Compile Include="XmlRpc\Controllers\HomeController.cs" />
<Compile Include="XmlRpc\Controllers\LiveWriterController.cs" />
@@ -310,6 +311,7 @@
<None Include="Routable\Views\DisplayTemplates\Parts\Routable.RoutePart.cshtml" />
<Content Include="Settings\Module.txt" />
<Content Include="Settings\Styles\admin.css" />
<None Include="Settings\Views\Admin\Copy of Index.cshtml" />
<None Include="Settings\Views\Admin\Index.cshtml" />
<None Include="Settings\Views\Admin\Culture.cshtml" />
<Content Include="Settings\Views\DisplayTemplates\CurrentCulture.ascx" />
@@ -335,6 +337,7 @@
<Content Include="Shapes\Views\UI\Switchable.ascx" />
<Content Include="Web.config" />
<Content Include="XmlRpc\Module.txt" />
<None Include="Settings\Views\EditorTemplates\Parts\Settings.SiteSettingsPart.cshtml" />
<None Include="Shapes\Views\Display.cshtml" />
<None Include="Shapes\Views\Menu.ascx_" />
<None Include="XmlRpc\Views\Home\Index.cshtml" />
@@ -365,7 +368,6 @@
<Content Include="Feeds\Module.txt" />
<Content Include="Navigation\Module.txt" />
<Content Include="Scheduling\Module.txt" />
<Content Include="Settings\Views\EditorTemplates\Items\Settings.Site.ascx" />
</ItemGroup>
<ItemGroup>
<Content Include="Dashboard\Module.txt" />

View File

@@ -35,11 +35,8 @@ namespace Orchard.Core.Settings.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ManageSettings, T("Not authorized to manage settings")))
return new HttpUnauthorizedResult();
var site = _siteService.GetSiteSettings().As<SiteSettingsPart>();
var model = new SettingsIndexViewModel {
Site = site,
SiteCultures = _cultureManager.ListCultures()
};
var model = Services.ContentManager.BuildEditorModel(_siteService.GetSiteSettings());
return View(model);
}
@@ -49,7 +46,7 @@ namespace Orchard.Core.Settings.Controllers {
return new HttpUnauthorizedResult();
var site = _siteService.GetSiteSettings().As<SiteSettingsPart>();
var model = new SettingsIndexViewModel { Site = Services.ContentManager.UpdateEditorModel(site, this) };
var model = new SiteSettingsPartViewModel { Site = Services.ContentManager.UpdateEditorModel(site, this) };
if (!ModelState.IsValid) {
Services.TransactionManager.Cancel();

View File

@@ -0,0 +1,43 @@
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.Core.Settings.Models;
using Orchard.Core.Settings.ViewModels;
using Orchard.Localization.Services;
using Orchard.Settings;
namespace Orchard.Core.Settings.Drivers {
[UsedImplicitly]
public class SiteSettingsPartDriver : ContentPartDriver<SiteSettingsPart> {
private readonly ISiteService _siteService;
private readonly ICultureManager _cultureManager;
public SiteSettingsPartDriver(ISiteService siteService, ICultureManager cultureManager) {
_siteService = siteService;
_cultureManager = cultureManager;
}
protected override string Prefix { get { return "SiteSettings"; } }
protected override DriverResult Editor(SiteSettingsPart part) {
var site = _siteService.GetSiteSettings().As<SiteSettingsPart>();
var model = new SiteSettingsPartViewModel {
Site = site,
SiteCultures = _cultureManager.ListCultures()
};
return ContentPartTemplate(model, "Parts/Settings.SiteSettingsPart");
}
protected override DriverResult Editor(SiteSettingsPart part, IUpdateModel updater) {
var site = _siteService.GetSiteSettings().As<SiteSettingsPart>();
var model = new SiteSettingsPartViewModel { Site = site };
if (updater.TryUpdateModel(model, Prefix, null, null)) {
}
return ContentPartTemplate(model, "Parts/Settings.SiteSettingsPart");
}
}
}

View File

@@ -4,7 +4,7 @@ using Orchard.ContentManagement;
using Orchard.Core.Settings.Models;
namespace Orchard.Core.Settings.ViewModels {
public class SettingsIndexViewModel {
public class SiteSettingsPartViewModel {
public SiteSettingsPart Site { get; set; }
public IEnumerable<string> SiteCultures { get; set; }

View File

@@ -0,0 +1,35 @@
@model SettingsIndexViewModel
@using Orchard.Core.Settings.ViewModels
<h1>@Html.TitleForPage(T("Manage Settings").ToString())</h1>
@using (Html.BeginFormAntiForgeryPost()) {
@Html.ValidationSummary()
<fieldset>
<legend>@T("Global Settings")</legend>
<div>
<label for="SiteName">@T("Site name")</label>
@Html.EditorFor(m => m.SiteName)
@Html.ValidationMessage("SiteName", "*")
</div>
<div>
<label for="SiteCulture">@T("Default Site Culture")</label>
@Html.DropDownList("SiteCulture", new SelectList(Model.SiteCultures, Model.SiteCulture))
@Html.ValidationMessage("SiteCulture", "*")
<p>@Html.ActionLink(T("Add or remove supported cultures for the site.").ToString(), "Culture")</p>
</div>
<div>
<label for="PageTitleSeparator">@T("Page title separator")</label>
@Html.EditorFor(x => x.PageTitleSeparator)
@Html.ValidationMessage("PageTitleSeparator", "*")
</div>
<div>
<label for="SuperUser">@T("Super user")</label>
@Html.EditorFor(x=>x.SuperUser)
@Html.ValidationMessage("SuperUser", "*")
</div>
</fieldset>
<fieldset>
@Html.EditorFor(s => s.Id)
<input class="button primaryAction" type="submit" value="@T("Save")" />
</fieldset>
}

View File

@@ -1,35 +1,11 @@
@model SettingsIndexViewModel
@using Orchard.Core.Settings.ViewModels
<h1>@Html.TitleForPage(T("Manage Settings").ToString())</h1>
<h1>@Html.TitleForPage(T("Manage Settings").ToString())</h1>
@using (Html.BeginFormAntiForgeryPost()) {
@Html.ValidationSummary()
@//todo : (sebros) Zone names are not consistent for settings parts, clean it
@Display(Model.body)
@Display(Model.primary)
<fieldset>
<legend>@T("Global Settings")</legend>
<div>
<label for="SiteName">@T("Site name")</label>
@Html.EditorFor(m => m.SiteName)
@Html.ValidationMessage("SiteName", "*")
</div>
<div>
<label for="SiteCulture">@T("Default Site Culture")</label>
@Html.DropDownList("SiteCulture", new SelectList(Model.SiteCultures, Model.SiteCulture))
@Html.ValidationMessage("SiteCulture", "*")
<p>@Html.ActionLink(T("Add or remove supported cultures for the site.").ToString(), "Culture")</p>
</div>
<div>
<label for="PageTitleSeparator">@T("Page title separator")</label>
@Html.EditorFor(x => x.PageTitleSeparator)
@Html.ValidationMessage("PageTitleSeparator", "*")
</div>
<div>
<label for="SuperUser">@T("Super user")</label>
@Html.EditorFor(x=>x.SuperUser)
@Html.ValidationMessage("SuperUser", "*")
</div>
</fieldset>
<fieldset>
@Html.EditorFor(s => s.Id)
<input class="button primaryAction" type="submit" value="@T("Save")" />
</fieldset>
}

View File

@@ -1,5 +0,0 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ContentItemViewModel<SiteSettingsPart>>" %>
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
<%@ Import Namespace="Orchard.Core.Settings.Models"%>
<% Html.Zone("primary");
Html.ZonesAny(); %>

View File

@@ -0,0 +1,25 @@
@model Orchard.Core.Settings.ViewModels.SiteSettingsPartViewModel
<fieldset>
<legend>@T("Global Settings")</legend>
<div>
<label for="SiteName">@T("Site name")</label>
@Html.EditorFor(m => m.SiteName)
@Html.ValidationMessage("SiteName", "*")
</div>
<div>
<label for="SiteCulture">@T("Default Site Culture")</label>
@Html.DropDownList("SiteCulture", new SelectList(Model.SiteCultures, Model.SiteCulture))
@Html.ValidationMessage("SiteCulture", "*")
<p>@Html.ActionLink(T("Add or remove supported cultures for the site.").ToString(), "Culture")</p>
</div>
<div>
<label for="PageTitleSeparator">@T("Page title separator")</label>
@Html.EditorFor(x => x.PageTitleSeparator)
@Html.ValidationMessage("PageTitleSeparator", "*")
</div>
<div>
<label for="SuperUser">@T("Super user")</label>
@Html.EditorFor(x=>x.SuperUser)
@Html.ValidationMessage("SuperUser", "*")
</div>
</fieldset>

View File

@@ -9,7 +9,7 @@ namespace Orchard.Users.Handlers {
public RegistrationSettingsPartHandler(IRepository<RegistrationSettingsPartRecord> repository) {
Filters.Add(new ActivatingFilter<RegistrationSettingsPart>("Site"));
Filters.Add(StorageFilter.For(repository));
Filters.Add(new TemplateFilterForRecord<RegistrationSettingsPartRecord>("RegistrationSettings"));
Filters.Add(new TemplateFilterForRecord<RegistrationSettingsPartRecord>("RegistrationSettings", "Parts/Users.RegistrationSettings"));
}
}
}

View File

@@ -1,15 +1,15 @@
using System;
using Orchard.ContentManagement.Records;
using Orchard.ContentManagement.Records;
namespace Orchard.ContentManagement.Handlers {
[Obsolete]
public class TemplateFilterForRecord<TRecord> : TemplateFilterBase<ContentPart<TRecord>> where TRecord : ContentPartRecord, new() {
private readonly string _prefix;
private string _location;
private string _position;
private readonly string _templateName;
public TemplateFilterForRecord(string prefix) {
public TemplateFilterForRecord(string prefix, string templateName) {
_prefix = prefix;
_templateName = templateName;
_location = "primary";
_position = "5";
}
@@ -24,13 +24,14 @@ namespace Orchard.ContentManagement.Handlers {
return this;
}
//protected override void BuildEditorShape(BuildEditorModelContext context, ContentPart<TRecord> part) {
// context.ContentItem.Zones[_location].Add(part.Record, _position);
//}
protected override void BuildEditorShape(BuildEditorModelContext context, ContentPart<TRecord> part) {
var templateShape = context.Shape.EditorTemplate(TemplateName: _templateName, Model: part.Record, Prefix: _prefix);
context.Model.Zones[_location].Add(templateShape, _position);
}
//protected override void UpdateEditorShape(UpdateEditorModelContext context, ContentPart<TRecord> part) {
// context.Updater.TryUpdateModel(part.Record, _prefix, null, null);
// BuildEditorShape(context, part);
//}
protected override void UpdateEditorShape(UpdateEditorModelContext context, ContentPart<TRecord> part) {
context.Updater.TryUpdateModel(part.Record, _prefix, null, null);
BuildEditorShape(context, part);
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
@@ -45,6 +46,7 @@ namespace Orchard.DisplayManagement.Descriptors.ShapeAttributeStrategy {
}
}
[DebuggerStepThrough]
private Func<DisplayContext, IHtmlString> CreateDelegate(
ShapeAttributeOccurrence attributeOccurrence,
ShapeDescriptor descriptor) {
@@ -55,8 +57,7 @@ namespace Orchard.DisplayManagement.Descriptors.ShapeAttributeStrategy {
return PerformInvoke(context, attributeOccurrence.MethodInfo, serviceInstance);
};
}
private IHtmlString PerformInvoke(DisplayContext displayContext, MethodInfo methodInfo, object serviceInstance) {
var output = new HtmlStringWriter();
var arguments = methodInfo.GetParameters()

View File

@@ -1,12 +1,11 @@
using System;
using System.Diagnostics;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.SessionState;
using Autofac;
using Autofac.Integration.Web;
using Orchard.Environment;
using Orchard.Environment.AutofacUtil;
using Orchard.Environment.Configuration;
namespace Orchard.Mvc.Routes {
@@ -150,6 +149,7 @@ namespace Orchard.Mvc.Routes {
}
}
[DebuggerStepThrough]
public void EndProcessRequest(IAsyncResult result) {
try {
_httpAsyncHandler.EndProcessRequest(result);

View File

@@ -1,11 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Web.Mvc;
namespace Orchard.Mvc.ViewEngines.Razor {
public class RazorViewEngine : CshtmlViewEngine {
[DebuggerStepThrough]
protected override bool FileExists(ControllerContext controllerContext, string virtualPath) {
if (!virtualPath.EndsWith(".cshtml", StringComparison.InvariantCultureIgnoreCase))
return false;