added content type selection

This commit is contained in:
Luke Pulverenti
2014-12-22 01:50:29 -05:00
parent 98ae564226
commit 498b58aad0
6 changed files with 82 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
@@ -46,12 +47,14 @@ namespace MediaBrowser.Api
private readonly ILibraryManager _libraryManager;
private readonly IProviderManager _providerManager;
private readonly ILocalizationManager _localizationManager;
private readonly IServerConfigurationManager _config;
public ItemUpdateService(ILibraryManager libraryManager, IProviderManager providerManager, ILocalizationManager localizationManager)
public ItemUpdateService(ILibraryManager libraryManager, IProviderManager providerManager, ILocalizationManager localizationManager, IServerConfigurationManager config)
{
_libraryManager = libraryManager;
_providerManager = providerManager;
_localizationManager = localizationManager;
_config = config;
}
public object Get(GetMetadataEditorInfo request)
@@ -70,11 +73,14 @@ namespace MediaBrowser.Api
if (locationType == LocationType.FileSystem ||
locationType == LocationType.Offline)
{
var collectionType = _libraryManager.GetInheritedContentType(item);
if (string.IsNullOrWhiteSpace(collectionType))
if (!(item is ICollectionFolder) && !(item is UserView) && !(item is AggregateFolder))
{
info.ContentTypeOptions = GetContentTypeOptions(true);
info.ContentType = _libraryManager.GetContentType(item);
var collectionType = _libraryManager.GetInheritedContentType(item);
if (string.IsNullOrWhiteSpace(collectionType))
{
info.ContentTypeOptions = GetContentTypeOptions(true);
info.ContentType = _libraryManager.GetContentType(item);
}
}
}
@@ -83,7 +89,24 @@ namespace MediaBrowser.Api
public void Post(UpdateItemContentType request)
{
var item = _libraryManager.GetItemById(request.ItemId);
var path = item.ContainingFolderPath;
var types = _config.Configuration.ContentTypes
.Where(i => !string.Equals(i.Name, path, StringComparison.OrdinalIgnoreCase))
.ToList();
if (!string.IsNullOrWhiteSpace(request.ContentType))
{
types.Add(new NameValuePair
{
Name = path,
Value = request.ContentType
});
}
_config.Configuration.ContentTypes = types.ToArray();
_config.SaveConfiguration();
}
private List<NameValuePair> GetContentTypeOptions(bool isForItem)