public List <dtoNodeItem> GetFoldersNodes(List <FolderType> folderTypes, dtoDisplayRepositoryItem currentFolder, RepositoryType type, Int32 idCommunity = -1, Boolean onlyAvailable = true, Boolean alsoTagChildren = false, Boolean removeDeleted = true) { return(GetItemsNodes(new List <ItemType>() { ItemType.Folder }, folderTypes, currentFolder, type, idCommunity, onlyAvailable, alsoTagChildren, removeDeleted)); }
public object Clone() { dtoDisplayRepositoryItem clone = new dtoDisplayRepositoryItem(); clone.Children = new List <dtoDisplayRepositoryItem>(); clone.IsUserAvailable = this.IsUserAvailable; clone.Permissions = this.Permissions; clone.Id = this.Id; clone.IdFolder = this.IdFolder; clone.UniqueId = this.UniqueId; clone.IdVersion = this.IdVersion; clone.UniqueIdVersion = this.UniqueIdVersion; clone.IdCommunity = IdCommunity; clone.Type = Type; clone.Name = Name; clone.Extension = Extension; clone.Url = Url; clone.ContentType = ContentType; clone.IsFile = IsFile; clone.IdOwner = IdOwner; clone.OwnerName = OwnerName; clone.CreatedOn = CreatedOn; clone.IdModifiedBy = IdModifiedBy; clone.ModifiedOn = ModifiedOn; clone.ModifiedBy = ModifiedBy; clone.Size = Size; clone.VersionsSize = VersionsSize; clone.DeletedSize = DeletedSize; clone.Description = Description; clone.Tags = Tags; clone.IsDownloadable = IsDownloadable; clone.Deleted = Deleted; clone.CloneOf = CloneOf; clone.CloneOfUniqueId = CloneOfUniqueId; clone.AllowUpload = AllowUpload; clone.FolderType = FolderType; clone.IsVisible = IsVisible; clone.DisplayOrder = DisplayOrder; clone.Availability = Availability; clone.Status = Status; clone.HasVersions = HasVersions; clone.DisplayMode = DisplayMode; clone.RevisionsNumber = RevisionsNumber; clone.Thumbnail = Thumbnail; clone.AutoThumbnail = AutoThumbnail; clone.PreviewTime = PreviewTime; clone.Time = Time; clone.Number = Number; clone.IdPlayer = IdPlayer; clone.Downloaded = Downloaded; clone.IsInternal = IsInternal; clone.Module = Module; clone.IsVirtual = IsVirtual; clone.Path = Path; if (Identifier != null) { clone.Identifier = (dtoItemIdentifier)Identifier.Clone(); } return(clone); }
private List <dtoNodeItem> CreateItemsNodes(dtoNodeItem father, dtoDisplayRepositoryItem item, List <ItemType> types, List <FolderType> folderTypes, dtoDisplayRepositoryItem currentFolder, RepositoryType type, Int32 idCommunity = -1, Boolean onlyAvailable = true, Boolean alsoTagChildren = false, Boolean removeDeleted = true) { List <dtoNodeItem> results = new List <dtoNodeItem>(); dtoNodeItem cNode = CreateItemNode(father, item, currentFolder, type, idCommunity); dtoNodeItem openNode = CreateOpenNode(cNode, item.Children.Any()); results.Add(openNode); results.Add(cNode); if (item.Children.Any(c => IsItemAvailable(c, types, onlyAvailable, folderTypes, removeDeleted))) { results.Add(new dtoNodeItem() { Type = NodeType.OpenChildren }); item.Children.Where(c => IsItemAvailable(c, types, onlyAvailable, folderTypes, removeDeleted)).ToList().ForEach(n => results.AddRange(CreateItemsNodes(openNode, n, types, folderTypes, currentFolder, type, idCommunity, onlyAvailable, alsoTagChildren, removeDeleted))); results.Add(new dtoNodeItem() { Type = NodeType.CloseChildren }); } else { results.Add(new dtoNodeItem() { Type = NodeType.NoChildren }); } results.Add(new dtoNodeItem() { Type = NodeType.CloseNode }); return(results); }
public static dtoDisplayRepositoryItem GenerateFolder(FolderType type, String name, dtoDisplayRepositoryItem father = null) { dtoDisplayRepositoryItem folder = GenerateFolder(name); folder.Id = -(int)type; folder.FolderType = type; folder.IdFolder = (father == null) ? 0 : father.Id; folder.IdentifierPath = CreateIdentifierPath(folder.Id, (father == null) ? "": father.IdentifierPath); folder.Father = father; folder.Identifier.Type = ItemIdentifierType.standard; folder.Identifier.FolderType = type; return(folder); }
public static dtoDisplayRepositoryItem GenerateFolder(String name) { dtoDisplayRepositoryItem folder = new dtoDisplayRepositoryItem(); folder.UniqueId = Guid.Empty; folder.Name = name; folder.IsVisible = true; folder.Availability = ItemAvailability.available; folder.IsUserAvailable = true; folder.Status = ItemStatus.Active; folder.Type = ItemType.Folder; folder.Children = new List <dtoDisplayRepositoryItem>(); folder.IsVirtual = true; return(folder); }
private List <dtoFolderItem> GetBreadCrumb(dtoDisplayRepositoryItem child, Boolean onlyAvailable, RepositoryType type, Int32 idCommunity = -1, Boolean removeDeleted = true) { List <dtoFolderItem> folders = new List <dtoFolderItem>(); dtoFolderItem folder = new dtoFolderItem() { Id = Id, FolderType = FolderType, Name = Name, IdentifierPath = IdentifierPath, TemplateUrl = RootObject.FolderUrlTemplate(Id, FolderType, IdentifierPath, type, idCommunity) }; folder.IsInCurrentPath = true; if (Father != null) { folders.AddRange(Father.GetBreadCrumb(this, onlyAvailable, type, idCommunity, removeDeleted)); } folders.Add(folder); return(folders); }
public static dtoDisplayRepositoryItem CreateFromInternal(dtoRepositoryItem source, Int32 idPerson, Boolean allowManage, Boolean allowView) { dtoDisplayRepositoryItem item = new dtoDisplayRepositoryItem(source); item.Children = new List <dtoDisplayRepositoryItem>(); item.IsUserAvailable = true; item.Permissions = new ItemPermission(); Boolean isOwner = (item.IdOwner == idPerson); switch (item.Type) { case ItemType.File: item.Permissions.Unzip = (item.Availability == ItemAvailability.available) && ((item.Extension == ".zip") && (allowManage || isOwner)); item.Permissions.Zip = (item.Availability == ItemAvailability.available) && (allowManage || isOwner); break; case ItemType.Folder: break; case ItemType.Multimedia: case ItemType.ScormPackage: item.Permissions.CanEditSettings = (allowManage || isOwner); item.Permissions.EditSettings = IsAvailableByType(item.Type, item.Availability) && (allowManage || isOwner); item.Permissions.Zip = (item.Availability == ItemAvailability.available) && (allowManage || isOwner); break; case ItemType.Link: break; } item.Permissions.Edit = (allowManage || isOwner); item.Permissions.ViewMyStatistics = ((item.Deleted == DomainModel.BaseStatusDeleted.None && item.Type != ItemType.Link && item.Type != ItemType.Folder && item.Type != ItemType.File) && !(allowManage || (isOwner && IsAvailableByType(item.Type, item.Availability)))); item.Permissions.ViewOtherStatistics = (item.Deleted == DomainModel.BaseStatusDeleted.None && item.Type != ItemType.Link && item.Type != ItemType.Folder && item.Type != ItemType.File) && (allowManage || (isOwner && IsAvailableByType(item.Type, item.Availability))); item.Permissions.VersioningAvailable = true; item.Permissions.ViewPermission = item.Permissions.Edit; item.Permissions.Delete = (item.Deleted != DomainModel.BaseStatusDeleted.None && allowManage); item.Permissions.UnDelete = (item.Deleted != DomainModel.BaseStatusDeleted.None && allowManage); item.Permissions.VirtualDelete = (item.Deleted == DomainModel.BaseStatusDeleted.None && allowManage); item.Permissions.Download = (item.Availability != ItemAvailability.notavailable) && (allowManage || (item.IsDownloadable && item.Type != ItemType.Folder && (isOwner || allowView))); item.Permissions.Play = IsAvailableByType(item.Type, item.Availability) && (item.Type == ItemType.Multimedia || item.Type == ItemType.ScormPackage) && ((allowManage || allowView) && item.Type != ItemType.Folder); item.Permissions.Preview = IsAvailableByType(item.Type, item.Availability) && (item.DisplayMode == Domain.DisplayMode.inModal || item.DisplayMode == Domain.DisplayMode.downloadOrPlayOrModal); return(item); }
public List <dtoDisplayRepositoryItem> GetFoldersTree(Boolean onlyAvailable, Boolean removeDeleted = true, dtoDisplayRepositoryItem father = null) { List <dtoDisplayRepositoryItem> results = new List <dtoDisplayRepositoryItem>(); if (IsAvailableForDelete(Deleted, removeDeleted) && (Father == null || (Father != null && IsAvailableForDelete(Father.Deleted, removeDeleted)))) { dtoDisplayRepositoryItem folder = null; if (Type == ItemType.Folder && (!onlyAvailable || (onlyAvailable && IsUserAvailable))) { folder = (dtoDisplayRepositoryItem)this.Clone(); folder.IdentifierPath = CreateIdentifierPath(folder.Id, (father == null) ? "" : father.IdentifierPath); folder.Father = father; } if (Type == ItemType.Folder && Children.Any(c => c.Type == ItemType.Folder)) { Children.Where(c => c.Type == ItemType.Folder).ToList().ForEach(c => folder.Children.AddRange(c.GetFoldersTree(onlyAvailable, removeDeleted, folder))); } results.Add(folder); } return(results); }
private dtoNodeItem CreateItemNode(dtoNodeItem father, dtoDisplayRepositoryItem item, dtoDisplayRepositoryItem currentFolder, RepositoryType type, Int32 idCommunity = -1) { dtoNodeItem node = new dtoNodeItem() { Type = NodeType.Item, IsCurrent = (currentFolder != null && currentFolder.Id == item.Id && currentFolder.FolderType == item.FolderType && currentFolder.IdentifierPath == item.IdentifierPath) }; node.Id = item.Id; node.IdFolder = item.IdFolder; node.FolderType = item.FolderType; node.IdCommunity = item.IdCommunity; node.ItemType = item.Type; node.Name = item.DisplayName; node.IdentifierPath = item.IdentifierPath; if (father != null) { node.Fathers.Add(father); node.Fathers.AddRange(father.Fathers); } node.HasCurrent = (currentFolder != null && (currentFolder.GetIdFathers().Where(f => f > 0).Contains(item.Id) || item.ContainsFolder(currentFolder.Id, currentFolder.FolderType, currentFolder.IdentifierPath))); switch (item.Type) { case ItemType.Folder: switch (item.FolderType) { case Domain.FolderType.standard: node.TemplateNavigateUrl = RootObject.FolderUrlTemplate(item.Id, item.FolderType, type, idCommunity); break; default: node.TemplateNavigateUrl = RootObject.FolderUrlTemplate(item.Id, item.FolderType, item.IdentifierPath, type, idCommunity); break; } break; } return(node); }
public List <dtoNodeItem> GetItemsNodes(List <ItemType> types, List <FolderType> folderTypes, dtoDisplayRepositoryItem currentFolder, RepositoryType type, Int32 idCommunity = -1, Boolean onlyAvailable = true, Boolean alsoTagChildren = false, Boolean removeDeleted = true) { List <dtoNodeItem> nodes = new List <dtoNodeItem>(); if (IsItemAvailable(this, types, onlyAvailable, folderTypes, removeDeleted)) { nodes.AddRange(CreateItemsNodes(null, this, types, folderTypes, currentFolder, type, idCommunity, onlyAvailable, alsoTagChildren, removeDeleted)); } return(nodes); }
private Boolean IsItemAvailable(dtoDisplayRepositoryItem item, Boolean onlyAvailable, List <FolderType> folderTypes, Boolean removeDeleted) { return((!onlyAvailable || (onlyAvailable && IsUserAvailable)) && (!removeDeleted || (removeDeleted && item.Deleted == DomainModel.BaseStatusDeleted.None)) && (folderTypes == null || !folderTypes.Any() || folderTypes.Contains(item.FolderType))); }
private Boolean IsItemAvailable(dtoDisplayRepositoryItem item, List <ItemType> types, Boolean onlyAvailable, List <FolderType> folderTypes, Boolean removeDeleted) { return(types.Contains(item.Type) && IsItemAvailable(item, onlyAvailable, folderTypes, removeDeleted)); }