示例#1
0
        public IHierarchicalEnumerable GetChildren()
        {
            if (_children == null)
            {
                _children = new TreeViewLocationCollection();

                switch (_type)
                {
                case LOCATION_TYPE__FUNCTIONAL_AREA: {
                    WBLogging.Debug("In GetChildren() for type Functional Area");
                    WBTaxonomy     recordsTypes = _manager.RecordsTypesTaxonomy;
                    TermCollection terms        = recordsTypes.TermSet.Terms;

                    foreach (Term childTerm in terms)
                    {
                        WBRecordsType recordsType      = new WBRecordsType(recordsTypes, childTerm);
                        bool          protectiveZoneOK = true;
                        //if (!String.IsNullOrEmpty(_minimumProtectiveZone))
                        //{
                        //   protectiveZoneOK = (recordsType.IsZoneAtLeastMinimum(_minimumProtectiveZone));
                        // }

                        if (recordsType.BranchCanHaveDocuments() && recordsType.IsRelevantToFunctionalArea(_functionalArea) && protectiveZoneOK)
                        {
                            TreeViewLocation newLocation = new TreeViewLocation(this, _manager, _mode, _minimumProtectiveZone, _functionalArea, recordsType);

                            // If we're looking for existing records then we'll only add this location if it has a real folder existing underneath it:
                            if (_mode == VIEW_MODE__NEW || newLocation._folder != null)
                            {
                                _children.Add(newLocation);
                            }
                        }
                        else
                        {
                            WBLogging.Debug("In GetChildren() excluded " + recordsType.Name + " because " + recordsType.BranchCanHaveDocuments() + " && " + protectiveZoneOK);
                        }
                    }

                    break;
                }

                case LOCATION_TYPE__RECORDS_TYPE: {
                    WBLogging.Debug("In GetChildren() for type Records Type");
                    WBTaxonomy recordsTypes = _manager.RecordsTypesTaxonomy;

                    TermCollection terms = _recordsType.Term.Terms;
                    if (terms.Count > 0)
                    {
                        foreach (Term childTerm in terms)
                        {
                            WBRecordsType recordsType      = new WBRecordsType(recordsTypes, childTerm);
                            bool          protectiveZoneOK = true;
                            if (!String.IsNullOrEmpty(_minimumProtectiveZone))
                            {
                                protectiveZoneOK = (recordsType.IsZoneAtLeastMinimum(_minimumProtectiveZone));
                            }

                            if (recordsType.BranchCanHaveDocuments() && recordsType.IsRelevantToFunctionalArea(_functionalArea) && protectiveZoneOK)
                            {
                                TreeViewLocation newLocation = new TreeViewLocation(this, _manager, _mode, _minimumProtectiveZone, _functionalArea, recordsType);

                                // If we're looking for existing records then we'll only add this location if it has a real folder existing underneath it:
                                if (_mode == VIEW_MODE__NEW || newLocation._folder != null)
                                {
                                    _children.Add(newLocation);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (_mode != VIEW_MODE__NEW)
                        {
                            // WBLogging.Debug("In view mode replace switching to folders part of tree");

                            string fullClassPath = WBUtils.NormalisePath(Path);

                            // WBLogging.Debug("Looking for starting folder = " + fullClassPath);

                            SPFolder protectedLibraryRootFolder = _manager.Libraries.ProtectedMasterLibrary.List.RootFolder;

                            // WBLogging.Debug("Got library root folder");

                            SPFolder recordsTypeFolder = protectedLibraryRootFolder.WBxGetFolderPath(fullClassPath);

                            // WBLogging.Debug("Got records type folder - definitely changed .. " + recordsTypeFolder);
                            if (recordsTypeFolder != null)
                            {
                                foreach (SPFolder child in recordsTypeFolder.SubFolders)
                                {
                                    _children.Add(new TreeViewLocation(this, _manager, _mode, _minimumProtectiveZone, child));
                                }
                            }
                            else
                            {
                                WBLogging.Debug("The master library doesn't have a folder with path: " + fullClassPath);
                            }

                            // WBLogging.Debug("Added children folders");
                        }
                    }

                    break;
                }

                case LOCATION_TYPE__FOLDER: {
                    WBLogging.Debug("In GetChildren() for type Folder");

                    if (_folder.SubFolders.Count > 0)
                    {
                        foreach (SPFolder child in _folder.SubFolders)
                        {
                            _children.Add(new TreeViewLocation(this, _manager, _mode, _minimumProtectiveZone, child));
                        }
                    }
                    else
                    {
                        if (_mode == VIEW_MODE__REPLACE)
                        {
                            SPListItemCollection items = GetItemsRecursive(_folder);
                            foreach (SPListItem item in items)
                            {
                                if (ItemCanBePicked(item))
                                {
                                    _children.Add(new TreeViewLocation(this, _manager, _mode, _minimumProtectiveZone, new WBDocument(_manager.Libraries.ProtectedMasterLibrary, item)));
                                }
                            }
                        }
                    }
                    break;
                }

                case LOCATION_TYPE__DOCUMENT: {
                    WBLogging.Debug("In GetChildren() for type Document");

                    break;
                }
                }
            }

            return(_children);
        }
示例#2
0
        internal void PopulateWithRecordsTypes(WBLocationTreeState treeState, TreeNodeCollection treeNodeCollection, String viewMode, SPFolder parentFolder, WBTerm functionalArea, WBTaxonomy recordsTypesTaxonomy, TermCollection recordsTypeTerms)
        {
            List <Term> sortedTerms = new List <Term>();

            foreach (Term term in recordsTypeTerms)
            {
                sortedTerms.Add(term);
            }
            sortedTerms = sortedTerms.OrderBy(o => o.Name).ToList();

            foreach (Term term in sortedTerms)
            {
                WBRecordsType recordsType = new WBRecordsType(recordsTypesTaxonomy, term);

                bool protectiveZoneOK = true;
                if (!String.IsNullOrEmpty(treeState.MinimumProtectiveZone))
                {
                    protectiveZoneOK = (recordsType.IsZoneAtLeastMinimum(treeState.MinimumProtectiveZone));
                }

                if (recordsType.BranchCanHaveDocuments() && recordsType.IsRelevantToFunctionalArea(functionalArea) && protectiveZoneOK)
                {
                    SPFolder folder = null;
                    if (viewMode != VIEW_MODE__NEW && parentFolder != null)
                    {
                        folder = parentFolder.WBxGetSubFolder(recordsType.Name);
                        if (folder == null)
                        {
                            WBLogging.Debug("Did not find folder for: " + recordsType.Name);
                        }
                    }

                    if (viewMode == VIEW_MODE__NEW || folder != null)
                    {
                        WBRecordsTypeTreeNode recordsTypeTreeNode = new WBRecordsTypeTreeNode(functionalArea, recordsType, folder);
                        TreeNode node = recordsTypeTreeNode.AsTreeNode();

                        if (recordsType.Term.TermsCount > 0 || viewMode != VIEW_MODE__NEW)
                        {
                            if (viewMode == VIEW_MODE__BROWSE_FOLDERS && recordsType.Term.TermsCount == 0)
                            {
                                node.SelectAction = TreeNodeSelectAction.Select;
                            }
                            else
                            {
                                node.SelectAction = TreeNodeSelectAction.Expand;
                            }
                            node.Expanded         = false;
                            node.PopulateOnDemand = true;
                        }
                        else
                        {
                            node.SelectAction     = TreeNodeSelectAction.Select;
                            node.Expanded         = true;
                            node.PopulateOnDemand = false;
                        }

                        treeNodeCollection.Add(node);
                    }
                }
            }
        }