aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-16 15:16:29 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-05-16 15:16:29 -0400
commit26aa47eefddf89a00ad64ab19af31b511142040d (patch)
tree39c4d65ba0bec28dbedaf79a0884f8a5010d9fab
parent20bcc40e2305f2a2623007701cf3da9fea72b20e (diff)
move people page into main editor
-rw-r--r--MediaBrowser.Controller/Entities/AdultVideo.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs4
-rw-r--r--MediaBrowser.Controller/Entities/MusicVideo.cs8
-rw-r--r--MediaBrowser.Controller/Entities/Trailer.cs4
-rw-r--r--MediaBrowser.Controller/Providers/BaseItemXmlParser.cs73
-rw-r--r--MediaBrowser.Providers/MediaBrowser.Providers.csproj1
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs2
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs109
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs135
-rw-r--r--MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs12
-rw-r--r--MediaBrowser.Providers/Savers/XmlSaverHelpers.cs17
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs1
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj6
13 files changed, 231 insertions, 145 deletions
diff --git a/MediaBrowser.Controller/Entities/AdultVideo.cs b/MediaBrowser.Controller/Entities/AdultVideo.cs
index 9791f7cf7..00270accf 100644
--- a/MediaBrowser.Controller/Entities/AdultVideo.cs
+++ b/MediaBrowser.Controller/Entities/AdultVideo.cs
@@ -3,7 +3,7 @@ using MediaBrowser.Controller.Providers;
namespace MediaBrowser.Controller.Entities
{
- public class AdultVideo : Video, IHasPreferredMetadataLanguage, IHasTaglines
+ public class AdultVideo : Video, IHasProductionLocations, IHasPreferredMetadataLanguage, IHasTaglines
{
/// <summary>
/// Gets or sets the preferred metadata language.
@@ -16,12 +16,14 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <value>The preferred metadata country code.</value>
public string PreferredMetadataCountryCode { get; set; }
+ public List<string> ProductionLocations { get; set; }
public List<string> Taglines { get; set; }
public AdultVideo()
{
Taglines = new List<string>();
+ ProductionLocations = new List<string>();
}
public override bool BeforeMetadataRefresh()
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index f53b67610..5510c795a 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities.Movies
/// <summary>
/// Class Movie
/// </summary>
- public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasPreferredMetadataLanguage, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
+ public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasPreferredMetadataLanguage, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
{
public List<Guid> SpecialFeatureIds { get; set; }
@@ -22,6 +22,7 @@ namespace MediaBrowser.Controller.Entities.Movies
public List<Guid> ThemeSongIds { get; set; }
public List<Guid> ThemeVideoIds { get; set; }
+ public List<string> ProductionLocations { get; set; }
/// <summary>
/// This is just a cache to enable quick access by Id
@@ -48,6 +49,7 @@ namespace MediaBrowser.Controller.Entities.Movies
BoxSetIdList = new List<Guid>();
Taglines = new List<string>();
Keywords = new List<string>();
+ ProductionLocations = new List<string>();
}
public string AwardSummary { get; set; }
diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs
index 554914ec6..bbb2bc875 100644
--- a/MediaBrowser.Controller/Entities/MusicVideo.cs
+++ b/MediaBrowser.Controller/Entities/MusicVideo.cs
@@ -9,7 +9,7 @@ using System.Runtime.Serialization;
namespace MediaBrowser.Controller.Entities
{
- public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasBudget, IHasLookupInfo<MusicVideoInfo>
+ public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasProductionLocations, IHasBudget, IHasLookupInfo<MusicVideoInfo>
{
/// <summary>
/// Gets or sets the artist.
@@ -34,6 +34,12 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <value>The revenue.</value>
public double? Revenue { get; set; }
+ public List<string> ProductionLocations { get; set; }
+
+ public MusicVideo()
+ {
+ ProductionLocations = new List<string>();
+ }
[IgnoreDataMember]
public List<string> AllArtists
diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs
index 53ec030a7..569334ec3 100644
--- a/MediaBrowser.Controller/Entities/Trailer.cs
+++ b/MediaBrowser.Controller/Entities/Trailer.cs
@@ -12,11 +12,12 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// Class Trailer
/// </summary>
- public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasTrailers, IHasKeywords, IHasTaglines, IHasPreferredMetadataLanguage, IHasMetascore, IHasLookupInfo<TrailerInfo>
+ public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasProductionLocations, IHasBudget, IHasTrailers, IHasKeywords, IHasTaglines, IHasPreferredMetadataLanguage, IHasMetascore, IHasLookupInfo<TrailerInfo>
{
public List<Guid> SoundtrackIds { get; set; }
public string PreferredMetadataLanguage { get; set; }
+ public List<string> ProductionLocations { get; set; }
/// <summary>
/// Gets or sets the preferred metadata country code.
@@ -31,6 +32,7 @@ namespace MediaBrowser.Controller.Entities
SoundtrackIds = new List<Guid>();
LocalTrailerIds = new List<Guid>();
Keywords = new List<string>();
+ ProductionLocations = new List<string>();
}
public float? Metascore { get; set; }
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index a6714f656..41f994303 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -62,34 +62,6 @@ namespace MediaBrowser.Controller.Providers
ValidationType = ValidationType.None
};
- var hasTaglines = item as IHasTaglines;
- if (hasTaglines != null)
- {
- hasTaglines.Taglines.Clear();
- }
-
- item.Studios.Clear();
- item.Genres.Clear();
- item.People.Clear();
-
- var hasTags = item as IHasTags;
- if (hasTags != null)
- {
- hasTags.Tags.Clear();
- }
-
- var hasKeywords = item as IHasKeywords;
- if (hasKeywords != null)
- {
- hasKeywords.Keywords.Clear();
- }
-
- var hasTrailers = item as IHasTrailers;
- if (hasTrailers != null)
- {
- hasTrailers.RemoteTrailers.Clear();
- }
-
//Fetch(item, metadataFile, settings, Encoding.GetEncoding("ISO-8859-1"), cancellationToken);
Fetch(item, metadataFile, settings, Encoding.UTF8, cancellationToken);
}
@@ -373,6 +345,15 @@ namespace MediaBrowser.Controller.Providers
break;
}
+ case "Countries":
+ {
+ using (var subtree = reader.ReadSubtree())
+ {
+ FetchFromCountriesNode(subtree, item);
+ }
+ break;
+ }
+
case "ContentRating":
case "MPAARating":
{
@@ -857,6 +838,42 @@ namespace MediaBrowser.Controller.Providers
}
}
+ private void FetchFromCountriesNode(XmlReader reader, T item)
+ {
+ reader.MoveToContent();
+
+ while (reader.Read())
+ {
+ if (reader.NodeType == XmlNodeType.Element)
+ {
+ switch (reader.Name)
+ {
+ case "Country":
+ {
+ var val = reader.ReadElementContentAsString();
+
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ var hasProductionLocations = item as IHasProductionLocations;
+ if (hasProductionLocations != null)
+ {
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ hasProductionLocations.AddProductionLocation(val);
+ }
+ }
+ }
+ break;
+ }
+
+ default:
+ reader.Skip();
+ break;
+ }
+ }
+ }
+ }
+
/// <summary>
/// Fetches from taglines node.
/// </summary>
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index 43402123c..ce5f8aa28 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -109,6 +109,7 @@
<Compile Include="MediaInfo\FFProbeProvider.cs" />
<Compile Include="MediaInfo\FFProbeVideoInfo.cs" />
<Compile Include="MediaInfo\SubtitleDownloader.cs" />
+ <Compile Include="MediaInfo\SubtitleResolver.cs" />
<Compile Include="Movies\MovieDbTrailerProvider.cs" />
<Compile Include="Movies\MovieExternalIds.cs" />
<Compile Include="Movies\TrailerMetadataService.cs" />
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
index 7318fd17a..9041d5a92 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
@@ -173,7 +173,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager, _fileSystem, _config, _subtitleManager);
- return !video.SubtitleFiles.SequenceEqual(prober.GetSubtitleFiles(video, directoryService, false).Select(i => i.FullName).OrderBy(i => i), StringComparer.OrdinalIgnoreCase);
+ return !video.SubtitleFiles.SequenceEqual(SubtitleResolver.GetSubtitleFiles(video, directoryService, false).Select(i => i.FullName).OrderBy(i => i), StringComparer.OrdinalIgnoreCase);
}
}
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
index 76b0818fe..5ce53378c 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
@@ -411,50 +411,6 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- private IEnumerable<string> SubtitleExtensions
- {
- get
- {
- return new[] { ".srt", ".ssa", ".ass", ".sub" };
- }
- }
-
- public IEnumerable<FileSystemInfo> GetSubtitleFiles(Video video, IDirectoryService directoryService, bool clearCache)
- {
- var containingPath = video.ContainingFolderPath;
-
- if (string.IsNullOrEmpty(containingPath))
- {
- throw new ArgumentException(string.Format("Cannot search for items that don't have a path: {0} {1}", video.Name, video.Id));
- }
-
- var files = directoryService.GetFiles(containingPath, clearCache);
-
- var videoFileNameWithoutExtension = Path.GetFileNameWithoutExtension(video.Path);
-
- return files.Where(i =>
- {
- if (!i.Attributes.HasFlag(FileAttributes.Directory) &&
- SubtitleExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase))
- {
- var fullName = i.FullName;
-
- var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullName);
-
- if (string.Equals(videoFileNameWithoutExtension, fileNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
- if (fileNameWithoutExtension.StartsWith(videoFileNameWithoutExtension + ".", StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
- }
-
- return false;
- });
- }
-
/// <summary>
/// Adds the external subtitles.
/// </summary>
@@ -462,7 +418,9 @@ namespace MediaBrowser.Providers.MediaInfo
/// <param name="currentStreams">The current streams.</param>
private async Task AddExternalSubtitles(Video video, List<MediaStream> currentStreams, IDirectoryService directoryService, CancellationToken cancellationToken)
{
- var externalSubtitleStreams = GetExternalSubtitleStreams(video, currentStreams.Count, directoryService, false).ToList();
+ var subtitleResolver = new SubtitleResolver(_localization);
+
+ var externalSubtitleStreams = subtitleResolver.GetExternalSubtitleStreams(video, currentStreams.Count, directoryService, false).ToList();
if ((_config.Configuration.SubtitleOptions.DownloadEpisodeSubtitles &&
video is Episode) ||
@@ -482,7 +440,7 @@ namespace MediaBrowser.Providers.MediaInfo
// Rescan
if (downloadedLanguages.Count > 0)
{
- externalSubtitleStreams = GetExternalSubtitleStreams(video, currentStreams.Count, directoryService, true).ToList();
+ externalSubtitleStreams = subtitleResolver.GetExternalSubtitleStreams(video, currentStreams.Count, directoryService, true).ToList();
}
}
@@ -491,65 +449,6 @@ namespace MediaBrowser.Providers.MediaInfo
currentStreams.AddRange(externalSubtitleStreams);
}
- private IEnumerable<MediaStream> GetExternalSubtitleStreams(Video video,
- int startIndex,
- IDirectoryService directoryService,
- bool clearCache)
- {
- var files = GetSubtitleFiles(video, directoryService, clearCache);
-
- var streams = new List<MediaStream>();
-
- var videoFileNameWithoutExtension = Path.GetFileNameWithoutExtension(video.Path);
-
- foreach (var file in files)
- {
- var fullName = file.FullName;
-
- var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullName);
-
- // If the subtitle file matches the video file name
- if (string.Equals(videoFileNameWithoutExtension, fileNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
- {
- streams.Add(new MediaStream
- {
- Index = startIndex++,
- Type = MediaStreamType.Subtitle,
- IsExternal = true,
- Path = fullName,
- Codec = Path.GetExtension(fullName).ToLower().TrimStart('.')
- });
- }
- else if (fileNameWithoutExtension.StartsWith(videoFileNameWithoutExtension + ".", StringComparison.OrdinalIgnoreCase))
- {
- // Support xbmc naming conventions - 300.spanish.srt
- var language = fileNameWithoutExtension.Split('.').LastOrDefault();
-
- // Try to translate to three character code
- // Be flexible and check against both the full and three character versions
- var culture = _localization.GetCultures()
- .FirstOrDefault(i => string.Equals(i.DisplayName, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.ThreeLetterISOLanguageName, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.TwoLetterISOLanguageName, language, StringComparison.OrdinalIgnoreCase));
-
- if (culture != null)
- {
- language = culture.ThreeLetterISOLanguageName;
- }
-
- streams.Add(new MediaStream
- {
- Index = startIndex++,
- Type = MediaStreamType.Subtitle,
- IsExternal = true,
- Path = fullName,
- Codec = Path.GetExtension(fullName).ToLower().TrimStart('.'),
- Language = language
- });
- }
- }
-
- return streams;
- }
-
/// <summary>
/// The dummy chapter duration
/// </summary>
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
new file mode 100644
index 000000000..c12f74fa6
--- /dev/null
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs
@@ -0,0 +1,135 @@
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Localization;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace MediaBrowser.Providers.MediaInfo
+{
+ public class SubtitleResolver
+ {
+ private readonly ILocalizationManager _localization;
+
+ public SubtitleResolver(ILocalizationManager localization)
+ {
+ _localization = localization;
+ }
+
+ public IEnumerable<MediaStream> GetExternalSubtitleStreams(Video video,
+ int startIndex,
+ IDirectoryService directoryService,
+ bool clearCache)
+ {
+ var files = GetSubtitleFiles(video, directoryService, clearCache);
+
+ var streams = new List<MediaStream>();
+
+ var videoFileNameWithoutExtension = Path.GetFileNameWithoutExtension(video.Path);
+
+ foreach (var file in files)
+ {
+ var fullName = file.FullName;
+
+ var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullName);
+
+ var codec = Path.GetExtension(fullName).ToLower().TrimStart('.');
+
+ // If the subtitle file matches the video file name
+ if (string.Equals(videoFileNameWithoutExtension, fileNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
+ {
+ streams.Add(new MediaStream
+ {
+ Index = startIndex++,
+ Type = MediaStreamType.Subtitle,
+ IsExternal = true,
+ Path = fullName,
+ Codec = codec
+ });
+ }
+ else if (fileNameWithoutExtension.StartsWith(videoFileNameWithoutExtension + ".", StringComparison.OrdinalIgnoreCase))
+ {
+ var isForced = fullName.IndexOf(".forced.", StringComparison.OrdinalIgnoreCase) != -1 ||
+ fullName.IndexOf(".foreign.", StringComparison.OrdinalIgnoreCase) != -1;
+
+ // Support xbmc naming conventions - 300.spanish.srt
+ var language = fileNameWithoutExtension
+ .Replace(".forced", string.Empty, StringComparison.OrdinalIgnoreCase)
+ .Replace(".foreign", string.Empty, StringComparison.OrdinalIgnoreCase)
+ .Split('.')
+ .LastOrDefault();
+
+ // Try to translate to three character code
+ // Be flexible and check against both the full and three character versions
+ var culture = _localization.GetCultures()
+ .FirstOrDefault(i => string.Equals(i.DisplayName, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.ThreeLetterISOLanguageName, language, StringComparison.OrdinalIgnoreCase) || string.Equals(i.TwoLetterISOLanguageName, language, StringComparison.OrdinalIgnoreCase));
+
+ if (culture != null)
+ {
+ language = culture.ThreeLetterISOLanguageName;
+ }
+
+ streams.Add(new MediaStream
+ {
+ Index = startIndex++,
+ Type = MediaStreamType.Subtitle,
+ IsExternal = true,
+ Path = fullName,
+ Codec = codec,
+ Language = language,
+ IsForced = isForced
+ });
+ }
+ }
+
+ return streams;
+ }
+
+ private static IEnumerable<string> SubtitleExtensions
+ {
+ get
+ {
+ return new[] { ".srt", ".ssa", ".ass", ".sub" };
+ }
+ }
+
+ public static IEnumerable<FileSystemInfo> GetSubtitleFiles(Video video, IDirectoryService directoryService, bool clearCache)
+ {
+ var containingPath = video.ContainingFolderPath;
+
+ if (string.IsNullOrEmpty(containingPath))
+ {
+ throw new ArgumentException(string.Format("Cannot search for items that don't have a path: {0} {1}", video.Name, video.Id));
+ }
+
+ var files = directoryService.GetFiles(containingPath, clearCache);
+
+ var videoFileNameWithoutExtension = Path.GetFileNameWithoutExtension(video.Path);
+
+ return files.Where(i =>
+ {
+ if (!i.Attributes.HasFlag(FileAttributes.Directory) &&
+ SubtitleExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase))
+ {
+ var fullName = i.FullName;
+
+ var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fullName);
+
+ if (string.Equals(videoFileNameWithoutExtension, fileNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
+ if (fileNameWithoutExtension.StartsWith(videoFileNameWithoutExtension + ".", StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ });
+ }
+ }
+}
diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
index bf2be654b..34e535a85 100644
--- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
+++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
@@ -133,6 +133,18 @@ namespace MediaBrowser.Providers.Movies
}
}
+ if (movieData.production_countries != null)
+ {
+ var hasProductionLocations = movie as IHasProductionLocations;
+ if (hasProductionLocations != null)
+ {
+ hasProductionLocations.ProductionLocations = movieData
+ .production_countries
+ .Select(i => i.name)
+ .ToList();
+ }
+ }
+
movie.SetProviderId(MetadataProviders.Tmdb, movieData.id.ToString(_usCulture));
movie.SetProviderId(MetadataProviders.Imdb, movieData.imdb_id);
diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
index 679a1f530..7241dedca 100644
--- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
@@ -34,6 +34,7 @@ namespace MediaBrowser.Providers.Savers
"Chapters",
"ContentRating",
+ "Countries",
"CustomRating",
"CriticRating",
"CriticRatingSummary",
@@ -318,6 +319,22 @@ namespace MediaBrowser.Providers.Savers
}
}
+ var hasProductionLocations = item as IHasProductionLocations;
+ if (hasProductionLocations != null)
+ {
+ if (hasProductionLocations.ProductionLocations.Count > 0)
+ {
+ builder.Append("<Countries>");
+
+ foreach (var name in hasProductionLocations.ProductionLocations)
+ {
+ builder.Append("<Country>" + SecurityElement.Escape(name) + "</Country>");
+ }
+
+ builder.Append("</Countries>");
+ }
+ }
+
var hasDisplayOrder = item as IHasDisplayOrder;
if (hasDisplayOrder != null && !string.IsNullOrEmpty(hasDisplayOrder.DisplayOrder))
{
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 639a65727..158d1eccd 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -549,7 +549,6 @@ namespace MediaBrowser.WebDashboard.Api
"dlnaserversettings.js",
"editcollectionitems.js",
"edititemmetadata.js",
- "edititempeople.js",
"edititemimages.js",
"encodingsettings.js",
"gamesrecommendedpage.js",
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 7755145ee..b22a95a37 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -391,9 +391,6 @@
<Content Include="dashboard-ui\css\notifications.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\edititempeople.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\detailtable.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1450,9 +1447,6 @@
<Content Include="dashboard-ui\scripts\directorybrowser.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\edititempeople.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\edititemimages.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>