private void ParseXmlIntoUmbracoNodes() { // Iterate through each XML element in the config. foreach (var element in ParsedXml.Descendants()) { // Elements that have an id and urlName attribute are Umbraco nodes. if (element.Attribute("id") != null && element.Attribute("urlName") != null) { List <int> nodeIdPaths = GetNodeIdPath(element); int nodeId = Convert.ToInt32(element.Attribute("id").Value); var urlAlias = element.Element("umbracoUrlAlias"); string firstUrlAlias = null; if (urlAlias != null && !string.IsNullOrWhiteSpace(urlAlias.Value)) { firstUrlAlias = urlAlias.Value.Split(',')[0]; } var url = GetUrlForNodeIdPaths(nodeIdPaths, firstUrlAlias); var pathNames = GetPathNamesForNodeIdPaths(nodeIdPaths); _nodes[nodeId] = new UmbracoNode(this, nodeId, element, url, nodeIdPaths, pathNames); // Set parent if (_nodes[nodeId].ParentId != null && _nodes.ContainsKey(_nodes[nodeId].ParentId.Value)) { _nodes[nodeId].Parent = _nodes[_nodes[nodeId].ParentId.Value]; } // Add to the list in order (for multiple enumeration in GetNodes()) _nodesInOrder.Add(_nodes[nodeId]); } } }
private void ParseTreeIntoUmbracoNodes() { foreach (var nodeId in ParsedTree.Keys) { var treeNode = ParsedTree[nodeId]; List <int> nodeIdPaths = GetNodeIdPath(treeNode); string umbracoUrlAlias = null; if (treeNode.PublishedData != null) { var umbracoUrlAliasProperty = treeNode.PublishedData.Properties.FirstOrDefault(p => p.Key == "umbracoUrlAlias"); if (umbracoUrlAliasProperty.Value != null && umbracoUrlAliasProperty.Value.FirstOrDefault() != null) { umbracoUrlAlias = umbracoUrlAliasProperty.Value.FirstOrDefault().Value as string; } } var url = GetUrlForNodeIdPaths(nodeIdPaths, umbracoUrlAlias); var pathNames = GetPathNamesForNodeIdPaths(nodeIdPaths); _nodes[nodeId] = new UmbracoNode(this, nodeId, treeNode, url, nodeIdPaths, pathNames); // Set parent if (_nodes[nodeId].ParentId != null && _nodes.ContainsKey(_nodes[nodeId].ParentId.Value)) { _nodes[nodeId].Parent = _nodes[_nodes[nodeId].ParentId.Value]; } // Add to the list in order (for multiple enumeration in GetNodes()) _nodesInOrder.Add(_nodes[nodeId]); } }
private UmbracoNode GenerateImage(UmbracoNode folder) { return(_imageNodeFaker .RuleFor(x => x.Path, f => $"-1,{folder.Id}") .RuleFor(x => x.ParentId, f => folder.Id) .Generate()); }
public async Task <IdentityResult> CreateAsync(TUser user, CancellationToken cancellationToken) { var umbracoNode = new UmbracoNode { CreateDate = DateTime.UtcNow, Level = 1, NodeObjectType = Const.MemberObjectType, NodeUser = 0, ParentId = -1, SortOrder = 3, Text = user.Email, Trashed = false, UniqueId = Guid.NewGuid(), Path = "-1" }; await umbracoNodeRepository.AddAsync(umbracoNode, cancellationToken); await umbracoNodeRepository.SaveChangesAsync(cancellationToken); umbracoNode.Path = $"-1,{umbracoNode.Id}"; umbracoNodeRepository.Update(umbracoNode); user.Id = umbracoNode.Id; var content = new CmsContent { ContentType = DefaultMemberContentTypeId, NodeId = umbracoNode.Id }; await contentRepository.AddAsync(content, cancellationToken); var xmlWriterSettings = new System.Xml.XmlWriterSettings { Indent = false, OmitXmlDeclaration = true }; using (var sw = new StringWriter()) using (var writer = System.Xml.XmlWriter.Create(sw, xmlWriterSettings)) { var xmlNode = new XmlNode { CreateDate = umbracoNode.CreateDate, Email = user.Email, Id = umbracoNode.Id, LastPasswordReset = DateTime.UtcNow, Level = umbracoNode.Level, LoginName = user.Email, NodeName = umbracoNode.Text, NodeType = DefaultMemberContentTypeId, NodeTypeAlias = "Default", ParentId = umbracoNode.ParentId, Path = umbracoNode.Path, SortOrder = umbracoNode.SortOrder, Template = 0, Version = umbracoNode.UniqueId, WriterId = 0, WriterName = "kkadmin", UrlName = umbracoNode.Text, UpdateDate = umbracoNode.CreateDate }; var emptyNamespaces = new XmlSerializerNamespaces(new[] { System.Xml.XmlQualifiedName.Empty }); var umbracoNodeSerializer = new XmlSerializer(typeof(XmlNode)); umbracoNodeSerializer.Serialize(writer, xmlNode, emptyNamespaces); var contentXml = new CmsContentXml { NodeId = umbracoNode.Id, Xml = sw.ToString() }; await contentXmlRepository.AddAsync(contentXml, cancellationToken); } var member = new CmsMember { NodeId = umbracoNode.Id, Email = user.Email, LoginName = user.Alias, Password = user.PasswordHash }; await membersRepository.AddAsync(member, cancellationToken); var propertyTypes = propertyTypeRepository .GetAll() .Where(pt => pt.ContentTypeId == DefaultMemberContentTypeId) .ToList(); var properties = user.GetType().GetProperties(BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public) .ToDictionary(pt => pt.Name.ToLower(), pt => pt); var cmsContentVersion = new CmsContentVersion { ContentId = member.NodeId, VersionDate = DateTime.UtcNow, VersionId = Guid.NewGuid() }; await contentVersionRepository.AddAsync(cmsContentVersion, cancellationToken); foreach (var pt in propertyTypes) { var cmsProp = new CmsPropertyData { ContentNodeId = member.NodeId, VersionId = cmsContentVersion.VersionId, PropertyTypeId = pt.Id }; if (properties.ContainsKey(pt.Alias.ToLower())) { var p = properties[pt.Alias.ToLower()]; switch (p.PropertyType) { case Type boolType when boolType == typeof(bool): cmsProp.DataInt = (bool)Convert.ChangeType(p.GetValue(user) ?? 0, p.PropertyType) ? 1 : 0; break; case Type dateType when dateType == typeof(DateTime): cmsProp.DataDate = (DateTime?)Convert.ChangeType(p.GetValue(user) ?? 0, p.PropertyType); break; default: cmsProp.DataNvarchar = p.GetValue(user)?.ToString(); break; } } await propertyDataRepository.AddAsync(cmsProp, cancellationToken); } await propertyTypeRepository.SaveChangesAsync(cancellationToken); return(IdentityResult.Success); }