- Invalidating cultures cache when site cultures are modified (add,delete).

--HG--
branch : dev
This commit is contained in:
Suha Can
2010-07-07 11:30:43 -07:00
parent ba34854ae0
commit 9597712701
2 changed files with 13 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using JetBrains.Annotations;
using Orchard.Caching;
using Orchard.Data;
using Orchard.Localization.Records;
using Orchard.Settings;
@@ -12,10 +13,12 @@ namespace Orchard.Localization.Services {
public class DefaultCultureManager : ICultureManager {
private readonly IRepository<CultureRecord> _cultureRepository;
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;
_cultureSelectors = cultureSelectors;
_signals = signals;
}
protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
@@ -30,6 +33,7 @@ namespace Orchard.Localization.Services {
throw new ArgumentException("cultureName");
}
_cultureRepository.Create(new CultureRecord { Culture = cultureName });
_signals.Trigger("culturesChanged");
}
public void DeleteCulture(string cultureName) {
@@ -38,8 +42,10 @@ namespace Orchard.Localization.Services {
}
var culture = _cultureRepository.Get(cr => cr.Culture == cultureName);
if (culture != null)
if (culture != null) {
_cultureRepository.Delete(culture);
_signals.Trigger("culturesChanged");
}
}
public string GetCurrentCulture(HttpContext requestContext) {

View File

@@ -14,6 +14,7 @@ namespace Orchard.Localization.Services {
private readonly IExtensionManager _extensionManager;
private readonly ICacheManager _cacheManager;
private readonly ShellSettings _shellSettings;
private readonly ISignals _signals;
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 RootLocalizationFilePathFormat = "/App_Data/Localization/{0}/orchard.root.po";
@@ -24,12 +25,14 @@ namespace Orchard.Localization.Services {
IWebSiteFolder webSiteFolder,
IExtensionManager extensionManager,
ICacheManager cacheManager,
ShellSettings shellSettings) {
ShellSettings shellSettings,
ISignals signals) {
_cultureManager = cultureManager;
_webSiteFolder = webSiteFolder;
_extensionManager = extensionManager;
_cacheManager = cacheManager;
_shellSettings = shellSettings;
_signals = signals;
}
// This will translate a string into a string in the target cultureName.
@@ -96,6 +99,7 @@ namespace Orchard.Localization.Services {
Translations = LoadTranslationsForCulture(culture, ctx)
});
}
ctx.Monitor(_signals.When("culturesChanged"));
return cultures;
});