1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

beginning remote subtitle downloading

This commit is contained in:
Luke Pulverenti 2014-05-06 22:28:19 -04:00
parent c1acc0d03a
commit 3b5259ce8e
12 changed files with 225 additions and 245 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

View file

@ -56,6 +56,7 @@
.viewSettings { .viewSettings {
margin: 0 0 .25em; margin: 0 0 .25em;
text-align: center;
} }
.listPaging { .listPaging {
@ -854,6 +855,9 @@ a.itemTag:hover {
margin-bottom: .25em; margin-bottom: .25em;
} }
.itemsContainer {
}
.timelineItemsContainer { .timelineItemsContainer {
text-align: left; text-align: left;
} }

View file

@ -12,14 +12,14 @@
z-index: 1001; z-index: 1001;
top: 54px; top: 54px;
background-color: #181818; background-color: #181818;
width: 200px; width: 180px;
min-height: 100px; min-height: 100px;
border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;
padding-bottom: 10px; padding-bottom: 10px;
} }
.itemDetailPage .desktopLibraryMenu { .itemDetailPage .desktopLibraryMenu {
background-color: rgba(24,24,24,.6); background-color: rgba(0,0,0,.6);
} }
.metadataEditorPage .desktopLibraryMenu { .metadataEditorPage .desktopLibraryMenu {
@ -39,7 +39,7 @@
left: 0; left: 0;
z-index: 1000; z-index: 1000;
top: 0; top: 0;
background: #181818; background: #000;
padding: 3px .25em 3px 1em; padding: 3px .25em 3px 1em;
border-bottom: 1px solid #101010; border-bottom: 1px solid #101010;
} }
@ -75,7 +75,7 @@
.viewMenuTextLink { .viewMenuTextLink {
display: block; display: block;
padding: .6em .5em .6em 35px!important; padding: .6em .5em .6em 37px!important;
font-size: 15px; font-size: 15px;
font-weight: 300!important; font-weight: 300!important;
font-family: Roboto; font-family: Roboto;
@ -85,63 +85,70 @@
background-image: url(images/items/folders/music.png); background-image: url(images/items/folders/music.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px 8px; background-position: 10px 8px;
} }
.tvshowsViewMenu { .tvshowsViewMenu {
background-image: url(images/items/folders/tv.png); background-image: url(images/items/folders/tv.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px 8px; background-position: 10px 8px;
} }
.moviesViewMenu { .moviesViewMenu {
background-image: url(images/items/folders/movies.png); background-image: url(images/items/folders/movies.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px center; background-position: 10px center;
} }
.gamesViewMenu { .gamesViewMenu {
background-image: url(images/items/folders/games.png); background-image: url(images/items/folders/games.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px 8px; background-position: 10px 8px;
} }
.channelsViewMenu { .channelsViewMenu {
background-image: url(images/items/folders/channels.png); background-image: url(images/items/folders/channels.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px center; background-position: 10px center;
} }
.booksViewMenu { .booksViewMenu {
background-image: url(images/items/folders/books.png); background-image: url(images/items/folders/books.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px center; background-position: 10px center;
} }
.musicvideosViewMenu { .musicvideosViewMenu {
background-image: url(images/items/folders/musicvideos.png); background-image: url(images/items/folders/musicvideos.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px 8px; background-position: 10px 8px;
} }
.photosViewMenu { .photosViewMenu {
background-image: url(images/items/folders/photos.png); background-image: url(images/items/folders/photos.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px 8px; background-position: 10px 8px;
} }
.collectionsViewMenu, .generalViewMenu, .homeVideosViewMenu { .homeVideosViewMenu {
background-image: url(images/items/folders/homevideos.png); background-image: url(images/items/folders/homevideos.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 18px 18px; background-size: 18px 18px;
background-position: 8px center; background-position: 10px center;
}
.generalViewMenu, .boxsetsViewMenu {
background-image: url(images/items/folders/folder.png);
background-repeat: no-repeat;
background-size: 18px 18px;
background-position: 10px center;
} }
.viewMenuSecondary { .viewMenuSecondary {
@ -170,7 +177,7 @@
} }
.libraryViewNavInner { .libraryViewNavInner {
text-align: left; text-align: center;
font-size: 14px; font-size: 14px;
white-space: nowrap; white-space: nowrap;
padding: 0 0 0; padding: 0 0 0;
@ -215,28 +222,24 @@
vertical-align: middle; vertical-align: middle;
} }
@media all and (min-width: 1279px) { @media all and (min-width: 1099px) {
.libraryMenuButton { .libraryMenuButton {
display: none; display: none;
} }
.libraryPage:not(.itemDetailPage):not(.metadataEditorPage) { .libraryPage:not(.itemDetailPage):not(.metadataEditorPage) {
left: 215px !important; left: 195px !important;
width: auto !important; width: auto !important;
right: 0 !important; right: 0 !important;
} }
.libraryPage .libraryViewNav {
padding-left: 232px !important;
}
.viewSettings { .viewSettings {
padding-left: .4em; padding-left: .4em;
} }
} }
@media all and (max-width: 1278px) { @media all and (max-width: 1099px) {
.desktopHomeLink { .desktopHomeLink {
display: none; display: none;

View file

@ -258,7 +258,7 @@ h1 .imageLink {
.content-secondary { .content-secondary {
z-index: 99996; z-index: 99996;
background: #262626; background: #222;
border: 0; border: 0;
margin-top: 40px; margin-top: 40px;
display: none; display: none;

View file

@ -17,51 +17,51 @@
<form class="dlnaProfileForm" style="max-width: 650px;"> <form class="dlnaProfileForm" style="max-width: 650px;">
<p>Profile Information</p> <p>${HeaderProfileInformation}</p>
<div data-role="controlgroup" data-type="horizontal" data-mini="true"> <div data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioInfo" value="tabInfo"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioInfo" value="tabInfo">
<label for="radioInfo">Info</label> <label for="radioInfo">${TabInfo}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioIdentification" value="tabIdentification"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioIdentification" value="tabIdentification">
<label for="radioIdentification">Identification</label> <label for="radioIdentification">${TabIdentification}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioDirectPlay" value="tabDirectPlayProfiles"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioDirectPlay" value="tabDirectPlayProfiles">
<label for="radioDirectPlay">Direct Play</label> <label for="radioDirectPlay">${TabDirectPlay}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioTranscoding" value="tabTranscodingProfiles"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioTranscoding" value="tabTranscodingProfiles">
<label for="radioTranscoding">Transcoding</label> <label for="radioTranscoding">${TabTranscoding}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioContainers" value="tabContainerProfiles"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioContainers" value="tabContainerProfiles">
<label for="radioContainers">Containers</label> <label for="radioContainers">${TabContainers}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioCodecs" value="tabCodecProfiles"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioCodecs" value="tabCodecProfiles">
<label for="radioCodecs">Codecs</label> <label for="radioCodecs">${TabCodecs}</label>
<input type="radio" name="radioProfileTab" class="radioTabButton" id="radioMediaProfiles" value="tabMediaProfiles"> <input type="radio" name="radioProfileTab" class="radioTabButton" id="radioMediaProfiles" value="tabMediaProfiles">
<label for="radioMediaProfiles">Responses</label> <label for="radioMediaProfiles">${TabResponses}</label>
</div> </div>
<br /> <br />
<div class="tabContent tabInfo"> <div class="tabContent tabInfo">
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="txtName">Name</label> <label for="txtName">${LabelName}</label>
<input type="text" id="txtName" data-mini="true" required="required" /> <input type="text" id="txtName" data-mini="true" required="required" />
</li> </li>
</ul> </ul>
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="selectUser">User library:</label> <label for="selectUser">${LabelUserLibrary}</label>
<select id="selectUser" data-mini="true"></select> <select id="selectUser" data-mini="true"></select>
<div class="fieldDescription">Select which user library to display to the device. Leave empty to inherit the default setting.</div> <div class="fieldDescription">${LabelUserLibraryHelp}</div>
</li> </li>
</ul> </ul>
<fieldset data-role="controlgroup"> <fieldset data-role="controlgroup">
<legend>Supported Media Types:</legend> <legend>${LabelSupportedMediaTypes}</legend>
<input type="checkbox" data-mini="true" id="chkAudio" data-value="Audio" class="chkMediaType" /> <input type="checkbox" data-mini="true" id="chkAudio" data-value="Audio" class="chkMediaType" />
<label for="chkAudio">Audio</label> <label for="chkAudio">${OptionProfileAudio}</label>
<input type="checkbox" data-mini="true" id="chkPhoto" data-value="Photo" class="chkMediaType" /> <input type="checkbox" data-mini="true" id="chkPhoto" data-value="Photo" class="chkMediaType" />
<label for="chkPhoto">Photo</label> <label for="chkPhoto">${OptionProfilePhoto}</label>
<input type="checkbox" data-mini="true" id="chkVideo" data-value="Video" class="chkMediaType" /> <input type="checkbox" data-mini="true" id="chkVideo" data-value="Video" class="chkMediaType" />
<label for="chkVideo">Video</label> <label for="chkVideo">${OptionProfileVideo}</label>
</fieldset> </fieldset>
@ -72,14 +72,14 @@
<br /> <br />
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="chkRequiresPlainFolders">Display all folders as plain storage folders</label> <label for="chkRequiresPlainFolders">${OptionPlainStorageFolders}</label>
<input type="checkbox" id="chkRequiresPlainFolders" data-mini="true" /> <input type="checkbox" id="chkRequiresPlainFolders" data-mini="true" />
<div class="fieldDescription">If enabled, all folders are represented in DIDL as "object.container.storageFolder" instead of a more specific type, such as "object.container.person.musicArtist".</div> <div class="fieldDescription">${OptionPlainStorageFoldersHelp}</div>
</li> </li>
<li> <li>
<label for="chkRequiresPlainVideoItems">Display all videos as plain video items</label> <label for="chkRequiresPlainVideoItems">${OptionPlainVideoItems}</label>
<input type="checkbox" id="chkRequiresPlainVideoItems" data-mini="true" /> <input type="checkbox" id="chkRequiresPlainVideoItems" data-mini="true" />
<div class="fieldDescription">If enabled, all videos are represented in DIDL as "object.item.videoItem" instead of a more specific type, such as "object.item.videoItem.movie".</div> <div class="fieldDescription">${OptionPlainVideoItemsHelp}</div>
</li> </li>
</ul> </ul>
</div> </div>
@ -91,34 +91,34 @@
<br /> <br />
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="chkEnableAlbumArtInDidl">Embed album art in Didl</label> <label for="chkEnableAlbumArtInDidl">${LabelEmbedAlbumArtDidl}</label>
<input type="checkbox" id="chkEnableAlbumArtInDidl" data-mini="true" /> <input type="checkbox" id="chkEnableAlbumArtInDidl" data-mini="true" />
<div class="fieldDescription">Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.</div> <div class="fieldDescription">${LabelEmbedAlbumArtDidlHelp}</div>
</li> </li>
<li> <li>
<label for="txtAlbumArtPn">Album art PN:</label> <label for="txtAlbumArtPn">${LabelAlbumArtPN}</label>
<input type="text" id="txtAlbumArtPn" data-mini="true" /> <input type="text" id="txtAlbumArtPn" data-mini="true" />
<div class="fieldDescription">PN used for album art, within the dlna:profileID attribute on upnp:albumArtURI. Some clients require a specific value, regardless of the size of the image.</div> <div class="fieldDescription">${LabelAlbumArtHelp}</div>
</li> </li>
<li> <li>
<label for="txtAlbumArtMaxWidth">Album art max width:</label> <label for="txtAlbumArtMaxWidth">${LabelAlbumArtMaxWidth}</label>
<input type="number" id="txtAlbumArtMaxWidth" pattern="[0-9]*" min="1" data-mini="true" /> <input type="number" id="txtAlbumArtMaxWidth" pattern="[0-9]*" min="1" data-mini="true" />
<div class="fieldDescription">Max resolution of album art exposed via upnp:albumArtURI.</div> <div class="fieldDescription">${LabelAlbumArtMaxWidthHelp}</div>
</li> </li>
<li> <li>
<label for="txtAlbumArtMaxHeight">Album art max height:</label> <label for="txtAlbumArtMaxHeight">${LabelAlbumArtMaxHeight}</label>
<input type="number" id="txtAlbumArtMaxHeight" pattern="[0-9]*" min="1" data-mini="true" /> <input type="number" id="txtAlbumArtMaxHeight" pattern="[0-9]*" min="1" data-mini="true" />
<div class="fieldDescription">Max resolution of album art exposed via upnp:albumArtURI.</div> <div class="fieldDescription">${LabelAlbumArtMaxHeightHelp}</div>
</li> </li>
<li> <li>
<label for="txtIconMaxWidth">Icon max width:</label> <label for="txtIconMaxWidth">${LabelIconMaxWidth}</label>
<input type="number" id="txtIconMaxWidth" pattern="[0-9]*" min="1" data-mini="true" /> <input type="number" id="txtIconMaxWidth" pattern="[0-9]*" min="1" data-mini="true" />
<div class="fieldDescription">Max resolution of icons exposed via upnp:icon.</div> <div class="fieldDescription">${LabelIconMaxWidthHelp}</div>
</li> </li>
<li> <li>
<label for="txtIconMaxHeight">Icon max height:</label> <label for="txtIconMaxHeight">${LabelIconMaxHeight}</label>
<input type="number" id="txtIconMaxHeight" pattern="[0-9]*" min="1" data-mini="true" /> <input type="number" id="txtIconMaxHeight" pattern="[0-9]*" min="1" data-mini="true" />
<div class="fieldDescription">Max resolution of icons exposed via upnp:icon.</div> <div class="fieldDescription">${LabelIconMaxHeightHelp}</div>
</li> </li>
</ul> </ul>
</div> </div>
@ -130,14 +130,14 @@
<br /> <br />
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="txtMaxAllowedBitrate">Max bitrate:</label> <label for="txtMaxAllowedBitrate">${LabelMaxBitrate}</label>
<input type="number" id="txtMaxAllowedBitrate" pattern="[0-9]*" min="1" data-mini="true" /> <input type="number" id="txtMaxAllowedBitrate" pattern="[0-9]*" min="1" data-mini="true" />
<div class="fieldDescription">Specify a max bitrate in bandwidth constrained environments, or if the device imposes it's own limit.</div> <div class="fieldDescription">${LabelMaxBitrateHelp}</div>
</li> </li>
<li> <li>
<label for="chkIgnoreTranscodeByteRangeRequests">Ignore transcode byte range requests</label> <label for="chkIgnoreTranscodeByteRangeRequests">${OptionIgnoreTranscodeByteRangeRequests}</label>
<input type="checkbox" id="chkIgnoreTranscodeByteRangeRequests" data-mini="true" /> <input type="checkbox" id="chkIgnoreTranscodeByteRangeRequests" data-mini="true" />
<div class="fieldDescription">If enabled, these requests will be honored but will ignore the byte range header.</div> <div class="fieldDescription">${OptionIgnoreTranscodeByteRangeRequestsHelp}</div>
</li> </li>
</ul> </ul>
</div> </div>
@ -145,55 +145,55 @@
<div data-role="collapsible"> <div data-role="collapsible">
<h2>${HeaderServerSettings}</h2> <h2>${HeaderServerSettings}</h2>
<div> <div>
<p>These values control how Media Browser will present itself to the device.</p> <p>${HeaderProfileServerSettingsHelp}</p>
<br /> <br />
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="txtInfoFriendlyName">Friendly name</label> <label for="txtInfoFriendlyName">${LabelFriendlyName}</label>
<input type="text" id="txtInfoFriendlyName" data-mini="true" required="required" /> <input type="text" id="txtInfoFriendlyName" data-mini="true" required="required" />
</li> </li>
<li> <li>
<label for="txtInfoManufacturer">Manufacturer</label> <label for="txtInfoManufacturer">${LabelManufacturer}</label>
<input type="text" id="txtInfoManufacturer" data-mini="true" /> <input type="text" id="txtInfoManufacturer" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoManufacturerUrl">Manufacturer url</label> <label for="txtInfoManufacturerUrl">${LabelManufacturerUrl}</label>
<input type="text" id="txtInfoManufacturerUrl" data-mini="true" /> <input type="text" id="txtInfoManufacturerUrl" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoModelName">Model name</label> <label for="txtInfoModelName">${LabelModelName}</label>
<input type="text" id="txtInfoModelName" data-mini="true" /> <input type="text" id="txtInfoModelName" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoModelNumber">Model number</label> <label for="txtInfoModelNumber">${LabelModelNumber}</label>
<input type="text" id="txtInfoModelNumber" data-mini="true" /> <input type="text" id="txtInfoModelNumber" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoModelDesription">Model description</label> <label for="txtInfoModelDesription">${LabelModelDescription}</label>
<input type="text" id="txtInfoModelDesription" data-mini="true" /> <input type="text" id="txtInfoModelDesription" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoModelUrl">Model url</label> <label for="txtInfoModelUrl">${LabelModelUrl}</label>
<input type="text" id="txtInfoModelUrl" data-mini="true" /> <input type="text" id="txtInfoModelUrl" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtInfoSerialNumber">Serial number</label> <label for="txtInfoSerialNumber">${LabelSerialNumber}</label>
<input type="text" id="txtInfoSerialNumber" data-mini="true" /> <input type="text" id="txtInfoSerialNumber" data-mini="true" />
</li> </li>
<li> <li>
<label for="txtXDlnaCap">X-Dlna cap:</label> <label for="txtXDlnaCap">${LabelXDlnaCap}</label>
<input type="text" id="txtXDlnaCap" data-mini="true" /> <input type="text" id="txtXDlnaCap" data-mini="true" />
<div class="fieldDescription">Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.</div> <div class="fieldDescription">${LabelXDlnaCapHelp}</div>
</li> </li>
<li> <li>
<label for="txtXDlnaDoc">X-Dlna doc:</label> <label for="txtXDlnaDoc">${LabelXDlnaDoc}</label>
<input type="text" id="txtXDlnaDoc" data-mini="true" /> <input type="text" id="txtXDlnaDoc" data-mini="true" />
<div class="fieldDescription">Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.</div> <div class="fieldDescription">${LabelXDlnaDocHelp}</div>
</li> </li>
<li> <li>
<label for="txtSonyAggregationFlags">Sony aggregation flags:</label> <label for="txtSonyAggregationFlags">${LabelSonyAggregationFlags}</label>
<input type="text" id="txtSonyAggregationFlags" data-mini="true" /> <input type="text" id="txtSonyAggregationFlags" data-mini="true" />
<div class="fieldDescription">Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.</div> <div class="fieldDescription">${LabelSonyAggregationFlagsHelp}</div>
</li> </li>
</ul> </ul>
</div> </div>
@ -202,85 +202,85 @@
</div> </div>
<div class="tabContent tabIdentification"> <div class="tabContent tabIdentification">
<p>Enter at least one identification criteria.</p> <p>${HeaderIdentificationCriteriaHelp}</p>
<br /> <br />
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<label for="txtIdFriendlyName">Friendly name</label> <label for="txtIdFriendlyName">${LabelFriendlyName}</label>
<input type="text" id="txtIdFriendlyName" data-mini="true" /> <input type="text" id="txtIdFriendlyName" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdManufacturer">Manufacturer</label> <label for="txtIdManufacturer">${LabelManufacturer}</label>
<input type="text" id="txtIdManufacturer" data-mini="true" /> <input type="text" id="txtIdManufacturer" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdManufacturerUrl">Manufacturer url</label> <label for="txtIdManufacturerUrl">${LabelManufacturerUrl}</label>
<input type="text" id="txtIdManufacturerUrl" data-mini="true" /> <input type="text" id="txtIdManufacturerUrl" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdModelName">Model name</label> <label for="txtIdModelName">${LabelModelName}</label>
<input type="text" id="txtIdModelName" data-mini="true" /> <input type="text" id="txtIdModelName" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdModelNumber">Model number</label> <label for="txtIdModelNumber">${LabelModelNumber}</label>
<input type="text" id="txtIdModelNumber" data-mini="true" /> <input type="text" id="txtIdModelNumber" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdModelDesription">Model description</label> <label for="txtIdModelDesription">${LabelModelDescription}</label>
<input type="text" id="txtIdModelDesription" data-mini="true" /> <input type="text" id="txtIdModelDesription" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdModelUrl">Model url</label> <label for="txtIdModelUrl">${LabelModelUrl}</label>
<input type="text" id="txtIdModelUrl" data-mini="true" /> <input type="text" id="txtIdModelUrl" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdSerialNumber">Serial number</label> <label for="txtIdSerialNumber">${LabelSerialNumber}</label>
<input type="text" id="txtIdSerialNumber" data-mini="true" /> <input type="text" id="txtIdSerialNumber" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
<li> <li>
<label for="txtIdDeviceDescription">Device description</label> <label for="txtIdDeviceDescription">${LabelDeviceDescription}</label>
<input type="text" id="txtIdDeviceDescription" data-mini="true" /> <input type="text" id="txtIdDeviceDescription" data-mini="true" />
<div class="fieldDescription">A case-insensitive substring or regex expression.</div> <div class="fieldDescription">${LabelIdentificationFieldHelp}</div>
</li> </li>
</ul> </ul>
</div> </div>
<div class="tabContent tabDirectPlayProfiles"> <div class="tabContent tabDirectPlayProfiles">
<p>Add direct play profiles to indicate which formats the device can handle natively.</p> <p>${HeaderDirectPlayProfileHelp}</p>
<button class="btnAddDirectPlayProfile" type="button" data-mini="true" data-icon="plus">New</button> <button class="btnAddDirectPlayProfile" type="button" data-mini="true" data-icon="plus">${ButtonNew}</button>
<br /> <br />
<div class="directPlayProfiles"></div> <div class="directPlayProfiles"></div>
</div> </div>
<div class="tabContent tabTranscodingProfiles"> <div class="tabContent tabTranscodingProfiles">
<p>Add transcoding profiles to indicate which formats should be used when transcoding is required.</p> <p>${HeaderTranscodingProfileHelp}</p>
<button class="btnAddTranscodingProfile" type="button" data-mini="true" data-icon="plus">New</button> <button class="btnAddTranscodingProfile" type="button" data-mini="true" data-icon="plus">${ButtonNew}</button>
<br /> <br />
<div class="transcodingProfiles"></div> <div class="transcodingProfiles"></div>
</div> </div>
<div class="tabContent tabContainerProfiles"> <div class="tabContent tabContainerProfiles">
<p>Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.</p> <p>${HeaderContainerProfileHelp}</p>
<button class="btnAddContainerProfile" type="button" data-mini="true" data-icon="plus">New</button> <button class="btnAddContainerProfile" type="button" data-mini="true" data-icon="plus">${ButtonNew}</button>
<br /> <br />
<div class="containerProfiles"></div> <div class="containerProfiles"></div>
</div> </div>
<div class="tabContent tabCodecProfiles"> <div class="tabContent tabCodecProfiles">
<p>Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.</p> <p>${HeaderCodecProfileHelp}</p>
<button class="btnAddCodecProfile" type="button" data-mini="true" data-icon="plus">New</button> <button class="btnAddCodecProfile" type="button" data-mini="true" data-icon="plus">${ButtonNew}</button>
<br /> <br />
<div class="codecProfiles"></div> <div class="codecProfiles"></div>
</div> </div>
<div class="tabContent tabMediaProfiles"> <div class="tabContent tabMediaProfiles">
<p>Response profiles provide a way to customize information sent to the device when playing certain kinds of media.</p> <p>${HeaderResponseProfileHelp}</p>
<button class="btnAddResponseProfile" type="button" data-mini="true" data-icon="plus">New</button> <button class="btnAddResponseProfile" type="button" data-mini="true" data-icon="plus">${ButtonNew}</button>
<br /> <br />
<div class="mediaProfiles"></div> <div class="mediaProfiles"></div>
</div> </div>
@ -288,10 +288,10 @@
<ul data-role="listview" class="ulForm"> <ul data-role="listview" class="ulForm">
<li> <li>
<button class="btnSave" type="submit" data-theme="b" data-icon="check" data-mini="true"> <button class="btnSave" type="submit" data-theme="b" data-icon="check" data-mini="true">
Save ${ButtonSave}
</button> </button>
<button type="button" onclick="Dashboard.navigate('dlnaprofiles.html');" data-icon="delete" data-mini="true"> <button type="button" onclick="Dashboard.navigate('dlnaprofiles.html');" data-icon="delete" data-mini="true">
Cancel ${ButtonCancel}
</button> </button>
</li> </li>
@ -303,45 +303,45 @@
<div data-role="popup" data-transition="slidefade" id="popupEditDirectPlayProfile" class="popup"> <div data-role="popup" data-transition="slidefade" id="popupEditDirectPlayProfile" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;"> <div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Direct Play Profile</h3> <h3>${HeaderDirectPlayProfile}</h3>
</div> </div>
<div data-role="content"> <div data-role="content">
<form class="editDirectPlayProfileForm"> <form class="editDirectPlayProfileForm">
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="selectDirectPlayProfileType">Type:</label> <label for="selectDirectPlayProfileType">${LabelType}</label>
<select id="selectDirectPlayProfileType" data-mini="true"> <select id="selectDirectPlayProfileType" data-mini="true">
<option value="Audio">Audio</option> <option value="Audio">${OptionProfileAudio}</option>
<option value="Photo">Photo</option> <option value="Photo">${OptionProfilePhoto}</option>
<option value="Video">Video</option> <option value="Video">${OptionProfileVideo}</option>
</select> </select>
</div> </div>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="txtDirectPlayContainer">Container:</label> <label for="txtDirectPlayContainer">${LabelProfileContainer}</label>
<input type="text" id="txtDirectPlayContainer" data-mini="true" /> <input type="text" id="txtDirectPlayContainer" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div> <div class="fieldDescription">${LabelProfileContainersHelp}</div>
</div> </div>
<div id="fldDirectPlayVideoCodec" style="margin: 1em 0;"> <div id="fldDirectPlayVideoCodec" style="margin: 1em 0;">
<label for="txtDirectPlayVideoCodec">Video codecs:</label> <label for="txtDirectPlayVideoCodec">${LabelProfileVideoCodecs}</label>
<input type="text" id="txtDirectPlayVideoCodec" data-mini="true" /> <input type="text" id="txtDirectPlayVideoCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div> <div class="fieldDescription">${LabelProfileCodecsHelp}</div>
</div> </div>
<div id="fldDirectPlayAudioCodec" style="margin: 1em 0 2em;"> <div id="fldDirectPlayAudioCodec" style="margin: 1em 0 2em;">
<label for="txtDirectPlayAudioCodec">Audio codecs:</label> <label for="txtDirectPlayAudioCodec">${LabelProfileAudioCodecs}</label>
<input type="text" id="txtDirectPlayAudioCodec" data-mini="true" /> <input type="text" id="txtDirectPlayAudioCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div> <div class="fieldDescription">${LabelProfileCodecsHelp}</div>
</div> </div>
<p> <p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true"> <button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok ${ButtonOk}
</button> </button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true"> <button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true">
Cancel ${ButtonCancel}
</button> </button>
</p> </p>
</form> </form>
@ -351,7 +351,7 @@
<div data-role="popup" data-transition="slidefade" id="transcodingProfilePopup" class="popup"> <div data-role="popup" data-transition="slidefade" id="transcodingProfilePopup" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;"> <div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Transcoding Profile</h3> <h3>${HeaderTranscodingProfile}</h3>
</div> </div>
<div data-role="content"> <div data-role="content">
@ -359,67 +359,67 @@
<div data-role="controlgroup" data-type="horizontal" data-mini="true"> <div data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="radioTranscodingTab" class="radioTabButton" id="radioTranscodingBasics" value="tabTranscodingBasics"> <input type="radio" name="radioTranscodingTab" class="radioTabButton" id="radioTranscodingBasics" value="tabTranscodingBasics">
<label for="radioTranscodingBasics">Info</label> <label for="radioTranscodingBasics">${TabInfo}</label>
<input type="radio" name="radioTranscodingTab" class="radioTabButton" id="radioTranscodingAdvanced" value="tabTranscodingAdvanced"> <input type="radio" name="radioTranscodingTab" class="radioTabButton" id="radioTranscodingAdvanced" value="tabTranscodingAdvanced">
<label for="radioTranscodingAdvanced">${TabAdvanced}</label> <label for="radioTranscodingAdvanced">${TabAdvanced}</label>
</div> </div>
<div class="tabContent tabTranscodingBasics" style="display: none;"> <div class="tabContent tabTranscodingBasics" style="display: none;">
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="selectTranscodingProfileType">Type:</label> <label for="selectTranscodingProfileType">${LabelType}</label>
<select id="selectTranscodingProfileType" data-mini="true"> <select id="selectTranscodingProfileType" data-mini="true">
<option value="Audio">Audio</option> <option value="Audio">${OptionProfileAudio}</option>
<option value="Photo">Photo</option> <option value="Photo">${OptionProfilePhoto}</option>
<option value="Video">Video</option> <option value="Video">${OptionProfileVideo}</option>
</select> </select>
</div> </div>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="txtTranscodingContainer">Containers:</label> <label for="txtTranscodingContainer">${LabelTranscodingContainer}</label>
<input type="text" id="txtTranscodingContainer" data-mini="true" required="required" /> <input type="text" id="txtTranscodingContainer" data-mini="true" required="required" />
</div> </div>
<div id="fldTranscodingVideoCodec" style="margin: 1em 0;"> <div id="fldTranscodingVideoCodec" style="margin: 1em 0;">
<label for="txtTranscodingVideoCodec">Video codec:</label> <label for="txtTranscodingVideoCodec">${LabelTranscodingVideoCodec}</label>
<input type="text" id="txtTranscodingVideoCodec" data-mini="true" /> <input type="text" id="txtTranscodingVideoCodec" data-mini="true" />
</div> </div>
<div id="fldTranscodingAudioCodec" style="margin: 1em 0;"> <div id="fldTranscodingAudioCodec" style="margin: 1em 0;">
<label for="txtTranscodingAudioCodec">Audio codec:</label> <label for="txtTranscodingAudioCodec">${LabelTranscodingAudioCodec}</label>
<input type="text" id="txtTranscodingAudioCodec" data-mini="true" /> <input type="text" id="txtTranscodingAudioCodec" data-mini="true" />
</div> </div>
</div> </div>
<div class="tabContent tabTranscodingAdvanced" style="display: none;"> <div class="tabContent tabTranscodingAdvanced" style="display: none;">
<div id="fldVideoProfile" style="margin: 1em 0;"> <div id="fldVideoProfile" style="margin: 1em 0;">
<label for="txtTranscodingVideoProfile">Video profile:</label> <label for="txtTranscodingVideoProfile">${LabelTranscodingVideoProfile}</label>
<input type="text" id="txtTranscodingVideoProfile" data-mini="true" /> <input type="text" id="txtTranscodingVideoProfile" data-mini="true" />
</div> </div>
<div id="fldEnableMpegtsM2TsMode" style="margin: 1em 0;"> <div id="fldEnableMpegtsM2TsMode" style="margin: 1em 0;">
<label for="chkEnableMpegtsM2TsMode">Enable M2ts mode</label> <label for="chkEnableMpegtsM2TsMode">${OptionEnableM2tsMode}</label>
<input type="checkbox" id="chkEnableMpegtsM2TsMode" data-mini="true" /> <input type="checkbox" id="chkEnableMpegtsM2TsMode" data-mini="true" />
<div class="fieldDescription">Enable m2ts mode when encoding to mpegts.</div> <div class="fieldDescription">${OptionEnableM2tsModeHelp}</div>
</div> </div>
<div id="fldEstimateContentLength" style="margin: 1em 0;"> <div id="fldEstimateContentLength" style="margin: 1em 0;">
<label for="chkEstimateContentLength">Estimate content length when transcoding</label> <label for="chkEstimateContentLength">${OptionEstimateContentLength}</label>
<input type="checkbox" id="chkEstimateContentLength" data-mini="true" /> <input type="checkbox" id="chkEstimateContentLength" data-mini="true" />
</div> </div>
<div id="fldReportByteRangeRequests" style="margin: 1em 0;"> <div id="fldReportByteRangeRequests" style="margin: 1em 0;">
<label for="chkReportByteRangeRequests">Report that the server supports byte seeking when transcoding</label> <label for="chkReportByteRangeRequests">${OptionReportByteRangeSeekingWhenTranscoding}</label>
<input type="checkbox" id="chkReportByteRangeRequests" data-mini="true" /> <input type="checkbox" id="chkReportByteRangeRequests" data-mini="true" />
<div class="fieldDescription">This is required for some devices that don't time seek very well.</div> <div class="fieldDescription">${OptionReportByteRangeSeekingWhenTranscodingHelp}</div>
</div> </div>
</div> </div>
<p> <p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true"> <button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok ${ButtonOk}
</button> </button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true"> <button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true">
Cancel ${ButtonCancel}
</button> </button>
</p> </p>
</form> </form>
@ -429,34 +429,34 @@
<div data-role="popup" data-transition="slidefade" id="containerProfilePopup" class="popup"> <div data-role="popup" data-transition="slidefade" id="containerProfilePopup" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;"> <div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Container Profile</h3> <h3>${HeaderContainerProfile}</h3>
</div> </div>
<div data-role="content"> <div data-role="content">
<form class="containerProfileForm" style="min-width: 250px;"> <form class="containerProfileForm" style="min-width: 250px;">
<p>Define additional conditions that must be met in order for a file to be direct played.</p> <p>${HeaderContainerProfileHelp}</p>
<!-- <div data-role="controlgroup" data-type="horizontal" data-mini="true"> <!-- <div data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileInfo" value="tabContainerBasics"> <input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileInfo" value="tabContainerBasics">
<label for="radioContainerProfileInfo">Info</label> <label for="radioContainerProfileInfo">${TabInfo}</label>
<input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileConditions" value="tabContainerConditions"> <input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileConditions" value="tabContainerConditions">
<label for="radioContainerProfileConditions">Conditions</label> <label for="radioContainerProfileConditions">Conditions</label>
</div>--> </div>-->
<div class="tabContent tabContainerBasics"> <div class="tabContent tabContainerBasics">
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="selectContainerProfileType">Type:</label> <label for="selectContainerProfileType">${LabelType}</label>
<select id="selectContainerProfileType" data-mini="true"> <select id="selectContainerProfileType" data-mini="true">
<option value="Photo">Photo</option> <option value="Photo">${OptionProfilePhoto}</option>
<option value="Video">Video</option> <option value="Video">${OptionProfileVideo}</option>
</select> </select>
</div> </div>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="txtContainerProfileContainer">Containers:</label> <label for="txtContainerProfileContainer">Containers:</label>
<input type="text" id="txtContainerProfileContainer" data-mini="true" /> <input type="text" id="txtContainerProfileContainer" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div> <div class="fieldDescription">${LabelProfileContainersHelp}</div>
</div> </div>
</div> </div>
@ -466,10 +466,10 @@
<p> <p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true"> <button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok ${ButtonOk}
</button> </button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true"> <button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true">
Cancel ${ButtonCancel}
</button> </button>
</p> </p>
</form> </form>
@ -479,35 +479,35 @@
<div data-role="popup" data-transition="slidefade" id="codecProfilePopup" class="popup"> <div data-role="popup" data-transition="slidefade" id="codecProfilePopup" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;"> <div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Codec Profile</h3> <h3>${HeaderCodecProfile}</h3>
</div> </div>
<div data-role="content"> <div data-role="content">
<form class="codecProfileForm" style="min-width: 250px;"> <form class="codecProfileForm" style="min-width: 250px;">
<p>Define additional conditions that must be met in order for a codec to be direct played.</p> <p>${HeaderCodecProfileHelp}</p>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="selectCodecProfileType">Type:</label> <label for="selectCodecProfileType">${LabelType}</label>
<select id="selectCodecProfileType" data-mini="true"> <select id="selectCodecProfileType" data-mini="true">
<option value="Video">Video</option> <option value="Video">${OptionProfileVideo}</option>
<option value="VideoAudio">Video Audio</option> <option value="VideoAudio">${OptionProfileVideoAudio}</option>
<option value="Audio">Audio</option> <option value="Audio">${OptionProfileAudio}</option>
</select> </select>
</div> </div>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="txtCodecProfileCodec">Codecs:</label> <label for="txtCodecProfileCodec">${LabelProfileCodecs}</label>
<input type="text" id="txtCodecProfileCodec" data-mini="true" /> <input type="text" id="txtCodecProfileCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div> <div class="fieldDescription">${LabelProfileCodecsHelp}</div>
</div> </div>
<p> <p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true"> <button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok ${ButtonOk}
</button> </button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true"> <button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true">
Cancel ${ButtonCancel}
</button> </button>
</p> </p>
</form> </form>
@ -517,37 +517,37 @@
<div data-role="popup" data-transition="slidefade" id="responseProfilePopup" class="popup"> <div data-role="popup" data-transition="slidefade" id="responseProfilePopup" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;"> <div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Response Profile</h3> <h3>${HeaderResponseProfile}</h3>
</div> </div>
<div data-role="content"> <div data-role="content">
<form class="editResponseProfileForm"> <form class="editResponseProfileForm">
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="selectResponseProfileType">Type:</label> <label for="selectResponseProfileType">${LabelType}</label>
<select id="selectResponseProfileType" data-mini="true"> <select id="selectResponseProfileType" data-mini="true">
<option value="Audio">Audio</option> <option value="Audio">${OptionProfileAudio}</option>
<option value="Photo">Photo</option> <option value="Photo">${OptionProfilePhoto}</option>
<option value="Video">Video</option> <option value="Video">${OptionProfileVideo}</option>
</select> </select>
</div> </div>
<div style="margin: 1em 0;"> <div style="margin: 1em 0;">
<label for="txtResponseProfileContainer">Container:</label> <label for="txtResponseProfileContainer">${LabelProfileContainer}</label>
<input type="text" id="txtResponseProfileContainer" data-mini="true" /> <input type="text" id="txtResponseProfileContainer" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div> <div class="fieldDescription">${LabelProfileContainersHelp}</div>
</div> </div>
<div id="fldResponseProfileVideoCodec" style="margin: 1em 0;"> <div id="fldResponseProfileVideoCodec" style="margin: 1em 0;">
<label for="txtResponseProfileVideoCodec">Video codecs:</label> <label for="txtResponseProfileVideoCodec">${LabelProfileVideoCodecs}</label>
<input type="text" id="txtResponseProfileVideoCodec" data-mini="true" /> <input type="text" id="txtResponseProfileVideoCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div> <div class="fieldDescription">${LabelProfileCodecsHelp}</div>
</div> </div>
<div id="fldResponseProfileAudioCodec" style="margin: 1em 0 2em;"> <div id="fldResponseProfileAudioCodec" style="margin: 1em 0 2em;">
<label for="txtResponseProfileAudioCodec">Audio codecs:</label> <label for="txtResponseProfileAudioCodec">${LabelProfileAudioCodecs}</label>
<input type="text" id="txtResponseProfileAudioCodec" data-mini="true" /> <input type="text" id="txtResponseProfileAudioCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div> <div class="fieldDescription">${LabelProfileCodecsHelp}</div>
</div> </div>
<p> <p>

View file

@ -6,15 +6,10 @@
<body> <body>
<div id="indexPage" data-role="page" class="page type-home libraryPage allLibraryPage noSecondaryNavPage" data-theme="b"> <div id="indexPage" data-role="page" class="page type-home libraryPage allLibraryPage noSecondaryNavPage" data-theme="b">
<div data-role="content"> <div data-role="content">
<table class="ehsContent"> <table class="ehsContent">
<tr> <tr>
<td> <td>
<h1 class="listHeader">${HeaderMyLibrary}</h1>
<div class="myLibrary">
</div>
<div id="resumableSection" style="display: none;"> <div id="resumableSection" style="display: none;">
<h1 class="listHeader">${HeaderResume}</h1> <h1 class="listHeader">${HeaderResume}</h1>

View file

@ -8,24 +8,6 @@
var options = { var options = {
SortBy: "SortName",
Fields: "PrimaryImageAspectRatio"
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
$('.myLibrary', page).html(LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: 'backdrop',
showTitle: true,
centerText: true
})).createPosterItemMenus();
});
options = {
SortBy: "DatePlayed", SortBy: "DatePlayed",
SortOrder: "Descending", SortOrder: "Descending",
MediaTypes: "Video", MediaTypes: "Video",
@ -50,7 +32,8 @@
preferBackdrop: true, preferBackdrop: true,
shape: 'backdrop', shape: 'backdrop',
overlayText: true, overlayText: true,
showTitle: true showTitle: true,
showParentTitle: true
})).createPosterItemMenus(); })).createPosterItemMenus();
@ -60,7 +43,7 @@
SortBy: "DateCreated", SortBy: "DateCreated",
SortOrder: "Descending", SortOrder: "Descending",
Limit: screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : (screenWidth >= 800 ? 8 : 8)), Limit: screenWidth >= 1920 ? 20 : (screenWidth >= 1440 ? 16 : (screenWidth >= 800 ? 12 : 8)),
Recursive: true, Recursive: true,
Fields: "PrimaryImageAspectRatio", Fields: "PrimaryImageAspectRatio",
Filters: "IsUnplayed,IsNotFolder", Filters: "IsUnplayed,IsNotFolder",

View file

@ -356,6 +356,33 @@
// Handle search hints // Handle search hints
var id = item.Id || item.ItemId; var id = item.Id || item.ItemId;
if (item.CollectionType == 'boxsets' || item.Type == 'ManualCollectionsFolder') {
return 'collections.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'trailers' || item.Type == 'TrailerCollectionFolder') {
return 'movietrailers.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'movies') {
return 'movieslatest.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'tvshows') {
return 'tvrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'music') {
return 'musicrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'games') {
return 'gamesrecommended.html?topParentId=' + item.Id;
}
if (item.Type == 'CollectionFolder') {
return 'itemlist.html?topParentId=' + item.Id + '&parentid=' + item.Id;
}
if (item.Type == "TvChannel") { if (item.Type == "TvChannel") {
return "livetvchannel.html?id=" + id; return "livetvchannel.html?id=" + id;
} }

View file

@ -73,31 +73,7 @@
function getItemHref(item) { function getItemHref(item) {
if (item.CollectionType == 'boxsets' || item.Type == 'ManualCollectionsFolder') { return LibraryBrowser.getHref(item);
return 'collections.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'trailers' || item.Type == 'TrailerCollectionFolder') {
return 'movietrailers.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'movies') {
return 'movieslatest.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'tvshows') {
return 'tvrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'music') {
return 'musicrecommended.html?topParentId=' + item.Id;
}
if (item.CollectionType == 'games') {
return 'gamesrecommended.html?topParentId=' + item.Id;
}
return 'itemlist.html?topParentId=' + item.Id + '&parentid=' + item.Id;
} }
function insertViews(page, user, counts, items, liveTvInfo) { function insertViews(page, user, counts, items, liveTvInfo) {

View file

@ -11,6 +11,11 @@
StartIndex: 0 StartIndex: 0
}; };
function getSavedQueryKey() {
return 'collections' + (query.ParentId || '');
}
function reloadItems(page) { function reloadItems(page) {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
@ -62,7 +67,7 @@
reloadItems(page); reloadItems(page);
}); });
LibraryBrowser.saveQueryValues('boxsets', query); LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
Dashboard.getCurrentUser().done(function(user) { Dashboard.getCurrentUser().done(function(user) {
@ -192,6 +197,8 @@
}).on('pagebeforeshow', "#boxsetsPage", function () { }).on('pagebeforeshow', "#boxsetsPage", function () {
query.ParentId = LibraryMenu.getTopParentId();
var limit = LibraryBrowser.getDefaultPageSize(); var limit = LibraryBrowser.getDefaultPageSize();
// If the default page size has changed, the start index will have to be reset // If the default page size has changed, the start index will have to be reset
@ -200,7 +207,7 @@
query.StartIndex = 0; query.StartIndex = 0;
} }
LibraryBrowser.loadSavedQueryValues('boxsets', query); LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
reloadItems(this); reloadItems(this);
@ -220,7 +227,9 @@
var url = ApiClient.getUrl("Collections", { var url = ApiClient.getUrl("Collections", {
Name: $('#txtNewCollectionName', page).val(), Name: $('#txtNewCollectionName', page).val(),
IsLocked: !$('#chkEnableInternetMetadata', page).checked() IsLocked: !$('#chkEnableInternetMetadata', page).checked(),
ParentId: getParameterByName('parentId') || getParameterByName('topParentId')
}); });

View file

@ -70,22 +70,7 @@
var html = ''; var html = '';
var context; html += '<a class="searchHint" href="' + LibraryBrowser.getHref(hint) + '">';
if (hint.Type == "Episode" || hint.Type == "Season" || hint.Type == "Series") {
context = "tv";
}
else if (hint.Type == "Game" || hint.Type == "GameSystem") {
context = "games";
}
else if (hint.Type == "MusicArtist" || hint.Type == "MusicAlbum") {
context = "music";
}
else if (hint.Type == "Movie" || hint.Type == "BoxSet" || hint.Type == "Trailer") {
context = "movie";
}
html += '<a class="searchHint" href="' + LibraryBrowser.getHref(hint, context) + '">';
var imgUrl; var imgUrl;

View file

@ -834,9 +834,9 @@ var Dashboard = {
// Full list // Full list
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23 // https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
switch (cmd.Name) { switch (cmd.Name) {
case 'GoHome': case 'GoHome':
Dashboard.navigate('index.html'); Dashboard.navigate('index.html');
break; break;
@ -971,29 +971,27 @@ var Dashboard = {
onBrowseCommand: function (cmd) { onBrowseCommand: function (cmd) {
var context = cmd.Context || "";
var url; var url;
var type = (cmd.ItemType || "").toLowerCase(); var type = (cmd.ItemType || "").toLowerCase();
if (type == "genre") { if (type == "genre") {
url = "itembynamedetails.html?genre=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; url = "itembynamedetails.html?genre=" + ApiClient.encodeName(cmd.ItemName);
} }
else if (type == "musicgenre") { else if (type == "musicgenre") {
url = "itembynamedetails.html?musicgenre=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + (context || "music"); url = "itembynamedetails.html?musicgenre=" + ApiClient.encodeName(cmd.ItemName);
} }
else if (type == "gamegenre") { else if (type == "gamegenre") {
url = "itembynamedetails.html?gamegenre=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + (context || "games"); url = "itembynamedetails.html?gamegenre=" + ApiClient.encodeName(cmd.ItemName);
} }
else if (type == "studio") { else if (type == "studio") {
url = "itembynamedetails.html?studio=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; url = "itembynamedetails.html?studio=" + ApiClient.encodeName(cmd.ItemName);
} }
else if (type == "person") { else if (type == "person") {
url = "itembynamedetails.html?person=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; url = "itembynamedetails.html?person=" + ApiClient.encodeName(cmd.ItemName);
} }
else if (type == "musicartist") { else if (type == "musicartist") {
url = "itembynamedetails.html?musicartist=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + (context || "music"); url = "itembynamedetails.html?musicartist=" + ApiClient.encodeName(cmd.ItemName);
} }
if (url) { if (url) {
@ -1003,7 +1001,7 @@ var Dashboard = {
ApiClient.getItem(Dashboard.getCurrentUserId(), cmd.ItemId).done(function (item) { ApiClient.getItem(Dashboard.getCurrentUserId(), cmd.ItemId).done(function (item) {
Dashboard.navigate(LibraryBrowser.getHref(item, context)); Dashboard.navigate(LibraryBrowser.getHref(item));
}); });