From 3cc0ad2a3599de1134b97057f14000ea9523fa3d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 5 Apr 2015 23:47:01 -0400 Subject: [PATCH] add notification services tab --- .../Channels/ChannelAudioItem.cs | 8 ++++++- .../Channels/ChannelFolderItem.cs | 5 +++++ .../Channels/ChannelVideoItem.cs | 12 +++++++++++ MediaBrowser.Controller/Entities/BaseItem.cs | 14 +++++++++++-- .../MediaBrowser.MediaEncoding.csproj | 4 +++- .../Probing}/whitelist.txt | 0 .../MediaBrowser.Providers.csproj | 3 --- .../Channels/ChannelManager.cs | 11 ++++++++-- .../EntryPoints/LibraryChangedNotifier.cs | 21 +++++++------------ .../Localization/JavaScript/javascript.json | 1 + 10 files changed, 56 insertions(+), 23 deletions(-) rename {MediaBrowser.Providers/MediaInfo => MediaBrowser.MediaEncoding/Probing}/whitelist.txt (100%) diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs index 8d90246765..7582f4c91b 100644 --- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; @@ -100,5 +101,10 @@ namespace MediaBrowser.Controller.Channels { return false; } + + public override bool IsVisibleStandalone(User user) + { + return base.IsVisibleStandalone(user) && ChannelVideoItem.IsChannelVisible(this, user); + } } } diff --git a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs index 7ba73d126c..43f5160a45 100644 --- a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs @@ -80,5 +80,10 @@ namespace MediaBrowser.Controller.Channels { return false; } + + public override bool IsVisibleStandalone(User user) + { + return base.IsVisibleStandalone(user) && ChannelVideoItem.IsChannelVisible(this, user); + } } } diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs index 8eec2021b5..d97341d8f9 100644 --- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs +++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs @@ -130,5 +130,17 @@ namespace MediaBrowser.Controller.Channels { return false; } + + public override bool IsVisibleStandalone(User user) + { + return base.IsVisibleStandalone(user) && IsChannelVisible(this, user); + } + + internal static bool IsChannelVisible(IChannelItem item, User user) + { + var channel = ChannelManager.GetChannel(item.ChannelId); + + return channel.IsVisible(user); + } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 94fc761253..27bd09ec7d 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1154,9 +1154,19 @@ namespace MediaBrowser.Controller.Entities return false; } - // TODO: Need some work here, e.g. is in user library, for channels, can user access channel, etc. + var topParent = Parents.LastOrDefault() ?? this; - return true; + if (string.IsNullOrWhiteSpace(topParent.Path)) + { + return true; + } + + var locations = user.RootFolder + .GetChildren(user, true) + .OfType() + .SelectMany(i => i.PhysicalLocations); + + return locations.Any(l => FileSystem.ContainsSubPath(l, topParent.Path)); } /// diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj index c3038cadb3..ad561c4849 100644 --- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj +++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj @@ -106,7 +106,9 @@ - + + +