aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Api/PackageCreator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.WebDashboard/Api/PackageCreator.cs')
-rw-r--r--MediaBrowser.WebDashboard/Api/PackageCreator.cs97
1 files changed, 60 insertions, 37 deletions
diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
index 69643a2da..1b03790bd 100644
--- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs
+++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
@@ -61,7 +61,10 @@ namespace MediaBrowser.WebDashboard.Api
// jQuery ajax doesn't seem to handle if-modified-since correctly
if (IsFormat(path, "html"))
{
- resourceStream = await ModifyHtml(resourceStream, mode, localizationCulture, enableMinification).ConfigureAwait(false);
+ if (IsCoreHtml(path))
+ {
+ resourceStream = await ModifyHtml(resourceStream, mode, localizationCulture, enableMinification).ConfigureAwait(false);
+ }
}
else if (IsFormat(path, "js"))
{
@@ -210,6 +213,22 @@ namespace MediaBrowser.WebDashboard.Api
}
}
+ private bool IsCoreHtml(string path)
+ {
+ if (path.IndexOf("vulcanize", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return false;
+ }
+
+ path = GetDashboardResourcePath(path);
+ var parent = Path.GetDirectoryName(path);
+
+ var basePath = DashboardUIPath;
+
+ return string.Equals(basePath, parent, StringComparison.OrdinalIgnoreCase) ||
+ string.Equals(Path.Combine(basePath, "voice"), parent, StringComparison.OrdinalIgnoreCase);
+ }
+
/// <summary>
/// Modifies the HTML by adding common meta tags, css and js.
/// </summary>
@@ -241,7 +260,9 @@ namespace MediaBrowser.WebDashboard.Api
html = _localization.LocalizeDocument(html, localizationCulture, GetLocalizationToken);
- html = html.Replace("<html>", "<html lang=\"" + lang + "\">");
+ html = html.Replace("<html>", "<html lang=\"" + lang + "\">")
+ .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)
@@ -274,10 +295,17 @@ namespace MediaBrowser.WebDashboard.Api
var version = GetType().Assembly.GetName().Version;
- var imports = "<link rel=\"import\" href=\"thirdparty/polymer/polymer.html\">";
- imports = "";
+ var imports = new string[]
+ {
+ "vulcanize-out.html"
+ };
+ var importsHtml = string.Join("", imports.Select(i => "<link rel=\"import\" href=\"" + i + "\">").ToArray());
+
+ // It would be better to make polymer completely dynamic and loaded on demand, but seeing issues with that
+ // 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) + GetCommonJavascript(mode, version) + imports);
+ html = html.Replace("<head>", "<head>" + GetMetaTags(mode) + GetCommonCss(mode, version) + GetCommonJavascript(mode, version) + importsHtml);
var bytes = Encoding.UTF8.GetBytes(html);
@@ -333,13 +361,13 @@ namespace MediaBrowser.WebDashboard.Api
if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
{
- sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'\">");
+ //sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'\">");
}
sb.Append("<meta http-equiv=\"X-UA-Compatibility\" content=\"IE=Edge\">");
sb.Append("<meta name=\"format-detection\" content=\"telephone=no\">");
sb.Append("<meta name=\"msapplication-tap-highlight\" content=\"no\">");
- sb.Append("<meta name=\"viewport\" content=\"user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, target-densitydpi=device-dpi\">");
+ sb.Append("<meta name=\"viewport\" content=\"user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width\">");
sb.Append("<meta name=\"apple-mobile-web-app-capable\" content=\"yes\">");
sb.Append("<meta name=\"mobile-web-app-capable\" content=\"yes\">");
sb.Append("<meta name=\"application-name\" content=\"Emby\">");
@@ -354,7 +382,7 @@ namespace MediaBrowser.WebDashboard.Api
sb.Append("<link rel=\"apple-touch-startup-image\" href=\"css/images/iossplash.png\" />");
sb.Append("<link rel=\"shortcut icon\" href=\"css/images/favicon.ico\" />");
sb.Append("<meta name=\"msapplication-TileImage\" content=\"css/images/touchicon144.png\">");
- sb.Append("<meta name=\"msapplication-TileColor\" content=\"#23456B\">");
+ sb.Append("<meta name=\"msapplication-TileColor\" content=\"#333333\">");
return sb.ToString();
}
@@ -371,9 +399,7 @@ namespace MediaBrowser.WebDashboard.Api
var files = new[]
{
- "thirdparty/jquerymobile-1.4.5/jquery.mobile-1.4.5.min.css",
"thirdparty/fontawesome/css/font-awesome.min.css" + versionString,
- "thirdparty/materialicons/style.css" + versionString,
"css/all.css" + versionString
};
@@ -396,7 +422,6 @@ namespace MediaBrowser.WebDashboard.Api
var files = new List<string>
{
- //"thirdparty/webcomponentsjs/webcomponents-lite.min.js",
"scripts/all.js" + versionString
};
@@ -421,9 +446,10 @@ namespace MediaBrowser.WebDashboard.Api
var memoryStream = new MemoryStream();
var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine);
- // jQuery + jQuery mobile
+ await AppendResource(memoryStream, "bower_components/webcomponentsjs/webcomponents-lite.min.js", newLineBytes).ConfigureAwait(false);
+
await AppendResource(memoryStream, "thirdparty/jquery-2.1.1.min.js", newLineBytes).ConfigureAwait(false);
- await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile-1.4.5.min.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);
@@ -458,19 +484,19 @@ namespace MediaBrowser.WebDashboard.Api
var apiClientFiles = new[]
{
- "thirdparty/apiclient/logger.js",
- "thirdparty/apiclient/md5.js",
- "thirdparty/apiclient/sha1.js",
- "thirdparty/apiclient/store.js",
- "thirdparty/apiclient/device.js",
- "thirdparty/apiclient/credentials.js",
- "thirdparty/apiclient/ajax.js",
- "thirdparty/apiclient/events.js",
- "thirdparty/apiclient/deferred.js",
- "thirdparty/apiclient/apiclient.js"
+ "apiclient/logger.js",
+ "apiclient/md5.js",
+ "apiclient/sha1.js",
+ "apiclient/store.js",
+ "apiclient/device.js",
+ "apiclient/credentials.js",
+ "apiclient/ajax.js",
+ "apiclient/events.js",
+ "apiclient/deferred.js",
+ "apiclient/apiclient.js"
}.ToList();
- apiClientFiles.Add("thirdparty/apiclient/connectionmanager.js");
+ apiClientFiles.Add("apiclient/connectionmanager.js");
foreach (var file in apiClientFiles)
{
@@ -537,12 +563,10 @@ namespace MediaBrowser.WebDashboard.Api
"site.js",
"librarybrowser.js",
"librarylist.js",
- "editorsidebar.js",
"librarymenu.js",
"mediacontroller.js",
"backdrops.js",
"sync.js",
- "appservices.js",
"playlistmanager.js",
"appsettings.js",
"mediaplayer.js",
@@ -550,15 +574,11 @@ namespace MediaBrowser.WebDashboard.Api
"nowplayingbar.js",
"alphapicker.js",
"directorybrowser.js",
- "edititemmetadata.js",
- "indexpage.js",
- "itemdetailpage.js",
"moviecollections.js",
"notifications.js",
"remotecontrol.js",
"search.js",
- "thememediaplayer.js",
- "useredit.js"
+ "thememediaplayer.js"
};
}
@@ -621,26 +641,28 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>Task{Stream}.</returns>
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[]
{
"site.css",
"chromecast.css",
+ "nowplayingbar.css",
"mediaplayer.css",
"mediaplayer-video.css",
"librarymenu.css",
"librarybrowser.css",
- "detailtable.css",
"card.css",
- "tileitem.css",
- "metadataeditor.css",
"notifications.css",
"search.css",
"pluginupdates.css",
"remotecontrol.css",
"userimage.css",
- "livetv.css",
"nowplaying.css",
- "icons.css",
"materialize.css"
};
@@ -684,7 +706,8 @@ namespace MediaBrowser.WebDashboard.Api
}
}
- var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(css));
+ var bytes = Encoding.UTF8.GetBytes(css);
+ memoryStream.Write(bytes, 0, bytes.Length);
memoryStream.Position = 0;
return memoryStream;