diff --git a/dashboard-ui/scripts/Itemdetailpage.js b/dashboard-ui/scripts/Itemdetailpage.js index 8ae53d5b15..34c3721aec 100644 --- a/dashboard-ui/scripts/Itemdetailpage.js +++ b/dashboard-ui/scripts/Itemdetailpage.js @@ -945,7 +945,14 @@ $('#btnPlay', page).on('click', function () { var userdata = currentItem.UserData || {}; - LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, currentItem.MediaType, userdata.PlaybackPositionTicks); + + var mediaType = currentItem.MediaType; + + if (currentItem.Type == "MusicArtist" || currentItem.Type == "MusicAlbum") { + mediaType = "Audio"; + } + + LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, mediaType, userdata.PlaybackPositionTicks); }); $('#btnEdit', page).on('click', function () { diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js index 1dfd4ffb25..673a1ab419 100644 --- a/dashboard-ui/scripts/itembynamedetailpage.js +++ b/dashboard-ui/scripts/itembynamedetailpage.js @@ -81,6 +81,12 @@ ApiClient.sendWebSocketMessage("Context", vals.join('|')); } + if (MediaPlayer.canPlay(item)) { + $('#playButtonContainer', page).show(); + } else { + $('#playButtonContainer', page).hide(); + } + Dashboard.getCurrentUser().done(function (user) { if (user.Configuration.IsAdministrator && item.LocationType !== "Offline") { @@ -487,6 +493,11 @@ var page = this; + $('#btnPlay', page).on('click', function () { + var userdata = currentItem.UserData || {}; + LibraryBrowser.showPlayMenu(this, currentItem.Name, currentItem.Type, "Audio", userdata.PlaybackPositionTicks); + }); + $('#btnRemote', page).on('click', function () { RemoteControl.showMenuForItem({ item: currentItem, context: getParameterByName('context') || '' }); diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index c8a5f8fc52..4d7617060b 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -317,7 +317,7 @@ var isPlaying = MediaPlayer.isPlaying(); - if (!isPlaying && !resumePositionTicks) { + if (!isPlaying && !resumePositionTicks && mediaType != "Audio") { MediaPlayer.playById(itemId); return; } @@ -329,14 +329,22 @@ html += ''; diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 33be5e58e1..06aa5ab7b1 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -727,7 +727,7 @@ self.canPlay = function (item) { - if (item.Type == "MusicAlbum" || item.Type == "MusicArtist") { + if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "Artist") { return true; } return self.canPlayMediaType(item.MediaType); @@ -972,6 +972,23 @@ }; + self.playArtist = function (artist) { + + self.getItemsForPlayback({ + + Artists: artist, + Recursive: true, + SortBy: "Album,SortName", + IncludeItemTypes: "Audio" + + }).done(function (result) { + + self.play(result.Items); + + }); + + }; + self.toggleFullscreen = function () { if (isFullScreen()) { if (document.cancelFullScreen) { document.cancelFullScreen(); } @@ -1073,6 +1090,27 @@ }); }; + self.queueArtist = function (artist) { + + self.getItemsForPlayback({ + + Artists: artist, + Recursive: true, + SortBy: "Album,SortName", + IncludeItemTypes: "Audio" + + }).done(function (result) { + + for (var i = 0, length = result.Items.length; i < length; i++) { + + self.queueItem(result.Items[i]); + + } + + }); + + }; + self.pause = function () { currentMediaElement.pause(); };