Implements the retrieval of ancestors, children, descendats and parent IMedia in the MediaService and as extensions to IMedia.
Corresponds to the IMedia implementation of U4-1638.
This commit is contained in:
@@ -19,6 +19,7 @@ namespace Umbraco.Core.Models
|
||||
{
|
||||
public static class ContentExtensions
|
||||
{
|
||||
#region IContent
|
||||
/// <summary>
|
||||
/// Returns a list of the current contents ancestors, not including the content itself.
|
||||
/// </summary>
|
||||
@@ -58,6 +59,49 @@ namespace Umbraco.Core.Models
|
||||
{
|
||||
return ApplicationContext.Current.Services.ContentService.GetById(content.ParentId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IMedia
|
||||
/// <summary>
|
||||
/// Returns a list of the current medias ancestors, not including the media itself.
|
||||
/// </summary>
|
||||
/// <param name="media">Current media</param>
|
||||
/// <returns>An enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
public static IEnumerable<IMedia> Ancestors(this IMedia media)
|
||||
{
|
||||
return ApplicationContext.Current.Services.MediaService.GetAncestors(media);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of the current medias children.
|
||||
/// </summary>
|
||||
/// <param name="media">Current media</param>
|
||||
/// <returns>An enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
public static IEnumerable<IMedia> Children(this IMedia media)
|
||||
{
|
||||
return ApplicationContext.Current.Services.MediaService.GetChildren(media.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of the current medias descendants, not including the media itself.
|
||||
/// </summary>
|
||||
/// <param name="media">Current media</param>
|
||||
/// <returns>An enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
public static IEnumerable<IMedia> Descendants(this IMedia media)
|
||||
{
|
||||
return ApplicationContext.Current.Services.MediaService.GetDescendants(media);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the parent of the current media.
|
||||
/// </summary>
|
||||
/// <param name="media">Current media</param>
|
||||
/// <returns>An <see cref="IMedia"/> object</returns>
|
||||
public static IMedia Parent(this IMedia media)
|
||||
{
|
||||
return ApplicationContext.Current.Services.MediaService.GetById(media.ParentId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Set property values by alias with an annonymous object
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Xml.Linq;
|
||||
@@ -246,7 +247,10 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>An Enumerable list of <see cref="IContent"/> objects</returns>
|
||||
public IEnumerable<IContent> GetAncestors(IContent content)
|
||||
{
|
||||
var ids = content.Path.Split(',').Where(x => x != "-1" && x != content.Id.ToString()).Select(int.Parse).ToArray();
|
||||
var ids = content.Path.Split(',').Where(x => x != "-1" && x != content.Id.ToString(CultureInfo.InvariantCulture)).Select(int.Parse).ToArray();
|
||||
if (ids.Any() == false)
|
||||
return new List<IContent>();
|
||||
|
||||
using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
return repository.GetAll(ids);
|
||||
@@ -331,6 +335,9 @@ namespace Umbraco.Core.Services
|
||||
/// <returns>Parent <see cref="IContent"/> object</returns>
|
||||
public IContent GetParent(IContent content)
|
||||
{
|
||||
if (content.ParentId == -1 || content.ParentId == -20)
|
||||
return null;
|
||||
|
||||
return GetById(content.ParentId);
|
||||
}
|
||||
|
||||
|
||||
@@ -177,5 +177,40 @@ namespace Umbraco.Core.Services
|
||||
/// <param name="deletePriorVersions">Boolean indicating whether to delete versions prior to the versionId</param>
|
||||
/// <param name="userId">Optional Id of the User deleting versions of a Content object</param>
|
||||
void DeleteVersion(int id, Guid versionId, bool deletePriorVersions, int userId = 0);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects, which are ancestors of the current media.
|
||||
/// </summary>
|
||||
/// <param name="id">Id of the <see cref="IMedia"/> to retrieve ancestors for</param>
|
||||
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
IEnumerable<IMedia> GetAncestors(int id);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects, which are ancestors of the current media.
|
||||
/// </summary>
|
||||
/// <param name="media"><see cref="IMedia"/> to retrieve ancestors for</param>
|
||||
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
IEnumerable<IMedia> GetAncestors(IMedia media);
|
||||
|
||||
/// <summary>
|
||||
/// Gets descendants of a <see cref="IMedia"/> object by its Id
|
||||
/// </summary>
|
||||
/// <param name="media">The Parent <see cref="IMedia"/> object to retrieve descendants from</param>
|
||||
/// <returns>An Enumerable flat list of <see cref="IMedia"/> objects</returns>
|
||||
IEnumerable<IMedia> GetDescendants(IMedia media);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent of the current media as an <see cref="IMedia"/> item.
|
||||
/// </summary>
|
||||
/// <param name="id">Id of the <see cref="IMedia"/> to retrieve the parent from</param>
|
||||
/// <returns>Parent <see cref="IMedia"/> object</returns>
|
||||
IMedia GetParent(int id);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent of the current media as an <see cref="IMedia"/> item.
|
||||
/// </summary>
|
||||
/// <param name="media"><see cref="IMedia"/> to retrieve the parent from</param>
|
||||
/// <returns>Parent <see cref="IMedia"/> object</returns>
|
||||
IMedia GetParent(IMedia media);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using Umbraco.Core.Auditing;
|
||||
@@ -189,6 +190,34 @@ namespace Umbraco.Core.Services
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects, which are ancestors of the current media.
|
||||
/// </summary>
|
||||
/// <param name="id">Id of the <see cref="IMedia"/> to retrieve ancestors for</param>
|
||||
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
public IEnumerable<IMedia> GetAncestors(int id)
|
||||
{
|
||||
var media = GetById(id);
|
||||
return GetAncestors(media);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects, which are ancestors of the current media.
|
||||
/// </summary>
|
||||
/// <param name="media"><see cref="IMedia"/> to retrieve ancestors for</param>
|
||||
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
|
||||
public IEnumerable<IMedia> GetAncestors(IMedia media)
|
||||
{
|
||||
var ids = media.Path.Split(',').Where(x => x != "-1" && x != media.Id.ToString(CultureInfo.InvariantCulture)).Select(int.Parse).ToArray();
|
||||
if(ids.Any() == false)
|
||||
return new List<IMedia>();
|
||||
|
||||
using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
return repository.GetAll(ids);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects by Parent Id
|
||||
/// </summary>
|
||||
@@ -234,6 +263,30 @@ namespace Umbraco.Core.Services
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent of the current media as an <see cref="IMedia"/> item.
|
||||
/// </summary>
|
||||
/// <param name="id">Id of the <see cref="IMedia"/> to retrieve the parent from</param>
|
||||
/// <returns>Parent <see cref="IMedia"/> object</returns>
|
||||
public IMedia GetParent(int id)
|
||||
{
|
||||
var media = GetById(id);
|
||||
return GetParent(media);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parent of the current media as an <see cref="IMedia"/> item.
|
||||
/// </summary>
|
||||
/// <param name="media"><see cref="IMedia"/> to retrieve the parent from</param>
|
||||
/// <returns>Parent <see cref="IMedia"/> object</returns>
|
||||
public IMedia GetParent(IMedia media)
|
||||
{
|
||||
if (media.ParentId == -1 || media.ParentId == -21)
|
||||
return null;
|
||||
|
||||
return GetById(media.ParentId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of <see cref="IMedia"/> objects by the Id of the <see cref="IContentType"/>
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user