mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merging in latest dev
This commit is contained in:
commit
717b58d43c
95 changed files with 1007 additions and 959 deletions
|
@ -15,9 +15,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav syncTabs" data-mini="true" style="display:none;">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav syncTabs" data-mini="true" style="display:none;">
|
||||||
<a href="syncactivity.html" data-role="button">${TabActivity}</a>
|
<a href="syncactivity.html" data-role="button">${TabActivity}</a>
|
||||||
<a href="syncservices.html" data-role="button" class="ui-btn-active">${TabServices}</a>
|
<a href="appservices.html?context=sync" data-role="button" class="ui-btn-active">${TabServices}</a>
|
||||||
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="localnav livetvTabs" data-mini="true" style="display:none;">
|
||||||
|
<a href="livetvstatus.html" data-role="button">${TabStatus}</a>
|
||||||
|
<a href="#" data-role="button" class="ui-btn-active">${TabServices}</a>
|
||||||
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="readOnlyContent">
|
<div class="readOnlyContent">
|
||||||
|
|
||||||
|
|
52
dashboard-ui/appservices.html
Normal file
52
dashboard-ui/appservices.html
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Emby</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="appServicesPage" data-role="page" class="page type-interior appServicesPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Sync">
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
<div class="content-primary">
|
||||||
|
|
||||||
|
<div class="sectionTabs syncSectionTabs" style="display:none;">
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
|
<a href="syncactivity.html" data-role="button">${TabActivity}</a>
|
||||||
|
<a href="#" data-role="button" class="ui-btn-active">${TabServices}</a>
|
||||||
|
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sectionTabs livetvSectionTabs" style="display:none;">
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
|
<a href="livetvstatus.html" data-role="button">${TabStatus}</a>
|
||||||
|
<a href="#" data-role="button" class="ui-btn-active">${TabServices}</a>
|
||||||
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="detailSectionHeader">${HeaderInstalledServices}</div>
|
||||||
|
<div class="installedPlugins"></div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<div class="detailSectionHeader">${HeaderAvailableServices}</div>
|
||||||
|
<div class="catalog"></div>
|
||||||
|
|
||||||
|
<div class="staticSupporterPromotion supporterPromotion syncPromotion" style="display:none;">
|
||||||
|
<a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;">
|
||||||
|
<div>
|
||||||
|
${HeaderSyncRequiresSupporterMembership}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
${HeaderEnjoyDayTrial}
|
||||||
|
</div>
|
||||||
|
<div style="font-weight:normal;font-size:90%;margin-top:5px;">
|
||||||
|
${ButtonLearnMore}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -18,8 +18,8 @@
|
||||||
<div class="listTopPaging" style="float: left; position: relative; top: 15px;">
|
<div class="listTopPaging" style="float: left; position: relative; top: 15px;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<button style="display: none;" class="btnClearLog" type="button" data-inline="true" data-icon="forbidden" data-mini="true">Clear</button>-->
|
|
||||||
<div style="float: right; position: relative; top: 15px;margin-top: -5px;display:none;" class="organizeTaskPanel">
|
<div style="float: right; position: relative; top: 15px;margin-top: -5px;display:none;" class="organizeTaskPanel">
|
||||||
|
<button style="display: none;" class="btnClearLog" type="button" data-inline="true" data-icon="forbidden" data-mini="true">Clear</button>
|
||||||
<button type="button" class="btnOrganize" data-icon="action" data-mini="true" data-inline="true">${ButtonOrganize}</button>
|
<button type="button" class="btnOrganize" data-icon="action" data-mini="true" data-inline="true">${ButtonOrganize}</button>
|
||||||
<progress max="100" min="0" style="width:100px;display:none;" class="organizeProgress"></progress>
|
<progress max="100" min="0" style="width:100px;display:none;" class="organizeProgress"></progress>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="boxsetsPage" data-role="page" class="page libraryPage backdropPage collectionEditorPage" data-backdroptype="movie,boxset">
|
<div id="boxsetsPage" data-role="page" class="page libraryPage backdropPage collectionEditorPage" data-backdroptype="movie,boxset">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav movieTabs">
|
<div class="libraryViewNav scopedLibraryViewNav movieTabs">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabCollections}</a>
|
<a href="#" class="ui-btn-active">${TabCollections}</a>
|
||||||
|
@ -52,7 +51,8 @@
|
||||||
<select id="selectView">
|
<select id="selectView">
|
||||||
<option value="Poster">${OptionPoster}</option>
|
<option value="Poster">${OptionPoster}</option>
|
||||||
<option value="List">${OptionList}</option>
|
<option value="List">${OptionList}</option>
|
||||||
</select>
|
<option value="Thumb">${OptionThumb}</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -1445,4 +1445,4 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
|
||||||
.smallDetailImageContainer {
|
.smallDetailImageContainer {
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,16 +14,6 @@
|
||||||
<a href="dashboardgeneral.html" data-role="button">${TabSettings}</a>
|
<a href="dashboardgeneral.html" data-role="button">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboardContent">
|
<div class="dashboardContent">
|
||||||
<div class="supporterPromotion" style="display:none;">
|
|
||||||
<a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;">
|
|
||||||
<div>
|
|
||||||
${HeaderSupportTheTeam}
|
|
||||||
</div>
|
|
||||||
<div style="font-weight:normal;font-size:90%;margin-top:5px;">
|
|
||||||
${TextEnjoyBonusFeatures}
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="ui-bar-a welcomeMessage" style="display: none; padding: 2em; border-radius: 10px; margin: 2em 0; font-weight: normal; max-width: 800px;">
|
<div class="ui-bar-a welcomeMessage" style="display: none; padding: 2em; border-radius: 10px; margin: 2em 0; font-weight: normal; max-width: 800px;">
|
||||||
<h1 style="margin-top: 0;" class="tourHeader"></h1>
|
<h1 style="margin-top: 0;" class="tourHeader"></h1>
|
||||||
<p>
|
<p>
|
||||||
|
@ -141,6 +131,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -43,6 +43,11 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<ul data-role="listview" class="ulForm">
|
<ul data-role="listview" class="ulForm">
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="chkEnableThrottle" data-mini="true" />
|
||||||
|
<label for="chkEnableThrottle">${OptionEnableTranscodingThrottle}</label>
|
||||||
|
<div class="fieldDescription">${OptionEnableTranscodingThrottleHelp}</div>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label for="txtTranscodingTempPath">${LabelTranscodingTempPath}</label>
|
<label for="txtTranscodingTempPath">${LabelTranscodingTempPath}</label>
|
||||||
<div style="display: inline-block; width: 92%;">
|
<div style="display: inline-block; width: 92%;">
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div id="episodesPage" data-role="page" class="page libraryPage">
|
<div id="episodesPage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="gameGenresPage" data-role="page" class="page libraryPage listPage">
|
<div id="gameGenresPage" data-role="page" class="page libraryPage listPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html">${TabGameSystems}</a>
|
<a href="gamesystems.html">${TabGameSystems}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabGenres}</a>
|
<a href="#" class="ui-btn-active">${TabGenres}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="gamesPage" data-role="page" class="page libraryPage listPage">
|
<div id="gamesPage" data-role="page" class="page libraryPage listPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabGames}</a>
|
<a href="#" class="ui-btn-active">${TabGames}</a>
|
||||||
<a href="gamesystems.html">${TabGameSystems}</a>
|
<a href="gamesystems.html">${TabGameSystems}</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="gamesRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="game">
|
<div id="gamesRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="game">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="#" class="ui-btn-active">${TabSuggested}</a>
|
<a href="#" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html">Game Systems</a>
|
<a href="gamesystems.html">Game Systems</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="gameStudiosPage" data-role="page" class="page libraryPage listPage">
|
<div id="gameStudiosPage" data-role="page" class="page libraryPage listPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html">${TabGameSystems}</a>
|
<a href="gamesystems.html">${TabGameSystems}</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="gamesystemsPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="gamesystem">
|
<div id="gamesystemsPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="gamesystem">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabGameSystems}</a>
|
<a href="#" class="ui-btn-active">${TabGameSystems}</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
<div id="itemByNameDetailPage" data-role="page" class="page libraryPage itemDetailPage lightBackdropPage">
|
<div id="itemByNameDetailPage" data-role="page" class="page libraryPage itemDetailPage lightBackdropPage">
|
||||||
<div id="movieGenreTabs" class="itemTabs" style="display: none;">
|
<div id="movieGenreTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
@ -20,8 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="moviePeopleTabs" class="itemTabs" style="display: none;">
|
<div id="moviePeopleTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
@ -32,8 +30,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="movieStudioTabs" class="itemTabs" style="display: none;">
|
<div id="movieStudioTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
@ -44,7 +41,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="tvGenreTabs" class="itemTabs" style="display: none;">
|
<div id="tvGenreTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
@ -56,7 +53,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="tvPeopleTabs" class="itemTabs" style="display: none;">
|
<div id="tvPeopleTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
@ -68,7 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="tvStudioTabs" class="itemTabs" style="display: none;">
|
<div id="tvStudioTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
@ -80,7 +77,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="musicGenreTabs" class="itemTabs" style="display: none;">
|
<div id="musicGenreTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
@ -91,7 +88,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="artistTabs" class="itemTabs" style="display: none;">
|
<div id="artistTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
@ -102,7 +99,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="gameGenreTabs" class="itemTabs" style="display: none;">
|
<div id="gameGenreTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html">Game Systems</a>
|
<a href="gamesystems.html">Game Systems</a>
|
||||||
<a href="gamegenres.html" class="ui-btn-active">${TabGenres}</a>
|
<a href="gamegenres.html" class="ui-btn-active">${TabGenres}</a>
|
||||||
|
@ -111,7 +108,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="gameStudioTabs" class="itemTabs" style="display: none;">
|
<div id="gameStudioTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html">Game Systems</a>
|
<a href="gamesystems.html">Game Systems</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -31,8 +31,7 @@
|
||||||
|
|
||||||
<div id="movieTabs" class="itemTabs" style="display: none;">
|
<div id="movieTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html" class="lnkMovies">${TabMovies}</a>
|
<a href="movies.html" class="lnkMovies">${TabMovies}</a>
|
||||||
<a href="movietrailers.html" class="lnkMovieTrailers">${TabTrailers}</a>
|
<a href="movietrailers.html" class="lnkMovieTrailers">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies" class="lnkCollections">${TabCollections}</a>
|
<a href="collections.html?context=movies" class="lnkCollections">${TabCollections}</a>
|
||||||
|
@ -43,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="tvShowsTabs" class="itemTabs" style="display: none;">
|
<div id="tvShowsTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html" class="ui-btn-active">${TabShows}</a>
|
<a href="tvshows.html" class="ui-btn-active">${TabShows}</a>
|
||||||
|
@ -55,7 +54,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="songTabs" class="itemTabs" style="display: none;">
|
<div id="songTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html" class="ui-btn-active">${TabSongs}</a>
|
<a href="songs.html" class="ui-btn-active">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
@ -66,7 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="albumTabs" class="itemTabs" style="display: none;">
|
<div id="albumTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html" class="ui-btn-active">${TabAlbums}</a>
|
<a href="musicalbums.html" class="ui-btn-active">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
@ -77,7 +76,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="musicVideoTabs" class="itemTabs" style="display: none;">
|
<div id="musicVideoTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
@ -88,7 +87,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="gameTabs" class="itemTabs" style="display: none;">
|
<div id="gameTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html" class="ui-btn-active">${TabGames}</a>
|
<a href="games.html" class="ui-btn-active">${TabGames}</a>
|
||||||
<a href="gamesystems.html">Game Systems</a>
|
<a href="gamesystems.html">Game Systems</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
@ -97,7 +96,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="gameSystemTabs" class="itemTabs" style="display: none;">
|
<div id="gameSystemTabs" class="itemTabs" style="display: none;">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="gamesrecommended.html">${TabSuggested}</a>
|
<a href="gamesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="games.html">${TabGames}</a>
|
<a href="games.html">${TabGames}</a>
|
||||||
<a href="gamesystems.html" class="ui-btn-active">${TabGameSystems}</a>
|
<a href="gamesystems.html" class="ui-btn-active">${TabGameSystems}</a>
|
||||||
<a href="gamegenres.html">${TabGenres}</a>
|
<a href="gamegenres.html">${TabGenres}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvChannelPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvChannelPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvChannelsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvChannelsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvGuidePage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvGuidePage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html" class="ui-btn-active">${TabGuide}</a>
|
<a href="livetvguide.html" class="ui-btn-active">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvItemsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvItemsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html" class="ui-btn-active">${TabSuggested}</a>
|
<a href="livetvsuggested.html" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvNewRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvNewRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvProgramPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvProgramPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
<a href="livetvchannels.html" class="ui-btn-active">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvRecordingListPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvRecordingListPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvRecordingsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvRecordingsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
<a href="livetvrecordings.html" class="ui-btn-active">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvSeriesTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvSeriesTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvSeriesTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvSeriesTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
<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="livetvstatus.html" data-role="button">${TabStatus}</a>
|
<a href="livetvstatus.html" data-role="button">${TabStatus}</a>
|
||||||
|
<a href="appservices.html?context=livetv" data-role="button">${TabServices}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
<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">${TabStatus}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabStatus}</a>
|
||||||
|
<a href="appservices.html?context=livetv" data-role="button">${TabServices}</a>
|
||||||
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvSuggestedPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvSuggestedPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="#" class="ui-btn-active">${TabSuggested}</a>
|
<a href="#" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
@ -33,6 +33,14 @@
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
<div id="upcomingSports">
|
||||||
|
<h1 class="listHeader">${HeaderUpcomingSports}</h1>
|
||||||
|
<div class="upcomingSportsItems itemsContainer"></div>
|
||||||
|
<div>
|
||||||
|
<a data-role="button" href="livetvitems.html?type=sports" data-inline="true" data-mini="true">${ButtonMoreItems}</a>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="liveTvTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
<div id="liveTvTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}">
|
||||||
<div class="libraryViewNav">
|
<div class="libraryViewNav">
|
||||||
<a href="livetvsuggested.html">${TabSuggested}</a>
|
<a href="livetvsuggested.html">${TabSuggestions}</a>
|
||||||
<a href="livetvguide.html">${TabGuide}</a>
|
<a href="livetvguide.html">${TabGuide}</a>
|
||||||
<a href="livetvchannels.html">${TabChannels}</a>
|
<a href="livetvchannels.html">${TabChannels}</a>
|
||||||
<a href="livetvrecordings.html">${TabRecordings}</a>
|
<a href="livetvrecordings.html">${TabRecordings}</a>
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="movieGenresPage" data-role="page" class="page libraryPage">
|
<div id="movieGenresPage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="moviePeoplePage" data-role="page" class="page libraryPage">
|
<div id="moviePeoplePage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="moviesPage" data-role="page" class="page libraryPage collectionEditorPage">
|
<div id="moviesPage" data-role="page" class="page libraryPage collectionEditorPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="#" class="ui-btn-active">${TabMovies}</a>
|
<a href="#" class="ui-btn-active">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Emby</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="moviesLatestPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="movie">
|
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
|
||||||
<a href="#" class="ui-btn-active">${TabLatest}</a>
|
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
|
||||||
<a href="moviegenres.html">${TabGenres}</a>
|
|
||||||
<a href="moviepeople.html">${TabPeople}</a>
|
|
||||||
<a href="moviestudios.html">${TabStudios}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="content">
|
|
||||||
|
|
||||||
<div class="ehsContent portraitEhsContent">
|
|
||||||
<div>
|
|
||||||
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestMovies}</h1>
|
|
||||||
<a href="#" class="accentButton categorySyncButton" data-category="Latest"><i class="fa fa-cloud"></i>${ButtonSync}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="recentlyAddedItems" class="itemsContainer">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="moviesRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="movie">
|
<div id="moviesRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="movie">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="#" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
@ -29,6 +28,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestMovies}</h1>
|
||||||
|
<a href="#" class="accentButton categorySyncButton" data-category="Latest"><i class="fa fa-cloud"></i>${ButtonSync}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="recentlyAddedItems" class="itemsContainer">
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="recommendations">
|
<div class="recommendations">
|
||||||
</div>
|
</div>
|
||||||
<div class="noItemsMessage" style="display: none;">
|
<div class="noItemsMessage" style="display: none;">
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="movieStudiosPage" data-role="page" class="page libraryPage">
|
<div id="movieStudiosPage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="movietrailers.html">${TabTrailers}</a>
|
<a href="movietrailers.html">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
@ -22,7 +21,7 @@
|
||||||
<div class="listTopPaging">
|
<div class="listTopPaging">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="items" class="itemsContainer paddedItemsContainer"></div>
|
<div id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
<div id="movieTrailersPage" data-role="page" class="page libraryPage">
|
<div id="movieTrailersPage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="movieslatest.html">${TabLatest}</a>
|
<a href="moviesrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="moviesrecommended.html">${TabSuggested}</a>
|
|
||||||
<a href="movies.html">${TabMovies}</a>
|
<a href="movies.html">${TabMovies}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabTrailers}</a>
|
<a href="#" class="ui-btn-active">${TabTrailers}</a>
|
||||||
<a href="collections.html?context=movies">${TabCollections}</a>
|
<a href="collections.html?context=movies">${TabCollections}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="musicAlbumArtistsPage" data-role="page" class="page libraryPage">
|
<div id="musicAlbumArtistsPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabAlbumArtists}</a>
|
<a href="#" class="ui-btn-active">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="musicAlbumsPage" data-role="page" class="page libraryPage">
|
<div id="musicAlbumsPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabAlbums}</a>
|
<a href="#" class="ui-btn-active">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="musicArtistsPage" data-role="page" class="page libraryPage">
|
<div id="musicArtistsPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="musicGenresPage" data-role="page" class="page libraryPage">
|
<div id="musicGenresPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="musicRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="musicartist">
|
<div id="musicRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="musicartist">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="#" class="ui-btn-active">${TabSuggested}</a>
|
<a href="#" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div id="musicVideosPage" data-role="page" class="page libraryPage">
|
<div id="musicVideosPage" data-role="page" class="page libraryPage">
|
||||||
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="songs.html">${TabSongs}</a>
|
<a href="songs.html">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -76,6 +76,12 @@
|
||||||
<div class="latestItemsList">
|
<div class="latestItemsList">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<div data-role="controlgroup">
|
||||||
|
<label for="chkHidePlayedFromLatest">${OptionHideWatchedContentFromLatestMedia}</label>
|
||||||
|
<input id="chkHidePlayedFromLatest" type="checkbox" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -121,6 +121,7 @@
|
||||||
<option value="420000">420kbps</option>
|
<option value="420000">420kbps</option>
|
||||||
<option value="400000">400kbps</option>
|
<option value="400000">400kbps</option>
|
||||||
<option value="320000">320kbps</option>
|
<option value="320000">320kbps</option>
|
||||||
|
<option value="192000">192kbps</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -265,7 +265,10 @@
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}).on('pagebeforeshow pageinit', "#addPluginPage", function () {
|
|
||||||
|
}).on('pagebeforeshow pageinit pageshow', "#addPluginPage", function () {
|
||||||
|
|
||||||
|
// This needs both events for the helpurl to get done at the right time
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
|
@ -274,12 +277,24 @@
|
||||||
if (context == 'sync') {
|
if (context == 'sync') {
|
||||||
$('.syncTabs', page).show();
|
$('.syncTabs', page).show();
|
||||||
$('.pluginTabs', page).hide();
|
$('.pluginTabs', page).hide();
|
||||||
|
$('.livetvTabs', page).hide();
|
||||||
|
|
||||||
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
|
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
|
||||||
Dashboard.setPageTitle(Globalize.translate('TitleSync'));
|
Dashboard.setPageTitle(Globalize.translate('TitleSync'));
|
||||||
} else {
|
}
|
||||||
|
else if (context == 'livetv') {
|
||||||
|
|
||||||
|
$('.syncTabs', page).hide();
|
||||||
|
$('.pluginTabs', page).hide();
|
||||||
|
$('.livetvTabs', page).show();
|
||||||
|
|
||||||
|
Dashboard.setPageTitle(Globalize.translate('TitleLiveTV'));
|
||||||
|
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Live%20TV');
|
||||||
|
}
|
||||||
|
else {
|
||||||
$('.syncTabs', page).hide();
|
$('.syncTabs', page).hide();
|
||||||
$('.pluginTabs', page).show();
|
$('.pluginTabs', page).show();
|
||||||
|
$('.livetvTabs', page).hide();
|
||||||
|
|
||||||
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Plugins');
|
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Plugins');
|
||||||
Dashboard.setPageTitle(Globalize.translate('TitlePlugins'));
|
Dashboard.setPageTitle(Globalize.translate('TitlePlugins'));
|
||||||
|
|
110
dashboard-ui/scripts/appservices.js
Normal file
110
dashboard-ui/scripts/appservices.js
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
(function ($, document) {
|
||||||
|
|
||||||
|
function reloadList(page) {
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var promise1 = ApiClient.getAvailablePlugins({
|
||||||
|
TargetSystems: 'Server'
|
||||||
|
});
|
||||||
|
|
||||||
|
var promise2 = ApiClient.getInstalledPlugins();
|
||||||
|
|
||||||
|
$.when(promise1, promise2).done(function (response1, response2) {
|
||||||
|
renderInstalled(page, response1[0], response2[0]);
|
||||||
|
renderCatalog(page, response1[0], response2[0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCategories() {
|
||||||
|
|
||||||
|
var context = getParameterByName('context');
|
||||||
|
|
||||||
|
var categories = [];
|
||||||
|
|
||||||
|
if (context == 'sync') {
|
||||||
|
categories.push('Sync');
|
||||||
|
}
|
||||||
|
else if (context == 'livetv') {
|
||||||
|
categories.push('Live TV');
|
||||||
|
}
|
||||||
|
|
||||||
|
return categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderInstalled(page, availablePlugins, installedPlugins) {
|
||||||
|
|
||||||
|
var category = getCategories()[0];
|
||||||
|
|
||||||
|
installedPlugins = installedPlugins.filter(function (i) {
|
||||||
|
|
||||||
|
var catalogEntry = availablePlugins.filter(function (a) {
|
||||||
|
return a.guid == i.Id;
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
return catalogEntry && catalogEntry.category == category;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
PluginsPage.renderPlugins(page, installedPlugins);
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderCatalog(page, availablePlugins, installedPlugins) {
|
||||||
|
|
||||||
|
var categories = getCategories();
|
||||||
|
|
||||||
|
PluginCatalog.renderCatalog({
|
||||||
|
|
||||||
|
catalogElement: $('.catalog', page),
|
||||||
|
availablePlugins: availablePlugins,
|
||||||
|
installedPlugins: installedPlugins,
|
||||||
|
categories: categories,
|
||||||
|
showCategory: false,
|
||||||
|
context: getParameterByName('context'),
|
||||||
|
targetSystem: 'Server'
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).on('pagebeforeshow pageinit pageshow', "#appServicesPage", function () {
|
||||||
|
|
||||||
|
// This needs both events for the helpurl to get done at the right time
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
var context = getParameterByName('context');
|
||||||
|
|
||||||
|
$('.sectionTabs', page).hide();
|
||||||
|
$('.' + context + 'SectionTabs', page).show();
|
||||||
|
|
||||||
|
if (context == 'sync') {
|
||||||
|
Dashboard.setPageTitle(Globalize.translate('TitleSync'));
|
||||||
|
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
|
||||||
|
}
|
||||||
|
else if (context == 'livetv') {
|
||||||
|
Dashboard.setPageTitle(Globalize.translate('TitleLiveTV'));
|
||||||
|
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Live%20TV');
|
||||||
|
}
|
||||||
|
|
||||||
|
}).on('pageshow', "#appServicesPage", function () {
|
||||||
|
|
||||||
|
// This needs both events for the helpurl to get done at the right time
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
reloadList(page);
|
||||||
|
|
||||||
|
var context = getParameterByName('context');
|
||||||
|
|
||||||
|
Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
|
||||||
|
|
||||||
|
if (pluginSecurityInfo.IsMBSupporter || context != 'sync') {
|
||||||
|
$('.syncPromotion', page).hide();
|
||||||
|
} else {
|
||||||
|
$('.syncPromotion', page).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery, document);
|
|
@ -24,12 +24,6 @@
|
||||||
|
|
||||||
Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
|
Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
|
||||||
|
|
||||||
if (pluginSecurityInfo.IsMBSupporter) {
|
|
||||||
$('.supporterPromotion', page).hide();
|
|
||||||
} else {
|
|
||||||
$('.supporterPromotion', page).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
DashboardPage.renderSupporterIcon(page, pluginSecurityInfo);
|
DashboardPage.renderSupporterIcon(page, pluginSecurityInfo);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -625,7 +619,7 @@
|
||||||
|
|
||||||
return "<img src='css/images/clients/mbc.png' />";
|
return "<img src='css/images/clients/mbc.png' />";
|
||||||
}
|
}
|
||||||
if (clientLowered == "media browser theater") {
|
if (clientLowered == "emby theater") {
|
||||||
|
|
||||||
return "<img src='css/images/clients/mb.png' />";
|
return "<img src='css/images/clients/mb.png' />";
|
||||||
}
|
}
|
||||||
|
@ -1288,7 +1282,7 @@ $(document).on('pagebeforeshow', "#dashboardPage", DashboardPage.onPageShow)
|
||||||
$('.tourButtonText', elem).html(Globalize.translate('ButtonTakeTheTourToSeeWhatsNew'));
|
$('.tourButtonText', elem).html(Globalize.translate('ButtonTakeTheTourToSeeWhatsNew'));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$('.tourHeader', elem).html(Globalize.translate('HeaderWelcomeToProjectServerDashboard'));
|
$('.tourHeader', elem).html(Globalize.translate('HeaderWelcomeToProjectServerDashboard'));
|
||||||
$('.tourButtonText', elem).html(Globalize.translate('ButtonTakeTheTour'));
|
$('.tourButtonText', elem).html(Globalize.translate('ButtonTakeTheTour'));
|
||||||
}
|
}
|
||||||
|
@ -1338,4 +1332,26 @@ $(document).on('pagebeforeshow', "#dashboardPage", DashboardPage.onPageShow)
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery, document, window);
|
})(jQuery, document, window);
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
|
||||||
|
$(document).on('pagebeforeshow', ".type-interior", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
|
||||||
|
|
||||||
|
if (!$('.staticSupporterPromotion', page).length) {
|
||||||
|
$('.supporterPromotion', page).remove();
|
||||||
|
|
||||||
|
if (!pluginSecurityInfo.IsMBSupporter) {
|
||||||
|
$('.content-primary', page).append('<div class="supporterPromotion"><a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;"><div>' + Globalize.translate('HeaderSupportTheTeam') + '</div><div style="font-weight:normal;font-size:90%;margin-top:5px;">' + Globalize.translate('TextEnjoyBonusFeatures') + '</div></a></div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})();
|
|
@ -3,7 +3,8 @@
|
||||||
function loadPage(page, config) {
|
function loadPage(page, config) {
|
||||||
|
|
||||||
$('#chkEnableDebugEncodingLogging', page).checked(config.EnableDebugLogging).checkboxradio('refresh');
|
$('#chkEnableDebugEncodingLogging', page).checked(config.EnableDebugLogging).checkboxradio('refresh');
|
||||||
|
$('#chkEnableThrottle', page).checked(config.EnableThrottling).checkboxradio('refresh');
|
||||||
|
|
||||||
$('.radioEncodingQuality', page).each(function() {
|
$('.radioEncodingQuality', page).each(function() {
|
||||||
|
|
||||||
this.checked = config.EncodingQuality == this.value;
|
this.checked = config.EncodingQuality == this.value;
|
||||||
|
@ -67,6 +68,7 @@
|
||||||
config.EncodingQuality = $('.radioEncodingQuality:checked', form).val();
|
config.EncodingQuality = $('.radioEncodingQuality:checked', form).val();
|
||||||
config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val();
|
config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val();
|
||||||
config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val();
|
config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val();
|
||||||
|
config.EnableThrottling = $('#chkEnableThrottle', form).checked();
|
||||||
|
|
||||||
ApiClient.updateNamedConfiguration("encoding", config).done(Dashboard.processServerConfigurationUpdateResult);
|
ApiClient.updateNamedConfiguration("encoding", config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
SortBy: "SortName",
|
SortBy: "SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated",
|
Fields: "DateCreated,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
MediaTypes: "Game",
|
MediaTypes: "Game",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "UserData",
|
Fields: "ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,6 @@
|
||||||
|
|
||||||
Limit: 24,
|
Limit: 24,
|
||||||
Fields: "PrimaryImageAspectRatio,SyncInfo",
|
Fields: "PrimaryImageAspectRatio,SyncInfo",
|
||||||
IsPlayed: false,
|
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
};
|
};
|
||||||
|
@ -470,7 +469,7 @@
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
return 'smalllibrarytiles-automobile';
|
return 'librarytiles-automobile';
|
||||||
case 1:
|
case 1:
|
||||||
return 'resume';
|
return 'resume';
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -477,7 +477,7 @@
|
||||||
|
|
||||||
if (context != 'folders') {
|
if (context != 'folders') {
|
||||||
if (item.CollectionType == 'movies') {
|
if (item.CollectionType == 'movies') {
|
||||||
return 'movieslatest.html?topParentId=' + item.Id;
|
return 'moviesrecommended.html?topParentId=' + item.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.CollectionType == 'boxsets') {
|
if (item.CollectionType == 'boxsets') {
|
||||||
|
@ -1257,10 +1257,6 @@
|
||||||
|
|
||||||
if (options.showChildCountIndicator && item.ChildCount) {
|
if (options.showChildCountIndicator && item.ChildCount) {
|
||||||
cssClass += ' groupedCard';
|
cssClass += ' groupedCard';
|
||||||
|
|
||||||
if (item.Type == 'Series') {
|
|
||||||
cssClass += ' unplayedGroupings';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.showTitle && !options.overlayText) {
|
if (options.showTitle && !options.overlayText) {
|
||||||
|
|
|
@ -512,10 +512,6 @@
|
||||||
GroupItems: false
|
GroupItems: false
|
||||||
};
|
};
|
||||||
|
|
||||||
if ($(card).hasClass('unplayedGroupings')) {
|
|
||||||
options.IsPlayed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var promise2 = ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options));
|
var promise2 = ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options));
|
||||||
|
|
||||||
$.when(promise1, promise2).done(function (response1, response2) {
|
$.when(promise1, promise2).done(function (response1, response2) {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// The base query options
|
// The base query options
|
||||||
var query = {
|
var query = {
|
||||||
UserId: Dashboard.getCurrentUserId(),
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
SortBy: "PremiereDate,SortName",
|
SortBy: "StartDate,SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
@ -19,19 +19,6 @@
|
||||||
|
|
||||||
function updateFilterControls(page) {
|
function updateFilterControls(page) {
|
||||||
|
|
||||||
// Reset form values using the last used query
|
|
||||||
$('.radioSortBy', page).each(function () {
|
|
||||||
|
|
||||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
|
||||||
|
|
||||||
}).checkboxradio('refresh');
|
|
||||||
|
|
||||||
$('.radioSortOrder', page).each(function () {
|
|
||||||
|
|
||||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
|
||||||
|
|
||||||
}).checkboxradio('refresh');
|
|
||||||
|
|
||||||
$('#selectView', page).val(view).selectmenu('refresh');
|
$('#selectView', page).val(view).selectmenu('refresh');
|
||||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||||
$('#selectPageSize', page).val(query.Limit).selectmenu('refresh');
|
$('#selectPageSize', page).val(query.Limit).selectmenu('refresh');
|
||||||
|
@ -58,7 +45,6 @@
|
||||||
$('.listTopPaging', page).html(pagingHtml).trigger('create');
|
$('.listTopPaging', page).html(pagingHtml).trigger('create');
|
||||||
|
|
||||||
updateFilterControls(page);
|
updateFilterControls(page);
|
||||||
var trigger = false;
|
|
||||||
|
|
||||||
if (view == "Poster") {
|
if (view == "Poster") {
|
||||||
html = LibraryBrowser.getPosterViewHtml({
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
@ -112,18 +98,6 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
$('.radioSortBy', this).on('click', function () {
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.SortBy = this.getAttribute('data-sortby');
|
|
||||||
reloadItems(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.radioSortOrder', this).on('click', function () {
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.SortOrder = this.getAttribute('data-sortorder');
|
|
||||||
reloadItems(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#selectView', this).on('change', function () {
|
$('#selectView', this).on('change', function () {
|
||||||
|
|
||||||
view = this.value;
|
view = this.value;
|
||||||
|
@ -179,6 +153,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
query.IsMovie = getParameterByName('type') == 'movies' ? true : null;
|
query.IsMovie = getParameterByName('type') == 'movies' ? true : null;
|
||||||
|
query.IsSports = getParameterByName('type') == 'sports' ? true : null;
|
||||||
|
|
||||||
var viewkey = getSavedQueryKey();
|
var viewkey = getSavedQueryKey();
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,8 @@
|
||||||
IsAiring: false,
|
IsAiring: false,
|
||||||
HasAired: false,
|
HasAired: false,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
IsMovie: false
|
IsMovie: false,
|
||||||
|
IsSports: false
|
||||||
|
|
||||||
}).done(function (result) {
|
}).done(function (result) {
|
||||||
|
|
||||||
|
@ -73,6 +74,28 @@
|
||||||
|
|
||||||
$('.upcomingTvMovieItems', page).html(html).lazyChildren();
|
$('.upcomingTvMovieItems', page).html(html).lazyChildren();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ApiClient.getLiveTvRecommendedPrograms({
|
||||||
|
|
||||||
|
userId: Dashboard.getCurrentUserId(),
|
||||||
|
IsAiring: false,
|
||||||
|
HasAired: false,
|
||||||
|
limit: 10,
|
||||||
|
IsSports: true
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
var html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
shape: "auto",
|
||||||
|
showTitle: true,
|
||||||
|
coverImage: true,
|
||||||
|
overlayText: false,
|
||||||
|
lazy: true
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.upcomingSportsItems', page).html(html).lazyChildren();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('pagebeforeshow', "#liveTvSuggestedPage", function () {
|
$(document).on('pagebeforeshow', "#liveTvSuggestedPage", function () {
|
||||||
|
|
|
@ -53,13 +53,21 @@
|
||||||
|
|
||||||
}).on('playbackstop.mediacontroller', function (e, state) {
|
}).on('playbackstop.mediacontroller', function (e, state) {
|
||||||
|
|
||||||
ApiClient.reportPlaybackStopped({
|
var stopInfo = {
|
||||||
|
|
||||||
itemId: state.NowPlayingItem.Id,
|
itemId: state.NowPlayingItem.Id,
|
||||||
mediaSourceId: state.PlayState.MediaSourceId,
|
mediaSourceId: state.PlayState.MediaSourceId,
|
||||||
positionTicks: state.PlayState.PositionTicks
|
positionTicks: state.PlayState.PositionTicks
|
||||||
|
};
|
||||||
|
|
||||||
});
|
if (state.PlayState.LiveStreamId) {
|
||||||
|
stopInfo.LiveStreamId = state.PlayState.LiveStreamId;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state.PlayState.PlaySessionId) {
|
||||||
|
stopInfo.PlaySessionId = state.PlayState.PlaySessionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.reportPlaybackStopped(stopInfo);
|
||||||
|
|
||||||
}).on('positionchange.mediacontroller', function (e, state) {
|
}).on('positionchange.mediacontroller', function (e, state) {
|
||||||
|
|
||||||
|
|
|
@ -143,10 +143,6 @@
|
||||||
self.changeStream(self.getCurrentTicks(), { AudioStreamIndex: index });
|
self.changeStream(self.getCurrentTicks(), { AudioStreamIndex: index });
|
||||||
};
|
};
|
||||||
|
|
||||||
self.supportsSubtitleStreamExternally = function (stream) {
|
|
||||||
return stream.Type == 'Subtitle' && stream.IsTextSubtitleStream && stream.SupportsExternalStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
self.setSubtitleStreamIndex = function (index) {
|
self.setSubtitleStreamIndex = function (index) {
|
||||||
|
|
||||||
if (!self.supportsTextTracks()) {
|
if (!self.supportsTextTracks()) {
|
||||||
|
@ -166,7 +162,7 @@
|
||||||
|
|
||||||
if (currentStream && !newStream) {
|
if (currentStream && !newStream) {
|
||||||
|
|
||||||
if (!self.supportsSubtitleStreamExternally(currentStream)) {
|
if (currentStream.DeliveryMethod != 'External') {
|
||||||
|
|
||||||
// Need to change the transcoded stream to remove subs
|
// Need to change the transcoded stream to remove subs
|
||||||
self.changeStream(self.getCurrentTicks(), { SubtitleStreamIndex: -1 });
|
self.changeStream(self.getCurrentTicks(), { SubtitleStreamIndex: -1 });
|
||||||
|
@ -174,7 +170,7 @@
|
||||||
}
|
}
|
||||||
else if (!currentStream && newStream) {
|
else if (!currentStream && newStream) {
|
||||||
|
|
||||||
if (self.supportsSubtitleStreamExternally(newStream)) {
|
if (newStream.DeliveryMethod == 'External') {
|
||||||
selectedTrackElementIndex = index;
|
selectedTrackElementIndex = index;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -184,10 +180,10 @@
|
||||||
}
|
}
|
||||||
else if (currentStream && newStream) {
|
else if (currentStream && newStream) {
|
||||||
|
|
||||||
if (self.supportsSubtitleStreamExternally(newStream)) {
|
if (newStream.DeliveryMethod == 'External') {
|
||||||
selectedTrackElementIndex = index;
|
selectedTrackElementIndex = index;
|
||||||
|
|
||||||
if (!self.supportsSubtitleStreamExternally(currentStream)) {
|
if (currentStream.DeliveryMethod != 'External') {
|
||||||
self.changeStream(self.getCurrentTicks(), { SubtitleStreamIndex: -1 });
|
self.changeStream(self.getCurrentTicks(), { SubtitleStreamIndex: -1 });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -207,7 +203,7 @@
|
||||||
var modes = ['disabled', 'showing', 'hidden'];
|
var modes = ['disabled', 'showing', 'hidden'];
|
||||||
|
|
||||||
var textStreams = self.currentMediaSource.MediaStreams.filter(function (s) {
|
var textStreams = self.currentMediaSource.MediaStreams.filter(function (s) {
|
||||||
return self.supportsSubtitleStreamExternally(s);
|
return s.DeliveryMethod == 'External';
|
||||||
});
|
});
|
||||||
|
|
||||||
var newStream = textStreams.filter(function (s) {
|
var newStream = textStreams.filter(function (s) {
|
||||||
|
@ -428,14 +424,12 @@
|
||||||
|
|
||||||
if (!$(this).hasClass('selectedMediaPopupOption')) {
|
if (!$(this).hasClass('selectedMediaPopupOption')) {
|
||||||
|
|
||||||
var maxWidth = parseInt(this.getAttribute('data-maxwidth'));
|
|
||||||
var bitrate = parseInt(this.getAttribute('data-bitrate'));
|
var bitrate = parseInt(this.getAttribute('data-bitrate'));
|
||||||
|
|
||||||
AppSettings.maxStreamingBitrate(bitrate);
|
AppSettings.maxStreamingBitrate(bitrate);
|
||||||
|
|
||||||
self.changeStream(self.getCurrentTicks(), {
|
self.changeStream(self.getCurrentTicks(), {
|
||||||
|
|
||||||
MaxWidth: maxWidth,
|
|
||||||
Bitrate: bitrate
|
Bitrate: bitrate
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -796,7 +790,12 @@
|
||||||
var currentSrc = self.getCurrentSrc(self.currentMediaElement).toLowerCase();
|
var currentSrc = self.getCurrentSrc(self.currentMediaElement).toLowerCase();
|
||||||
var isStatic = currentSrc.indexOf('static=true') != -1;
|
var isStatic = currentSrc.indexOf('static=true') != -1;
|
||||||
|
|
||||||
var options = getVideoQualityOptions(self.currentMediaSource.MediaStreams);
|
var videoStream = self.currentMediaSource.MediaStreams.filter(function (stream) {
|
||||||
|
return stream.Type == "Video";
|
||||||
|
})[0];
|
||||||
|
var videoWidth = videoStream ? videoStream.Width : null;
|
||||||
|
|
||||||
|
var options = self.getVideoQualityOptions(videoWidth);
|
||||||
|
|
||||||
if (isStatic) {
|
if (isStatic) {
|
||||||
options[0].name = "Direct";
|
options[0].name = "Direct";
|
||||||
|
@ -819,7 +818,7 @@
|
||||||
cssClass += ' selectedMediaPopupOption';
|
cssClass += ' selectedMediaPopupOption';
|
||||||
}
|
}
|
||||||
|
|
||||||
var optionHtml = '<li><a data-maxwidth="' + option.maxWidth + '" data-bitrate="' + option.bitrate + '" class="' + cssClass + '" href="#">';
|
var optionHtml = '<li><a data-bitrate="' + option.bitrate + '" class="' + cssClass + '" href="#">';
|
||||||
|
|
||||||
optionHtml += '<p style="margin:0;">';
|
optionHtml += '<p style="margin:0;">';
|
||||||
|
|
||||||
|
@ -845,85 +844,6 @@
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVideoQualityOptions(mediaStreams) {
|
|
||||||
|
|
||||||
var videoStream = mediaStreams.filter(function (stream) {
|
|
||||||
return stream.Type == "Video";
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
var bitrateSetting = AppSettings.maxStreamingBitrate();
|
|
||||||
|
|
||||||
var maxAllowedWidth = self.getMaxPlayableWidth();
|
|
||||||
|
|
||||||
var options = [];
|
|
||||||
|
|
||||||
// We have media info
|
|
||||||
if (videoStream && videoStream.Width) {
|
|
||||||
|
|
||||||
maxAllowedWidth = videoStream.Width;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Some 1080- videos are reported as 1912?
|
|
||||||
if (maxAllowedWidth >= 1900) {
|
|
||||||
options.push({ name: '1080p - 30Mbps', maxWidth: 1920, bitrate: 30000000 });
|
|
||||||
options.push({ name: '1080p - 25Mbps', maxWidth: 1920, bitrate: 25000000 });
|
|
||||||
options.push({ name: '1080p - 20Mbps', maxWidth: 1920, bitrate: 20000000 });
|
|
||||||
options.push({ name: '1080p - 15Mbps', maxWidth: 1920, bitrate: 15000000 });
|
|
||||||
options.push({ name: '1080p - 10Mbps', maxWidth: 1920, bitrate: 10000000 });
|
|
||||||
options.push({ name: '1080p - 8Mbps', maxWidth: 1920, bitrate: 8000000 });
|
|
||||||
options.push({ name: '1080p - 6Mbps', maxWidth: 1920, bitrate: 6000000 });
|
|
||||||
options.push({ name: '1080p - 5Mbps', maxWidth: 1920, bitrate: 5000000 });
|
|
||||||
}
|
|
||||||
else if (maxAllowedWidth >= 1260) {
|
|
||||||
options.push({ name: '720p - 10Mbps', maxWidth: 1280, bitrate: 10000000 });
|
|
||||||
options.push({ name: '720p - 8Mbps', maxWidth: 1280, bitrate: 8000000 });
|
|
||||||
options.push({ name: '720p - 6Mbps', maxWidth: 1280, bitrate: 6000000 });
|
|
||||||
options.push({ name: '720p - 5Mbps', maxWidth: 1280, bitrate: 5000000 });
|
|
||||||
}
|
|
||||||
else if (maxAllowedWidth >= 460) {
|
|
||||||
options.push({ name: '480p - 4Mbps', maxWidth: 720, bitrate: 4000000 });
|
|
||||||
options.push({ name: '480p - 3Mbps', maxWidth: 720, bitrate: 3000000 });
|
|
||||||
options.push({ name: '480p - 2.5Mbps', maxWidth: 720, bitrate: 2500000 });
|
|
||||||
options.push({ name: '480p - 2Mbps', maxWidth: 720, bitrate: 2000000 });
|
|
||||||
options.push({ name: '480p - 1.5Mbps', maxWidth: 720, bitrate: 1500000 });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (maxAllowedWidth >= 1260) {
|
|
||||||
options.push({ name: '720p - 4Mbps', maxWidth: 1280, bitrate: 4000000 });
|
|
||||||
options.push({ name: '720p - 3Mbps', maxWidth: 1280, bitrate: 3000000 });
|
|
||||||
options.push({ name: '720p - 2Mbps', maxWidth: 1280, bitrate: 2000000 });
|
|
||||||
|
|
||||||
// The extra 1 is because they're keyed off the bitrate value
|
|
||||||
options.push({ name: '720p - 1Mbps', maxWidth: 1280, bitrate: 1000001 });
|
|
||||||
}
|
|
||||||
|
|
||||||
options.push({ name: '480p - 1.0Mbps', maxWidth: 720, bitrate: 1000000 });
|
|
||||||
options.push({ name: '480p - 720kbps', maxWidth: 720, bitrate: 720000 });
|
|
||||||
options.push({ name: '480p - 420kbps', maxWidth: 720, bitrate: 420000 });
|
|
||||||
options.push({ name: '360p', maxWidth: 640, bitrate: 400000 });
|
|
||||||
options.push({ name: '240p', maxWidth: 426, bitrate: 320000 });
|
|
||||||
|
|
||||||
var i, length, option;
|
|
||||||
var selectedIndex = -1;
|
|
||||||
for (i = 0, length = options.length; i < length; i++) {
|
|
||||||
|
|
||||||
option = options[i];
|
|
||||||
|
|
||||||
if (selectedIndex == -1 && option.bitrate <= bitrateSetting) {
|
|
||||||
selectedIndex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (selectedIndex == -1) {
|
|
||||||
|
|
||||||
selectedIndex = options.length - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
options[selectedIndex].selected = true;
|
|
||||||
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
function bindEventsForPlayback() {
|
function bindEventsForPlayback() {
|
||||||
|
|
||||||
var hideElementsOnIdle = !$.browser.mobile;
|
var hideElementsOnIdle = !$.browser.mobile;
|
||||||
|
@ -1007,101 +927,20 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.playVideo = function (playbackInfo, item, mediaSource, startPosition) {
|
self.playVideo = function (item, mediaSource, startPosition) {
|
||||||
|
|
||||||
|
var streamInfo = self.createStreamInfo('video', item, mediaSource, startPosition);
|
||||||
|
|
||||||
|
var videoUrl = streamInfo.url;
|
||||||
|
var contentType = streamInfo.contentType;
|
||||||
|
var startPositionInSeekParam = streamInfo.startPositionInSeekParam;
|
||||||
|
self.startTimeTicksOffset = streamInfo.startTimeTicksOffset;
|
||||||
|
|
||||||
var mediaStreams = mediaSource.MediaStreams || [];
|
var mediaStreams = mediaSource.MediaStreams || [];
|
||||||
|
|
||||||
var subtitleStreams = mediaStreams.filter(function (s) {
|
var subtitleStreams = mediaStreams.filter(function (s) {
|
||||||
return s.Type == 'Subtitle';
|
return s.Type == 'Subtitle';
|
||||||
});
|
});
|
||||||
|
|
||||||
var selectedSubtitleStream = subtitleStreams.filter(function (s) {
|
|
||||||
return s.Index == mediaSource.DefaultSubtitleStreamIndex;
|
|
||||||
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
var baseParams = {
|
|
||||||
audioChannels: 2,
|
|
||||||
StartTimeTicks: startPosition,
|
|
||||||
AudioStreamIndex: mediaSource.DefaultAudioStreamIndex,
|
|
||||||
deviceId: ApiClient.deviceId(),
|
|
||||||
Static: false,
|
|
||||||
mediaSourceId: mediaSource.Id,
|
|
||||||
api_key: ApiClient.accessToken(),
|
|
||||||
StreamId: playbackInfo.StreamId
|
|
||||||
};
|
|
||||||
|
|
||||||
if (selectedSubtitleStream && (!self.supportsSubtitleStreamExternally(selectedSubtitleStream) || !self.supportsTextTracks())) {
|
|
||||||
baseParams.SubtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
var mp4Quality = getVideoQualityOptions(mediaStreams).filter(function (opt) {
|
|
||||||
return opt.selected;
|
|
||||||
})[0];
|
|
||||||
mp4Quality = $.extend(mp4Quality, self.getFinalVideoParams(mediaSource, mp4Quality.maxWidth, mp4Quality.bitrate, baseParams.AudioStreamIndex, baseParams.SubtitleStreamIndex, '.mp4'));
|
|
||||||
|
|
||||||
var webmQuality = getVideoQualityOptions(mediaStreams).filter(function (opt) {
|
|
||||||
return opt.selected;
|
|
||||||
})[0];
|
|
||||||
webmQuality = $.extend(webmQuality, self.getFinalVideoParams(mediaSource, webmQuality.maxWidth, webmQuality.bitrate, baseParams.AudioStreamIndex, baseParams.SubtitleStreamIndex, '.webm'));
|
|
||||||
|
|
||||||
var m3U8Quality = getVideoQualityOptions(mediaStreams).filter(function (opt) {
|
|
||||||
return opt.selected;
|
|
||||||
})[0];
|
|
||||||
m3U8Quality = $.extend(m3U8Quality, self.getFinalVideoParams(mediaSource, mp4Quality.maxWidth, mp4Quality.bitrate, baseParams.AudioStreamIndex, baseParams.SubtitleStreamIndex, '.mp4'));
|
|
||||||
|
|
||||||
var isStatic = mp4Quality.isStatic;
|
|
||||||
|
|
||||||
self.startTimeTicksOffset = isStatic ? 0 : startPosition || 0;
|
|
||||||
|
|
||||||
var startPositionInSeekParam = startPosition ? (startPosition / 10000000) : 0;
|
|
||||||
var seekParam = startPositionInSeekParam ? '#t=' + startPositionInSeekParam : '';
|
|
||||||
|
|
||||||
var mp4VideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.mp4', $.extend({}, baseParams, {
|
|
||||||
Static: isStatic,
|
|
||||||
maxWidth: mp4Quality.maxWidth,
|
|
||||||
videoBitrate: mp4Quality.videoBitrate,
|
|
||||||
audioBitrate: mp4Quality.audioBitrate,
|
|
||||||
VideoCodec: mp4Quality.videoCodec,
|
|
||||||
AudioCodec: mp4Quality.audioCodec,
|
|
||||||
profile: 'high',
|
|
||||||
//EnableAutoStreamCopy: false,
|
|
||||||
level: '41'
|
|
||||||
}));
|
|
||||||
|
|
||||||
if (isStatic && mediaSource.Protocol == 'Http' && !mediaSource.RequiredHttpHeaders.length) {
|
|
||||||
mp4VideoUrl = mediaSource.Path;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isStatic) {
|
|
||||||
mp4VideoUrl += seekParam;
|
|
||||||
} else {
|
|
||||||
mp4VideoUrl += "&StreamId=" + new Date().getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
var webmVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.webm', $.extend({}, baseParams, {
|
|
||||||
VideoCodec: 'vpx',
|
|
||||||
AudioCodec: 'Vorbis',
|
|
||||||
maxWidth: webmQuality.maxWidth,
|
|
||||||
videoBitrate: webmQuality.videoBitrate,
|
|
||||||
audioBitrate: webmQuality.audioBitrate,
|
|
||||||
EnableAutoStreamCopy: false,
|
|
||||||
StreamId: new Date().getTime()
|
|
||||||
}));
|
|
||||||
|
|
||||||
var hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
|
|
||||||
maxWidth: m3U8Quality.maxWidth,
|
|
||||||
videoBitrate: m3U8Quality.videoBitrate,
|
|
||||||
audioBitrate: m3U8Quality.audioBitrate,
|
|
||||||
VideoCodec: m3U8Quality.videoCodec,
|
|
||||||
AudioCodec: m3U8Quality.audioCodec,
|
|
||||||
profile: 'high',
|
|
||||||
level: '41',
|
|
||||||
StartTimeTicks: 0,
|
|
||||||
StreamId: new Date().getTime()
|
|
||||||
|
|
||||||
})) + seekParam;
|
|
||||||
|
|
||||||
// Get Video Poster (Code from librarybrowser.js)
|
// Get Video Poster (Code from librarybrowser.js)
|
||||||
var screenWidth = Math.max(screen.height, screen.width),
|
var screenWidth = Math.max(screen.height, screen.width),
|
||||||
posterCode = '';
|
posterCode = '';
|
||||||
|
@ -1136,52 +975,26 @@
|
||||||
|
|
||||||
// Can't autoplay in these browsers so we need to use the full controls
|
// Can't autoplay in these browsers so we need to use the full controls
|
||||||
if (requiresNativeControls) {
|
if (requiresNativeControls) {
|
||||||
html += '<video class="itemVideo" id="itemVideo" preload="none" autoplay="autoplay" controls="controls"' + posterCode + '>';
|
html += '<video class="itemVideo" id="itemVideo" preload="none" autoplay="autoplay" crossorigin="anonymous" controls="controls"' + posterCode + '>';
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Chrome 35 won't play with preload none
|
// Chrome 35 won't play with preload none
|
||||||
html += '<video class="itemVideo" id="itemVideo" preload="metadata" autoplay' + posterCode + '>';
|
html += '<video class="itemVideo" id="itemVideo" preload="metadata" crossorigin="anonymous" autoplay' + posterCode + '>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isStatic) {
|
html += '<source type="' + contentType + '" src="' + videoUrl + '" />';
|
||||||
// HLS must be at the top for safari
|
|
||||||
html += '<source type="application/x-mpegURL" src="' + hlsVideoUrl + '" />';
|
|
||||||
}
|
|
||||||
|
|
||||||
var mp4BeforeWebm = self.getVideoTranscodingExtension() != '.webm';
|
var textStreams = subtitleStreams.filter(function (s) {
|
||||||
|
return s.DeliveryMethod == 'External';
|
||||||
|
});
|
||||||
|
|
||||||
if (mp4BeforeWebm) {
|
for (var i = 0, length = textStreams.length; i < length; i++) {
|
||||||
html += '<source type="video/mp4" src="' + mp4VideoUrl + '" />';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Have to put webm ahead of mp4 because it will play in fast forward in chrome
|
var textStream = textStreams[i];
|
||||||
// And firefox doesn't like fragmented mp4
|
var textStreamUrl = !textStream.IsExternalUrl ? ApiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl;
|
||||||
if (!isStatic) {
|
var defaultAttribute = textStream.Index == mediaSource.DefaultSubtitleStreamIndex ? ' default' : '';
|
||||||
|
|
||||||
html += '<source type="video/webm" src="' + webmVideoUrl + '" />';
|
html += '<track kind="subtitles" src="' + textStreamUrl + '" srclang="' + (textStream.Language || 'und') + '"' + defaultAttribute + '></track>';
|
||||||
}
|
|
||||||
|
|
||||||
if (!mp4BeforeWebm) {
|
|
||||||
html += '<source type="video/mp4" src="' + mp4VideoUrl + '" />';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self.supportsTextTracks()) {
|
|
||||||
var textStreams = subtitleStreams.filter(function (s) {
|
|
||||||
return self.supportsSubtitleStreamExternally(s);
|
|
||||||
});
|
|
||||||
|
|
||||||
for (var i = 0, length = textStreams.length; i < length; i++) {
|
|
||||||
|
|
||||||
var textStream = textStreams[i];
|
|
||||||
var textStreamUrl = ApiClient.getUrl('Videos/' + item.Id + '/' + mediaSource.Id + '/Subtitles/' + textStream.Index + '/Stream.vtt', {
|
|
||||||
startPositionTicks: (startPosition || 0),
|
|
||||||
api_key: ApiClient.accessToken()
|
|
||||||
});
|
|
||||||
|
|
||||||
var defaultAttribute = textStream.Index == mediaSource.DefaultSubtitleStreamIndex ? ' default' : '';
|
|
||||||
|
|
||||||
html += '<track kind="subtitles" src="' + textStreamUrl + '" srclang="' + (textStream.Language || 'und') + '"' + defaultAttribute + '></track>';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</video>';
|
html += '</video>';
|
||||||
|
@ -1303,8 +1116,6 @@
|
||||||
|
|
||||||
self.stop();
|
self.stop();
|
||||||
|
|
||||||
console.dir(this);
|
|
||||||
|
|
||||||
var errorCode = this.error ? this.error.code : '';
|
var errorCode = this.error ? this.error.code : '';
|
||||||
console.log('Html5 Video error code: ' + errorCode);
|
console.log('Html5 Video error code: ' + errorCode);
|
||||||
|
|
||||||
|
@ -1329,7 +1140,6 @@
|
||||||
message: errorMsg
|
message: errorMsg
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}).on("click.mediaplayerevent", function (e) {
|
}).on("click.mediaplayerevent", function (e) {
|
||||||
|
|
||||||
if (this.paused) {
|
if (this.paused) {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -74,6 +74,17 @@
|
||||||
lazy: true
|
lazy: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else if (view == "Thumb") {
|
||||||
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
shape: "backdrop",
|
||||||
|
context: 'movies',
|
||||||
|
showTitle: true,
|
||||||
|
centerText: true,
|
||||||
|
lazy: true,
|
||||||
|
preferThumb: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$('.noItemsMessage', page).hide();
|
$('.noItemsMessage', page).hide();
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Movie",
|
IncludeItemTypes: "Movie",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated,SyncInfo",
|
Fields: "DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Movie,Trailer",
|
IncludeItemTypes: "Movie,Trailer",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated",
|
Fields: "DateCreated,ItemCounts",
|
||||||
PersonTypes: "",
|
PersonTypes: "",
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
Limit: 100
|
Limit: 100
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
(function ($, document) {
|
|
||||||
|
|
||||||
$(document).on('pagebeforeshow', "#moviesLatestPage", function () {
|
|
||||||
|
|
||||||
var parentId = LibraryMenu.getTopParentId();
|
|
||||||
var userId = Dashboard.getCurrentUserId();
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
var options = {
|
|
||||||
|
|
||||||
IncludeItemTypes: "Movie",
|
|
||||||
Limit: 30,
|
|
||||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
|
||||||
ParentId: parentId,
|
|
||||||
ImageTypeLimit: 1,
|
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
|
||||||
};
|
|
||||||
|
|
||||||
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).done(function (items) {
|
|
||||||
|
|
||||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
|
||||||
items: items,
|
|
||||||
lazy: true,
|
|
||||||
shape: 'portrait',
|
|
||||||
overlayText: false
|
|
||||||
|
|
||||||
})).lazyChildren().trigger('create');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
})(jQuery, document);
|
|
|
@ -1,5 +1,29 @@
|
||||||
(function ($, document) {
|
(function ($, document) {
|
||||||
|
|
||||||
|
function loadLatest(page, userId, parentId) {
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
|
||||||
|
IncludeItemTypes: "Movie",
|
||||||
|
Limit: 20,
|
||||||
|
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
||||||
|
ParentId: parentId,
|
||||||
|
ImageTypeLimit: 1,
|
||||||
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
|
};
|
||||||
|
|
||||||
|
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).done(function (items) {
|
||||||
|
|
||||||
|
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: items,
|
||||||
|
lazy: true,
|
||||||
|
shape: 'portrait',
|
||||||
|
overlayText: false
|
||||||
|
|
||||||
|
})).lazyChildren().trigger('create');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function getRecommendationHtml(recommendation) {
|
function getRecommendationHtml(recommendation) {
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
@ -51,6 +75,7 @@
|
||||||
var screenWidth = $(window).width();
|
var screenWidth = $(window).width();
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
var userId = Dashboard.getCurrentUserId();
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
|
|
||||||
|
@ -58,7 +83,7 @@
|
||||||
SortOrder: "Descending",
|
SortOrder: "Descending",
|
||||||
IncludeItemTypes: "Movie",
|
IncludeItemTypes: "Movie",
|
||||||
Filters: "IsResumable",
|
Filters: "IsResumable",
|
||||||
Limit: screenWidth >= 1920 ? 12 : (screenWidth >= 1600 ? 8 : 6),
|
Limit: screenWidth >= 1920 ? 6 : (screenWidth >= 1600 ? 4 : 3),
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
||||||
CollapseBoxSetItems: false,
|
CollapseBoxSetItems: false,
|
||||||
|
@ -67,7 +92,7 @@
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
ApiClient.getItems(userId, options).done(function (result) {
|
||||||
|
|
||||||
if (result.Items.length) {
|
if (result.Items.length) {
|
||||||
$('#resumableSection', page).show();
|
$('#resumableSection', page).show();
|
||||||
|
@ -87,9 +112,11 @@
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
loadLatest(page, userId, parentId);
|
||||||
|
|
||||||
var url = ApiClient.getUrl("Movies/Recommendations", {
|
var url = ApiClient.getUrl("Movies/Recommendations", {
|
||||||
|
|
||||||
userId: Dashboard.getCurrentUserId(),
|
userId: userId,
|
||||||
categoryLimit: screenWidth >= 1200 ? 4 : 3,
|
categoryLimit: screenWidth >= 1200 ? 4 : 3,
|
||||||
ItemLimit: screenWidth >= 1920 ? 10 : (screenWidth >= 1600 ? 8 : (screenWidth >= 1200 ? 7 : 6)),
|
ItemLimit: screenWidth >= 1920 ? 10 : (screenWidth >= 1600 ? 8 : (screenWidth >= 1200 ? 7 : 6)),
|
||||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
Fields: "PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Movie",
|
IncludeItemTypes: "Movie",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated",
|
Fields: "DateCreated,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
SortBy: "SortName",
|
SortBy: "SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo",
|
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
SortBy: "SortName",
|
SortBy: "SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo",
|
Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Audio,MusicVideo",
|
IncludeItemTypes: "Audio,MusicVideo",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated,SyncInfo",
|
Fields: "DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,8 @@
|
||||||
$('#chkDisplayCollectionView', page).checked(user.Configuration.DisplayCollectionsView || false).checkboxradio("refresh");
|
$('#chkDisplayCollectionView', page).checked(user.Configuration.DisplayCollectionsView || false).checkboxradio("refresh");
|
||||||
$('#chkDisplayFolderView', page).checked(user.Configuration.DisplayFoldersView || false).checkboxradio("refresh");
|
$('#chkDisplayFolderView', page).checked(user.Configuration.DisplayFoldersView || false).checkboxradio("refresh");
|
||||||
|
|
||||||
|
$('#chkHidePlayedFromLatest', page).checked(user.Configuration.HidePlayedInLatest || false).checkboxradio("refresh");
|
||||||
|
|
||||||
var promise1 = ApiClient.getItems(user.Id, {
|
var promise1 = ApiClient.getItems(user.Id, {
|
||||||
sortBy: "SortName"
|
sortBy: "SortName"
|
||||||
});
|
});
|
||||||
|
@ -163,6 +165,8 @@
|
||||||
user.Configuration.DisplayCollectionsView = $('#chkDisplayCollectionView', page).checked();
|
user.Configuration.DisplayCollectionsView = $('#chkDisplayCollectionView', page).checked();
|
||||||
user.Configuration.DisplayFoldersView = $('#chkDisplayFolderView', page).checked();
|
user.Configuration.DisplayFoldersView = $('#chkDisplayFolderView', page).checked();
|
||||||
|
|
||||||
|
user.Configuration.HidePlayedInLatest = $('#chkHidePlayedFromLatest', page).checked();
|
||||||
|
|
||||||
user.Configuration.IncludeTrailersInSuggestions = $('#chkDisplayTrailersWithinMovieSuggestions', page).checked();
|
user.Configuration.IncludeTrailersInSuggestions = $('#chkDisplayTrailersWithinMovieSuggestions', page).checked();
|
||||||
|
|
||||||
user.Configuration.LatestItemsExcludes = $(".chkIncludeInLatest:not(:checked)", page).get().map(function (i) {
|
user.Configuration.LatestItemsExcludes = $(".chkIncludeInLatest:not(:checked)", page).get().map(function (i) {
|
||||||
|
|
|
@ -185,8 +185,7 @@ var Dashboard = {
|
||||||
var url = getWindowUrl().toLowerCase();
|
var url = getWindowUrl().toLowerCase();
|
||||||
|
|
||||||
return url.indexOf('mediabrowser.tv') != -1 ||
|
return url.indexOf('mediabrowser.tv') != -1 ||
|
||||||
url.indexOf('emby.media') != -1 ||
|
url.indexOf('emby.media') != -1;
|
||||||
url.indexOf('mediabrowser.github') != -1;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
logout: function (logoutWithServer) {
|
logout: function (logoutWithServer) {
|
||||||
|
@ -756,6 +755,9 @@ var Dashboard = {
|
||||||
|
|
||||||
var pageElem = page[0];
|
var pageElem = page[0];
|
||||||
|
|
||||||
|
var isServicesPage = page.hasClass('appServicesPage');
|
||||||
|
var context = getParameterByName('context');
|
||||||
|
|
||||||
return [{
|
return [{
|
||||||
name: Globalize.translate('TabServer'),
|
name: Globalize.translate('TabServer'),
|
||||||
href: "dashboard.html",
|
href: "dashboard.html",
|
||||||
|
@ -793,7 +795,7 @@ var Dashboard = {
|
||||||
}, {
|
}, {
|
||||||
name: Globalize.translate('TabSync'),
|
name: Globalize.translate('TabSync'),
|
||||||
href: "syncactivity.html",
|
href: "syncactivity.html",
|
||||||
selected: page.hasClass('syncConfigurationPage'),
|
selected: page.hasClass('syncConfigurationPage') || (isServicesPage && context == 'sync'),
|
||||||
icon: 'fa-cloud'
|
icon: 'fa-cloud'
|
||||||
}, {
|
}, {
|
||||||
divider: true,
|
divider: true,
|
||||||
|
@ -813,7 +815,7 @@ var Dashboard = {
|
||||||
}, {
|
}, {
|
||||||
name: Globalize.translate('TabLiveTV'),
|
name: Globalize.translate('TabLiveTV'),
|
||||||
href: "livetvstatus.html",
|
href: "livetvstatus.html",
|
||||||
selected: page.hasClass("liveTvSettingsPage"),
|
selected: page.hasClass("liveTvSettingsPage") || (isServicesPage && context == 'livetv'),
|
||||||
icon: 'fa-video-camera',
|
icon: 'fa-video-camera',
|
||||||
color: '#293AAE'
|
color: '#293AAE'
|
||||||
}, {
|
}, {
|
||||||
|
@ -1352,7 +1354,9 @@ var Dashboard = {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!Dashboard.isServerlessPage()) {
|
if (!Dashboard.isServerlessPage()) {
|
||||||
|
|
||||||
if (Dashboard.serverAddress() && Dashboard.getCurrentUserId() && Dashboard.getAccessToken()) {
|
if (Dashboard.serverAddress() && Dashboard.getCurrentUserId() && Dashboard.getAccessToken()) {
|
||||||
|
|
||||||
window.ApiClient = new MediaBrowser.ApiClient(Logger, Dashboard.serverAddress(), appName, appVersion, deviceName, deviceId);
|
window.ApiClient = new MediaBrowser.ApiClient(Logger, Dashboard.serverAddress(), appName, appVersion, deviceName, deviceId);
|
||||||
|
|
||||||
ApiClient.setCurrentUserId(Dashboard.getCurrentUserId(), Dashboard.getAccessToken());
|
ApiClient.setCurrentUserId(Dashboard.getCurrentUserId(), Dashboard.getAccessToken());
|
||||||
|
@ -1361,6 +1365,7 @@ var Dashboard = {
|
||||||
|
|
||||||
ConnectionManager.addApiClient(ApiClient, true).fail(Dashboard.logout);
|
ConnectionManager.addApiClient(ApiClient, true).fail(Dashboard.logout);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
Dashboard.logout();
|
Dashboard.logout();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,10 +43,10 @@
|
||||||
return $(".radioDonationType:checked", page).val();
|
return $(".radioDonationType:checked", page).val();
|
||||||
}
|
}
|
||||||
|
|
||||||
var lifeTimeAmount = 40;
|
var lifeTimeAmount = 59;
|
||||||
var dailyAmount = 1;
|
var dailyAmount = 1;
|
||||||
var monthlyAmount = 4;
|
var monthlyAmount = 4;
|
||||||
var yearlyAmount = 28;
|
var yearlyAmount = 32;
|
||||||
function getDonationAmount(page) {
|
function getDonationAmount(page) {
|
||||||
|
|
||||||
var type = getDonationType(page);
|
var type = getDonationType(page);
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
(function ($, document) {
|
|
||||||
|
|
||||||
function reloadList(page) {
|
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
|
||||||
|
|
||||||
var promise1 = ApiClient.getAvailablePlugins({
|
|
||||||
TargetSystems: 'Server'
|
|
||||||
});
|
|
||||||
|
|
||||||
var promise2 = ApiClient.getInstalledPlugins();
|
|
||||||
|
|
||||||
$.when(promise1, promise2).done(function (response1, response2) {
|
|
||||||
renderInstalled(page, response1[0], response2[0]);
|
|
||||||
renderCatalog(page, response1[0], response2[0]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderInstalled(page, availablePlugins, installedPlugins) {
|
|
||||||
|
|
||||||
installedPlugins = installedPlugins.filter(function (i) {
|
|
||||||
|
|
||||||
var catalogEntry = availablePlugins.filter(function (a) {
|
|
||||||
return a.guid == i.Id;
|
|
||||||
})[0];
|
|
||||||
|
|
||||||
return catalogEntry && catalogEntry.category == 'Sync';
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
PluginsPage.renderPlugins(page, installedPlugins);
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderCatalog(page, availablePlugins, installedPlugins) {
|
|
||||||
|
|
||||||
PluginCatalog.renderCatalog({
|
|
||||||
|
|
||||||
catalogElement: $('.catalog', page),
|
|
||||||
availablePlugins: availablePlugins,
|
|
||||||
installedPlugins: installedPlugins,
|
|
||||||
categories: ['Sync'],
|
|
||||||
showCategory: false,
|
|
||||||
context: 'sync',
|
|
||||||
targetSystem: 'Server'
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('pageshow', "#syncServicesPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
reloadList(page);
|
|
||||||
|
|
||||||
Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
|
|
||||||
|
|
||||||
if (pluginSecurityInfo.IsMBSupporter) {
|
|
||||||
$('.syncPromotion', page).hide();
|
|
||||||
} else {
|
|
||||||
$('.syncPromotion', page).show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery, document);
|
|
|
@ -113,7 +113,7 @@ $.fn.taskButton = function (options) {
|
||||||
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStop");
|
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStop");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (this.length) {
|
||||||
|
|
||||||
this.on('click.taskbutton', function () {
|
this.on('click.taskbutton', function () {
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Series",
|
IncludeItemTypes: "Series",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated,SyncInfo",
|
Fields: "DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Series,Episode",
|
IncludeItemTypes: "Series,Episode",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated",
|
Fields: "DateCreated,ItemCounts",
|
||||||
PersonTypes: "",
|
PersonTypes: "",
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
Limit: 100
|
Limit: 100
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Series",
|
IncludeItemTypes: "Series",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated",
|
Fields: "DateCreated,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,12 +14,7 @@
|
||||||
|
|
||||||
var id = 'mediaFolder' + i;
|
var id = 'mediaFolder' + i;
|
||||||
|
|
||||||
var isChecked;
|
var isChecked = user.Policy.EnableAllFolders || user.Policy.EnabledFolders.indexOf(folder.Id) != -1;
|
||||||
if (user.Policy.BlockedMediaFolders != null) {
|
|
||||||
isChecked = user.Policy.BlockedMediaFolders.indexOf(folder.Id) == -1 && user.Policy.BlockedMediaFolders.indexOf(folder.Name) == -1;
|
|
||||||
} else {
|
|
||||||
isChecked = user.Policy.EnableAllFolders || user.Policy.EnabledFolders.indexOf(folder.Id) != -1;
|
|
||||||
}
|
|
||||||
var checkedAttribute = isChecked ? ' checked="checked"' : '';
|
var checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
|
|
||||||
html += '<input class="chkFolder" data-id="' + folder.Id + '" type="checkbox" id="' + id + '"' + checkedAttribute + ' />';
|
html += '<input class="chkFolder" data-id="' + folder.Id + '" type="checkbox" id="' + id + '"' + checkedAttribute + ' />';
|
||||||
|
@ -30,11 +25,7 @@
|
||||||
|
|
||||||
$('.folderAccess', page).html(html).trigger('create');
|
$('.folderAccess', page).html(html).trigger('create');
|
||||||
|
|
||||||
if (user.Policy.BlockedMediaFolders != null) {
|
$('#chkEnableAllFolders', page).checked(user.Policy.EnableAllFolders).checkboxradio('refresh').trigger('change');
|
||||||
$('#chkEnableAllFolders', page).checked(user.Policy.BlockedMediaFolders.length == 0).checkboxradio('refresh').trigger('change');
|
|
||||||
} else {
|
|
||||||
$('#chkEnableAllFolders', page).checked(user.Policy.EnableAllFolders).checkboxradio('refresh').trigger('change');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadChannels(page, user, channels) {
|
function loadChannels(page, user, channels) {
|
||||||
|
@ -51,12 +42,7 @@
|
||||||
|
|
||||||
var id = 'channels' + i;
|
var id = 'channels' + i;
|
||||||
|
|
||||||
var isChecked;
|
var isChecked = user.Policy.EnableAllChannels || user.Policy.EnabledChannels.indexOf(folder.Id) != -1;
|
||||||
if (user.Policy.BlockedChannels != null) {
|
|
||||||
isChecked = user.Policy.BlockedChannels.indexOf(folder.Id) == -1;
|
|
||||||
} else {
|
|
||||||
isChecked = user.Policy.EnableAllChannels || user.Policy.EnabledChannels.indexOf(folder.Id) != -1;
|
|
||||||
}
|
|
||||||
var checkedAttribute = isChecked ? ' checked="checked"' : '';
|
var checkedAttribute = isChecked ? ' checked="checked"' : '';
|
||||||
|
|
||||||
html += '<input class="chkChannel" data-id="' + folder.Id + '" type="checkbox" id="' + id + '"' + checkedAttribute + ' />';
|
html += '<input class="chkChannel" data-id="' + folder.Id + '" type="checkbox" id="' + id + '"' + checkedAttribute + ' />';
|
||||||
|
@ -73,11 +59,7 @@
|
||||||
$('.channelAccessContainer', page).hide();
|
$('.channelAccessContainer', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user.Policy.BlockedChannels != null) {
|
$('#chkEnableAllChannels', page).checked(user.Policy.EnableAllChannels).checkboxradio('refresh').trigger('change');
|
||||||
$('#chkEnableAllChannels', page).checked(user.Policy.BlockedChannels.length == 0).checkboxradio('refresh').trigger('change');
|
|
||||||
} else {
|
|
||||||
$('#chkEnableAllChannels', page).checked(user.Policy.EnableAllChannels).checkboxradio('refresh').trigger('change');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadDevices(page, user, devices) {
|
function loadDevices(page, user, devices) {
|
||||||
|
@ -140,7 +122,6 @@
|
||||||
return this.getAttribute('data-id');
|
return this.getAttribute('data-id');
|
||||||
|
|
||||||
}).get();
|
}).get();
|
||||||
user.Policy.BlockedMediaFolders = null;
|
|
||||||
|
|
||||||
user.Policy.EnableAllChannels = $('#chkEnableAllChannels', page).checked();
|
user.Policy.EnableAllChannels = $('#chkEnableAllChannels', page).checked();
|
||||||
user.Policy.EnabledChannels = user.Policy.EnableAllChannels ?
|
user.Policy.EnabledChannels = user.Policy.EnableAllChannels ?
|
||||||
|
@ -150,7 +131,6 @@
|
||||||
return this.getAttribute('data-id');
|
return this.getAttribute('data-id');
|
||||||
|
|
||||||
}).get();
|
}).get();
|
||||||
user.Policy.BlockedChannels = null;
|
|
||||||
|
|
||||||
user.Policy.EnableAllDevices = $('#chkEnableAllDevices', page).checked();
|
user.Policy.EnableAllDevices = $('#chkEnableAllDevices', page).checked();
|
||||||
user.Policy.EnabledDevices = user.Policy.EnableAllDevices ?
|
user.Policy.EnabledDevices = user.Policy.EnableAllDevices ?
|
||||||
|
|
|
@ -165,7 +165,7 @@
|
||||||
itemHtml += '<li class="liSchedule" data-day="' + a.DayOfWeek + '" data-start="' + a.StartHour + '" data-end="' + a.EndHour + '">';
|
itemHtml += '<li class="liSchedule" data-day="' + a.DayOfWeek + '" data-start="' + a.StartHour + '" data-end="' + a.EndHour + '">';
|
||||||
|
|
||||||
itemHtml += '<a href="#">';
|
itemHtml += '<a href="#">';
|
||||||
itemHtml += '<h3>' + a.DayOfWeek + '</h3>';
|
itemHtml += '<h3>' + Globalize.translate('Option' + a.DayOfWeek) + '</h3>';
|
||||||
itemHtml += '<p>' + getDisplayTime(a.StartHour) + ' - ' + getDisplayTime(a.EndHour) + '</p>';
|
itemHtml += '<p>' + getDisplayTime(a.StartHour) + ' - ' + getDisplayTime(a.EndHour) + '</p>';
|
||||||
itemHtml += '</a>';
|
itemHtml += '</a>';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="songsPage" data-role="page" class="page libraryPage">
|
<div id="songsPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="musicrecommended.html">${TabSuggested}</a>
|
<a href="musicrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabSongs}</a>
|
<a href="#" class="ui-btn-active">${TabSongs}</a>
|
||||||
<a href="musicalbums.html">${TabAlbums}</a>
|
<a href="musicalbums.html">${TabAlbums}</a>
|
||||||
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
<a href="musicalbumartists.html">${TabAlbumArtists}</a>
|
||||||
|
|
|
@ -87,18 +87,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br />
|
<div style="display:none;">
|
||||||
<h1>${HeaderSupporterBenefits}</h1>
|
<br />
|
||||||
<p class="linkSupporterKeyMessage"></p>
|
<h1>${HeaderSupporterBenefits}</h1>
|
||||||
<a href="https://play.google.com/store/apps/details?id=tv.mediabrowser.mediabrowsertv" target="_blank" title="Android TV">
|
<p class="linkSupporterKeyMessage"></p>
|
||||||
<img src="css/images/clients/androidtv-tile.png" style="height:60px;" />
|
<a href="https://play.google.com/store/apps/details?id=tv.mediabrowser.mediabrowsertv" target="_blank" title="Android TV">
|
||||||
</a>
|
<img src="css/images/clients/androidtv-tile.png" style="height:60px;" />
|
||||||
<br />
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<div class="supporters">
|
<br />
|
||||||
|
<div class="supporters">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button type="button" id="btnAddConnectUser" data-icon="plus">${ButtonAddUser}</button>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" id="btnAddConnectUser" data-icon="plus">${ButtonAddUser}</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<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">${TabActivity}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabActivity}</a>
|
||||||
<a href="syncservices.html" data-role="button">${TabServices}</a>
|
<a href="appservices.html?context=sync" data-role="button">${TabServices}</a>
|
||||||
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
<progress max="100" min="0" style="width:100px;display:none;" class="syncProgress"></progress>
|
<progress max="100" min="0" style="width:100px;display:none;" class="syncProgress"></progress>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div class="supporterPromotion syncPromotion" style="display:none;">
|
<div class="staticSupporterPromotion supporterPromotion syncPromotion" style="display:none;">
|
||||||
<a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;">
|
<a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;">
|
||||||
<div>
|
<div>
|
||||||
${HeaderSyncRequiresSupporterMembership}
|
${HeaderSyncRequiresSupporterMembership}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<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="syncactivity.html" data-role="button" class="ui-btn-active">${TabActivity}</a>
|
<a href="syncactivity.html" data-role="button" class="ui-btn-active">${TabActivity}</a>
|
||||||
<a href="syncservices.html" data-role="button">${TabServices}</a>
|
<a href="appservices.html?context=sync" data-role="button">${TabServices}</a>
|
||||||
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>${TitleSync}</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="syncServicesPage" data-role="page" class="page type-interior syncConfigurationPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Sync">
|
|
||||||
|
|
||||||
<div data-role="content">
|
|
||||||
<div class="content-primary">
|
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
|
||||||
<a href="syncactivity.html" data-role="button">${TabActivity}</a>
|
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabServices}</a>
|
|
||||||
<a href="syncsettings.html" data-role="button">${TabSettings}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="detailSectionHeader">${HeaderInstalledServices}</div>
|
|
||||||
<div class="installedPlugins"></div>
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<div class="detailSectionHeader">${HeaderAvailableServices}</div>
|
|
||||||
<div class="catalog"></div>
|
|
||||||
|
|
||||||
<div class="supporterPromotion syncPromotion" style="display:none;">
|
|
||||||
<a class="btn btnActionAccent" href="supporter.html" style="font-size:14px;">
|
|
||||||
<div>
|
|
||||||
${HeaderSyncRequiresSupporterMembership}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
${HeaderEnjoyDayTrial}
|
|
||||||
</div>
|
|
||||||
<div style="font-weight:normal;font-size:90%;margin-top:5px;">
|
|
||||||
${ButtonLearnMore}
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<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="syncactivity.html" data-role="button">${TabActivity}</a>
|
<a href="syncactivity.html" data-role="button">${TabActivity}</a>
|
||||||
<a href="syncservices.html" data-role="button">${TabServices}</a>
|
<a href="appservices.html?context=sync" data-role="button">${TabServices}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
14
dashboard-ui/thirdparty/apiclient/apiclient.js
vendored
14
dashboard-ui/thirdparty/apiclient/apiclient.js
vendored
|
@ -306,7 +306,13 @@
|
||||||
throw new Error("Url name cannot be empty");
|
throw new Error("Url name cannot be empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = serverAddress + "/" + name;
|
var url = serverAddress;
|
||||||
|
|
||||||
|
if (name.charAt(0) != '/') {
|
||||||
|
url += '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
url += name;
|
||||||
|
|
||||||
if (params) {
|
if (params) {
|
||||||
url += "?" + AjaxApi.param(params);
|
url += "?" + AjaxApi.param(params);
|
||||||
|
@ -1881,14 +1887,14 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
self.stopActiveEncodings = function (streamId) {
|
self.stopActiveEncodings = function (playSessionId) {
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
deviceId: deviceId
|
deviceId: deviceId
|
||||||
};
|
};
|
||||||
|
|
||||||
if (streamId) {
|
if (playSessionId) {
|
||||||
options.streamId = streamId;
|
options.PlaySessionId = playSessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Videos/ActiveEncodings", options);
|
var url = self.getUrl("Videos/ActiveEncodings", options);
|
||||||
|
|
|
@ -455,7 +455,10 @@
|
||||||
self.isLoggedIntoConnect = function () {
|
self.isLoggedIntoConnect = function () {
|
||||||
|
|
||||||
// Make sure it returns true or false
|
// Make sure it returns true or false
|
||||||
return (self.connectToken() && self.connectUserId()) == true;
|
if (!self.connectToken() || !self.connectUserId()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.logout = function () {
|
self.logout = function () {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="tvGenresPage" data-role="page" class="page libraryPage">
|
<div id="tvGenresPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="tvNextUpPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series">
|
<div id="tvNextUpPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabLatest}</a>
|
<a href="#" class="ui-btn-active">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="tvPeoplePage" data-role="page" class="page libraryPage">
|
<div id="tvPeoplePage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
||||||
<a href="tvrecommended.html" class="ui-btn-active">${TabSuggested}</a>
|
<a href="tvrecommended.html" class="ui-btn-active">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="tvShowsPage" data-role="page" class="page libraryPage">
|
<div id="tvShowsPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="#" class="ui-btn-active">${TabShows}</a>
|
<a href="#" class="ui-btn-active">${TabShows}</a>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="tvStudiosPage" data-role="page" class="page libraryPage">
|
<div id="tvStudiosPage" data-role="page" class="page libraryPage">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav scopedLibraryViewNav">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html">${TabUpcoming}</a>
|
<a href="tvupcoming.html">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
<div class="listTopPaging">
|
<div class="listTopPaging">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="items" class="itemsContainer paddedItemsContainer"></div>
|
<div id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<a href="#" class="ui-btn-active">${TabUpcoming}</a>
|
<a href="#" class="ui-btn-active">${TabUpcoming}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
||||||
<a href="tvrecommended.html">${TabSuggested}</a>
|
<a href="tvrecommended.html">${TabSuggestions}</a>
|
||||||
<a href="tvlatest.html">${TabLatest}</a>
|
<a href="tvlatest.html">${TabLatest}</a>
|
||||||
<a href="tvupcoming.html" class="ui-btn-active">${TabUpcoming}</a>
|
<a href="tvupcoming.html" class="ui-btn-active">${TabUpcoming}</a>
|
||||||
<a href="tvshows.html">${TabShows}</a>
|
<a href="tvshows.html">${TabShows}</a>
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
<form class="addUserForm">
|
<form class="addUserForm">
|
||||||
<div>
|
<div>
|
||||||
<label for="txtConnectUsername">${LabelConnectGuestUserName}</label>
|
<label for="txtConnectUsername">${LabelConnectGuestUserName}</label>
|
||||||
<input type="text" id="txtConnectUsername" value="" placeholder="Username" required="required">
|
<input type="text" id="txtConnectUsername" value="" placeholder="${PlaceholderUsername}" required="required">
|
||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
<div>${LabelConnectGuestUserNameHelp}</div>
|
<div>${LabelConnectGuestUserNameHelp}</div>
|
||||||
<div style="margin-top: .75em;"><a href="http://emby.media/connect" target="_blank">${ButtonLearnMoreAboutEmbyConnect}</a></div>
|
<div style="margin-top: .75em;"><a href="http://emby.media/connect" target="_blank">${ButtonLearnMoreAboutEmbyConnect}</a></div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue