Merge pull request #6140 from neTp9c/CultureConditions

Culture condition provider
This commit is contained in:
Nicholas Mayne
2016-01-25 11:40:02 +00:00

View File

@@ -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);
}
}
}