Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
            };
        }
Ejemplo n.º 3
0
 private string GetEditPath(IContent entryContent, ContentReference contentLink, string languageName)
 {
     return(SearchProviderExtensions.GetUri(entryContent));
 }