add notification services tab

This commit is contained in:
Luke Pulverenti 2015-04-05 23:47:01 -04:00
parent 30104bd8de
commit 3cc0ad2a35
10 changed files with 56 additions and 23 deletions

View File

@ -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.Channels;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
@ -100,5 +101,10 @@ namespace MediaBrowser.Controller.Channels
{ {
return false; return false;
} }
public override bool IsVisibleStandalone(User user)
{
return base.IsVisibleStandalone(user) && ChannelVideoItem.IsChannelVisible(this, user);
}
} }
} }

View File

@ -80,5 +80,10 @@ namespace MediaBrowser.Controller.Channels
{ {
return false; return false;
} }
public override bool IsVisibleStandalone(User user)
{
return base.IsVisibleStandalone(user) && ChannelVideoItem.IsChannelVisible(this, user);
}
} }
} }

View File

@ -130,5 +130,17 @@ namespace MediaBrowser.Controller.Channels
{ {
return false; 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);
}
} }
} }

View File

@ -1154,9 +1154,19 @@ namespace MediaBrowser.Controller.Entities
return false; 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<CollectionFolder>()
.SelectMany(i => i.PhysicalLocations);
return locations.Any(l => FileSystem.ContainsSubPath(l, topParent.Path));
} }
/// <summary> /// <summary>

View File

@ -106,7 +106,9 @@
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup>
<EmbeddedResource Include="Probing\whitelist.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -209,9 +209,6 @@
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MediaInfo\whitelist.txt" />
</ItemGroup>
<ItemGroup /> <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@ -330,7 +330,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{ {
files = files.Where(i => _libraryManager.IsAudioFile(i.FullName)); files = files.Where(i => _libraryManager.IsAudioFile(i.FullName));
} }
var file = files var file = files
.FirstOrDefault(i => i.Name.StartsWith(filenamePrefix, StringComparison.OrdinalIgnoreCase)); .FirstOrDefault(i => i.Name.StartsWith(filenamePrefix, StringComparison.OrdinalIgnoreCase));
@ -1454,7 +1454,14 @@ namespace MediaBrowser.Server.Implementations.Channels
var host = new Uri(source.Path).Host.ToLower(); var host = new Uri(source.Path).Host.ToLower();
var channel = GetChannel(item.ChannelId); var channel = GetChannel(item.ChannelId);
var channelProvider = GetChannelProvider(channel); var channelProvider = GetChannelProvider(channel);
var limit = channelProvider.GetChannelFeatures().DailyDownloadLimit; var features = channelProvider.GetChannelFeatures();
if (!features.SupportsContentDownloading)
{
throw new ArgumentException("The channel does not support downloading.");
}
var limit = features.DailyDownloadLimit;
if (!ValidateDownloadLimit(host, limit)) if (!ValidateDownloadLimit(host, limit))
{ {

View File

@ -245,23 +245,17 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
var collections = user.RootFolder.GetChildren(user, true).ToList(); var collections = user.RootFolder.GetChildren(user, true).ToList();
var allRecursiveChildren = user.RootFolder
.GetRecursiveChildren(user)
.Select(i => i.Id)
.Distinct()
.ToDictionary(i => i);
return new LibraryUpdateInfo return new LibraryUpdateInfo
{ {
ItemsAdded = itemsAdded.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), ItemsAdded = itemsAdded.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections)).Select(i => i.Id.ToString("N")).Distinct().ToList(),
ItemsUpdated = itemsUpdated.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), ItemsUpdated = itemsUpdated.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections)).Select(i => i.Id.ToString("N")).Distinct().ToList(),
ItemsRemoved = itemsRemoved.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren, true)).Select(i => i.Id.ToString("N")).Distinct().ToList(), ItemsRemoved = itemsRemoved.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, true)).Select(i => i.Id.ToString("N")).Distinct().ToList(),
FoldersAddedTo = foldersAddedTo.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), FoldersAddedTo = foldersAddedTo.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections)).Select(i => i.Id.ToString("N")).Distinct().ToList(),
FoldersRemovedFrom = foldersRemovedFrom.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList() FoldersRemovedFrom = foldersRemovedFrom.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections)).Select(i => i.Id.ToString("N")).Distinct().ToList()
}; };
} }
@ -272,10 +266,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <param name="user">The user.</param> /// <param name="user">The user.</param>
/// <param name="collections">The collections.</param> /// <param name="collections">The collections.</param>
/// <param name="allRecursiveChildren">All recursive children.</param>
/// <param name="includeIfNotFound">if set to <c>true</c> [include if not found].</param> /// <param name="includeIfNotFound">if set to <c>true</c> [include if not found].</param>
/// <returns>IEnumerable{``0}.</returns> /// <returns>IEnumerable{``0}.</returns>
private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, Dictionary<Guid, Guid> allRecursiveChildren, bool includeIfNotFound = false) private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, bool includeIfNotFound = false)
where T : BaseItem where T : BaseItem
{ {
// If the physical root changed, return the user root // If the physical root changed, return the user root
@ -294,7 +287,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
} }
// Return it only if it's in the user's library // Return it only if it's in the user's library
if (includeIfNotFound || allRecursiveChildren.ContainsKey(item.Id) || (item.Parents.Any(i => i is BasePluginFolder) && item.IsVisibleStandalone(user))) if (includeIfNotFound || item.IsVisibleStandalone(user))
{ {
return new[] { item }; return new[] { item };
} }

View File

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV", "TitleLiveTV": "Live TV",
"TitleSync": "Sync", "TitleSync": "Sync",
"ButtonDonate": "Donate", "ButtonDonate": "Donate",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",
"MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.",
"MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:",