protected virtual string GetFriendlyFieldValue(string name, Item itemElement)
{
// to allow forcing fields rather than properties, allow prepending the name with #
name = name.TrimStart('@');
var field = itemElement.Fields[name];
if (field != null)
{
switch (field.TypeKey)
{
case "date":
case "datetime":
return formatDateField(itemElement, field.ID);
case "droplink":
case "droptree":
case "reference":
case "grouped droplink":
var lookupFld = (LookupField)field;
if (lookupFld.TargetItem != null)
{
return lookupFld.TargetItem.Name;
}
break;
case "checklist":
case "multilist":
case "treelist":
case "treelistex":
var multilistField = (MultilistField)field;
var strBuilder = new StringBuilder();
foreach (var item in multilistField.GetItems())
{
strBuilder.AppendFormat("{0}, ", item.Name);
}
return StringUtil.Clip(strBuilder.ToString().TrimEnd(',', ' '), this.MaxLength, true);
break;
case "link":
case "general link":
var lf = new LinkField(field);
switch (lf.LinkType)
{
case "media":
case "internal":
if (lf.TargetItem != null)
{
return lf.TargetItem.Paths.ContentPath;
}
return lf.Value == string.Empty ? "[undefined]" : "[broken link] " + lf.Value;
case "anchor":
case "mailto":
case "external":
return lf.Url;
default:
return lf.Text;
}
default:
return StringUtil.Clip(StringUtil.RemoveTags(field.Value), MaxLength, true);
}
}
return String.Empty;
}