Example #1
0
        protected virtual string GetTabUrl(GetContentSearchParameter param, IContentTab tab, string searchQuery)
        {
            var pagesConfiguration = SiteConfiguration.GetPagesConfiguration(param.Culture, WebsiteContext.WebsiteId);

            if (pagesConfiguration == null)
            {
                return(null);
            }

            var url = PageService.GetPageUrl(pagesConfiguration.SearchPageId, param.Culture);

            if (url == null)
            {
                return(null);
            }

            return($"{url}/{tab.UrlTitle}?{SearchRequestParams.Keywords}={HttpUtility.UrlEncode(searchQuery)}");
        }
Example #2
0
        protected virtual WebsiteSearchQuery GetSearchRequestForContentTab(GetContentSearchParameter param, IContentTab tab, string searchQuery)
        {
            bool isTabActive = param.PathInfo == tab.UrlTitle;
            // keywords
            var sq = searchQuery == "*" ? "*:*" : searchQuery;

            string[] keywords = sq.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            // datatypes
            var tabTypes = tab.DataTypes.Split(',').ToList();

            Type[] dataTypes = tabTypes?.Select(name => KnowTypes[name]).ToArray();

            // page types
            var tabPageTypes = tab.PageTypes?.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            // facets
            var tabFacetsToQuery = !string.IsNullOrEmpty(tab.Facets) ? tab.Facets.Split(',') : Array.Empty <string>();
            var facets           = isTabActive ? tabFacetsToQuery.Select(fieldName => new WebsiteSearchQueryFacet
            {
                Name       = fieldName,
                Selections = GetFacetSelection(param, fieldName)
            }).ToArray() : null;

            // media folders
            var selectedMediaFolders = tab.MediaFolders != null?DataFacade.GetData <IMediaFileFolder>().Where(p => tab.MediaFolders.Contains(p.KeyPath))
                                       .Select(i => i.GetDataEntityToken()).ToArray() : null;

            var sortOptions = new List <SearchQuerySortOption>();

            if (isTabActive && !string.IsNullOrEmpty(param.SortDirection) && !string.IsNullOrEmpty(param.SortBy))
            {
                var isReverted = param.SortDirection == "desc" ? true : false;
                sortOptions.Add(new SearchQuerySortOption(param.SortBy, isReverted, SortTermsAs.String));
            }

            return(new WebsiteSearchQuery
            {
                Culture = param.Culture,
                Keywords = keywords,
                DataTypes = dataTypes,
                PageTypes = tabPageTypes,
                CurrentSiteOnly = param.CurrentSiteOnly,
                PageNumber = isTabActive ? param.CurrentPage - 1 : 0,
                Facets = facets,
                PageSize = param.PageSize,
                SortOptions = sortOptions,
                FilterByAncestorEntityTokens = selectedMediaFolders
            });
        }
Example #3
0
 protected virtual string GetTabUrl(GetContentSearchParameter param, IContentTab tab, string searchQuery)
 {
     return($"{param.BaseUrl}/{tab.UrlTitle}?{SearchRequestParams.Keywords}={searchQuery}");
 }
Example #4
0
 public static IEnumerable <IPublishedElement> GetMainContent(IContentTab that) => that.Value <IEnumerable <IPublishedElement> >("mainContent");