diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-03 15:32:27 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-03 15:32:27 -0500 |
| commit | ecc6fcfbab7006c7c9bfcf76d329c663a2fa5a2c (patch) | |
| tree | d849f61148c2da3c2323379413682dc5f4448a00 | |
| parent | ede84702d1805fac2f452bf298e59549893baea5 (diff) | |
add custom collection sort orders to edit page
| -rw-r--r-- | MediaBrowser.Api/ItemUpdateService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/IHasDisplayOrder.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Video.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/BaseItemXmlParser.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dto/BaseItemDto.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Providers/ImagesByName/ImageUtils.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Savers/XmlSaverHelpers.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Dto/DtoService.cs | 6 |
12 files changed, 93 insertions, 7 deletions
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 6c5b279d0..331c55f17 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -318,6 +318,12 @@ namespace MediaBrowser.Api hasLang.PreferredMetadataCountryCode = request.PreferredMetadataCountryCode; hasLang.PreferredMetadataLanguage = request.PreferredMetadataLanguage; } + + var hasDisplayOrder = item as IHasDisplayOrder; + if (hasDisplayOrder != null) + { + hasDisplayOrder.DisplayOrder = request.DisplayOrder; + } var hasAspectRatio = item as IHasAspectRatio; if (hasAspectRatio != null) diff --git a/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs b/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs new file mode 100644 index 000000000..5e1ae2179 --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs @@ -0,0 +1,15 @@ + +namespace MediaBrowser.Controller.Entities +{ + /// <summary> + /// Interface IHasDisplayOrder + /// </summary> + public interface IHasDisplayOrder + { + /// <summary> + /// Gets or sets the display order. + /// </summary> + /// <value>The display order.</value> + string DisplayOrder { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 8623e2ff6..c0f7570e8 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// <summary> /// Class BoxSet /// </summary> - public class BoxSet : Folder, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage + public class BoxSet : Folder, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder { public BoxSet() { @@ -40,6 +40,12 @@ namespace MediaBrowser.Controller.Entities.Movies /// <value>The preferred metadata country code.</value> public string PreferredMetadataCountryCode { get; set; } + /// <summary> + /// Gets or sets the display order. + /// </summary> + /// <value>The display order.</value> + public string DisplayOrder { get; set; } + protected override bool GetBlockUnratedValue(UserConfiguration config) { return config.BlockUnratedMovies; @@ -49,6 +55,19 @@ namespace MediaBrowser.Controller.Entities.Movies { var children = base.GetChildren(user, includeLinkedChildren); + if (string.Equals(DisplayOrder, "SortName", StringComparison.OrdinalIgnoreCase)) + { + // Sort by name + return LibraryManager.Sort(children, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending); + } + + if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase)) + { + // Sort by release date + return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending); + } + + // Default sorting return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending); } } diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index f7e78ccd4..135547a37 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Class Series /// </summary> - public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage + public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder { public List<Guid> SpecialFeatureIds { get; set; } public List<Guid> SoundtrackIds { get; set; } @@ -45,6 +45,8 @@ namespace MediaBrowser.Controller.Entities.TV public List<MediaUrl> RemoteTrailers { get; set; } + public string DisplayOrder { get; set; } + /// <summary> /// Gets or sets the tags. /// </summary> diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 19cad7948..8ca475650 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -238,7 +238,7 @@ namespace MediaBrowser.Controller.Entities if (string.IsNullOrEmpty(parentPath)) { - throw new ApplicationException("Unable to get parent path info from " + path); + throw new IOException("Unable to get parent path info from " + path); } files = new DirectoryInfo(parentPath) @@ -247,7 +247,14 @@ namespace MediaBrowser.Controller.Entities } else { - files = ResolveArgs.FileSystemChildren.Where(i => + var resolveArgs = ResolveArgs; + + if (resolveArgs == null) + { + throw new IOException("ResolveArgs are null for " + path); + } + + files = resolveArgs.FileSystemChildren.Where(i => { if ((i.Attributes & FileAttributes.Directory) == FileAttributes.Directory) { diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index e08361812..707997141 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -85,6 +85,7 @@ <Compile Include="Entities\IHasAspectRatio.cs" /> <Compile Include="Entities\IHasBudget.cs" /> <Compile Include="Entities\IHasCriticRating.cs" /> + <Compile Include="Entities\IHasDisplayOrder.cs" /> <Compile Include="Entities\IHasImages.cs" /> <Compile Include="Entities\IHasMediaStreams.cs" /> <Compile Include="Entities\IHasPreferredMetadataLanguage.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 799f339f1..ea21e18b0 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -532,6 +532,21 @@ namespace MediaBrowser.Controller.Providers break; } + case "DisplayOrder": + { + var val = reader.ReadElementContentAsString(); + + var hasDisplayOrder = item as IHasDisplayOrder; + if (hasDisplayOrder != null) + { + if (!string.IsNullOrWhiteSpace(val)) + { + hasDisplayOrder.DisplayOrder = val; + } + } + break; + } + case "Trailers": { using (var subtree = reader.ReadSubtree()) diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index 9adfcfa99..3bd4d52ee 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -393,6 +393,12 @@ namespace MediaBrowser.Model.Dto public string Album { get; set; } /// <summary> + /// Gets or sets the display order. + /// </summary> + /// <value>The display order.</value> + public string DisplayOrder { get; set; } + + /// <summary> /// Gets or sets the album id. /// </summary> /// <value>The album id.</value> diff --git a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs index 82caa420f..4301c7432 100644 --- a/MediaBrowser.Providers/ImagesByName/ImageUtils.cs +++ b/MediaBrowser.Providers/ImagesByName/ImageUtils.cs @@ -60,7 +60,11 @@ namespace MediaBrowser.Providers.ImagesByName private static string GetComparableName(string name) { - return name.Replace(" ", string.Empty).Replace(".", string.Empty).Replace("&", string.Empty).Replace("!", string.Empty); + return name.Replace(" ", string.Empty) + .Replace(".", string.Empty) + .Replace("&", string.Empty) + .Replace("!", string.Empty) + .Replace(",", string.Empty); } public static IEnumerable<string> GetAvailableImages(string file) diff --git a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs index 712276bcd..5d5624c55 100644 --- a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs @@ -2,8 +2,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; -using MediaBrowser.Providers.Movies; -using System; using System.Collections.Generic; using System.IO; using System.Text; diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs index dc2d5eddd..c4bd86a79 100644 --- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs @@ -31,6 +31,7 @@ namespace MediaBrowser.Providers.Savers "CriticRating", "CriticRatingSummary", "DeathDate", + "DisplayOrder", "EndDate", "Genres", "Genre", @@ -284,6 +285,12 @@ namespace MediaBrowser.Providers.Savers } } + var hasDisplayOrder = item as IHasDisplayOrder; + if (hasDisplayOrder != null && !string.IsNullOrEmpty(hasDisplayOrder.DisplayOrder)) + { + builder.Append("<DisplayOrder>" + SecurityElement.Escape(hasDisplayOrder.DisplayOrder) + "</DisplayOrder>"); + } + var hasBudget = item as IHasBudget; if (hasBudget != null) { diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 932c7ba3f..4f97a6506 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -764,6 +764,12 @@ namespace MediaBrowser.Server.Implementations.Dto dto.LocalTrailerCount = hasTrailers.LocalTrailerIds.Count; } + var hasDisplayOrder = item as IHasDisplayOrder; + if (hasDisplayOrder != null) + { + dto.DisplayOrder = hasDisplayOrder.DisplayOrder; + } + if (fields.Contains(ItemFields.RemoteTrailers)) { dto.RemoteTrailers = hasTrailers != null ? |
