mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Added album soundtrack links
This commit is contained in:
parent
c977f4a919
commit
8bcb6d55a4
5 changed files with 92 additions and 33 deletions
|
@ -178,6 +178,7 @@
|
||||||
<div data-role="collapsible">
|
<div data-role="collapsible">
|
||||||
<h3>External Id's</h3>
|
<h3>External Id's</h3>
|
||||||
<div>
|
<div>
|
||||||
|
<p id="albumAssociationMessage" style="display: none;">Associate this album with a movie, tv series and/or game, and we'll be able to link it to other items in your library.</p>
|
||||||
<div data-role="fieldcontain" id="fldGamesDb" style="display: none;">
|
<div data-role="fieldcontain" id="fldGamesDb" style="display: none;">
|
||||||
<label for="txtGamesDb">GamesDb:</label>
|
<label for="txtGamesDb">GamesDb:</label>
|
||||||
<input id="txtGamesDb" name="txtGamesDb" data-mini="true" />
|
<input id="txtGamesDb" name="txtGamesDb" data-mini="true" />
|
||||||
|
@ -216,10 +217,10 @@
|
||||||
<h3>Internet Provider Settings</h3>
|
<h3>Internet Provider Settings</h3>
|
||||||
<div>
|
<div>
|
||||||
<div data-role="fieldcontain">
|
<div data-role="fieldcontain">
|
||||||
<input type="checkbox" name="enableInternetProviders" id="enableInternetProviders" onchange="EditItemMetadataPage.setProviderSettingsContainerVisibility(this)" />
|
<input type="checkbox" name="enableInternetProviders" id="Checkbox1" onchange="EditItemMetadataPage.setProviderSettingsContainerVisibility(this)" />
|
||||||
<label for="enableInternetProviders">Enable internet metadata providers for this item.</label>
|
<label for="enableInternetProviders">Enable internet metadata providers for this item.</label>
|
||||||
</div>
|
</div>
|
||||||
<div id="providerSettingsContainer" style="display: none">
|
<div id="Div1" style="display: none">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -183,6 +183,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="castContent" class="detailSectionContent"></div>
|
<div id="castContent" class="detailSectionContent"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="soundtracksCollapsible" style="display: none;" class="detailSection">
|
||||||
|
<div id="soundtracksHeader" class="detailSectionHeader">
|
||||||
|
Soundtracks
|
||||||
|
</div>
|
||||||
|
<div id="soundtracksContent" class="detailSectionContent"></div>
|
||||||
|
</div>
|
||||||
<div id="similarCollapsible" style="display: none;" class="detailSection">
|
<div id="similarCollapsible" style="display: none;" class="detailSection">
|
||||||
<div class="detailSectionHeader">
|
<div class="detailSectionHeader">
|
||||||
Similar
|
Similar
|
||||||
|
|
|
@ -158,6 +158,13 @@
|
||||||
$('#themeSongsCollapsible', page).hide();
|
$('#themeSongsCollapsible', page).hide();
|
||||||
$('#themeVideosCollapsible', page).hide();
|
$('#themeVideosCollapsible', page).hide();
|
||||||
|
|
||||||
|
if (!item.SoundtrackIds || !item.SoundtrackIds.length) {
|
||||||
|
$('#soundtracksCollapsible', page).hide();
|
||||||
|
} else {
|
||||||
|
$('#soundtracksCollapsible', page).show();
|
||||||
|
renderSoundtracks(page, item);
|
||||||
|
}
|
||||||
|
|
||||||
renderThemeSongs(page, item);
|
renderThemeSongs(page, item);
|
||||||
renderThemeVideos(page, item);
|
renderThemeVideos(page, item);
|
||||||
renderCriticReviews(page, item, 1);
|
renderCriticReviews(page, item, 1);
|
||||||
|
@ -241,6 +248,33 @@
|
||||||
$('.itemPath', page).hide();
|
$('.itemPath', page).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderSoundtracks(page, item) {
|
||||||
|
|
||||||
|
if (item.Type == "MusicAlbum") {
|
||||||
|
$('#soundtracksHeader', page).html("This album is the soundtrack for ...");
|
||||||
|
} else {
|
||||||
|
$('#soundtracksHeader', page).html("Soundtrack(s)");
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||||
|
|
||||||
|
Ids: item.SoundtrackIds.join(","),
|
||||||
|
ItemFields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData,AudioInfo",
|
||||||
|
SortBy: "SortName"
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
var html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
useAverageAspectRatio: true,
|
||||||
|
showNewIndicator: true,
|
||||||
|
shape: item.Type == "MusicAlbum" ? "portrait" : "square"
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#soundtracksContent', page).html(html);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function renderSiblingLinks(page, item) {
|
function renderSiblingLinks(page, item) {
|
||||||
|
|
||||||
|
|
|
@ -96,14 +96,24 @@
|
||||||
$('#fldRevenue', page).hide();
|
$('#fldRevenue', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.MediaType == "Game") {
|
if (item.Type == "MusicAlbum") {
|
||||||
$('#fldPlayers', page).show();
|
$('#albumAssociationMessage', page).show();
|
||||||
|
} else {
|
||||||
|
$('#albumAssociationMessage', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.MediaType == "Game" || item.Type == "MusicAlbum") {
|
||||||
$('#fldGamesDb', page).show();
|
$('#fldGamesDb', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#fldPlayers', page).hide();
|
|
||||||
$('#fldGamesDb', page).hide();
|
$('#fldGamesDb', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item.MediaType == "Game") {
|
||||||
|
$('#fldPlayers', page).show();
|
||||||
|
} else {
|
||||||
|
$('#fldPlayers', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "MusicVideo") {
|
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "MusicVideo") {
|
||||||
$('#fldCriticRating', page).show();
|
$('#fldCriticRating', page).show();
|
||||||
$('#fldCriticRatingSummary', page).show();
|
$('#fldCriticRatingSummary', page).show();
|
||||||
|
@ -114,19 +124,26 @@
|
||||||
$('#fldRottenTomatoes', page).hide();
|
$('#fldRottenTomatoes', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "Person" || item.Type == "BoxSet") {
|
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "Person" || item.Type == "BoxSet" || item.Type == "MusicAlbum") {
|
||||||
$('#fldTmdb', page).show();
|
$('#fldTmdb', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#fldTmdb', page).hide();
|
$('#fldTmdb', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type == "Series" || item.Type == "Season" || item.Type == "Episode") {
|
if (item.Type == "Series" || item.Type == "Season" || item.Type == "Episode" || item.Type == "MusicAlbum") {
|
||||||
$('#fldTvdb', page).show();
|
$('#fldTvdb', page).show();
|
||||||
$('#fldTvCom', page).show();
|
$('#fldTvCom', page).show();
|
||||||
} else {
|
} else {
|
||||||
$('#fldTvdb', page).hide();
|
$('#fldTvdb', page).hide();
|
||||||
$('#fldTvCom', page).hide();
|
$('#fldTvCom', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item.Type == "Series" || item.Type == "Season" || item.Type == "Episode") {
|
||||||
|
$('#fldTvCom', page).show();
|
||||||
|
} else {
|
||||||
|
$('#fldTvCom', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
if (item.Type == "Series") {
|
if (item.Type == "Series") {
|
||||||
$('#fldStatus', page).show();
|
$('#fldStatus', page).show();
|
||||||
$('#fldAirDays', page).show();
|
$('#fldAirDays', page).show();
|
||||||
|
|
|
@ -48,13 +48,17 @@ var Dashboard = {
|
||||||
getCurrentUser: function () {
|
getCurrentUser: function () {
|
||||||
|
|
||||||
if (!Dashboard.getUserPromise) {
|
if (!Dashboard.getUserPromise) {
|
||||||
Dashboard.getUserPromise = ApiClient.getUser(Dashboard.getCurrentUserId()).fail(Dashboard.logout);
|
|
||||||
|
var userId = Dashboard.getCurrentUserId();
|
||||||
|
|
||||||
|
Dashboard.getUserPromise = ApiClient.getUser(userId).fail(Dashboard.logout);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Dashboard.getUserPromise;
|
return Dashboard.getUserPromise;
|
||||||
},
|
},
|
||||||
|
|
||||||
validateCurrentUser: function (page) {
|
validateCurrentUser: function (page) {
|
||||||
|
|
||||||
Dashboard.getUserPromise = null;
|
Dashboard.getUserPromise = null;
|
||||||
|
|
||||||
if (Dashboard.getCurrentUserId()) {
|
if (Dashboard.getCurrentUserId()) {
|
||||||
|
@ -68,7 +72,14 @@ var Dashboard = {
|
||||||
if (header.length) {
|
if (header.length) {
|
||||||
// Re-render the header
|
// Re-render the header
|
||||||
header.remove();
|
header.remove();
|
||||||
Dashboard.ensureHeader(page);
|
|
||||||
|
if (Dashboard.getUserPromise) {
|
||||||
|
Dashboard.getUserPromise.done(function(user) {
|
||||||
|
Dashboard.ensureHeader(page, user);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Dashboard.ensureHeader(page);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -508,22 +519,11 @@ var Dashboard = {
|
||||||
Dashboard.getPluginSecurityInfoPromise = null;
|
Dashboard.getPluginSecurityInfoPromise = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
ensureHeader: function (page) {
|
ensureHeader: function (page, user) {
|
||||||
|
|
||||||
if (!page.hasClass('libraryPage') && !$('.headerButtons', page).length) {
|
if (!page.hasClass('libraryPage') && !$('.headerButtons', page).length) {
|
||||||
|
|
||||||
var isLoggedIn = Dashboard.getCurrentUserId();
|
Dashboard.renderHeader(page, user);
|
||||||
|
|
||||||
if (isLoggedIn) {
|
|
||||||
|
|
||||||
Dashboard.getCurrentUser().done(function (user) {
|
|
||||||
Dashboard.renderHeader(page, user);
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
Dashboard.renderHeader(page);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -768,7 +768,7 @@ var Dashboard = {
|
||||||
else if (msg.MessageType === "ScheduledTaskEnded") {
|
else if (msg.MessageType === "ScheduledTaskEnded") {
|
||||||
|
|
||||||
Dashboard.getCurrentUser().done(function (currentUser) {
|
Dashboard.getCurrentUser().done(function (currentUser) {
|
||||||
|
|
||||||
if (currentUser.Configuration.IsAdministrator) {
|
if (currentUser.Configuration.IsAdministrator) {
|
||||||
Dashboard.showTaskCompletionNotification(msg.Data);
|
Dashboard.showTaskCompletionNotification(msg.Data);
|
||||||
}
|
}
|
||||||
|
@ -1098,7 +1098,7 @@ $(function () {
|
||||||
|
|
||||||
Dashboard.jQueryMobileInit();
|
Dashboard.jQueryMobileInit();
|
||||||
|
|
||||||
$(document).on('pageinit', ".page", function () {
|
$(document).on('pagebeforeshow', ".page", function () {
|
||||||
|
|
||||||
var page = $(this);
|
var page = $(this);
|
||||||
|
|
||||||
|
@ -1110,7 +1110,12 @@ $(document).on('pageinit', ".page", function () {
|
||||||
if (this.id !== "loginPage" && !page.hasClass('wizardPage')) {
|
if (this.id !== "loginPage" && !page.hasClass('wizardPage')) {
|
||||||
|
|
||||||
Dashboard.logout();
|
Dashboard.logout();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dashboard.ensureHeader(page);
|
||||||
|
Dashboard.ensurePageTitle(page);
|
||||||
|
Dashboard.refreshSystemInfoFromServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
@ -1120,16 +1125,12 @@ $(document).on('pageinit', ".page", function () {
|
||||||
if (user.Configuration.IsAdministrator) {
|
if (user.Configuration.IsAdministrator) {
|
||||||
Dashboard.ensureToolsMenu(page);
|
Dashboard.ensureToolsMenu(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dashboard.ensureHeader(page, user);
|
||||||
|
Dashboard.ensurePageTitle(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Dashboard.refreshSystemInfoFromServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
}).on('pagebeforeshow', ".page", function () {
|
|
||||||
|
|
||||||
Dashboard.refreshSystemInfoFromServer();
|
|
||||||
|
|
||||||
var page = $(this);
|
|
||||||
|
|
||||||
Dashboard.ensureHeader(page);
|
|
||||||
Dashboard.ensurePageTitle(page);
|
|
||||||
|
|
||||||
});
|
});
|
Loading…
Add table
Add a link
Reference in a new issue