diff --git a/src/Orchard.Web/Modules/Orchard.Localization/RuleEngine/CultureRuleProvider.cs b/src/Orchard.Web/Modules/Orchard.Localization/RuleEngine/CultureRuleProvider.cs index 5a7a29761..646f646a3 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/RuleEngine/CultureRuleProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/RuleEngine/CultureRuleProvider.cs @@ -8,7 +8,12 @@ namespace Orchard.Localization.RuleEngine { void Process(dynamic ruleContext); } - public class CultureRuleProvider : IRuleProvider { + public interface IConditionProvider : IEventHandler { + void Evaluate(dynamic evaluationContext); + } + + public class CultureRuleProvider : IRuleProvider, IConditionProvider + { private readonly WorkContext _workContext; public CultureRuleProvider(WorkContext workContext) { @@ -33,6 +38,25 @@ namespace Orchard.Localization.RuleEngine { } } + public void Evaluate(dynamic evaluationContext) + { + if (String.Equals(evaluationContext.FunctionName, "culturecode", StringComparison.OrdinalIgnoreCase)) { + ProcessCultureCode(evaluationContext); + } + + if (String.Equals(evaluationContext.FunctionName, "culturelcid", StringComparison.OrdinalIgnoreCase)) { + ProcessCultureId(evaluationContext); + } + + if (String.Equals(evaluationContext.FunctionName, "cultureisrtl", StringComparison.OrdinalIgnoreCase)) { + ProcessCurrentCultureIsRtl(evaluationContext); + } + + if (String.Equals(evaluationContext.FunctionName, "culturelang", StringComparison.OrdinalIgnoreCase)) { + ProcessLanguageCode(evaluationContext); + } + } + private void ProcessCurrentCultureIsRtl(dynamic ruleContext) { var currentUserCulture = CultureInfo.GetCultureInfo(_workContext.CurrentCulture); @@ -69,5 +93,7 @@ namespace Orchard.Localization.RuleEngine { .Select(CultureInfo.GetCultureInfo) .Any(c => c.Name == currentUserCulture.Name); } + + } } \ No newline at end of file