aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.WebDashboard/Api')
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs14
-rw-r--r--MediaBrowser.WebDashboard/Api/PackageCreator.cs104
2 files changed, 42 insertions, 76 deletions
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index d6adfc68e7..69c4417cb7 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -136,7 +136,7 @@ namespace MediaBrowser.WebDashboard.Api
{
var page = ServerEntryPoint.Instance.PluginConfigurationPages.First(p => p.Name.Equals(request.Name, StringComparison.OrdinalIgnoreCase));
- return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml(page.GetHtmlStream(), null, null, false));
+ return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml(page.GetHtmlStream(), null, _appHost.ApplicationVersion.ToString(), null, false));
}
/// <summary>
@@ -198,10 +198,8 @@ namespace MediaBrowser.WebDashboard.Api
var contentType = MimeTypes.GetMimeType(path);
- var isHtml = IsHtml(path);
-
// Bounce them to the startup wizard if it hasn't been completed yet
- if (isHtml && !_serverConfigurationManager.Configuration.IsStartupWizardCompleted && path.IndexOf("wizard", StringComparison.OrdinalIgnoreCase) == -1)
+ if (!_serverConfigurationManager.Configuration.IsStartupWizardCompleted && path.IndexOf("wizard", StringComparison.OrdinalIgnoreCase) == -1 && GetPackageCreator().IsCoreHtml(path))
{
// But don't redirect if an html import is being requested.
if (path.IndexOf("vulcanize", StringComparison.OrdinalIgnoreCase) == -1 && path.IndexOf("bower_components", StringComparison.OrdinalIgnoreCase) == -1)
@@ -298,7 +296,7 @@ namespace MediaBrowser.WebDashboard.Api
CopyDirectory(creator.DashboardUIPath, path);
- var culture = "en-US";
+ string culture = null;
var appVersion = _appHost.ApplicationVersion.ToString();
@@ -327,10 +325,14 @@ namespace MediaBrowser.WebDashboard.Api
CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "requirejs", "require.js"), Path.Combine(path, "bower_components", "requirejs", "require.js"));
CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "fastclick", "lib", "fastclick.js"), Path.Combine(path, "bower_components", "fastclick", "lib", "fastclick.js"));
CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "jquery", "dist", "jquery.min.js"), Path.Combine(path, "bower_components", "jquery", "dist", "jquery.min.js"));
-
+
+ CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "jstree", "dist", "jstree.min.js"), Path.Combine(path, "bower_components", "jstree", "dist", "jstree.min.js"));
+
CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "css"), Path.Combine(path, "bower_components", "swipebox", "src", "css"));
CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "js"), Path.Combine(path, "bower_components", "swipebox", "src", "js"));
CopyDirectory(Path.Combine(creator.DashboardUIPath, "bower_components", "swipebox", "src", "img"), Path.Combine(path, "bower_components", "swipebox", "src", "img"));
+
+ CopyFile(Path.Combine(creator.DashboardUIPath, "bower_components", "hammerjs", "hammer.min.js"), Path.Combine(path, "bower_components", "hammerjs", "hammer.min.js"));
}
MinifyCssDirectory(Path.Combine(path, "css"));
diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
index f501475521..48ad62bd49 100644
--- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs
+++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
@@ -63,7 +63,7 @@ namespace MediaBrowser.WebDashboard.Api
{
if (IsCoreHtml(path))
{
- resourceStream = await ModifyHtml(resourceStream, mode, localizationCulture, enableMinification).ConfigureAwait(false);
+ resourceStream = await ModifyHtml(resourceStream, mode, appVersion, localizationCulture, enableMinification).ConfigureAwait(false);
}
}
else if (IsFormat(path, "js"))
@@ -222,13 +222,18 @@ namespace MediaBrowser.WebDashboard.Api
}
}
- private bool IsCoreHtml(string path)
+ public bool IsCoreHtml(string path)
{
if (path.IndexOf("vulcanize", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
+ if (path.IndexOf(".template.html", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return false;
+ }
+
path = GetDashboardResourcePath(path);
var parent = Path.GetDirectoryName(path);
@@ -243,10 +248,11 @@ namespace MediaBrowser.WebDashboard.Api
/// </summary>
/// <param name="sourceStream">The source stream.</param>
/// <param name="mode">The mode.</param>
+ /// <param name="appVersion">The application version.</param>
/// <param name="localizationCulture">The localization culture.</param>
/// <param name="enableMinification">if set to <c>true</c> [enable minification].</param>
/// <returns>Task{Stream}.</returns>
- public async Task<Stream> ModifyHtml(Stream sourceStream, string mode, string localizationCulture, bool enableMinification)
+ public async Task<Stream> ModifyHtml(Stream sourceStream, string mode, string appVersion, string localizationCulture, bool enableMinification)
{
using (sourceStream)
{
@@ -267,14 +273,9 @@ namespace MediaBrowser.WebDashboard.Api
{
var lang = localizationCulture.Split('-').FirstOrDefault();
- html = _localization.LocalizeDocument(html, localizationCulture, GetLocalizationToken);
-
- html = html.Replace("<html>", "<html lang=\"" + lang + "\">");
+ html = html.Replace("<html>", "<html data-culture=\"" + localizationCulture + "\" lang=\"" + lang + "\">");
}
- html = html.Replace("<body>", "<body><paper-drawer-panel class=\"mainDrawerPanel mainDrawerPanelPreInit\" forceNarrow><div class=\"mainDrawer\" drawer></div><div main><div class=\"pageContainer\">")
- .Replace("</body>", "</div></div></paper-drawer-panel></body>");
-
if (enableMinification)
{
try
@@ -301,13 +302,16 @@ namespace MediaBrowser.WebDashboard.Api
_logger.ErrorException("Error minifying html", ex);
}
}
+
+ html = html.Replace("<body>", "<body><paper-drawer-panel class=\"mainDrawerPanel mainDrawerPanelPreInit\" forceNarrow><div class=\"mainDrawer\" drawer></div><div class=\"mainDrawerPanelContent\" main><!--<div class=\"pageContainer\">")
+ .Replace("</body>", "</div>--></div></paper-drawer-panel></body>");
}
- var version = GetType().Assembly.GetName().Version;
+ var versionString = !string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase) ? "?v=" + appVersion : string.Empty;
- var imports = new string[]
+ var imports = new[]
{
- "vulcanize-out.html"
+ "vulcanize-out.html" + versionString
};
var importsHtml = string.Join("", imports.Select(i => "<link rel=\"import\" href=\"" + i + "\">").ToArray());
@@ -315,7 +319,9 @@ namespace MediaBrowser.WebDashboard.Api
// In chrome it is causing the body to be hidden while loading, which leads to width-check methods to return 0 for everything
//imports = "";
- html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, version) + GetInitialJavascript(mode, version) + importsHtml + GetCommonJavascript(mode, version));
+ html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, appVersion));
+
+ html = html.Replace("</body>", GetInitialJavascript(mode, appVersion) + importsHtml + GetCommonJavascript(mode, appVersion) + "</body>");
var bytes = Encoding.UTF8.GetBytes(html);
@@ -411,13 +417,12 @@ namespace MediaBrowser.WebDashboard.Api
/// <param name="mode">The mode.</param>
/// <param name="version">The version.</param>
/// <returns>System.String.</returns>
- private string GetCommonCss(string mode, Version version)
+ private string GetCommonCss(string mode, string version)
{
var versionString = !string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase) ? "?v=" + version : string.Empty;
var files = new[]
{
- "thirdparty/fontawesome/css/font-awesome.min.css" + versionString,
"css/all.css" + versionString
};
@@ -432,7 +437,7 @@ namespace MediaBrowser.WebDashboard.Api
/// <param name="mode">The mode.</param>
/// <param name="version">The version.</param>
/// <returns>System.String.</returns>
- private string GetInitialJavascript(string mode, Version version)
+ private string GetInitialJavascript(string mode, string version)
{
var builder = new StringBuilder();
@@ -456,7 +461,7 @@ namespace MediaBrowser.WebDashboard.Api
/// <param name="mode">The mode.</param>
/// <param name="version">The version.</param>
/// <returns>System.String.</returns>
- private string GetCommonJavascript(string mode, Version version)
+ private string GetCommonJavascript(string mode, string version)
{
var builder = new StringBuilder();
@@ -490,22 +495,7 @@ namespace MediaBrowser.WebDashboard.Api
await AppendResource(memoryStream, "bower_components/jquery/dist/jquery.min.js", newLineBytes).ConfigureAwait(false);
- await AppendResource(memoryStream, "bower_components/requirejs/require.js", newLineBytes).ConfigureAwait(false);
-
- await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.min.js", newLineBytes).ConfigureAwait(false);
-
- await AppendResource(memoryStream, "thirdparty/browser.js", newLineBytes).ConfigureAwait(false);
-
- await AppendResource(memoryStream, "thirdparty/jquery.unveil-custom.js", newLineBytes).ConfigureAwait(false);
-
- var excludePhrases = new List<string>();
-
- if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
- {
- excludePhrases.Add("paypal");
- }
-
- await AppendLocalization(memoryStream, culture, excludePhrases).ConfigureAwait(false);
+ //await AppendLocalization(memoryStream, culture, excludePhrases).ConfigureAwait(false);
await memoryStream.WriteAsync(newLineBytes, 0, newLineBytes.Length).ConfigureAwait(false);
if (!string.IsNullOrWhiteSpace(mode))
@@ -523,8 +513,12 @@ namespace MediaBrowser.WebDashboard.Api
var builder = new StringBuilder();
- var apiClientFiles = new[]
+ var commonFiles = new[]
{
+ "bower_components/requirejs/require.js",
+ "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js",
+ "thirdparty/browser.js",
+ "thirdparty/jquery.unveil-custom.js",
"apiclient/logger.js",
"apiclient/md5.js",
"apiclient/sha1.js",
@@ -537,9 +531,9 @@ namespace MediaBrowser.WebDashboard.Api
"apiclient/apiclient.js"
}.ToList();
- apiClientFiles.Add("apiclient/connectionmanager.js");
+ commonFiles.Add("apiclient/connectionmanager.js");
- foreach (var file in apiClientFiles)
+ foreach (var file in commonFiles)
{
using (var fs = _fileSystem.GetFileStream(GetDashboardResourcePath(file), FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
{
@@ -601,6 +595,7 @@ namespace MediaBrowser.WebDashboard.Api
return new[]
{
"extensions.js",
+ "globalize.js",
"site.js",
"librarybrowser.js",
"librarylist.js",
@@ -615,7 +610,7 @@ namespace MediaBrowser.WebDashboard.Api
"nowplayingbar.js",
"alphapicker.js",
"directorybrowser.js",
- "moviecollections.js",
+ "collectioneditor.js",
"notifications.js",
"remotecontrol.js",
"search.js",
@@ -623,34 +618,6 @@ namespace MediaBrowser.WebDashboard.Api
};
}
- private async Task AppendLocalization(Stream stream, string culture, List<string> excludePhrases)
- {
- var dictionary = _localization.GetJavaScriptLocalizationDictionary(culture);
-
- if (excludePhrases.Count > 0)
- {
- var removes = new List<string>();
-
- foreach (var pair in dictionary)
- {
- if (excludePhrases.Any(i => pair.Key.IndexOf(i, StringComparison.OrdinalIgnoreCase) != -1 || pair.Value.IndexOf(i, StringComparison.OrdinalIgnoreCase) != -1))
- {
- removes.Add(pair.Key);
- }
- }
-
- foreach (var remove in removes)
- {
- dictionary.Remove(remove);
- }
- }
-
- var js = "window.localizationGlossary=" + _jsonSerializer.SerializeToString(dictionary);
-
- var bytes = Encoding.UTF8.GetBytes(js);
- await stream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
- }
-
/// <summary>
/// Appends the resource.
/// </summary>
@@ -683,13 +650,11 @@ namespace MediaBrowser.WebDashboard.Api
private async Task<Stream> GetAllCss(bool enableMinification)
{
var memoryStream = new MemoryStream();
- var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine);
-
- await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.min.css", newLineBytes).ConfigureAwait(false);
- await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.structure.min.css", newLineBytes).ConfigureAwait(false);
var files = new[]
{
+ "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.css",
+ "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.structure.css",
"css/site.css",
"css/chromecast.css",
"css/nowplayingbar.css",
@@ -700,7 +665,6 @@ namespace MediaBrowser.WebDashboard.Api
"css/card.css",
"css/notifications.css",
"css/search.css",
- "css/pluginupdates.css",
"css/remotecontrol.css",
"css/userimage.css",
"css/nowplaying.css",