mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser into upstream-master
This commit is contained in:
commit
4d5b3599f8
6 changed files with 79 additions and 66 deletions
|
@ -11,9 +11,9 @@
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabBasics}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabBasics}</a>
|
||||||
<a href="metadataimages.html" data-role="button">${TabCustomizations}</a>
|
<a href="metadataimages.html" data-role="button">${TabAdvanced}</a>
|
||||||
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
||||||
<a href="metadataadvanced.html" data-role="button">${TabAdvanced}</a>
|
<a href="metadataadvanced.html" data-role="button">${TabOther}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form id="metadataConfigurationForm">
|
<form id="metadataConfigurationForm">
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
||||||
<a href="metadataimages.html" data-role="button">${TabCustomizations}</a>
|
<a href="metadataimages.html" data-role="button">${TabAdvanced}</a>
|
||||||
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabAdvanced}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabOther}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form id="advancedMetadataConfigurationForm">
|
<form id="advancedMetadataConfigurationForm">
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true" style="margin-bottom: 20px!important;">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true" style="margin-bottom: 20px!important;">
|
||||||
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabCustomizations}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabAdvanced}</a>
|
||||||
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
<a href="metadatasubtitles.html" data-role="button">${TabSubtitles}</a>
|
||||||
<a href="metadataadvanced.html" data-role="button">${TabAdvanced}</a>
|
<a href="metadataadvanced.html" data-role="button">${TabOther}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tabContent">
|
<div class="tabContent">
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
<div class="content-primary">
|
<div class="content-primary">
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
<a href="metadata.html" data-role="button">${TabBasics}</a>
|
||||||
<a href="metadataimages.html" data-role="button">${TabCustomizations}</a>
|
<a href="metadataimages.html" data-role="button">${TabAdvanced}</a>
|
||||||
<a href="#" class="ui-btn-active" data-role="button">${TabSubtitles}</a>
|
<a href="#" class="ui-btn-active" data-role="button">${TabSubtitles}</a>
|
||||||
<a href="metadataadvanced.html" data-role="button">${TabAdvanced}</a>
|
<a href="metadataadvanced.html" data-role="button">${TabOther}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form class="metadataSubtitlesForm">
|
<form class="metadataSubtitlesForm">
|
||||||
|
|
|
@ -166,7 +166,7 @@
|
||||||
|
|
||||||
SortBy: "DateCreated",
|
SortBy: "DateCreated",
|
||||||
SortOrder: "Descending",
|
SortOrder: "Descending",
|
||||||
Limit: screenWidth >= 2400 ? 21 : (screenWidth >= 1920 ? 15 : (screenWidth >= 1440 ? 12 : (screenWidth >= 800 ? 12 : 8))),
|
Limit: screenWidth >= 2400 ? 30 : (screenWidth >= 1920 ? 20 : (screenWidth >= 1440 ? 12 : (screenWidth >= 800 ? 12 : 8))),
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio",
|
Fields: "PrimaryImageAspectRatio",
|
||||||
Filters: "IsUnplayed,IsNotFolder",
|
Filters: "IsUnplayed,IsNotFolder",
|
||||||
|
|
|
@ -1,19 +1,5 @@
|
||||||
(function (window, document, $) {
|
(function (window, document, $) {
|
||||||
|
|
||||||
var itemCountsPromise;
|
|
||||||
var liveTvInfoPromise;
|
|
||||||
var itemsPromise;
|
|
||||||
|
|
||||||
function ensurePromises() {
|
|
||||||
itemsPromise = itemsPromise || ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
|
||||||
|
|
||||||
SortBy: "SortName"
|
|
||||||
|
|
||||||
});
|
|
||||||
itemCountsPromise = itemCountsPromise || ApiClient.getItemCounts(Dashboard.getCurrentUserId());
|
|
||||||
liveTvInfoPromise = liveTvInfoPromise || ApiClient.getLiveTvInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderHeader(page, user) {
|
function renderHeader(page, user) {
|
||||||
|
|
||||||
var html = '<div class="viewMenuBar ui-bar-b">';
|
var html = '<div class="viewMenuBar ui-bar-b">';
|
||||||
|
@ -22,8 +8,6 @@
|
||||||
|
|
||||||
html += '<a class="desktopHomeLink headerButton headerButtonLeft" href="index.html"><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a>';
|
html += '<a class="desktopHomeLink headerButton headerButtonLeft" href="index.html"><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a>';
|
||||||
|
|
||||||
//html += '<a class="viewMenuRemoteControlButton" href="nowplaying.html" data-role="button" data-icon="play" data-inline="true" data-iconpos="notext" title="Now Playing">Remote Control</a>';
|
|
||||||
|
|
||||||
html += '<div class="viewMenuSecondary">';
|
html += '<div class="viewMenuSecondary">';
|
||||||
|
|
||||||
html += '<a href="nowplaying.html" class="headerButton headerButtonRight headerRemoteButton"><img src="css/images/remote.png" /></a>';
|
html += '<a href="nowplaying.html" class="headerButton headerButtonRight headerRemoteButton"><img src="css/images/remote.png" /></a>';
|
||||||
|
@ -69,65 +53,96 @@
|
||||||
return LibraryBrowser.getHref(item);
|
return LibraryBrowser.getHref(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getViewsHtml(user, counts, items, liveTvInfo) {
|
function getViewsHtml() {
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
html += items.map(function (i) {
|
html += '<div class="libraryMenuOptions">';
|
||||||
|
html += '</div>';
|
||||||
|
|
||||||
var viewMenuCssClass = (i.CollectionType || 'general') + 'ViewMenu';
|
html += '<div class="libraryMenuDivider secondaryDivider" style="display:none;"></div>';
|
||||||
|
|
||||||
return '<a data-itemid="' + i.Id + '" class="lnkMediaFolder viewMenuLink viewMenuTextLink ' + viewMenuCssClass + '" href="' + getItemHref(i) + '">' + i.Name + '</a>';
|
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder channelsViewMenu channelsMenuOption" style="display:none;" data-itemid="channels" href="channels.html">Channels</a>';
|
||||||
|
|
||||||
}).join('');
|
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder tvshowsViewMenu liveTvMenuOption" style="display:none;" data-itemid="livetv" href="livetvsuggested.html">Live TV</a>';
|
||||||
|
|
||||||
var showChannels = counts.ChannelCount;
|
html += '<div class="adminMenuOptions">';
|
||||||
var showLiveTv = liveTvInfo.EnabledUsers.indexOf(user.Id) != -1;
|
html += '<div class="libraryMenuDivider"></div>';
|
||||||
|
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder dashboardViewMenu" data-itemid="dashboard" href="dashboard.html">Dashboard</a>';
|
||||||
if (showChannels || showLiveTv) {
|
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder editorViewMenu" data-itemid="editor" href="edititemmetadata.html">Metadata Manager</a>';
|
||||||
html += '<div class="libraryMenuDivider"></div>';
|
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder reportsViewMenu" data-itemid="reports" href="reports.html">Reports</a>';
|
||||||
}
|
html += '</div>';
|
||||||
|
|
||||||
if (showChannels) {
|
|
||||||
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder channelsViewMenu" data-itemid="channels" href="channels.html">Channels</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (showLiveTv) {
|
|
||||||
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder tvshowsViewMenu" data-itemid="livetv" href="livetvsuggested.html">Live TV</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.Configuration.IsAdministrator) {
|
|
||||||
html += '<div class="libraryMenuDivider"></div>';
|
|
||||||
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder dashboardViewMenu" data-itemid="dashboard" href="dashboard.html">Dashboard</a>';
|
|
||||||
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder editorViewMenu" data-itemid="editor" href="edititemmetadata.html">Metadata Manager</a>';
|
|
||||||
html += '<a class="viewMenuLink viewMenuTextLink lnkMediaFolder reportsViewMenu" data-itemid="reports" href="reports.html">Reports</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showLibraryMenu() {
|
function showLibraryMenu() {
|
||||||
|
|
||||||
ensurePromises();
|
var userId = Dashboard.getCurrentUserId();
|
||||||
|
|
||||||
var userPromise = Dashboard.getCurrentUser();
|
ApiClient.getItems(userId, {
|
||||||
|
|
||||||
$.when(itemCountsPromise, itemsPromise, liveTvInfoPromise, userPromise).done(function (response1, response2, response3, response4) {
|
SortBy: "SortName"
|
||||||
|
|
||||||
var counts = response1[0];
|
}).done(function (result) {
|
||||||
var items = response2[0].Items;
|
|
||||||
var liveTvInfo = response3[0];
|
|
||||||
var user = response4[0];
|
|
||||||
|
|
||||||
var page = $.mobile.activePage;
|
var items = result.Items;
|
||||||
|
|
||||||
var panel = getLibraryMenu(page, user, counts, items, liveTvInfo);
|
var html = items.map(function (i) {
|
||||||
|
|
||||||
$(panel).panel('toggle');
|
var viewMenuCssClass = (i.CollectionType || 'general') + 'ViewMenu';
|
||||||
|
|
||||||
|
return '<a data-itemid="' + i.Id + '" class="lnkMediaFolder viewMenuLink viewMenuTextLink ' + viewMenuCssClass + '" href="' + getItemHref(i) + '">' + i.Name + '</a>';
|
||||||
|
|
||||||
|
}).join('');
|
||||||
|
|
||||||
|
$('.libraryMenuOptions').html(html);
|
||||||
|
});
|
||||||
|
|
||||||
|
var page = $.mobile.activePage;
|
||||||
|
|
||||||
|
var panel = getLibraryMenu();
|
||||||
|
|
||||||
|
updateLibraryNavLinks(page);
|
||||||
|
|
||||||
|
$(panel).panel('toggle');
|
||||||
|
|
||||||
|
ApiClient.getLiveTvInfo().done(function (liveTvInfo) {
|
||||||
|
|
||||||
|
var showLiveTv = liveTvInfo.EnabledUsers.indexOf(userId) != -1;
|
||||||
|
|
||||||
|
if (showLiveTv) {
|
||||||
|
$('.liveTvMenuOption').show();
|
||||||
|
$('.secondaryDivider').show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.getJSON(ApiClient.getUrl("Channels", {
|
||||||
|
userId: userId,
|
||||||
|
|
||||||
|
// We just want the total record count
|
||||||
|
limit: 0
|
||||||
|
|
||||||
|
})).done(function (response) {
|
||||||
|
|
||||||
|
if (response.TotalRecordCount) {
|
||||||
|
$('.channelsMenuOption').show();
|
||||||
|
$('.secondaryDivider').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
Dashboard.getCurrentUser().done(function (user) {
|
||||||
|
|
||||||
|
if (user.Configuration.IsAdministrator) {
|
||||||
|
$('.adminMenuOptions').show();
|
||||||
|
} else {
|
||||||
|
$('.adminMenuOptions').hide();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLibraryMenu(page, user, counts, items, liveTvInfo) {
|
function getLibraryMenu(user, channelCount, items, liveTvInfo) {
|
||||||
|
|
||||||
var panel = $('#libraryPanel');
|
var panel = $('#libraryPanel');
|
||||||
|
|
||||||
|
@ -140,7 +155,7 @@
|
||||||
html += '<p class="libraryPanelHeader"><a href="index.html" class="imageLink"><img src="css/images/mblogoicon.png" /><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a></p>';
|
html += '<p class="libraryPanelHeader"><a href="index.html" class="imageLink"><img src="css/images/mblogoicon.png" /><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a></p>';
|
||||||
|
|
||||||
html += '<div style="margin: 0 -1em;">';
|
html += '<div style="margin: 0 -1em;">';
|
||||||
html += getViewsHtml(user, counts, items, liveTvInfo);
|
html += getViewsHtml(user, channelCount, items, liveTvInfo);
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
@ -150,8 +165,6 @@
|
||||||
panel = $('#libraryPanel').panel({}).trigger('create');
|
panel = $('#libraryPanel').panel({}).trigger('create');
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLibraryNavLinks(page);
|
|
||||||
|
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,7 +272,7 @@
|
||||||
renderHeader(page, user);
|
renderHeader(page, user);
|
||||||
|
|
||||||
updateCastIcon();
|
updateCastIcon();
|
||||||
|
|
||||||
updateLibraryNavLinks(page);
|
updateLibraryNavLinks(page);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue