mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-22 20:13:50 +08:00
@@ -208,6 +208,7 @@
|
|||||||
<Compile Include="Settings\Commands\SiteSettingsCommands.cs" />
|
<Compile Include="Settings\Commands\SiteSettingsCommands.cs" />
|
||||||
<Compile Include="Settings\Models\SiteSettings2Part.cs" />
|
<Compile Include="Settings\Models\SiteSettings2Part.cs" />
|
||||||
<Compile Include="Settings\Models\SiteSettings2PartRecord.cs" />
|
<Compile Include="Settings\Models\SiteSettings2PartRecord.cs" />
|
||||||
|
<Compile Include="Settings\Models\SiteSettingsCache.cs" />
|
||||||
<Compile Include="Settings\ResourceManifest.cs" />
|
<Compile Include="Settings\ResourceManifest.cs" />
|
||||||
<Compile Include="Settings\Migrations.cs" />
|
<Compile Include="Settings\Migrations.cs" />
|
||||||
<Compile Include="Settings\Drivers\SiteSettingsPartDriver.cs" />
|
<Compile Include="Settings\Drivers\SiteSettingsPartDriver.cs" />
|
||||||
|
18
src/Orchard.Web/Core/Orchard.Core.csproj.rej
Normal file
18
src/Orchard.Web/Core/Orchard.Core.csproj.rej
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
--- Orchard.Core.csproj
|
||||||
|
+++ Orchard.Core.csproj
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
<OldToolsVersion>3.5</OldToolsVersion>
|
||||||
|
<UpgradeBackupLocation />
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
+ <UseIISExpress>false</UseIISExpress>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@@ -200,6 +201,7 @@
|
||||||
|
<Compile Include="Scheduling\Services\ScheduledTaskManager.cs" />
|
||||||
|
<Compile Include="Scheduling\Services\ScheduledTaskExecutor.cs" />
|
||||||
|
<Compile Include="Scheduling\Models\Task.cs" />
|
||||||
|
+ <Compile Include="Settings\Models\SiteSettingsCache.cs" />
|
||||||
|
<Compile Include="Settings\Models\SiteSettings2Part.cs" />
|
||||||
|
<Compile Include="Settings\Models\SiteSettings2PartRecord.cs" />
|
||||||
|
<Compile Include="Settings\ResourceManifest.cs" />
|
@@ -1,4 +1,5 @@
|
|||||||
using JetBrains.Annotations;
|
using System;
|
||||||
|
using JetBrains.Annotations;
|
||||||
using Orchard.Core.Settings.Models;
|
using Orchard.Core.Settings.Models;
|
||||||
using Orchard.Data;
|
using Orchard.Data;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
@@ -11,6 +12,14 @@ namespace Orchard.Core.Settings.Handlers {
|
|||||||
Filters.Add(new ActivatingFilter<SiteSettings2Part>("Site"));
|
Filters.Add(new ActivatingFilter<SiteSettings2Part>("Site"));
|
||||||
Filters.Add(StorageFilter.For(repository));
|
Filters.Add(StorageFilter.For(repository));
|
||||||
Filters.Add(StorageFilter.For(repository2));
|
Filters.Add(StorageFilter.For(repository2));
|
||||||
|
|
||||||
|
OnInitializing<SiteSettingsPart>(InitializeSiteSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void InitializeSiteSettings(InitializingContentContext initializingContentContext, SiteSettingsPart siteSettingsPart) {
|
||||||
|
siteSettingsPart.Record.SiteSalt = Guid.NewGuid().ToString("N");
|
||||||
|
siteSettingsPart.Record.SiteName = "My Orchard Project Application";
|
||||||
|
siteSettingsPart.Record.PageTitleSeparator = " - ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
141
src/Orchard.Web/Core/Settings/Models/SiteSettingsCache.cs
Normal file
141
src/Orchard.Web/Core/Settings/Models/SiteSettingsCache.cs
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.Settings;
|
||||||
|
|
||||||
|
namespace Orchard.Core.Settings.Models {
|
||||||
|
public class SiteSettingsCache : ISite {
|
||||||
|
private readonly int _id;
|
||||||
|
|
||||||
|
private SiteSettingsPart _siteSettingsPart;
|
||||||
|
|
||||||
|
private string _pageTitleSeparator;
|
||||||
|
private string _siteName;
|
||||||
|
private string _siteSalt;
|
||||||
|
private string _superUser;
|
||||||
|
private string _homePage;
|
||||||
|
private string _siteCulture;
|
||||||
|
private ResourceDebugMode _resourceDebugMode;
|
||||||
|
private int _pageSize;
|
||||||
|
private string _baseUrl;
|
||||||
|
|
||||||
|
public SiteSettingsCache(ISite site) {
|
||||||
|
_id = site.Id;
|
||||||
|
_pageTitleSeparator = site.PageTitleSeparator;
|
||||||
|
_siteName = site.SiteName;
|
||||||
|
_siteSalt = site.SiteSalt;
|
||||||
|
_superUser = site.SuperUser;
|
||||||
|
_homePage = site.HomePage;
|
||||||
|
_siteCulture = site.SiteCulture;
|
||||||
|
_resourceDebugMode = site.ResourceDebugMode;
|
||||||
|
_pageSize = site.PageSize;
|
||||||
|
_baseUrl = site.BaseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Id {
|
||||||
|
get { return _id; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string PageTitleSeparator {
|
||||||
|
get { return _pageTitleSeparator; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_pageTitleSeparator = value;
|
||||||
|
SiteSettingsPart.PageTitleSeparator = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SiteName {
|
||||||
|
get { return _siteName; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_siteName = value;
|
||||||
|
SiteSettingsPart.SiteName = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SiteSalt {
|
||||||
|
get { return _siteSalt; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_siteSalt = value;
|
||||||
|
SiteSettingsPart.Record.SiteSalt = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SuperUser {
|
||||||
|
get { return _superUser; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_superUser = value;
|
||||||
|
SiteSettingsPart.SuperUser = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string HomePage {
|
||||||
|
get { return _homePage; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_homePage = value;
|
||||||
|
SiteSettingsPart.HomePage = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SiteCulture {
|
||||||
|
get { return _siteCulture; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_siteCulture = value;
|
||||||
|
SiteSettingsPart.SiteCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResourceDebugMode ResourceDebugMode {
|
||||||
|
get { return _resourceDebugMode; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_resourceDebugMode = value;
|
||||||
|
SiteSettingsPart.ResourceDebugMode = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int PageSize {
|
||||||
|
get { return _pageSize; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_pageSize = value;
|
||||||
|
SiteSettingsPart.PageSize = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string BaseUrl {
|
||||||
|
get { return _baseUrl; }
|
||||||
|
|
||||||
|
set {
|
||||||
|
_baseUrl = value;
|
||||||
|
SiteSettingsPart.BaseUrl = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ContentItem ContentItem {
|
||||||
|
get { return SiteSettingsPart.ContentItem; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private ISiteService SiteService { get; set; }
|
||||||
|
|
||||||
|
private SiteSettingsPart SiteSettingsPart {
|
||||||
|
get {
|
||||||
|
if (_siteSettingsPart == null) {
|
||||||
|
_siteSettingsPart = SiteService.GetSiteSettingsPart() as SiteSettingsPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _siteSettingsPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
set { _siteSettingsPart = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetCache(ISiteService siteService) {
|
||||||
|
SiteService = siteService;
|
||||||
|
SiteSettingsPart = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -20,23 +20,27 @@ namespace Orchard.Core.Settings.Services {
|
|||||||
ICacheManager cacheManager) {
|
ICacheManager cacheManager) {
|
||||||
_contentManager = contentManager;
|
_contentManager = contentManager;
|
||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
|
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ILogger Logger { get; set; }
|
public ILogger Logger { get; set; }
|
||||||
|
|
||||||
public ISite GetSiteSettings() {
|
public ISite GetSiteSettings() {
|
||||||
|
SiteSettingsCache siteSettingsCache = _cacheManager.Get("SiteSettings",
|
||||||
|
ctx => new SiteSettingsCache(GetSiteSettingsPart()));
|
||||||
|
siteSettingsCache.ResetCache(this);
|
||||||
|
return siteSettingsCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ISite GetSiteSettingsPart() {
|
||||||
var siteId = _cacheManager.Get("SiteId", ctx => {
|
var siteId = _cacheManager.Get("SiteId", ctx => {
|
||||||
var site = _contentManager.Query("Site")
|
var site = _contentManager.Query("Site")
|
||||||
.Slice(0, 1)
|
.Slice(0, 1)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
if (site == null) {
|
if (site == null) {
|
||||||
site = _contentManager.Create<SiteSettingsPart>("Site", item => {
|
site = _contentManager.Create<SiteSettingsPart>("Site").ContentItem;
|
||||||
item.Record.SiteSalt = Guid.NewGuid().ToString("N");
|
|
||||||
item.Record.SiteName = "My Orchard Project Application";
|
|
||||||
item.Record.PageTitleSeparator = " - ";
|
|
||||||
}).ContentItem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return site.Id;
|
return site.Id;
|
||||||
|
@@ -140,6 +140,10 @@ namespace Orchard.Setup {
|
|||||||
|
|
||||||
return site.As<ISite>();
|
return site.As<ISite>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ISite GetSiteSettingsPart() {
|
||||||
|
return GetSiteSettings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SafeModeSite : ContentPart, ISite {
|
class SafeModeSite : ContentPart, ISite {
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
namespace Orchard.Settings {
|
namespace Orchard.Settings {
|
||||||
public interface ISiteService : IDependency {
|
public interface ISiteService : IDependency {
|
||||||
ISite GetSiteSettings();
|
ISite GetSiteSettings();
|
||||||
|
ISite GetSiteSettingsPart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user