public static string GetElementDefinition(ISharePointCommandContext context, FeatureElementInfo elementInfo) { SPFeatureDefinition definition = SPFarm.Local.FeatureDefinitions[elementInfo.FeatureID]; SPElementDefinition element = definition.GetElementDefinitions(CultureInfo.CurrentCulture) .OfType <SPElementDefinition>() .Where(searchElement => searchElement.ElementType == elementInfo.ElementType) .Where(searchElement => GetNameFromNode(searchElement.XmlDefinition) == elementInfo.Name) .FirstOrDefault(); return(element.XmlDefinition.OuterXml); }
public static FeatureElementInfo[] GetFeatureElements(ISharePointCommandContext context, FeatureInfo feature) { List <FeatureElementInfo> elements = new List <FeatureElementInfo>(); SPFeatureDefinition definition = SPFarm.Local.FeatureDefinitions[feature.FeatureID]; foreach (SPElementDefinition element in definition.GetElementDefinitions(CultureInfo.CurrentCulture) .OfType <SPElementDefinition>() .Distinct(new SPElementIDComparer())) { elements.Add(new FeatureElementInfo() { ElementID = element.Id, UIVersion = element.UIVersion, FeatureID = feature.FeatureID, Name = GetNameFromNode(element.XmlDefinition), ElementType = element.ElementType }); } return(elements.ToArray()); }
private static void PreloadDefinitionIntoCache(SPFeatureDefinition featureDefinition, string idAttributeName) { var coll = featureDefinition.GetElementDefinitions(CultureInfo.InvariantCulture); foreach (SPElementDefinition element in coll) { string elementId = (element.XmlDefinition as XmlElement).GetAttribute(idAttributeName); string key = CreateKey(element.ElementType, elementId); if (_cache.Exists(key)) continue; var elementInfo = new CachedElementDefinition(); elementInfo.ElementXml = element.XmlDefinition.Clone(); elementInfo.FeatureId = featureDefinition.Id; if (element.ElementType == "ListTemplate") { key += "_" + element.FeatureDefinition.Id.ToString("N").ToUpper(); } _cache.Insert(key, elementInfo, false); } }
private static CachedElementDefinition? GetElementInfoFromElementDefinition(SPFeatureDefinition featureDefinition, string elementType, string idAttributeName, object id) { var elementCollection = featureDefinition.GetElementDefinitions(CultureInfo.InvariantCulture); CachedElementDefinition? ret = null; foreach (SPElementDefinition e in elementCollection) { if (e.ElementType == "ContentType" || e.ElementType == "Field" || e.ElementType == "ListInstance" || e.ElementType == "ListTemplate") { string elementId; if (e.ElementType == "ContentType" || e.ElementType == "Field") { elementId = SPGENCommon.GetElementDefinitionAttribute(e.XmlDefinition.Attributes, "ID"); } else if (e.ElementType == "ListInstance") { elementId = SPGENCommon.GetElementDefinitionAttribute(e.XmlDefinition.Attributes, "Url"); } else { elementId = SPGENCommon.GetElementDefinitionAttribute(e.XmlDefinition.Attributes, "Type"); } string key = CreateKey(e.ElementType, elementId); if (_cache.Exists(key)) continue; var elementInfo = new CachedElementDefinition(); elementInfo.ElementXml = e.XmlDefinition.Clone(); elementInfo.FeatureId = featureDefinition.Id; bool equals = false; if (e.ElementType == elementType) { if (id is Guid) { if ((Guid)id == new Guid(elementId)) equals = true; } else if (id is SPContentTypeId) { if ((SPContentTypeId)id == new SPContentTypeId(elementId)) equals = true; } else { if ((string)id == elementId) equals = true; } } if (!equals) { if (e.ElementType == "ListTemplate") { key += "_" + e.FeatureDefinition.Id.ToString("N").ToUpper(); } _cache.Insert(key, elementInfo, true); } else { ret = elementInfo; } } } return ret; }