Skip to content

Instantly share code, notes, and snippets.

@rhullah
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rhullah/bd71a5388db909b46e1e to your computer and use it in GitHub Desktop.
Save rhullah/bd71a5388db909b46e1e to your computer and use it in GitHub Desktop.
Include Custom Taxon Properties in Sitefinity's Index
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);
}
}
}
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);
}
}
}
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;
}
}
}
@rhullah
Copy link
Author

rhullah commented Apr 6, 2015

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).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment