コード例 #1
0
        /// <exclude />
        public static ClientElement GetRoot()
        {
            List <Element> roots = ElementFacade.GetRoots(null).ToList();

            if (roots.Count == 0)
            {
                // user with out any access logging in - return "empty root"
                roots = ElementFacade.GetRootsWithNoSecurity().ToList();
                if (roots.Count == 0)
                {
                    throw new InvalidOperationException("No roots specified");
                }
                if (roots.Count > 1)
                {
                    throw new InvalidOperationException("More than one root specified");
                }

                var emptyElement = new Element(new ElementHandle("nullRoot", new NullRootEntityToken()));
                emptyElement.VisualData = new ElementVisualizedData {
                    HasChildren = false, Label = "nullroot", Icon = CommonElementIcons.Folder
                };

                roots.Clear();
                roots.Add(emptyElement);
            }
            else if (roots.Count > 1)
            {
                throw new InvalidOperationException("More than one root specified");
            }

            return(roots[0].GetClientElement());
        }
コード例 #2
0
        /// <exclude />
        public static List <ClientElement> GetRoots(string providerHandle, string serializedSearchToken)
        {
            SearchToken searchToken = null;

            if (!string.IsNullOrEmpty(serializedSearchToken))
            {
                searchToken = SearchToken.Deserialize(serializedSearchToken);
            }

            List <Element> roots;

            if (UserSettings.ForeignLocaleCultureInfo == null || UserSettings.ForeignLocaleCultureInfo.Equals(UserSettings.ActiveLocaleCultureInfo))
            {
                roots = ElementFacade.GetRoots(new ElementProviderHandle(providerHandle), searchToken).ToList();
            }
            else
            {
                roots = ElementFacade.GetForeignRoots(new ElementProviderHandle(providerHandle), searchToken).ToList();
            }

            return(roots.ToClientElementList());
        }
コード例 #3
0
        private IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken seachToken, bool useForeign)
        {
            IEnumerable <VirtualElementConfigurationElement> elementNodes;

            if (entityToken.Id == RootElementId)
            {
                elementNodes = _configuration.Perspectives;
            }
            else
            {
                SimpleVirtualElement node = FindElementNode(entityToken.Id, _configuration.Perspectives);

                Verify.IsNotNull(node, "No corresponding node was found with the id '{0}'", entityToken.Id);

                elementNodes = node.Elements;
            }

            var result = new List <Element>();

            foreach (var elementNode in elementNodes)
            {
                if (elementNode is SimpleVirtualElement)
                {
                    Element createdElement;
                    if (TryBuildElement(elementNode as SimpleVirtualElement, out createdElement))
                    {
                        result.Add(createdElement);
                    }
                    continue;
                }

                if (elementNode is AttachProviderVirtualElement)
                {
                    string providerName = (elementNode as AttachProviderVirtualElement).ProviderName;

                    var providerHandle = new ElementProviderHandle(providerName);

                    List <Element> elementsFromProvider;
                    if (useForeign && ElementFacade.IsLocaleAwareElementProvider(providerHandle))
                    {
                        elementsFromProvider = ElementFacade.GetForeignRoots(providerHandle, seachToken).ToList();
                    }
                    else
                    {
                        elementsFromProvider = ElementFacade.GetRoots(providerHandle, seachToken).ToList();
                    }

                    foreach (Element element in elementsFromProvider)
                    {
                        element.ElementExternalActionAdding = element.ElementExternalActionAdding.Remove(ElementExternalActionAdding.AllowGlobal);
                    }

                    result.AddRange(elementsFromProvider);
                    continue;
                }

                throw new NotSupportedException();
            }

            return(result);
        }