Ejemplo n.º 1
0
 /// <summary>Retrieves allowed item definitions.</summary>
 /// <param name="parentItem">The parent item.</param>
 /// <param name="user">The user to restrict access for.</param>
 /// <returns>Item definitions allowed by zone, parent restrictions and security.</returns>
 public virtual IEnumerable <ItemDefinition> GetAllowedDefinitions(ContentItem parentItem, IPrincipal user)
 {
     return(new[] { parentItem }
            .Concat(parentItem.Children.Where(x => !x.IsPage).SelectMany(Find.EnumerateTree))
            .SelectMany(x => Definitions.GetDefinition(x).AvailableZones.SelectMany(y => GetAllowedDefinitions(x, y.ZoneName, user)))
            .Distinct());
 }
Ejemplo n.º 2
0
        public virtual IEnumerable <string> GetNodeFlags(ContentItem item)
        {
            var type = item.GetContentType();
            var tags = new List <string>();

            tags.Add(item.State.ToString());
            foreach (var possibleState in Enum.GetValues(typeof(CollectionState)).Cast <CollectionState>())
            {
                if (possibleState != CollectionState.Unknown && item.ChildState.HasFlag(possibleState))
                {
                    tags.Add(possibleState.ToString());
                }
            }

            if (!item.IsPublished())
            {
                tags.Add("NotPublished");
            }
            if (item.IsExpired())
            {
                tags.Add("Expired");
            }
            if (!item.Visible)
            {
                tags.Add("Invisible");
            }
            if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
            {
                tags.Add("Locked");
            }

            if (Drafts.HasDraft(item))
            {
                tags.Add("HasDraft");
            }

            if (item.Created.AddDays(3) > Utility.CurrentTime())
            {
                tags.Add("Recent");
            }

            tags.Add(type.Assembly.GetName().Name);

            tags.AddRange(Utility.GetBaseTypesAndSelf(type).Where(t => t != typeof(object)).Select(t => t.Name));
            tags.AddRange(type.GetInterfaces().Where(t => t.Namespace.Contains("Definition")).Select(t => t.Name));

            var d = Definitions.GetDefinition(item);

            tags.AddRange(d.AdditionalFlags);
            if (d.RemovedFlags.Any())
            {
                tags.RemoveAll(f => d.RemovedFlags.Contains(f));
            }

            return(tags);
        }
        public void GivenAValidSearchParameterDefinitionFile_WhenBuilt_ThenUriDictionaryShouldContainAllSearchParameters()
        {
            _builderWithValidEntries.Build();

            Assert.Equal(6, _builderWithValidEntries.UriDictionary.Count);

            Bundle bundle = Definitions.GetDefinition("SearchParameters");

            Assert.Equal(
                bundle.Entry.Select(entry => entry.FullUrl),
                _builderWithValidEntries.UriDictionary.Values.Select(value => value.Url.ToString()));
        }
Ejemplo n.º 4
0
        /// <summary>Retrieves allowed item definitions.</summary>
        /// <param name="parentItem">The parent item.</param>
        /// <param name="user">The user to restrict access for.</param>
        /// <returns>Item definitions allowed by zone, parent restrictions and security.</returns>
        public virtual IEnumerable <ItemDefinition> GetAllowedDefinitions(ContentItem parentItem, IPrincipal user)
        {
            ItemDefinition containerDefinition = Definitions.GetDefinition(parentItem);

            foreach (ItemDefinition childDefinition in containerDefinition.GetAllowedChildren(Definitions, parentItem))
            {
                if (childDefinition.Enabled && childDefinition.IsAuthorized(user) && childDefinition.AllowedIn != N2.Integrity.AllowedZones.None)
                {
                    yield return(childDefinition);
                }
            }
        }
Ejemplo n.º 5
0
 /// <summary>Gets the node representation used to build the tree hierarchy in the management UI.</summary>
 /// <param name="item">The item to link to.</param>
 /// <returns>Tree node data.</returns>
 public virtual TreeNode GetTreeNode(ContentItem item)
 {
     return(new TreeNode
     {
         IconUrl = GetIconUrl(item),
         Title = item.Title,
         MetaInforation = GetMetaInformation(item),
         ToolTip = "#" + item.ID + ": " + Definitions.GetDefinition(item).Title,
         CssClass = GetClassName(item),
         PreviewUrl = GetPreviewUrl(item),
         MaximumPermission = GetMaximumPermission(item),
     });
 }
Ejemplo n.º 6
0
 public virtual IList <ContentItem> GetItems()
 {
     if (ParentItem != null)
     {
         IList <ContentItem> items = ParentItem.GetChildren(ZoneName);
         foreach (string discriminator in AddedDefinitions)
         {
             ContentItem item = CreateItem(Definitions.GetDefinition(discriminator));
             items.Add(item);
         }
         return(items);
     }
     return(new ContentItem[0]);
 }
Ejemplo n.º 7
0
        public virtual IList <ContentItem> GetItems()
        {
            if (ParentItem != null)
            {
                var filter = new Collections.AllFilter(GetFilters());
                var items  = ParentItem.Children.Where(filter).ToList();

                foreach (string discriminator in AddedDefinitions)
                {
                    ContentItem item = CreateItem(Definitions.GetDefinition(discriminator));
                    items.Add(item);
                }
                return(items);
            }
            return(new ContentItem[0]);
        }
Ejemplo n.º 8
0
        public void GivenAValidSearchParameterDefinitionFile_WhenBuilt_ThenUriDictionaryShouldContainAllSearchParameters()
        {
            var bundle = SearchParameterDefinitionBuilder.ReadEmbeddedSearchParameters(
                _validEntriesFile,
                ModelInfoProvider.Instance,
                $"{typeof(Definitions).Namespace}.DefinitionFiles",
                typeof(EmbeddedResourceManager).Assembly);

            SearchParameterDefinitionBuilder.Build(bundle.Entries.Select(e => e.Resource).ToList(), _uriDictionary, _resourceTypeDictionary, ModelInfoProvider.Instance);

            Assert.Equal(6, _uriDictionary.Count);

            Bundle staticBundle = Definitions.GetDefinition("SearchParameters");

            Assert.Equal(
                staticBundle.Entry.Select(entry => entry.FullUrl).OrderBy(s => s, StringComparer.OrdinalIgnoreCase),
                _uriDictionary.Values.Select(value => value.Url.ToString()).OrderBy(s => s, StringComparer.OrdinalIgnoreCase));
        }
Ejemplo n.º 9
0
        /// <summary>Gets the node representation used to build the tree hierarchy in the management UI.</summary>
        /// <param name="item">The item to link to.</param>
        /// <returns>Tree node data.</returns>
        public virtual TreeNode GetTreeNode(ContentItem item, bool allowDraft = true)
        {
            var node = new TreeNode
            {
                ID                = item.VersionOf.ID ?? item.ID,
                Path              = item.Path,
                State             = item.State,
                IconUrl           = GetIconUrl(item),
                IconClass         = GetIconClass(item),
                Title             = item.Title,
                ToolTip           = "#" + item.ID + ": " + Definitions.GetDefinition(item).Title,
                PreviewUrl        = GetPreviewUrl(item, allowDraft: allowDraft),
                MaximumPermission = GetMaximumPermission(item),
                SortOrder         = item.SortOrder,
                VersionIndex      = item.VersionIndex,
                ZoneName          = item.ZoneName
            };

            node.MetaInformation = GetMetaInformation(item);
            ApplyStateFlags(node, item);
            return(node);
        }
Ejemplo n.º 10
0
        protected virtual IDictionary <string, MetaInfo> GetMetaInformation(ContentItem item)
        {
            var mi = new Dictionary <string, MetaInfo>();

            if (Languages.IsLanguageRoot(item) && Languages.GetLanguage(item) != null)
            {
                mi["language"] = new MetaInfo {
                    Text = Languages.GetLanguage(item).LanguageCode
                }
            }
            ;

            if (!item.IsPage)
            {
                mi["zone"] = new MetaInfo {
                    Text = item.ZoneName
                }
            }
            ;

            if (!item.Visible)
            {
                mi["hidden"] = new MetaInfo {
                    Text = "", ToolTip = "Hidden"
                }
            }
            ;

            if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
            {
                mi["locked"] = new MetaInfo {
                    Text = "", ToolTip = "Locked"
                }
            }
            ;

            if (Host.IsStartPage(item))
            {
                mi["authority"] = new MetaInfo {
                    Text = string.IsNullOrEmpty(Host.GetSite(item).Authority) ? "*" : Host.GetSite(item).Authority
                }
            }
            ;

            if (item.Parent == null)
            {
                mi["root"] = new MetaInfo {
                    Text = ""
                }
            }
            ;

            var draftInfo = Drafts.GetDraftInfo(item);

            if (draftInfo != null && draftInfo.Saved > item.Updated)
            {
                mi["draft"] = new MetaInfo {
                    Text = "&nbsp;", ToolTip = draftInfo.SavedBy + ": " + draftInfo.Saved
                }
            }
            ;

            if (item is ISystemNode)
            {
                mi["system"] = new MetaInfo {
                    ToolTip = Definitions.GetDefinition(item).Title
                }
            }
            ;

            return(mi);
        }