diff --git a/dashboard-ui/mypreferenceswebclient.html b/dashboard-ui/mypreferenceswebclient.html
index 8e179ae4a7..69e1cfb406 100644
--- a/dashboard-ui/mypreferenceswebclient.html
+++ b/dashboard-ui/mypreferenceswebclient.html
@@ -215,7 +215,7 @@
-
+
diff --git a/dashboard-ui/scripts/htmlmediarenderer.js b/dashboard-ui/scripts/htmlmediarenderer.js
index 83f5ad1fa9..c6831e771a 100644
--- a/dashboard-ui/scripts/htmlmediarenderer.js
+++ b/dashboard-ui/scripts/htmlmediarenderer.js
@@ -261,6 +261,12 @@
}
}
- window.HtmlMediaRenderer = htmlMediaRenderer;
+ if (!window.AudioRenderer) {
+ window.AudioRenderer = htmlMediaRenderer;
+ }
+
+ if (!window.VideoRenderer) {
+ window.VideoRenderer = htmlMediaRenderer;
+ }
})();
\ No newline at end of file
diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js
index c5c47f207a..d9dcc05075 100644
--- a/dashboard-ui/scripts/librarymenu.js
+++ b/dashboard-ui/scripts/librarymenu.js
@@ -33,10 +33,11 @@
html += '';
- //if (AppInfo.isNativeApp && $.browser.android)
- //{
- // html += '';
- //}
+ if (!showUserAtTop()) {
+ html += '';
+ }
if (!$.browser.mobile && !AppInfo.isNativeApp) {
html += '';
@@ -91,6 +92,26 @@
} else {
$('.dashboardEntryHeaderButton', header).hide();
}
+
+ var userButtonHtml = '';
+ if (user.name) {
+
+ if (user.imageUrl && AppInfo.enableUserImage) {
+
+ var userButtonHeight = 26;
+
+ var url = user.imageUrl;
+
+ if (user.supportsImageParams) {
+ url += "&height=" + (userButtonHeight * Math.max(devicePixelRatio || 1, 2));
+ }
+
+ userButtonHtml += '';
+ } else {
+ userButtonHtml += '
';
+ }
+ $('.headerUserButton', header).html(userButtonHtml).lazyChildren();
+ }
}
function bindMenuEvents() {
@@ -129,23 +150,6 @@
}
}
- //function onViewButtonClick() {
-
- // var html = '';
-
- // $(document.body).append(html);
-
- // var elem = $('.appViewMenuPanel').panel({}).trigger('create').panel("open").on("panelclose", function () {
-
- // $(this).off("panelclose").remove();
- // });
-
-
- //}
-
function initViewMenuBarHeadroom() {
// grab an element
@@ -203,7 +207,10 @@
html += '';
}
- html += '';
+ if (showUserAtTop()) {
+ html += '';
+ }
+
html += '
';
@@ -407,22 +414,6 @@
html += '
';
html += Globalize.translate('ButtonHome');
html += '';
-
- html += '';
}
html += '';
diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js
index fdf516e88c..bb5c0f567f 100644
--- a/dashboard-ui/scripts/mediaplayer-video.js
+++ b/dashboard-ui/scripts/mediaplayer-video.js
@@ -1050,7 +1050,7 @@
self.playVideo = function (item, mediaSource, startPosition) {
- requirejs(['scripts/htmlmediarenderer'], function () {
+ requirejs(['videorenderer'], function () {
var streamInfo = self.createStreamInfo('Video', item, mediaSource, startPosition);
@@ -1191,7 +1191,7 @@
videoControls.removeClass('hide');
}
- var mediaRenderer = new HtmlMediaRenderer('video');
+ var mediaRenderer = new VideoRenderer('video');
initialVolume = self.getSavedVolume();
diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js
index bc2cdbb9fc..511b338175 100644
--- a/dashboard-ui/scripts/mediaplayer.js
+++ b/dashboard-ui/scripts/mediaplayer.js
@@ -760,7 +760,7 @@
contentType = 'video/' + mediaSource.Container;
if (mediaSource.enableDirectPlay) {
- mediaUrl = FileSystem.translateFilePath(mediaSource.Path);
+ mediaUrl = FileSystemBridge.translateFilePath(mediaSource.Path);
playMethod = 'DirectPlay';
} else {
@@ -797,7 +797,7 @@
if (mediaSource.enableDirectPlay) {
- mediaUrl = FileSystem.translateFilePath(mediaSource.Path);
+ mediaUrl = FileSystemBridge.translateFilePath(mediaSource.Path);
playMethod = 'DirectPlay';
} else {
@@ -1628,7 +1628,7 @@
function getAudioRenderer() {
- return new HtmlMediaRenderer('audio');
+ return new AudioRenderer('audio');
}
function onTimeUpdate() {
@@ -1639,7 +1639,7 @@
function playAudio(item, mediaSource, startPositionTicks) {
- requirejs(['scripts/htmlmediarenderer'], function () {
+ requirejs(['audiorenderer'], function () {
playAudioInternal(item, mediaSource, startPositionTicks);
});
}
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 35903a1869..c98a954d10 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -636,6 +636,62 @@ var Dashboard = {
}, 500);
},
+ showUserFlyout: function () {
+
+ var html = '
';
+
+ html += '';
+
+ html += '
';
+ html += '
';
+
+ $(document.body).append(html);
+
+ var elem = $('#userFlyout').panel({}).lazyChildren().trigger('create').panel("open").on("panelclose", function () {
+
+ $(this).off("panelclose").remove();
+ });
+
+ ConnectionManager.user(window.ApiClient).done(function (user) {
+ Dashboard.updateUserFlyout(elem, user);
+ });
+ },
+
+ updateUserFlyout: function (elem, user) {
+
+ var html = '';
+ var imgWidth = 48;
+
+ if (user.imageUrl && AppInfo.enableUserImage) {
+ var url = user.imageUrl;
+
+ if (user.supportsImageParams) {
+ url += "&width=" + (imgWidth * Math.max(window.devicePixelRatio || 1, 2));
+ }
+
+ html += '
';
+ }
+ html += user.name;
+
+ $('.userHeader', elem).html(html).lazyChildren();
+
+ html = '';
+
+ if (user.localUser && user.localUser.Policy.EnableUserPreferenceAccess) {
+ html += '
' + Globalize.translate('ButtonSettings') + '';
+ }
+
+ $('.preferencesContainer', elem).html(html).trigger('create');
+ },
+
getPluginSecurityInfo: function () {
var apiClient = ApiClient;
@@ -1334,7 +1390,10 @@ var Dashboard = {
PlayableMediaTypes: ['Audio', 'Video'],
SupportedCommands: Dashboard.getSupportedRemoteCommands(),
- SupportsPersistentIdentifier: AppInfo.isNativeApp === true,
+
+ // Need to use this rather than AppInfo.isNativeApp because the property isn't set yet at the time we call this
+ SupportsPersistentIdentifier: Dashboard.isRunningInCordova(),
+
SupportsMediaControl: true,
SupportedLiveMediaTypes: ['Audio', 'Video']
};
@@ -1898,6 +1957,16 @@ var AppInfo = {};
define("nativedirectorychooser", ["thirdparty/cordova/android/nativedirectorychooser"]);
}
+ if (Dashboard.isRunningInCordova() && $.browser.android) {
+ //define("audiorenderer", ["thirdparty/cordova/android/vlcplayer"]);
+ define("audiorenderer", ["scripts/htmlmediarenderer"]);
+ define("videorenderer", ["scripts/htmlmediarenderer"]);
+ }
+ else {
+ define("audiorenderer", ["scripts/htmlmediarenderer"]);
+ define("videorenderer", ["scripts/htmlmediarenderer"]);
+ }
+
define("connectservice", ["thirdparty/apiclient/connectservice"]);
//requirejs(['http://viblast.com/player/free-version/qy2fdwajo1/viblast.js']);
@@ -1911,7 +1980,7 @@ var AppInfo = {};
require(['appstorage'], function () {
capabilities.DeviceProfile = MediaPlayer.getDeviceProfile(Math.max(screen.height, screen.width));
- createConnectionManager(capabilities).done(function() {
+ createConnectionManager(capabilities).done(function () {
$(function () {
onDocumentReady();
Dashboard.initPromiseDone = true;
diff --git a/dashboard-ui/syncsettings.html b/dashboard-ui/syncsettings.html
index f869faa23b..bd2c0bd0c7 100644
--- a/dashboard-ui/syncsettings.html
+++ b/dashboard-ui/syncsettings.html
@@ -20,7 +20,7 @@