Files
Orchard/src/Orchard.Web/Modules/Orchard.Search/ContentPickerNavigationProvider.cs
Lombiq 5406b17601 Converting all files stored as CRLF in git to be stored as LF
LF is the git default and all new files are stored as such. Old files from the hg to git conversion however were moved over as CRLF.
2015-12-13 22:21:02 +01:00

63 lines
2.2 KiB
C#

using System;
using System.Linq;
using Orchard.ContentManagement.MetaData;
using Orchard.Environment.Extensions;
using Orchard.Localization;
using Orchard.Search.Settings;
using Orchard.UI.Navigation;
namespace Orchard.Search {
[OrchardFeature("Orchard.Search.ContentPicker")]
public class ContentPickerNavigationProvider : INavigationProvider {
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IContentDefinitionManager _contentDefinitionManager;
public ContentPickerNavigationProvider(
IWorkContextAccessor workContextAccessor,
IContentDefinitionManager contentDefinitionManager
) {
_workContextAccessor = workContextAccessor;
_contentDefinitionManager = contentDefinitionManager;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public string MenuName {
get { return "content-picker"; }
}
public void GetNavigation(NavigationBuilder builder) {
var workContext = _workContextAccessor.GetContext();
var httpContext = workContext.HttpContext;
if (httpContext == null) {
return;
}
var queryString = workContext.HttpContext.Request.QueryString;
string part = queryString["part"];
string field = queryString["field"];
ContentPickerSearchFieldSettings settings = null;
// if the picker is loaded for a specific field, apply custom settings
if (!String.IsNullOrEmpty(part) && !String.IsNullOrEmpty(field)) {
var definition = _contentDefinitionManager.GetPartDefinition(part).Fields.FirstOrDefault(x => x.Name == field);
if (definition != null) {
settings = definition.Settings.GetModel<ContentPickerSearchFieldSettings>();
}
}
if (settings != null && !settings.ShowSearchTab) {
return;
}
builder.Add(T("Content Picker"),
menu => menu
.Add(T("Search Content"), "5", item => item.Action("Index", "ContentPicker", new {area = "Orchard.Search"}).LocalNav()));
}
}
}