Using Current Culture on WorkContext and remove reliance of HttpContext

This commit is contained in:
Nicholas Mayne
2014-08-30 11:54:21 +01:00
parent 87ce88801d
commit 928c4e936a

View File

@@ -2,8 +2,6 @@
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using Orchard.Events; using Orchard.Events;
using Orchard.Localization.Services;
using Orchard.Mvc;
namespace Orchard.Localization.RuleEngine { namespace Orchard.Localization.RuleEngine {
public interface IRuleProvider : IEventHandler { public interface IRuleProvider : IEventHandler {
@@ -11,12 +9,10 @@ namespace Orchard.Localization.RuleEngine {
} }
public class CultureRuleProvider : IRuleProvider { public class CultureRuleProvider : IRuleProvider {
private readonly ICultureManager _cultureManager; private readonly WorkContext _workContext;
private readonly IHttpContextAccessor _httpContextAccessor;
public CultureRuleProvider(ICultureManager cultureManager, IHttpContextAccessor httpContextAccessor) { public CultureRuleProvider(WorkContext workContext) {
_cultureManager = cultureManager; _workContext = workContext;
_httpContextAccessor = httpContextAccessor;
} }
public void Process(dynamic ruleContext) { public void Process(dynamic ruleContext) {
@@ -30,8 +26,7 @@ namespace Orchard.Localization.RuleEngine {
} }
private void ProcessCultureCode(dynamic ruleContext) { private void ProcessCultureCode(dynamic ruleContext) {
var httpContext = _httpContextAccessor.Current(); var currentUserCulture = CultureInfo.GetCultureInfo(_workContext.CurrentCulture);
var currentUserCulture = CultureInfo.GetCultureInfo(_cultureManager.GetCurrentCulture(httpContext));
ruleContext.Result = ((object[])ruleContext.Arguments) ruleContext.Result = ((object[])ruleContext.Arguments)
.Cast<string>() .Cast<string>()
@@ -40,8 +35,7 @@ namespace Orchard.Localization.RuleEngine {
} }
private void ProcessCultureId(dynamic ruleContext) { private void ProcessCultureId(dynamic ruleContext) {
var httpContext = _httpContextAccessor.Current(); var currentUserCulture = CultureInfo.GetCultureInfo(_workContext.CurrentCulture);
var currentUserCulture = CultureInfo.GetCultureInfo(_cultureManager.GetCurrentCulture(httpContext));
ruleContext.Result = ((object[])ruleContext.Arguments) ruleContext.Result = ((object[])ruleContext.Arguments)
.Cast<int>() .Cast<int>()