mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
- Settings support for packages and their injection to settings admin.
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041325
This commit is contained in:
@@ -108,6 +108,7 @@
|
||||
<Content Include="Settings\Views\Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Settings\Views\Admin\EditorTemplates\SettingsIndexViewModel.ascx" />
|
||||
<Content Include="XmlRpc\Views\Web.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
|
@@ -1,19 +1,22 @@
|
||||
using System;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Core.Settings.Models;
|
||||
using Orchard.Core.Settings.ViewModels;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Models;
|
||||
using Orchard.Settings;
|
||||
using Orchard.UI.Notify;
|
||||
using Orchard.Models.Driver;
|
||||
|
||||
namespace Orchard.Core.Settings.Controllers {
|
||||
[ValidateInput(false)]
|
||||
public class AdminController : Controller {
|
||||
public class AdminController : Controller, IModelUpdater {
|
||||
private readonly ISiteService _siteService;
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly INotifier _notifier;
|
||||
|
||||
public AdminController(ISiteService siteService, INotifier notifier) {
|
||||
public AdminController(ISiteService siteService, IModelManager modelManager, INotifier notifier) {
|
||||
_siteService = siteService;
|
||||
_modelManager = modelManager;
|
||||
_notifier = notifier;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
@@ -22,21 +25,30 @@ namespace Orchard.Core.Settings.Controllers {
|
||||
|
||||
public ActionResult Index() {
|
||||
var model = new Orchard.Core.Settings.ViewModels.SettingsIndexViewModel {
|
||||
SiteSettings = _siteService.GetSiteSettings().As<SiteModel>() };
|
||||
Site = _siteService.GetSiteSettings().As<SiteModel>() };
|
||||
model.Editors = _modelManager.GetEditors(model.Site);
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[AcceptVerbs(HttpVerbs.Post)]
|
||||
public ActionResult Index(FormCollection input) {
|
||||
var viewModel = new SettingsIndexViewModel { SiteSettings = _siteService.GetSiteSettings().As<SiteModel>() };
|
||||
UpdateModel(viewModel.SiteSettings, input.ToValueProvider());
|
||||
try {
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
catch (Exception exception) {
|
||||
_notifier.Error("Editing Settings failed: " + exception.Message);
|
||||
return View();
|
||||
var viewModel = new SettingsIndexViewModel { Site = _siteService.GetSiteSettings().As<SiteModel>() };
|
||||
viewModel.Editors = _modelManager.UpdateEditors(viewModel.Site, this);
|
||||
|
||||
if (!TryUpdateModel(viewModel, input.ToValueProvider())) {
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
_notifier.Information(T("Settings updated"));
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
#region IModelUpdater Members
|
||||
|
||||
bool IModelUpdater.TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
|
||||
return TryUpdateModel(model, prefix, includeProperties, excludeProperties);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,28 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Core.Settings.Models;
|
||||
using Orchard.UI.Models;
|
||||
|
||||
namespace Orchard.Core.Settings.ViewModels {
|
||||
public class SettingsIndexViewModel : AdminViewModel {
|
||||
public SiteModel SiteSettings { get; set; }
|
||||
public IModel Site { get; set; }
|
||||
public IEnumerable<ModelTemplate> Editors { get; set; }
|
||||
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
public int Id {
|
||||
get { return Site.Id; }
|
||||
}
|
||||
|
||||
public string SiteName {
|
||||
get { return Site.As<SiteModel>().Record.SiteName; }
|
||||
set { Site.As<SiteModel>().Record.SiteName = value; }
|
||||
}
|
||||
|
||||
public string SuperUser {
|
||||
get { return Site.As<SiteModel>().Record.SuperUser; }
|
||||
set { Site.As<SiteModel>().Record.SuperUser = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,23 @@
|
||||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SettingsIndexViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Core.Settings.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Utility" %>
|
||||
|
||||
<h3>Site Settings</h3>
|
||||
<ol>
|
||||
<%=Html.EditorFor(s=>s.Id) %>
|
||||
<li>
|
||||
<%= Html.LabelFor(x=>x.SiteName) %>
|
||||
<%= Html.EditorFor(x=>x.SiteName) %>
|
||||
<%= Html.ValidationMessage("SiteName", "*")%>
|
||||
</li>
|
||||
<li>
|
||||
<%= Html.LabelFor(x => x.SuperUser)%>
|
||||
<%= Html.EditorFor(x=>x.SuperUser) %>
|
||||
<%= Html.ValidationMessage("SuperUser", "*")%>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<% foreach(var e in Model.Editors) {%>
|
||||
<%=Html.EditorFor(m => e.Model, e.TemplateName, e.Prefix)%>
|
||||
<%} %>
|
@@ -17,14 +17,13 @@
|
||||
<%using (Html.BeginForm()) { %>
|
||||
<ol>
|
||||
<%= Html.ValidationSummary() %>
|
||||
|
||||
<%= Html.EditorForModel() %>
|
||||
<li class="clearLayout">
|
||||
<label for="SiteName">Site Name:</label>
|
||||
<%--<label for="SiteName">Site Name:</label>
|
||||
<input id="SiteName" class="inputText inputTextLarge roundCorners" name="SiteName" type="text" value="<%= Model.SiteSettings.SiteName %>" />
|
||||
<label for="SuperUser">Super User Name:</label>
|
||||
<input id="SuperUser" class="inputText inputTextLarge roundCorners" name="SuperUser" type="text" value="<%= Model.SiteSettings.SuperUser %>" />
|
||||
<%-- <input id="MediaPath" name="MediaPath" type="hidden" value="<%=Model.MediaPath %>" />--%>
|
||||
<input class="button" type="submit" value="Save" />
|
||||
--%> <input class="button" type="submit" value="Save" />
|
||||
<%=Html.ActionLink("Cancel", "Index", new{}, new{@class="button"}) %>
|
||||
</li>
|
||||
</ol>
|
||||
|
@@ -0,0 +1,39 @@
|
||||
using Orchard.Data;
|
||||
using Orchard.Models;
|
||||
using Orchard.Models.Driver;
|
||||
using Orchard.Models.Records;
|
||||
using Orchard.UI.Models;
|
||||
|
||||
namespace Orchard.Media.Models {
|
||||
public class MediaSettings : ModelPartWithRecord<MediaSettingsRecord> {
|
||||
}
|
||||
|
||||
public class MediaSettingsRecord : ModelPartRecord {
|
||||
public virtual string RootMediaFolder { get; set; }
|
||||
}
|
||||
|
||||
public class MediaSettingsDriver : ModelDriver {
|
||||
public MediaSettingsDriver(IRepository<MediaSettingsRecord> repository) {
|
||||
Filters.Add(new ActivatingFilter<MediaSettings>("site"));
|
||||
Filters.Add(new StorageFilterForRecord<MediaSettingsRecord>(repository) { AutomaticallyCreateMissingRecord = true });
|
||||
}
|
||||
|
||||
protected override void GetEditors(GetModelEditorsContext context) {
|
||||
var model = context.Instance.As<MediaSettings>();
|
||||
if (model == null)
|
||||
return;
|
||||
|
||||
context.Editors.Add(ModelTemplate.For(model.Record, "MediaSettings"));
|
||||
}
|
||||
|
||||
protected override void UpdateEditors(UpdateModelContext context) {
|
||||
var model = context.Instance.As<MediaSettings>();
|
||||
if (model == null)
|
||||
return;
|
||||
|
||||
context.Updater.TryUpdateModel(model.Record, "MediaSettings", null, null);
|
||||
context.Editors.Add(ModelTemplate.For(model.Record, "MediaSettings"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -72,6 +72,7 @@
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="Helpers\MediaHelpers.cs" />
|
||||
<Compile Include="Models\MediaSettings.cs" />
|
||||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="Models\FolderNavigation.cs" />
|
||||
<Compile Include="Models\MediaFile.cs" />
|
||||
@@ -95,6 +96,7 @@
|
||||
<Content Include="Views\Admin\EditMedia.aspx" />
|
||||
<Content Include="Views\Admin\EditProperties.aspx" />
|
||||
<Content Include="Views\Admin\Index.aspx" />
|
||||
<Content Include="Views\Models\EditorTemplates\MediaSettingsRecord.ascx" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Content\Site.css" />
|
||||
<Content Include="Views\Web.config" />
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
|
@@ -0,0 +1,10 @@
|
||||
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MediaSettingsRecord>" %>
|
||||
<%@ Import Namespace="Orchard.Media.Models"%>
|
||||
<h3>Media</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<%= Html.LabelFor(x=>x.RootMediaFolder) %>
|
||||
<%= Html.EditorFor(x=>x.RootMediaFolder) %>
|
||||
<%= Html.ValidationMessage("RootMediaFolder", "*")%>
|
||||
</li>
|
||||
</ol>
|
Reference in New Issue
Block a user