Beispiel #1
0
        public static int GetNodeByIdCopyNode(int nodeId)
        {
            int maxNodeId = 0;

            if (nodeId > 0)
            {
                NodeInfo nodeById = GetNodeById(nodeId);
                nodeById.NodeName       = StringHelper.CopyString(nodeById.NodeName);
                nodeById.NodeIdentifier = StringHelper.CopyStringNum(nodeById.NodeIdentifier);
                nodeById.NodeDir        = StringHelper.CopyStringNum(nodeById.NodeDir);
                while (ExistsNodeNameTwo(nodeById.ParentId, nodeById.NodeName))
                {
                    nodeById.NodeName = StringHelper.CopyString(nodeById.NodeName);
                }
                while (ExistsNodeIdentifier(nodeById.ParentId, nodeById.NodeIdentifier))
                {
                    nodeById.NodeIdentifier = StringHelper.CopyStringNum(nodeById.NodeIdentifier);
                }
                while (ExistsNodeDir(nodeById.ParentId, nodeById.NodeDir))
                {
                    nodeById.NodeDir = StringHelper.CopyStringNum(nodeById.NodeDir);
                }
                if (Add(nodeById) != 1)
                {
                    return(maxNodeId);
                }
                maxNodeId = GetMaxNodeId();
                foreach (NodesModelTemplateRelationShipInfo info2 in ModelManager.GetNodesModelTemplateList(nodeId))
                {
                    info2.NodeId = maxNodeId;
                    if (!ModelManager.ExistsNodesModelTemplateRelationShip(info2) && !ModelManager.AddNodesModelTemplateRelationShip(info2))
                    {
                        maxNodeId = -1;
                    }
                }
                if (PEContext.Current.Admin.IsSuperAdmin)
                {
                    return(maxNodeId);
                }
                foreach (RoleNodePermissionsInfo info3 in RolePermissions.GetNodePermissionsByNodeId(nodeId))
                {
                    info3.NodeId = maxNodeId;
                    RolePermissions.AddNodePermissionToRoles(info3.GroupId, info3.NodeId, info3.OperateCode);
                }
            }
            return(maxNodeId);
        }