mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
- Invalidating cultures cache when site cultures are modified (add,delete).
--HG-- branch : dev
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
using Orchard.Caching;
|
||||||
using Orchard.Data;
|
using Orchard.Data;
|
||||||
using Orchard.Localization.Records;
|
using Orchard.Localization.Records;
|
||||||
using Orchard.Settings;
|
using Orchard.Settings;
|
||||||
@@ -12,10 +13,12 @@ namespace Orchard.Localization.Services {
|
|||||||
public class DefaultCultureManager : ICultureManager {
|
public class DefaultCultureManager : ICultureManager {
|
||||||
private readonly IRepository<CultureRecord> _cultureRepository;
|
private readonly IRepository<CultureRecord> _cultureRepository;
|
||||||
private readonly IEnumerable<ICultureSelector> _cultureSelectors;
|
private readonly IEnumerable<ICultureSelector> _cultureSelectors;
|
||||||
|
private readonly ISignals _signals;
|
||||||
|
|
||||||
public DefaultCultureManager(IRepository<CultureRecord> cultureRepository, IEnumerable<ICultureSelector> cultureSelectors) {
|
public DefaultCultureManager(IRepository<CultureRecord> cultureRepository, IEnumerable<ICultureSelector> cultureSelectors, ISignals signals) {
|
||||||
_cultureRepository = cultureRepository;
|
_cultureRepository = cultureRepository;
|
||||||
_cultureSelectors = cultureSelectors;
|
_cultureSelectors = cultureSelectors;
|
||||||
|
_signals = signals;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
|
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
|
||||||
@@ -30,6 +33,7 @@ namespace Orchard.Localization.Services {
|
|||||||
throw new ArgumentException("cultureName");
|
throw new ArgumentException("cultureName");
|
||||||
}
|
}
|
||||||
_cultureRepository.Create(new CultureRecord { Culture = cultureName });
|
_cultureRepository.Create(new CultureRecord { Culture = cultureName });
|
||||||
|
_signals.Trigger("culturesChanged");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteCulture(string cultureName) {
|
public void DeleteCulture(string cultureName) {
|
||||||
@@ -38,8 +42,10 @@ namespace Orchard.Localization.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var culture = _cultureRepository.Get(cr => cr.Culture == cultureName);
|
var culture = _cultureRepository.Get(cr => cr.Culture == cultureName);
|
||||||
if (culture != null)
|
if (culture != null) {
|
||||||
_cultureRepository.Delete(culture);
|
_cultureRepository.Delete(culture);
|
||||||
|
_signals.Trigger("culturesChanged");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetCurrentCulture(HttpContext requestContext) {
|
public string GetCurrentCulture(HttpContext requestContext) {
|
||||||
|
@@ -14,6 +14,7 @@ namespace Orchard.Localization.Services {
|
|||||||
private readonly IExtensionManager _extensionManager;
|
private readonly IExtensionManager _extensionManager;
|
||||||
private readonly ICacheManager _cacheManager;
|
private readonly ICacheManager _cacheManager;
|
||||||
private readonly ShellSettings _shellSettings;
|
private readonly ShellSettings _shellSettings;
|
||||||
|
private readonly ISignals _signals;
|
||||||
const string CoreLocalizationFilePathFormat = "/Core/App_Data/Localization/{0}/orchard.core.po";
|
const string CoreLocalizationFilePathFormat = "/Core/App_Data/Localization/{0}/orchard.core.po";
|
||||||
const string ModulesLocalizationFilePathFormat = "/Modules/{0}/App_Data/Localization/{1}/orchard.module.po";
|
const string ModulesLocalizationFilePathFormat = "/Modules/{0}/App_Data/Localization/{1}/orchard.module.po";
|
||||||
const string RootLocalizationFilePathFormat = "/App_Data/Localization/{0}/orchard.root.po";
|
const string RootLocalizationFilePathFormat = "/App_Data/Localization/{0}/orchard.root.po";
|
||||||
@@ -24,12 +25,14 @@ namespace Orchard.Localization.Services {
|
|||||||
IWebSiteFolder webSiteFolder,
|
IWebSiteFolder webSiteFolder,
|
||||||
IExtensionManager extensionManager,
|
IExtensionManager extensionManager,
|
||||||
ICacheManager cacheManager,
|
ICacheManager cacheManager,
|
||||||
ShellSettings shellSettings) {
|
ShellSettings shellSettings,
|
||||||
|
ISignals signals) {
|
||||||
_cultureManager = cultureManager;
|
_cultureManager = cultureManager;
|
||||||
_webSiteFolder = webSiteFolder;
|
_webSiteFolder = webSiteFolder;
|
||||||
_extensionManager = extensionManager;
|
_extensionManager = extensionManager;
|
||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
_shellSettings = shellSettings;
|
_shellSettings = shellSettings;
|
||||||
|
_signals = signals;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This will translate a string into a string in the target cultureName.
|
// This will translate a string into a string in the target cultureName.
|
||||||
@@ -96,6 +99,7 @@ namespace Orchard.Localization.Services {
|
|||||||
Translations = LoadTranslationsForCulture(culture, ctx)
|
Translations = LoadTranslationsForCulture(culture, ctx)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
ctx.Monitor(_signals.When("culturesChanged"));
|
||||||
return cultures;
|
return cultures;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user