Adding CurrentCultureFilter implementation

--HG--
branch : 1.x
This commit is contained in:
geertdoornbos
2012-06-20 15:33:05 -07:00
parent 36e4d3d1db
commit bc96982127
2 changed files with 47 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
<RootNamespace>Orchard.Localization</RootNamespace>
<AssemblyName>Orchard.Localization</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<UseIISExpress>false</UseIISExpress>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -53,6 +54,7 @@
<Compile Include="Migrations.cs" />
<Compile Include="Models\LocalizationPart.cs" />
<Compile Include="Models\LocalizationPartRecord.cs" />
<Compile Include="Projections\CurrentCultureFilter.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ResourceManifest.cs" />
<Compile Include="Services\ILocalizationService.cs" />

View File

@@ -0,0 +1,45 @@
using System;
using Orchard.ContentManagement;
using Orchard.Events;
using Orchard.Localization.Models;
using Orchard.Localization.Services;
namespace Orchard.Localization.Projections {
public interface IFilterProvider : IEventHandler {
void Describe(dynamic describe);
}
public class CurrentCultureFilter : IFilterProvider {
private readonly IWorkContextAccessor _workContextAccessor;
private readonly ICultureManager _cultureManager;
public CurrentCultureFilter(IWorkContextAccessor workContextAccessor, ICultureManager cultureManager) {
_workContextAccessor = workContextAccessor;
_cultureManager = cultureManager;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public void Describe(dynamic describe) {
describe.For("Localization", T("Localization"), T("Localization"))
.Element("ForCurrentCulture", T("For current culture"), T("Localized content items for current culture"),
(Action<dynamic>)ApplyFilter,
(Func<dynamic, LocalizedString>)DisplayFilter,
null
);
}
public void ApplyFilter(dynamic context) {
string currentCulture = _workContextAccessor.GetContext().CurrentCulture;
var currentCultureId = _cultureManager.GetCultureByName(currentCulture).Id;
var query = (IHqlQuery)context.Query;
context.Query = query.Where(x => x.ContentPartRecord<LocalizationPartRecord>(), x => x.Eq("CultureId", currentCultureId));
}
public LocalizedString DisplayFilter(dynamic context) {
return T("For current culture");
}
}
}