private static void HandleProvidersElement(XmlNode providers, CaptchaConfiguration config) { config.Providers = new ProviderCollection(); foreach (XmlNode element in providers.ChildNodes) { var attributes = element.Attributes.Cast <XmlAttribute>().ToDictionary(attr => attr.Name); switch (element.Name) { case "add": { var name = attributes["name"].Value; var type = attributes["type"].Value; var settings = new ProviderSettings(name, type); foreach (var attr in attributes.Where(attr => attr.Key != "name" && attr.Key != type)) { settings.Parameters.Add(attr.Key, attr.Value.Value); } var provider = InstantiateProvider(settings); config.Providers.Add(provider); } break; case "remove": { var name = attributes["name"].Value; config.Providers.Remove(name); } break; case "clear": { config.Providers.Clear(); } break; } } }
public static CaptchaConfiguration FromXml(XmlNode xml) { var config = new CaptchaConfiguration(); var defaultProviderAttribute = xml.Attributes.Cast <XmlAttribute>().SingleOrDefault(a => a.Name == "defaultProvider"); if (defaultProviderAttribute != null) { config.DefaultProvider = defaultProviderAttribute.Value; } foreach (XmlNode element in xml.ChildNodes) { if (element.Name == "providers") { HandleProvidersElement(element, config); } } return(config); }
public object Create(object parent, object configContext, XmlNode section) { var sectionAttributes = section.Attributes.Cast <XmlAttribute>().ToList(); var defaultFunctionExecutor = sectionAttributes.SingleOrDefault(attr => attr.Name == "defaultFunctionExecutor"); var rendererImplementation = sectionAttributes.SingleOrDefault(attr => attr.Name == "rendererImplementation"); var config = new FormBuilderConfiguration { DefaultFunctionExecutor = defaultFunctionExecutor != null ? defaultFunctionExecutor.Value : "FormBuilder.StandardFormExecutor", RendererImplementation = rendererImplementation != null?Type.GetType(rendererImplementation.Value) : typeof(Bootstrap3FormRenderer) }; foreach (XmlNode element in section.ChildNodes) { if (element.Name == "captcha") { config.Captcha = CaptchaConfiguration.FromXml(element); continue; } var elementAttributes = element.Attributes.Cast <XmlAttribute>(); var sType = elementAttributes.Single(attr => attr.Name == "type").Value; var type = Type.GetType(sType); if (type == null) { continue; } var plugin = (IPluginConfiguration)Activator.CreateInstance(type); plugin.Initialize(element); config.Plugins.Add(element.Name, plugin); } return(config); }
public FormBuilderConfiguration() { Captcha = new CaptchaConfiguration(); Plugins = new Dictionary <string, IPluginConfiguration>(); }