-
-
Save rhullah/bd71a5388db909b46e1e to your computer and use it in GitHub Desktop.
Include Custom Taxon Properties in Sitefinity's Index
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Web; | |
using Telerik.OpenAccess; | |
using Telerik.Sitefinity.Publishing.Translators; | |
using Telerik.Sitefinity.Taxonomies; | |
using Telerik.Sitefinity.Taxonomies.Model; | |
namespace SitefinityWebApp.Search | |
{ | |
public class CustomConcatenationTranslator : ConcatenationTranslator | |
{ | |
internal static void Register() | |
{ | |
PipeTranslatorFactory.RegisterTranslator(new CustomConcatenationTranslator()); | |
} | |
public override object Translate(object[] data, IDictionary<string, string> translationSettings) | |
{ | |
if (data != null && data.Length > 0) | |
{ | |
List<object> translated = new List<object>(); | |
for (int i = 0; i < data.Length; i++) | |
{ | |
if (data[i] is TrackedList<Guid>) | |
{ | |
data[i] = CustomTransparentTranslator.TranslateTrackedList(data[i] as TrackedList<Guid>); | |
} | |
} | |
} | |
return base.Translate(data, translationSettings); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web; | |
using Telerik.OpenAccess; | |
using Telerik.Sitefinity.Publishing.Translators; | |
namespace SitefinityWebApp.Search | |
{ | |
public class CustomHtmlStripperTranslator : HtmlStripperTranslator | |
{ | |
internal static void Register() | |
{ | |
PipeTranslatorFactory.RegisterTranslator(new CustomHtmlStripperTranslator()); | |
} | |
public override object Translate(object[] data, IDictionary<string, string> translationSettings) | |
{ | |
if (data != null && data.Length > 0) | |
{ | |
for (int i = 0; i < data.Length; i++) | |
{ | |
if (data[i] is TrackedList<Guid>) | |
{ | |
data[i] = CustomTransparentTranslator.TranslateTrackedList(data[i] as TrackedList<Guid>); | |
} | |
} | |
} | |
return base.Translate(data, translationSettings); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
using Telerik.OpenAccess; | |
using Telerik.Sitefinity.Model; | |
using Telerik.Sitefinity.Publishing; | |
using Telerik.Sitefinity.Publishing.Translators; | |
using Telerik.Sitefinity.Taxonomies; | |
using Telerik.Sitefinity.Taxonomies.Model; | |
namespace SitefinityWebApp.Search | |
{ | |
public class CustomTransparentTranslator : TransparentTranslator | |
{ | |
internal static void Register() | |
{ | |
PipeTranslatorFactory.RegisterTranslator(new CustomTransparentTranslator()); | |
} | |
public override object Translate(object[] data, IDictionary<string, string> translationSettings) | |
{ | |
if (data != null && data.Length > 0) | |
{ | |
List<object> translated = new List<object>(); | |
for (int i = 0; i < data.Length; i++) | |
{ | |
if (data[i] is TrackedList<Guid>) | |
{ | |
data[i] = CustomTransparentTranslator.TranslateTrackedList(data[i] as TrackedList<Guid>); | |
} | |
} | |
} | |
return base.Translate(data, translationSettings); | |
} | |
internal static void AddTagIds(WrapperObject item, IDataItem data) | |
{ | |
var props = item.AdditionalProperties; | |
var tags = data.GetPropertyValue<TrackedList<Guid>>(PublishingConstants.FieldTags); | |
if (tags != null) | |
{ | |
props[PublishingConstants.FieldTags] = TranslateTrackedList(tags); | |
} | |
} | |
internal static object TranslateTrackedList(TrackedList<Guid> list) | |
{ | |
if (list == null || list.Count == 0) | |
{ | |
return null; | |
} | |
string title; | |
StringBuilder sb = new StringBuilder(); | |
TaxonomyManager mgr = TaxonomyManager.GetManager(); | |
foreach (var id in list) | |
{ | |
ITaxon t = mgr.GetTaxon(id); | |
if (t != null) | |
{ | |
title = t.Title; | |
if (!string.IsNullOrWhiteSpace(title)) | |
{ | |
if (sb.Length > 0) | |
{ | |
sb.Append(" ").Append(title); | |
} | |
else | |
{ | |
sb.Append(title); | |
} | |
} | |
if (sb.Length > 0) | |
{ | |
sb.Append(" ").Append(id); | |
} | |
else | |
{ | |
sb.Append(id); | |
} | |
} | |
} | |
return sb.Length > 0 ? (object)sb.ToString() : list; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
NOTE: I had to add the CustomHtmlStripperTranslator due to a bug in Sitefinity v7.3.5619.0 where hierarchical taxonomies are now being handled by the HtmlStripperTranslator. So now you need to register both (Transparent & HtmlStripper).