/// <summary> /// Builds result search information for IContent /// </summary> /// <param name="searchHit"></param> /// <returns></returns> protected virtual SearchResult CreateSearchResult(IHit <IContent> searchHit) { Validator.ThrowIfNull(nameof(searchHit), searchHit); // load the content from the given link var referenceString = (searchHit.Fields["contentLink"] as JArray)?.FirstOrDefault(); ContentReference reference = null; if (referenceString != null) { ContentReference.TryParse(referenceString.ToString(), out reference); } if (ContentReference.IsNullOrEmpty(reference)) { throw new Exception("Unable to convert search hit to IContent!"); } var content = _ContentRepository.Get <IContent>(reference); ILocalizable localizable = content as ILocalizable; IChangeTrackable changeTracking = content as IChangeTrackable; bool onCurrentHost; SearchResult result = new SearchResult ( GetEditUrl(content, out onCurrentHost), HttpUtility.HtmlEncode(content.Name), CreatePreviewText(content) ); result.IconCssClass = IconCssClass(content); result.Metadata["Id"] = content.ContentLink.ToString(); result.Metadata["LanguageBranch"] = localizable == null || localizable.Language == null ? string.Empty : localizable.Language.Name; result.Metadata["ParentId"] = content.ParentLink.ToString(); result.Metadata["IsOnCurrentHost"] = onCurrentHost ? "true" : "false"; result.Metadata["TypeIdentifier"] = SearchProviderExtensions.GetTypeIdentifier(content, _UIDescriptorRegistry); ContentType contentType = _ContentTypeRepository.Load(content.ContentTypeID); CreateToolTip(content, changeTracking, result, contentType); result.Language = localizable == null || localizable.Language == null ? string.Empty : localizable.Language.NativeName; return(result); }
/// <summary> /// Constructor /// </summary> /// <param name="vulcanHandler"></param> /// <param name="contentRepository"></param> /// <param name="contentTypeRepository"></param> /// <param name="localizationService"></param> /// <param name="uiDescriptorRegistry"></param> /// <param name="enterpriseSettings"></param> public VulcanSearchProviderBase(IVulcanHandler vulcanHandler, IContentRepository contentRepository, IContentTypeRepository contentTypeRepository, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISiteDefinitionResolver enterpriseSettings) { _VulcanHandler = vulcanHandler; _ContentRepository = contentRepository; _ContentTypeRepository = contentTypeRepository; _LocalizationService = localizationService; _UIDescriptorRegistry = uiDescriptorRegistry; _SiteDefinitionResolver = enterpriseSettings; EditPath = (contentData, contentLink, languageName) => { var uri = SearchProviderExtensions.GetUri(contentData); if (!string.IsNullOrWhiteSpace(languageName)) { return(string.Format("{0}#language={1}", uri, languageName)); } return(uri); }; }
private string GetEditPath(IContent entryContent, ContentReference contentLink, string languageName) { return(SearchProviderExtensions.GetUri(entryContent)); }