update plugin pages

This commit is contained in:
Luke Pulverenti 2016-03-18 02:36:58 -04:00
parent 79dc9f29d9
commit b84f178467
8 changed files with 79 additions and 17 deletions

View File

@ -201,10 +201,10 @@ namespace MediaBrowser.Api.Library
var rootFolderPath = _appPaths.DefaultUserViewsPath; var rootFolderPath = _appPaths.DefaultUserViewsPath;
var virtualFolderPath = Path.Combine(rootFolderPath, name); var virtualFolderPath = Path.Combine(rootFolderPath, name);
while (_fileSystem.DirectoryExists(virtualFolderPath))
if (_fileSystem.DirectoryExists(virtualFolderPath))
{ {
throw new ArgumentException("There is already a media library with the name " + name + "."); name += "1";
virtualFolderPath = Path.Combine(rootFolderPath, name);
} }
if (request.Paths != null) if (request.Paths != null)
@ -236,7 +236,7 @@ namespace MediaBrowser.Api.Library
{ {
foreach (var path in request.Paths) foreach (var path in request.Paths)
{ {
LibraryHelpers.AddMediaPath(_fileSystem, request.Name, path, _appPaths); LibraryHelpers.AddMediaPath(_fileSystem, name, path, _appPaths);
} }
} }
} }

View File

@ -57,7 +57,9 @@ namespace MediaBrowser.Controller.Entities
public static string ThemeSongFilename = "theme"; public static string ThemeSongFilename = "theme";
public static string ThemeVideosFolderName = "backdrops"; public static string ThemeVideosFolderName = "backdrops";
[IgnoreDataMember]
public string PreferredMetadataCountryCode { get; set; } public string PreferredMetadataCountryCode { get; set; }
[IgnoreDataMember]
public string PreferredMetadataLanguage { get; set; } public string PreferredMetadataLanguage { get; set; }
public List<ItemImageInfo> ImageInfos { get; set; } public List<ItemImageInfo> ImageInfos { get; set; }
@ -88,6 +90,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets a value indicating whether this instance is in mixed folder. /// Gets a value indicating whether this instance is in mixed folder.
/// </summary> /// </summary>
/// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value> /// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
[IgnoreDataMember]
public bool IsInMixedFolder { get; set; } public bool IsInMixedFolder { get; set; }
[IgnoreDataMember] [IgnoreDataMember]
@ -342,6 +345,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember] [IgnoreDataMember]
public DateTime DateModified { get; set; } public DateTime DateModified { get; set; }
[IgnoreDataMember]
public DateTime DateLastSaved { get; set; } public DateTime DateLastSaved { get; set; }
[IgnoreDataMember] [IgnoreDataMember]
@ -380,6 +384,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the locked fields. /// Gets or sets the locked fields.
/// </summary> /// </summary>
/// <value>The locked fields.</value> /// <value>The locked fields.</value>
[IgnoreDataMember]
public List<MetadataFields> LockedFields { get; set; } public List<MetadataFields> LockedFields { get; set; }
/// <summary> /// <summary>
@ -620,6 +625,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the studios. /// Gets or sets the studios.
/// </summary> /// </summary>
/// <value>The studios.</value> /// <value>The studios.</value>
[IgnoreDataMember]
public List<string> Studios { get; set; } public List<string> Studios { get; set; }
/// <summary> /// <summary>
@ -633,6 +639,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the tags. /// Gets or sets the tags.
/// </summary> /// </summary>
/// <value>The tags.</value> /// <value>The tags.</value>
[IgnoreDataMember]
public List<string> Tags { get; set; } public List<string> Tags { get; set; }
/// <summary> /// <summary>

View File

@ -2,6 +2,7 @@
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.Serialization;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Users; using MediaBrowser.Model.Users;
@ -9,6 +10,7 @@ namespace MediaBrowser.Controller.Entities
{ {
public class Book : BaseItem, IHasTags, IHasLookupInfo<BookInfo>, IHasSeries public class Book : BaseItem, IHasTags, IHasLookupInfo<BookInfo>, IHasSeries
{ {
[IgnoreDataMember]
public override string MediaType public override string MediaType
{ {
get get

View File

@ -14,7 +14,6 @@ namespace MediaBrowser.Controller.Entities
/// <summary> /// <summary>
/// Class Trailer /// Class Trailer
/// </summary> /// </summary>
[Obsolete]
public class Trailer : Video, IHasCriticRating, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo<TrailerInfo> public class Trailer : Video, IHasCriticRating, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo<TrailerInfo>
{ {
public List<string> ProductionLocations { get; set; } public List<string> ProductionLocations { get; set; }

View File

@ -488,7 +488,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user) var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user)
{ {
Person = person.Name, Person = person.Name,
IncludeItemTypes = new[] { typeof(Movie).Name, typeof(Series).Name, typeof(ChannelVideoItem).Name }, IncludeItemTypes = new[] { typeof(Movie).Name, typeof(Series).Name, typeof(Trailer).Name, typeof(ChannelVideoItem).Name },
SortBy = new[] { ItemSortBy.SortName }, SortBy = new[] { ItemSortBy.SortName },
Limit = limit, Limit = limit,
StartIndex = startIndex StartIndex = startIndex

View File

@ -350,16 +350,16 @@ namespace MediaBrowser.Server.Implementations.HttpServer
localPath.IndexOf("dashboard/", StringComparison.OrdinalIgnoreCase) != -1) localPath.IndexOf("dashboard/", StringComparison.OrdinalIgnoreCase) != -1)
{ {
httpRes.StatusCode = 200; httpRes.StatusCode = 200;
httpRes.ContentType = "text/plain"; httpRes.ContentType = "text/html";
var newUrl = urlString.Replace("mediabrowser", "emby", StringComparison.OrdinalIgnoreCase) var newUrl = urlString.Replace("mediabrowser", "emby", StringComparison.OrdinalIgnoreCase)
.Replace("/dashboard/", "/web/", StringComparison.OrdinalIgnoreCase); .Replace("/dashboard/", "/web/", StringComparison.OrdinalIgnoreCase);
httpRes.Write("Please update your Emby bookmark to " + newUrl); httpRes.Write("<!doctype html><html><head><title>Emby</title></head><body>Please update your Emby bookmark to <a href=\"" + newUrl + "\">" + newUrl + "</a></body></html>");
httpRes.Close(); httpRes.Close();
return Task.FromResult(true); return Task.FromResult(true);
} }
if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase)) if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase))
{ {
httpRes.RedirectToUrl(DefaultRedirectPath); httpRes.RedirectToUrl(DefaultRedirectPath);
@ -396,7 +396,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
httpRes.RedirectToUrl("web/pin.html"); httpRes.RedirectToUrl("web/pin.html");
return Task.FromResult(true); return Task.FromResult(true);
} }
if (!string.IsNullOrWhiteSpace(GlobalResponse)) if (!string.IsNullOrWhiteSpace(GlobalResponse))
{ {
httpRes.StatusCode = 503; httpRes.StatusCode = 503;

View File

@ -348,7 +348,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
"Genres", "Genres",
"ParentId", "ParentId",
"Audio", "Audio",
"ExternalServiceId" "ExternalServiceId",
"IsInMixedFolder",
"DateLastSaved",
"LockedFields",
"Studios",
"Tags"
}; };
private readonly string[] _mediaStreamSaveColumns = private readonly string[] _mediaStreamSaveColumns =
@ -1079,6 +1084,31 @@ namespace MediaBrowser.Server.Implementations.Persistence
} }
} }
if (!reader.IsDBNull(44))
{
item.IsInMixedFolder = reader.GetBoolean(44);
}
if (!reader.IsDBNull(45))
{
item.DateLastSaved = reader.GetDateTime(45).ToUniversalTime();
}
if (!reader.IsDBNull(46))
{
item.LockedFields = reader.GetString(46).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => (MetadataFields)Enum.Parse(typeof(MetadataFields), i, true)).ToList();
}
if (!reader.IsDBNull(47))
{
item.Studios = reader.GetString(47).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
}
if (!reader.IsDBNull(48))
{
item.Tags = reader.GetString(48).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
}
return item; return item;
} }
@ -2013,6 +2043,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
typeof(MusicGenre), typeof(MusicGenre),
typeof(MusicVideo), typeof(MusicVideo),
typeof(Movie), typeof(Movie),
typeof(Trailer),
typeof(BoxSet), typeof(BoxSet),
typeof(Episode), typeof(Episode),
typeof(ChannelVideoItem), typeof(ChannelVideoItem),

View File

@ -261,11 +261,21 @@ namespace MediaBrowser.WebDashboard.Api
{ {
html = ModifyForCordova(html); html = ModifyForCordova(html);
} }
else if (!string.IsNullOrWhiteSpace(path) && !string.Equals(path, "index.html", StringComparison.OrdinalIgnoreCase) && html.IndexOf("<html", StringComparison.OrdinalIgnoreCase) == -1) else if (!string.IsNullOrWhiteSpace(path) && !string.Equals(path, "index.html", StringComparison.OrdinalIgnoreCase))
{ {
var indexFile = File.ReadAllText(GetDashboardResourcePath("index.html")); var index = html.IndexOf("<body", StringComparison.OrdinalIgnoreCase);
if (index != -1)
{
html = html.Substring(index);
index = html.IndexOf("</body>", StringComparison.OrdinalIgnoreCase);
if (index != -1)
{
html = html.Substring(0, index+7);
}
}
var mainFile = File.ReadAllText(GetDashboardResourcePath("index.html"));
html = ReplaceFirst(indexFile, "<div class=\"mainAnimatedPage hide\"></div>", "<div class=\"mainAnimatedPage hide\">" + html + "</div>"); html = ReplaceFirst(mainFile, "<div class=\"mainAnimatedPage hide\"></div>", "<div class=\"mainAnimatedPage hide\">" + html + "</div>");
} }
if (!string.IsNullOrWhiteSpace(localizationCulture)) if (!string.IsNullOrWhiteSpace(localizationCulture))
@ -305,7 +315,15 @@ namespace MediaBrowser.WebDashboard.Api
html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, appVersion)); html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, appVersion));
html = html.Replace("</body>", GetCommonJavascript(mode, appVersion) + "</body>"); // Inject sripts before any embedded scripts
if (html.IndexOf("<script", StringComparison.OrdinalIgnoreCase) != -1)
{
html = ReplaceFirst(html, "<script", GetCommonJavascript(mode, appVersion, false) + "<script");
}
else
{
html = html.Replace("</body>", GetCommonJavascript(mode, appVersion, true) + "</body>");
}
var bytes = Encoding.UTF8.GetBytes(html); var bytes = Encoding.UTF8.GetBytes(html);
@ -428,8 +446,9 @@ namespace MediaBrowser.WebDashboard.Api
/// </summary> /// </summary>
/// <param name="mode">The mode.</param> /// <param name="mode">The mode.</param>
/// <param name="version">The version.</param> /// <param name="version">The version.</param>
/// <param name="async">if set to <c>true</c> [asynchronous].</param>
/// <returns>System.String.</returns> /// <returns>System.String.</returns>
private string GetCommonJavascript(string mode, string version) private string GetCommonJavascript(string mode, string version, bool async)
{ {
var builder = new StringBuilder(); var builder = new StringBuilder();
@ -463,7 +482,11 @@ namespace MediaBrowser.WebDashboard.Api
{ {
if (s.IndexOf("require", StringComparison.OrdinalIgnoreCase) == -1) if (s.IndexOf("require", StringComparison.OrdinalIgnoreCase) == -1)
{ {
return string.Format("<script src=\"{0}\" async></script>", s); if (async)
{
return string.Format("<script src=\"{0}\" async></script>", s);
}
return string.Format("<script src=\"{0}\"></script>", s);
} }
return string.Format("<script src=\"{0}\"></script>", s); return string.Format("<script src=\"{0}\"></script>", s);