/// <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()); }
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())); }
/// <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); } } }
/// <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), }); }
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]); }
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]); }
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)); }
/// <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); }
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 = " ", ToolTip = draftInfo.SavedBy + ": " + draftInfo.Saved } } ; if (item is ISystemNode) { mi["system"] = new MetaInfo { ToolTip = Definitions.GetDefinition(item).Title } } ; return(mi); }