//======================================================================================================= Runtime ContentType internal static ContentType Create(Type type, string ctd) { var contentType = new ContentType(ContentType.GetByName("GenericContent"));//HACK: come from ctd var reader = new StringReader(ctd); var xml = new XPathDocument(reader); var nametable = new NameTable(); var nav = xml.CreateNavigator(); var nsres = new XmlNamespaceManager(nav.NameTable); nsres.AddNamespace("x", ContentDefinitionXmlNamespace); var contentTypeElement = nav.Select("/x:ContentType", nsres); contentTypeElement.MoveNext(); var contentTypeName = contentTypeElement.Current.GetAttribute("name", ""); contentType.Name = contentTypeName; var fieldElements = nav.Select("/x:ContentType/x:Fields/x:Field", nsres); foreach (XPathNavigator fieldElement in fieldElements) { var fieldDescriptor = FieldDescriptor.Parse(fieldElement, nsres, contentType); var fieldSetting = FieldSetting.Create(fieldDescriptor); contentType.FieldSettings.Add(fieldSetting); } contentType.SetFieldSlots(type); return(contentType); }
private static ContentType Create(ISupportsDynamicFields handler, ContentType baseContentType, string ctd) { var contentType = new ContentType(baseContentType); contentType.DisplayName = baseContentType.DisplayName; contentType.Description = baseContentType.Description; //contentType.ParentType = baseContentType.ParentType; contentType.ParentType = baseContentType; contentType.FieldSettings.AddRange(baseContentType.FieldSettings); var reader = new StringReader(ctd); var xml = new XPathDocument(reader); var nametable = new NameTable(); var nav = xml.CreateNavigator(); var nsres = new XmlNamespaceManager(nav.NameTable); nsres.AddNamespace("x", ContentDefinitionXmlNamespace); var contentTypeElement = nav.Select("/x:ContentType", nsres); contentTypeElement.MoveNext(); var contentTypeName = contentTypeElement.Current.GetAttribute("name", ""); contentType.Name = contentTypeName; var fieldElements = nav.Select("/x:ContentType/x:Fields/x:Field", nsres); foreach (XPathNavigator fieldElement in fieldElements) { var fieldDescriptor = FieldDescriptor.Parse(fieldElement, nsres, contentType); var fieldSetting = FieldSetting.Create(fieldDescriptor); contentType.SetFieldSlots(fieldSetting, handler); contentType.FieldSettings.Add(fieldSetting); } return(contentType); }
private static ContentType Create(ISupportsDynamicFields handler, ContentType baseContentType, string ctd) { var contentType = new ContentType(baseContentType); contentType.DisplayName = baseContentType.DisplayName; contentType.Description = baseContentType.Description; //contentType.ParentType = baseContentType.ParentType; contentType.ParentType = baseContentType; contentType.FieldSettings.AddRange(baseContentType.FieldSettings); var reader = new StringReader(ctd); var xml = new XPathDocument(reader); var nametable = new NameTable(); var nav = xml.CreateNavigator(); var nsres = new XmlNamespaceManager(nav.NameTable); nsres.AddNamespace("x", ContentDefinitionXmlNamespace); var contentTypeElement = nav.Select("/x:ContentType", nsres); contentTypeElement.MoveNext(); var contentTypeName = contentTypeElement.Current.GetAttribute("name", ""); contentType.Name = contentTypeName; var fieldElements = nav.Select("/x:ContentType/x:Fields/x:Field", nsres); foreach (XPathNavigator fieldElement in fieldElements) { var fieldDescriptor = FieldDescriptor.Parse(fieldElement, nsres, contentType); var fieldSetting = FieldSetting.Create(fieldDescriptor); contentType.SetFieldSlots(fieldSetting, handler); contentType.FieldSettings.Add(fieldSetting); } return contentType; }
//======================================================================================================= Runtime ContentType internal static ContentType Create(Type type, string ctd) { var contentType = new ContentType(ContentType.GetByName("GenericContent"));//HACK: come from ctd var reader = new StringReader(ctd); var xml = new XPathDocument(reader); var nametable = new NameTable(); var nav = xml.CreateNavigator(); var nsres = new XmlNamespaceManager(nav.NameTable); nsres.AddNamespace("x", ContentDefinitionXmlNamespace); var contentTypeElement = nav.Select("/x:ContentType", nsres); contentTypeElement.MoveNext(); var contentTypeName = contentTypeElement.Current.GetAttribute("name", ""); contentType.Name = contentTypeName; var fieldElements = nav.Select("/x:ContentType/x:Fields/x:Field", nsres); foreach (XPathNavigator fieldElement in fieldElements) { var fieldDescriptor = FieldDescriptor.Parse(fieldElement, nsres, contentType); var fieldSetting = FieldSetting.Create(fieldDescriptor); contentType.FieldSettings.Add(fieldSetting); } contentType.SetFieldSlots(type); return contentType; }