private static ExtensionProviderCollection GenerateChildExtensionProvider(XmlNodeList childNodes, Extension extension, string extensionPoint) { ExtensionProviderCollection extensionProviders = new ExtensionProviderCollection(); foreach (XmlNode xmlNode in childNodes) { if (xmlNode is XmlComment) { continue; } NameValueCollection attributesCollection = new NameValueCollection(); foreach (XmlAttribute attr in xmlNode.Attributes) { attributesCollection.Add(attr.Name, attr.Value); } ExtensionProvider extensionProvider = new ExtensionProvider { ExtensionPoint = extensionPoint, AttributesCollection = attributesCollection, Bundle = extension.Owner, ChildExtensionProvider = GenerateChildExtensionProvider(xmlNode.ChildNodes, extension, extensionPoint) }; extensionProviders.AddExtensionProvider(extensionProvider); } return(extensionProviders); }
private void HandleBootstrapLayoutExtensions(string extensionPoint = null) { if (_bundle.Context != null) { List <Extension> extensions = new List <Extension>(); if (string.IsNullOrEmpty(extensionPoint)) { ExtensionProviders.Clear(); foreach (var extPoint in _bundle.Context.GetExtensionPoints()) { extensions.AddRange(_bundle.Context.GetExtensions(extPoint.Point)); } } else { if (ExtensionProviders.ContainsKey(extensionPoint)) { ExtensionProviders[extensionPoint].Clear(); } extensions = _bundle.Context.GetExtensions(extensionPoint); } foreach (var extension in extensions) { ExtensionProvider.BuildBootstrapLayout(extension, ExtensionProviders); } } }
public static void BuildBootstrapLayout(Extension extension, ExtensionProviderCollection extensionProviders) { foreach (var xmlNode in extension.Data) { if (xmlNode is XmlComment) { continue; } NameValueCollection attributesCollection = new NameValueCollection(); foreach (XmlAttribute attr in xmlNode.Attributes) { attributesCollection.Add(attr.Name, attr.Value); } var extensionPoint = xmlNode.ParentNode.FirstChild.ParentNode.Attributes["Point"].Value; ExtensionProvider extensionProvider = new ExtensionProvider { ExtensionPoint = extensionPoint, AttributesCollection = attributesCollection, Bundle = extension.Owner, ChildExtensionProvider = GenerateChildExtensionProvider(xmlNode.ChildNodes, extension, extensionPoint) }; extensionProviders.AddExtensionProvider(extensionProvider); } }