public Facet(IFacetable facetValue, string url, bool isSelected, int count, IEnumerable <Facet> children)
 {
     Url        = url;
     Title      = facetValue.Title.HtmlEncode();
     Count      = count;
     IsSelected = isSelected;
     Children   = children ?? Enumerable.Empty <Facet>();
 }
Ejemplo n.º 2
0
        private static IEnumerable <string> FindValueAndDescendantValues(IFacetable facet)
        {
            yield return(facet.Value);

            var tag = facet as ContentTag;

            if (tag == null)
            {
                yield break;
            }

            foreach (var child in tag.Children.FlattenRecursive(t => t.Children))
            {
                yield return(child.Value);
            }
        }
Ejemplo n.º 3
0
        private string GetUnselectFacetUrl(ISearchContext searchContext, NameValueCollection queryString, IFacetable facet)
        {
            var facetsToRemove = FindValueAndDescendantValues(facet);

            return
                (queryString
                 .SetKey(Constants.SearchContext.Keys.Facets, searchContext.FacetValuesToString(selectedFacetValues.Except(facetsToRemove)))
                 // go back to first page of results
                 .RemoveKey(Constants.SearchContext.Keys.PageNumber)
                 .ToQueryString(true));
        }
Ejemplo n.º 4
0
        private string GetChildQueryString(ISearchContext searchContext, NameValueCollection queryString, IFacetable facet)
        {
            // if facet is already selected then remove it (and any descendants)
            if (IsSelected(facet.Value))
            {
                return(GetUnselectFacetUrl(searchContext, queryString, facet));
            }

            // add facet to selected
            var tags = new List <string>(selectedFacetValues)
            {
                facet.Value
            };

            return(queryString
                   .SetKey(Constants.SearchContext.Keys.Facets, searchContext.FacetValuesToString(tags))
                   // go back to first page of results
                   .RemoveKey(Constants.SearchContext.Keys.PageNumber)
                   .ToQueryString(true));
        }
 public Facet(IFacetable facetValue, string url, bool isSelected)
     : this(facetValue, url, isSelected, 0, null)
 {
 }