public void Describe(DescribeSortCriterionContext describe) { foreach(var part in _contentDefinitionManager.ListPartDefinitions()) { if(!part.Fields.Any()) { continue; } var descriptor = describe.For(part.Name + "ContentFields", T("{0} Content Fields", part.Name.CamelFriendly()), T("Content Fields for {0}", part.Name.CamelFriendly())); foreach(var field in part.Fields) { var localField = field; var localPart = part; var drivers = _contentFieldDrivers.Where(x => x.GetFieldInfo().Any(fi => fi.FieldTypeName == localField.FieldDefinition.Name)).ToList(); var membersContext = new DescribeMembersContext( (storageName, storageType, displayName, description) => { // look for a compatible field type editor IFieldTypeEditor fieldTypeEditor = _fieldTypeEditors.FirstOrDefault(x => x.CanHandle(storageType)); descriptor.Element( type: localPart.Name + "." + localField.Name + "." + storageName ?? "", name: new LocalizedString(localField.DisplayName + (displayName != null ? ":" + displayName.Text : "")), description: description ?? T("{0} property for {1}", storageName, localField.DisplayName), sort: context => ApplySortCriterion(context, fieldTypeEditor, storageName, storageType, localPart, localField), display: context => DisplaySortCriterion(context, localPart, localField), form: SortCriterionFormProvider.FormName); }); foreach(var driver in drivers) { driver.Describe(membersContext); } } } }
public void Describe(DescribeSortCriterionContext describe) { describe.For("General", T("General"), T("General sort criteria")) .Element("Random", T("Random"), T("Sorts the results randomly."), context => context.Query.OrderBy(alias => alias.ContentItem(), order => order.Random()), context => T("Random order") ); }
public IEnumerable<TypeDescriptor<SortCriterionDescriptor>> DescribeSortCriteria() { var context = new DescribeSortCriterionContext(); foreach (var provider in _sortCriterionProviders) { provider.Describe(context); } return context.Describe(); }
public void Describe(DescribeSortCriterionContext describe) { foreach (var customSort in _customSortService.Query()) { var descriptor = describe.For("CustomSorts", T("Custom Sorts"), T("Manually-defined sort orders.")); var sortId = customSort.Id; var sortName = customSort.Name; var sortEditUrl = _url.Action("Edit", "CustomSortAdmin", new {id = sortId, area="Vandelay.Industries"}); descriptor.Element( type: customSort.Name, name: new LocalizedString(customSort.Name), description: T("Custom sort order <a href=\"{1}\">{0}</a>", customSort.Name, sortEditUrl), sort: context => ApplySortCriterion(context, sortId, sortName), display: context => DisplaySortCriterion(context, sortName)); } }
public void Describe(DescribeSortCriterionContext describe) { var builder = new BindingBuilder(); foreach(var bindingProvider in _bindingProviders) { bindingProvider.GetMemberBindings(builder); } var groupedMembers = builder.Build().GroupBy(b => b.Property.DeclaringType).ToDictionary(b => b.Key, b => b); foreach (var typeMembers in groupedMembers.Keys) { var descriptor = describe.For(typeMembers.Name, new LocalizedString(typeMembers.Name.CamelFriendly()), T("Members for {0}", typeMembers.Name)); foreach (var member in groupedMembers[typeMembers]) { var closureMember = member; descriptor.Element(member.Property.Name, member.DisplayName, member.Description, context => ApplyFilter(context, closureMember.Property), context => DisplaySortCriterion(context, closureMember.DisplayName.Text), SortCriterionFormProvider.FormName ); } } }