/// <summary> /// Adds each property's Sort Order as defined in Umbraco to a list of GenericPropertyElements /// Does not take into account the master doctype properties /// </summary> /// <param name="properties">List of GenericPropertyElements to add the sort order to</param> /// <param name="contentTypeId">Content type where the properties exist</param> /// <returns>IEnumerable containing GenericPropertyElements with SortOrder populated</returns> private static IEnumerable<GenericPropertyElement> AddSortOrder(this IEnumerable<GenericPropertyElement> properties, int contentTypeId) { var umbracoProperties = new ContentType(contentTypeId).PropertyTypes.Where(p => p.ContentTypeId == contentTypeId).ToList(); var _properties = properties.ToList(); foreach (var property in _properties) { var umbracoProperty = umbracoProperties.FirstOrDefault(p => p.Alias == property.Alias); if (umbracoProperty != null) { property.SortOrder = umbracoProperty.SortOrder; } } return properties; }
/// <summary> /// Adds each property's Sort Order as defined in Umbraco to a list of GenericPropertyElements /// Does not take into account the master doctype properties /// </summary> /// <param name="properties">List of GenericPropertyElements to add the sort order to</param> /// <param name="contentTypeId">Content type where the properties exist</param> /// <returns>IEnumerable containing GenericPropertyElements with SortOrder populated</returns> private static IEnumerable<GenericPropertyElement> AddSortOrder(this IEnumerable<GenericPropertyElement> properties, int contentTypeId) { var umbracoProperties = new ContentType(contentTypeId).PropertyTypes.Where(p => p.ContentTypeId == contentTypeId).ToList(); // By default properties have a 0 sortorder until manually sorted - check for this situation var arePropertiesSorted = umbracoProperties.Any(p => p.SortOrder > 0); var _properties = properties.ToList(); foreach (var property in _properties) { var umbracoProperty = umbracoProperties.FirstOrDefault(p => p.Alias == property.Alias); if (umbracoProperty != null) { property.SortOrder = arePropertiesSorted ? umbracoProperty.SortOrder : umbracoProperties.IndexOf(umbracoProperty); } } return properties; }