Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        public static string GetInheritanceChain(string @namespace, SitecoreTemplate template)
        {
            var interfaces = GetInheritedInterfaces(new HashSet <string>(), @namespace, template);

            return(interfaces.Any() ? ", " + string.Join(", ", interfaces) : string.Empty);
        }
Exemplo n.º 3
0
        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;
		}