fix language settings inheritance

pull/702/head
Luke Pulverenti 10 years ago
parent 26fec4f990
commit 18ff8aba74

@ -976,14 +976,21 @@ namespace MediaBrowser.Controller.Entities
lang = hasLang.PreferredMetadataLanguage; lang = hasLang.PreferredMetadataLanguage;
} }
if (string.IsNullOrEmpty(lang)) if (string.IsNullOrWhiteSpace(lang))
{ {
lang = Parents.OfType<IHasPreferredMetadataLanguage>() lang = Parents.OfType<IHasPreferredMetadataLanguage>()
.Select(i => i.PreferredMetadataLanguage) .Select(i => i.PreferredMetadataLanguage)
.FirstOrDefault(i => !string.IsNullOrEmpty(i)); .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
} }
if (string.IsNullOrEmpty(lang)) if (string.IsNullOrWhiteSpace(lang))
{
lang = LibraryManager.GetCollectionFolders(this)
.Select(i => i.PreferredMetadataLanguage)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
if (string.IsNullOrWhiteSpace(lang))
{ {
lang = ConfigurationManager.Configuration.PreferredMetadataLanguage; lang = ConfigurationManager.Configuration.PreferredMetadataLanguage;
} }
@ -1006,14 +1013,21 @@ namespace MediaBrowser.Controller.Entities
lang = hasLang.PreferredMetadataCountryCode; lang = hasLang.PreferredMetadataCountryCode;
} }
if (string.IsNullOrEmpty(lang)) if (string.IsNullOrWhiteSpace(lang))
{ {
lang = Parents.OfType<IHasPreferredMetadataLanguage>() lang = Parents.OfType<IHasPreferredMetadataLanguage>()
.Select(i => i.PreferredMetadataCountryCode) .Select(i => i.PreferredMetadataCountryCode)
.FirstOrDefault(i => !string.IsNullOrEmpty(i)); .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
if (string.IsNullOrWhiteSpace(lang))
{
lang = LibraryManager.GetCollectionFolders(this)
.Select(i => i.PreferredMetadataCountryCode)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
} }
if (string.IsNullOrEmpty(lang)) if (string.IsNullOrWhiteSpace(lang))
{ {
lang = ConfigurationManager.Configuration.MetadataCountryCode; lang = ConfigurationManager.Configuration.MetadataCountryCode;
} }

@ -1,7 +1,4 @@
using System.Threading; using MediaBrowser.Controller.Providers;
using System.Threading.Tasks;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
@ -10,6 +7,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Entities.TV namespace MediaBrowser.Controller.Entities.TV
{ {

@ -393,5 +393,12 @@ namespace MediaBrowser.Controller.Library
/// <returns>IEnumerable&lt;Video&gt;.</returns> /// <returns>IEnumerable&lt;Video&gt;.</returns>
IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren, IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren,
IDirectoryService directoryService); IDirectoryService directoryService);
/// <summary>
/// Gets the collection folders.
/// </summary>
/// <param name="item">The item.</param>
/// <returns>IEnumerable&lt;Folder&gt;.</returns>
IEnumerable<Folder> GetCollectionFolders(BaseItem item);
} }
} }

@ -294,6 +294,19 @@ namespace MediaBrowser.Controller.Providers
break; break;
} }
case "CountryCode":
{
var val = reader.ReadElementContentAsString();
var hasLanguage = item as IHasPreferredMetadataLanguage;
if (hasLanguage != null)
{
hasLanguage.PreferredMetadataCountryCode = val;
}
break;
}
case "PlaceOfBirth": case "PlaceOfBirth":
{ {
var val = reader.ReadElementContentAsString(); var val = reader.ReadElementContentAsString();

@ -421,6 +421,10 @@ namespace MediaBrowser.LocalMetadata.Savers
{ {
builder.Append("<Language>" + SecurityElement.Escape(hasLanguage.PreferredMetadataLanguage) + "</Language>"); builder.Append("<Language>" + SecurityElement.Escape(hasLanguage.PreferredMetadataLanguage) + "</Language>");
} }
if (!string.IsNullOrEmpty(hasLanguage.PreferredMetadataCountryCode))
{
builder.Append("<CountryCode>" + SecurityElement.Escape(hasLanguage.PreferredMetadataCountryCode) + "</CountryCode>");
}
} }
// Use original runtime here, actual file runtime later in MediaInfo // Use original runtime here, actual file runtime later in MediaInfo

@ -1489,6 +1489,23 @@ namespace MediaBrowser.Server.Implementations.Library
return ItemRepository.RetrieveItem(id); return ItemRepository.RetrieveItem(id);
} }
public IEnumerable<Folder> GetCollectionFolders(BaseItem item)
{
while (!(item.Parent is AggregateFolder) && item.Parent != null)
{
item = item.Parent;
}
if (item == null)
{
return new List<Folder>();
}
return GetUserRootFolder().Children
.OfType<Folder>()
.Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path));
}
public string GetContentType(BaseItem item) public string GetContentType(BaseItem item)
{ {
string configuredContentType = GetConfiguredContentType(item, false); string configuredContentType = GetConfiguredContentType(item, false);

@ -350,6 +350,19 @@ namespace MediaBrowser.XbmcMetadata.Parsers
break; break;
} }
case "countrycode":
{
var val = reader.ReadElementContentAsString();
var hasLanguage = item as IHasPreferredMetadataLanguage;
if (hasLanguage != null)
{
hasLanguage.PreferredMetadataCountryCode = val;
}
break;
}
case "website": case "website":
{ {
var val = reader.ReadElementContentAsString(); var val = reader.ReadElementContentAsString();

@ -589,6 +589,10 @@ namespace MediaBrowser.XbmcMetadata.Savers
{ {
writer.WriteElementString("language", hasLanguage.PreferredMetadataLanguage); writer.WriteElementString("language", hasLanguage.PreferredMetadataLanguage);
} }
if (!string.IsNullOrEmpty(hasLanguage.PreferredMetadataCountryCode))
{
writer.WriteElementString("countrycode", hasLanguage.PreferredMetadataCountryCode);
}
} }
if (item.PremiereDate.HasValue && !(item is Episode)) if (item.PremiereDate.HasValue && !(item is Episode))

Loading…
Cancel
Save