Files
Orchard/src/Orchard.Web/Modules/Orchard.Localization/Selectors/DefaultAdminCultureSelectorSelector.cs
2014-09-22 23:34:18 +01:00

41 lines
1.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using Orchard.Environment.Extensions;
using Orchard.Localization.Providers;
using Orchard.Localization.Services;
using Orchard.UI.Admin;
namespace Orchard.Localization.Selectors {
[OrchardFeature("Orchard.Localization.CutlureSelector")]
public class DefaultAdminCultureSelectorSelector : ICultureSelector {
private readonly IEnumerable<ICultureProvider> _providers;
public DefaultAdminCultureSelectorSelector(IEnumerable<ICultureProvider> providers) {
_providers = providers;
}
private bool IsActivable(HttpContextBase context) {
// activate on admin screen only
if (AdminFilter.IsApplied(new RequestContext(context, new RouteData())))
return true;
return false;
}
public CultureSelectorResult GetCulture(HttpContextBase context) {
if (!IsActivable(context))
return null;
var cultureName = _providers
.OrderByDescending(x => x.Priority)
.Select(x => x.GetCulture())
.FirstOrDefault();
if (string.IsNullOrWhiteSpace(cultureName)) return null;
return new CultureSelectorResult { Priority = -4, CultureName = cultureName };
}
}
}