/// -----------------------------------------------------------------------------
        /// <summary>
        /// Adds node to tree
        /// </summary>
        /// <param name="folder">The FolderInfo object to add</param>
        /// <param name="objNodes">Node collection to add to</param>
        /// <returns></returns>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// 	[cnurse]	04/24/2006	Created
        /// </history>
        /// -----------------------------------------------------------------------------
        private DNNTreeNode AddNode(FolderInfo folder, DNNTreeNodeCollection objNodes)
        {
            DNNTreeNode objNode;
            string strName = folder.FolderName;
            string strKey = MaskPath(RootFolderPath + folder.FolderPath);
            var subFolders = FolderManager.Instance.GetFolders(folder).ToList();

            var imageIndex = FolderMappings.IndexOfKey(folder.FolderMappingID);

            objNode = AddNode(strName, strKey, imageIndex, objNodes);
            objNode.HasNodes = subFolders.Count > 0;

            return objNode;
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Populates DNNTree control with folder hiearachy
        /// </summary>
        /// <param name="objNodes">Node collection to add children to</param>
        /// <param name="strPath">Path of parent node</param>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// 	[Jon Henning]	10/26/2004	Created
        /// 	[Jon Henning]	8/24/2005	Added Populate on Demand (POD) logic
        ///     [cnurse]        04/24/2006  Updated to use new Secure Storage
        /// </history>
        /// -----------------------------------------------------------------------------
        private void PopulateTree(DNNTreeNodeCollection objNodes, string strPath)
        {
            var folderPath = strPath.Replace(RootFolderPath, "").Replace("\\", "/");
            var parentFolder = FolderManager.Instance.GetFolder(FolderPortalID, folderPath);
            var folders = FolderManager.Instance.GetFolders(parentFolder);
            DNNTreeNode objNode;

            //Iterate through the SubFolders
            foreach (var folder in folders)
            {
                if (FolderPermissionController.CanViewFolder((FolderInfo)folder))
                {
                    objNode = AddNode((FolderInfo)folder, objNodes);
                    if (DNNTree.PopulateNodesFromClient == false)
                    {
                        PopulateTree(objNode.TreeNodes, folder.FolderPath);
                    }
                }
            }
        }
        /// <summary>
        /// Loads Local Resource files in the tree
        /// </summary>
        /// <param name="Nodes">Node collection where to add new nodes</param>
        /// <param name="_path">Folder to search for</param>
        /// <returns>true if a Local Resource file is found in the given path</returns>
        /// <remarks>
        /// The Node collection will only contain en-US resources
        /// Only folders with Resource files will be included in the tree
        /// </remarks>
        /// <history>
        ///     [vmasanas]	07/10/2004	Created
        /// </history>
        private bool PopulateTree(TreeNodeCollection Nodes, string _path)
        {
            string[] folders = Directory.GetDirectories(_path);
            bool     found   = false;

            foreach (string folder in folders)
            {
                DirectoryInfo objFolder = new DirectoryInfo(folder);
                TreeNode      node      = new TreeNode(objFolder.Name);
                node.Key         = objFolder.FullName;
                node.ToolTip     = objFolder.Name;
                node.ImageIndex  = (int)eImageType.Folder;
                node.ClickAction = eClickAction.Expand;
                Nodes.Add(node);

                if (objFolder.Name == Localization.LocalResourceDirectory)
                {
                    // found local resource folder, add resources
                    foreach (FileInfo objFile in objFolder.GetFiles("*.ascx.resx"))
                    {
                        TreeNode leaf = new TreeNode(Path.GetFileNameWithoutExtension(objFile.Name));
                        leaf.Key        = objFile.FullName;
                        leaf.ToolTip    = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add(leaf);
                    }
                    foreach (FileInfo objFile in objFolder.GetFiles("*.aspx.resx"))
                    {
                        TreeNode leaf = new TreeNode(Path.GetFileNameWithoutExtension(objFile.Name));
                        leaf.Key        = objFile.FullName;
                        leaf.ToolTip    = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add(leaf);
                    }
                    // add LocalSharedResources if found
                    if (File.Exists(Path.Combine(folder, Localization.LocalSharedResourceFile)))
                    {
                        FileInfo objFile = new FileInfo(Path.Combine(folder, Localization.LocalSharedResourceFile));
                        TreeNode leaf    = new TreeNode(Path.GetFileNameWithoutExtension(objFile.Name));
                        leaf.Key        = objFile.FullName;
                        leaf.ToolTip    = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add(leaf);
                    }
                    found = true;
                }
                else
                {
                    //recurse
                    if (PopulateTree(node.TreeNodes, folder))
                    {
                        // found resources
                        found = true;
                    }
                    else
                    {
                        // not found, remove node
                        Nodes.Remove(node);
                    }
                }
            }

            return(found);
        }
        /// -----------------------------------------------------------------------------
        /// <summary>
        /// Adds node to tree
        /// </summary>
        /// <param name="strName">Name of folder to display</param>
        /// <param name="strKey">Masked Key of folder location</param>
        /// <param name="eImage">Type of image</param>
        /// <param name="objNodes">Node collection to add to</param>
        /// <returns></returns>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// 	[Jon Henning]	10/26/2004	Created
        /// 	[Jon Henning]	8/24/2005	Added Populate on Demand (POD) logic
        /// </history>
        /// -----------------------------------------------------------------------------
        private DNNTreeNode AddNode(string strName, string strKey, int imageIndex, DNNTreeNodeCollection objNodes)
        {
            DNNTreeNode objNode;
            objNode = new DNNTreeNode(strName);
            objNode.Key = strKey;
            objNode.ToolTip = strName;
            objNode.ImageIndex = imageIndex;
            objNode.CssClass = "FileManagerTreeNode";
            objNodes.Add(objNode);

            if (objNode.Key == DestPath)
            {
                objNode.Selected = true;
                objNode.MakeNodeVisible();
            }
            return objNode;
        }
Exemple #5
0
 public void LoadXml(string strXml)
 {
     m_objNodes = new TreeNodeCollection(strXml, "", this);
 }
        /// <summary>
        /// Loads Local Resource files in the tree
        /// </summary>
        /// <param name="Nodes">Node collection where to add new nodes</param>
        /// <param name="_path">Folder to search for</param>
        /// <returns>true if a Local Resource file is found in the given path</returns>
        /// <remarks>
        /// The Node collection will only contain en-US resources
        /// Only folders with Resource files will be included in the tree
        /// </remarks>
        /// <history>
        /// 	[vmasanas]	07/10/2004	Created
        /// </history>
        private bool PopulateTree( TreeNodeCollection Nodes, string _path )
        {
            string[] folders = Directory.GetDirectories( _path );
            bool found = false;

            foreach( string folder in folders )
            {
                DirectoryInfo objFolder = new DirectoryInfo( folder );
                TreeNode node = new TreeNode( objFolder.Name );
                node.Key = objFolder.FullName;
                node.ToolTip = objFolder.Name;
                node.ImageIndex = (int)eImageType.Folder;
                node.ClickAction = eClickAction.Expand;
                Nodes.Add( node );

                if( objFolder.Name == Localization.LocalResourceDirectory )
                {
                    // found local resource folder, add resources
                    foreach( FileInfo objFile in objFolder.GetFiles( "*.ascx.resx" ) )
                    {
                        TreeNode leaf = new TreeNode( Path.GetFileNameWithoutExtension( objFile.Name ) );
                        leaf.Key = objFile.FullName;
                        leaf.ToolTip = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add( leaf );
                    }
                    foreach( FileInfo objFile in objFolder.GetFiles( "*.aspx.resx" ) )
                    {
                        TreeNode leaf = new TreeNode( Path.GetFileNameWithoutExtension( objFile.Name ) );
                        leaf.Key = objFile.FullName;
                        leaf.ToolTip = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add( leaf );
                    }
                    // add LocalSharedResources if found
                    if( File.Exists( Path.Combine( folder, Localization.LocalSharedResourceFile ) ) )
                    {
                        FileInfo objFile = new FileInfo( Path.Combine( folder, Localization.LocalSharedResourceFile ) );
                        TreeNode leaf = new TreeNode( Path.GetFileNameWithoutExtension( objFile.Name ) );
                        leaf.Key = objFile.FullName;
                        leaf.ToolTip = objFile.Name;
                        leaf.ImageIndex = (int)eImageType.Page;
                        node.TreeNodes.Add( leaf );
                    }
                    found = true;
                }
                else
                {
                    //recurse
                    if( PopulateTree( node.TreeNodes, folder ) )
                    {
                        // found resources
                        found = true;
                    }
                    else
                    {
                        // not found, remove node
                        Nodes.Remove( node );
                    }
                }
            }

            return found;
        }
        /// <summary>
        /// Populates DNNTree control with folder hiearachy
        /// </summary>
        /// <param name="objNodes">Node collection to add children to</param>
        /// <param name="strPath">Path of parent node</param>
        /// <history>
        /// 	[Jon Henning]	10/26/2004	Created
        /// 	[Jon Henning]	8/24/2005	Added Populate on Demand (POD) logic
        ///     [cnurse]        04/24/2006  Updated to use new Secure Storage
        /// </history>
        private void PopulateTree( TreeNodeCollection objNodes, string strPath )
        {
            string folderPath = strPath.Replace( RootFolderPath, "" ).Replace( "\\", "/" );
            ArrayList folders = FileSystemUtils.GetFoldersByParentFolder( FolderPortalID, folderPath );

            //Iterate through the SubFolders
            foreach( FolderInfo folder in folders )
            {
                TreeNode objNode = AddNode( folder, objNodes );
                if( this.DNNTree.PopulateNodesFromClient == false )
                {
                    PopulateTree( objNode.TreeNodes, folder.FolderPath );
                }
            }
        }
        /// <summary>
        /// Adds node to tree
        /// </summary>
        /// <param name="folder">The FolderInfo object to add</param>
        /// <param name="objNodes">Node collection to add to</param>
        /// <returns></returns>
        /// <history>
        /// 	[cnurse]	04/24/2006	Created
        /// </history>
        private TreeNode AddNode( FolderInfo folder, TreeNodeCollection objNodes )
        {
            TreeNode objNode;
            string strName = folder.FolderName;
            string strKey = MaskPath( RootFolderPath + folder.FolderPath );
            ArrayList subFolders = FileSystemUtils.GetFoldersByParentFolder( FolderPortalID, folder.FolderPath );
            eImageType image = eImageType.Folder;
            if( folder.StorageLocation == (int)FolderController.StorageLocationTypes.InsecureFileSystem )
            {
                image = eImageType.Folder;
            }
            else if( folder.StorageLocation == (int)FolderController.StorageLocationTypes.SecureFileSystem )
            {
                image = eImageType.SecureFolder;
            }
            else if( folder.StorageLocation == (int)FolderController.StorageLocationTypes.DatabaseSecure )
            {
                image = eImageType.DatabaseFolder;
            }
            objNode = AddNode( strName, strKey, image, objNodes );
            objNode.HasNodes = subFolders.Count > 0;

            return objNode;
        }
        /// <summary>
        /// Adds node to tree
        /// </summary>
        /// <param name="strName">Name of folder to display</param>
        /// <param name="strKey">Masked Key of folder location</param>
        /// <param name="eImage">Type of image</param>
        /// <param name="objNodes">Node collection to add to</param>
        /// <history>
        /// 	[Jon Henning]	10/26/2004	Created
        /// 	[Jon Henning]	8/24/2005	Added Populate on Demand (POD) logic
        /// </history>
        private TreeNode AddNode( string strName, string strKey, eImageType eImage, TreeNodeCollection objNodes )
        {
            TreeNode objNode;
            objNode = new TreeNode( strName );
            objNode.Key = strKey;
            objNode.ToolTip = strName;
            objNode.ImageIndex = (int)eImage;
            objNode.CssClass = "FileManagerTreeNode";
            objNodes.Add( objNode );

            if( objNode.Key == DestPath )
            {
                objNode.Selected = true;
                objNode.MakeNodeVisible();
            }

            return objNode;
        }