/// <summary> /// Gets a list of all fields from the template. /// <para> /// If desired, fields from all base templates will be included. /// </para> /// </summary> /// <param name="item"> /// The item. /// </param> /// <param name="includeBases"> /// if set to <c>true</c> include base template's fields. /// </param> /// <returns> /// The list of fields. /// </returns> public static List <SitecoreField> GetFieldsForTemplate(SitecoreTemplate item, bool includeBases) { var fields = new List <SitecoreField>(); // Add direct fields that aren't ignored fields.AddRange(item.Fields.Where(f => GetCustomProperty(f.Data, "ignore") != "true")); if (!includeBases) { return(fields); } // leverage an extension method to recursively select base templates, then flatten the fields down var baseFields = item.BaseTemplates.SelectRecursive(i => i.BaseTemplates) .SelectMany(t => t.Fields) .Distinct(f => f.ID); // only grab base fields who aren't ignored fields.AddRange(baseFields.Where(f => GetCustomProperty(f.Data, "ignore") != "true")); return(fields); }
public static string GetInheritanceChain(string @namespace, SitecoreTemplate template) { var interfaces = GetInheritedInterfaces(new HashSet <string>(), @namespace, template); return(interfaces.Any() ? ", " + string.Join(", ", interfaces) : string.Empty); }
private static HashSet <string> GetInheritedInterfaces(HashSet <string> interfaces, string _namespace, SitecoreTemplate template) { if (interfaces == null) { interfaces = new HashSet <string>(); } foreach (var baseTemplate in template.BaseTemplates) { interfaces.Add( string.Concat( GetFullyQualifiedName(_namespace, baseTemplate) .Substring(0, GetFullyQualifiedName(_namespace, baseTemplate).LastIndexOf(".", StringComparison.OrdinalIgnoreCase)), ".", baseTemplate.Name.AsInterfaceName())); interfaces = GetInheritedInterfaces(interfaces, _namespace, baseTemplate); } return(interfaces); }
public static string GetInheritanceChain(string @namespace, SitecoreTemplate template) { var interfaces = GetInheritedInterfaces(new HashSet<string>(), @namespace, template); return interfaces.Any() ? ", " + string.Join(", ", interfaces) : string.Empty; }
private static HashSet<string> GetInheritedInterfaces(HashSet<string> interfaces, string _namespace, SitecoreTemplate template) { if (interfaces == null) { interfaces = new HashSet<string>(); } foreach (var baseTemplate in template.BaseTemplates) { interfaces.Add( string.Concat( GetFullyQualifiedName(_namespace, baseTemplate) .Substring(0, GetFullyQualifiedName(_namespace, baseTemplate).LastIndexOf(".", StringComparison.OrdinalIgnoreCase)), ".", baseTemplate.Name.AsInterfaceName())); interfaces = GetInheritedInterfaces(interfaces, _namespace, baseTemplate); } return interfaces; }
/// <summary> /// Gets a list of all fields from the template. /// <para> /// If desired, fields from all base templates will be included. /// </para> /// </summary> /// <param name="item"> /// The item. /// </param> /// <param name="includeBases"> /// if set to <c>true</c> include base template's fields. /// </param> /// <returns> /// The list of fields. /// </returns> public static List<SitecoreField> GetFieldsForTemplate(SitecoreTemplate item, bool includeBases) { var fields = new List<SitecoreField>(); // Add direct fields that aren't ignored fields.AddRange(item.Fields.Where(f => GetCustomProperty(f.Data, "ignore") != "true")); if (!includeBases) { return fields; } // leverage an extension method to recursively select base templates, then flatten the fields down var baseFields = item.BaseTemplates.SelectRecursive(i => i.BaseTemplates) .SelectMany(t => t.Fields) .Distinct(f => f.ID); // only grab base fields who aren't ignored fields.AddRange(baseFields.Where(f => GetCustomProperty(f.Data, "ignore") != "true")); return fields; }