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
                                       );
                }
            }
        }
 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")
              );
 }
Exemplo n.º 3
0
        public void Describe(DescribeSortCriterionContext describe)
        {
            var descriptor = describe.For("Ticket", T("Ticket Fields"), T("Ticket Fields"));

            // Status
            descriptor.Element(
                type: TicketPart.StatusFieldName,
                name: new LocalizedString("Status"),
                description: T("Sort by status"),
                display: context => Display(context, TicketPart.StatusFieldName),
                sort: context => ApplyStatusFilter(context, "StatusRecord", "OrderId"),
                form: SortCriterionFormProvider.FormName);

            // Priority
            descriptor.Element(
                type: TicketPart.PriorityFieldName,
                name: new LocalizedString("Priority"),
                description: T("Sort by Priority"),
                display: context => Display(context, TicketPart.PriorityFieldName),
                sort: context => ApplyStatusFilter(context, "PriorityRecord", "OrderId"),
                form: SortCriterionFormProvider.FormName);

            // Service
            descriptor.Element(
                type: TicketPart.ServiceFieldName,
                name: new LocalizedString("Service"),
                description: T("Sort by Service"),
                display: context => Display(context, TicketPart.ServiceFieldName),
                sort: context => ApplyStatusFilter(context, "Service", "Name"),
                form: SortCriterionFormProvider.FormName);

            // Identity
            descriptor.Element(
                type: TicketPart.IdentityFieldName,
                name: new LocalizedString("Identity"),
                description: T("Sort by Identity"),
                display: context => Display(context, TicketPart.IdentityFieldName),
                sort: context => ApplyStatusFilter(context, "Identity", "Id"),
                form: SortCriterionFormProvider.FormName);

            // Title
            descriptor.Element(
                type: TicketPart.TitleFieldName,
                name: new LocalizedString("Title"),
                description: T("Sort by Title"),
                display: context => Display(context, TicketPart.TitleFieldName),
                sort: context => ApplyStatusFilter(context, string.Empty, "Title"),
                form: SortCriterionFormProvider.FormName);

            // DueDate
            descriptor.Element(
                type: TicketPart.DueDateFieldName,
                name: new LocalizedString("DueDate"),
                description: T("Sort by DueDate"),
                display: context => Display(context, TicketPart.DueDateFieldName),
                sort: context => ApplyStatusFilter(context, string.Empty, "DueDate"),
                form: SortCriterionFormProvider.FormName);
        }
Exemplo n.º 4
0
 public void Describe(DescribeSortCriterionContext describe)
 {
     describe.For("Reactions", T("Reactions"), T("Reactions"))
     .Element("Reaction", T("Reaction on content"), T("Reaction on content"),
              ApplySort,
              DisplaySort,
              "ReactionsSortForm"
              );
 }
Exemplo n.º 5
0
 public void Describe(DescribeSortCriterionContext describe)
 {
     describe.For("ActivityPart", T("Activity Part Record"), T("Position in the list of activities"))
     .Element("DateTimeStart", T("Activity Start Date"), T("Starting date of the event"),
              context => ApplyFilter(context),
              context => DisplaySortCriterion(context),
              SortCriterionFormProvider.FormName
              );
 }
Exemplo n.º 6
0
        public IEnumerable <TypeDescriptor <SortCriterionDescriptor> > DescribeSortCriteria()
        {
            var context = new DescribeSortCriterionContext();

            foreach (var provider in _sortCriterionProviders)
            {
                provider.Describe(context);
            }
            return(context.Describe());
        }
Exemplo n.º 7
0
 public void Describe(DescribeSortCriterionContext describe)
 {
     describe.For("General", T("General"), T("General sort criteria"))
     .Element("ConfigurableSorting",
              T("Configurable Sort Criteria"),
              T("Sorts the results by choosing the criterion from a list"),
              context => ApplyFilter(context),
              context => T("Order based off a variable configuration"),
              ConfigurableSortCriterionProviderForm.FormName);
 }
Exemplo n.º 8
0
        public void Describe(DescribeSortCriterionContext describe)
        {
            foreach (var part in _contentDefinitionManager.ListUserDefinedPartDefinitions())
            {
                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
                        IConcreteFieldTypeEditor fieldTypeEditor = _fieldTypeEditors.FirstOrDefault(x => x.CanHandle(localField.FieldDefinition.Name, storageType))
                                                                   ?? _fieldTypeEditors.FirstOrDefault(x => x.CanHandle(storageType));

                        if (fieldTypeEditor == null)
                        {
                            return;
                        }

                        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 => fieldTypeEditor.ApplySortCriterion(context, 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)
 {
     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));
     }
 }
Exemplo n.º 10
0
        public void Describe(DescribeSortCriterionContext describe)
        {
            var descriptor = describe.For("Milestone", T("Milestone Fields"), T("Milestone Fields"));

            // StartTime
            descriptor.Element(
                type: MilestonePart.StartTimeFieldName,
                name: new LocalizedString("StartDate"),
                description: T("Sort by Milestone StartTime"),
                display: context => Display(context, "Milestone Start Time"),
                sort: context => ApplySortCriteria(context, MilestonePart.StartTimeFieldName),
                form: SortCriterionFormProvider.FormName);

            // EndTime
            descriptor.Element(
                type: MilestonePart.EndTimeFieldName,
                name: new LocalizedString("EndTime"),
                description: T("Sort by Milestone EndTime"),
                display: context => Display(context, "Milestone End Time"),
                sort: context => ApplySortCriteria(context, MilestonePart.EndTimeFieldName),
                form: SortCriterionFormProvider.FormName);
        }