mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Merge pull request #6140 from neTp9c/CultureConditions
Culture condition provider
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user