This commit is contained in:
tikuf 2014-04-09 16:44:07 +10:00
commit 1a56ea5c0a
49 changed files with 522 additions and 345 deletions

View File

@ -223,6 +223,9 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout, wi
if (!userId) {
throw new Error("null userId");
}
if (!itemId) {
throw new Error("null itemId");
}
var url = self.getUrl("Users/" + userId + "/Items/" + itemId);

View File

@ -19,31 +19,31 @@
<ul data-role="listview" class="ulForm">
<li>
<label for="txtPortNumber">Http server port number: </label>
<label for="txtPortNumber">${LabelHttpServerPortNumber}</label>
<input type="number" id="txtPortNumber" name="txtPortNumber" pattern="[0-9]*" required="required" min="1" data-mini="true" />
</li>
<li id="fldWebSocketPortNumber" style="display: none;">
<label for="txtWebSocketPortNumber">Web socket port number: </label>
<label for="txtWebSocketPortNumber">${LabelWebSocketPortNumber}</label>
<input type="number" id="txtWebSocketPortNumber" name="txtWebSocketPortNumber" pattern="[0-9]*" required="required" min="1" data-mini="true" />
</li>
<li>
<label for="chkEnableUpnp">Enable UPnP</label>
<label for="chkEnableUpnp">${LabelEnableAutomaticPortMapping}</label>
<input type="checkbox" id="chkEnableUpnp" data-mini="true" />
<div class="fieldDescription">UPnP allows automated router configuration for remote access. This may not work with some router models.</div>
<div class="fieldDescription">${LabelEnableAutomaticPortHelp}</div>
</li>
<li>
<label for="txtDdns">External DDNS:</label>
<label for="txtDdns">${LabelExternalDDNS}</label>
<input id="txtDdns" data-mini="true" />
<div class="fieldDescription">If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely.</div>
<div class="fieldDescription">${LabelExternalDDNSHelp}</div>
</li>
</ul>
<ul data-role="listview" class="ulForm">
<li>
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete" data-mini="true">
Cancel
${ButtonCancel}
</button>
</li>

View File

@ -35,10 +35,10 @@
<ul data-role="listview" class="ulForm">
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>App Settings</title>
<title>${TitleAppSettings}</title>
</head>
<body>
<div id="appsPlaybackPage" data-role="page" class="page appsPage type-interior">
@ -9,39 +9,39 @@
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">Resume</a>
<a href="appsweather.html" data-role="button">Weather</a>
<a href="#" data-role="button" class="ui-btn-active">${TabResume}</a>
<a href="appsweather.html" data-role="button">${TabWeather}</a>
</div>
<form class="appsPlaybackForm">
<ul data-role="listview" class="ulForm">
<li>
<label for="txtMinResumePct">Min resume percentage: </label>
<label for="txtMinResumePct">${LabelMinResumePercentage}</label>
<input type="number" id="txtMinResumePct" name="txtMinResumePct" pattern="[0-9]*" required="required" min="0" max="100" />
<div class="fieldDescription">
Titles are assumed unplayed if stopped before this time
${LabelMinResumePercentageHelp}
</div>
</li>
<li>
<label for="txtMaxResumePct">Max resume percentage: </label>
<label for="txtMaxResumePct">${LabelMaxResumePercentage}</label>
<input type="number" id="txtMaxResumePct" name="txtMaxResumePct" pattern="[0-9]*" required="required" min="1" max="100" />
<div class="fieldDescription">
Titles are assumed fully played if stopped after this time
${LabelMaxResumePercentageHelp}
</div>
</li>
<li>
<label for="txtMinResumeDuration">Min resume duration (seconds): </label>
<label for="txtMinResumeDuration">${LabelMinResumeDuration}</label>
<input type="number" id="txtMinResumeDuration" name="txtMinResumeDuration" pattern="[0-9]*" required="required" min="0" />
<div class="fieldDescription">
Titles shorter than this will not be resumable
${LabelMinResumeDurationHelp}
</div>
</li>
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>App Settings</title>
<title>${TitleAppSettings}</title>
</head>
<body>
<div id="appsWeatherPage" data-role="page" class="page appsPage type-interior">
@ -9,8 +9,8 @@
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="appsplayback.html" data-role="button">Resume</a>
<a href="#" data-role="button" class="ui-btn-active">Weather</a>
<a href="appsplayback.html" data-role="button">${TabResume}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabWeather}</a>
</div>
<form class="appsWeatherForm">
@ -31,10 +31,10 @@
</li>
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -16,30 +16,30 @@
</div>
<div class="listTopPaging">
</div>
<button id="btnNewCollection" data-mini="true" data-icon="plus" data-inline="true" class="hide">New</button>
<button id="btnNewCollection" data-mini="true" data-icon="plus" data-inline="true" class="hide">${ButtonNew}</button>
</div>
<div id="items" class="itemsContainer"></div>
</div>
<div data-role="panel" id="newCollectionPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
<form class="newCollectionForm">
<h3>New Collection</h3>
<h3>${HeaderNewCollection}</h3>
<br />
<div>
<label for="txtNewCollectionName">Name:</label>
<label for="txtNewCollectionName">${LabelName}</label>
<input type="text" id="txtNewCollectionName" required="required" />
<div class="fieldDescription">Example: Star Wars Collection</div>
<div class="fieldDescription">${NewCollectionNameExample}</div>
</div>
<br />
<div>
<label for="chkEnableInternetMetadata">Search the internet for artwork and metadata</label>
<label for="chkEnableInternetMetadata">${OptionSearchForInternetMetadata}</label>
<input type="checkbox" id="chkEnableInternetMetadata" data-mini="true" />
</div>
<br />
<p>
<button id="btnSubmitNewCollection" type="submit" data-icon="plus" data-mini="true" data-theme="b">Create</button>
<button id="btnSubmitNewCollection" type="submit" data-icon="plus" data-mini="true" data-theme="b">${ButtonCreate}</button>
</p>
</form>
</div>
@ -49,11 +49,12 @@
<form>
<div id="sortpanel">
<fieldset data-role="controlgroup">
<legend>Sort By:
<legend>
<strong>${HeaderSortBy}</strong>
</legend>
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
<label for="radioSortName">Name</label>
<label for="radioSortName">${OptionNameSort}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioCommunityRating" value="off" data-sortby="CommunityRating" data-mini="true">
<label for="radioCommunityRating">${OptionCommunityRating}</label>
@ -63,7 +64,8 @@
</fieldset>
<fieldset data-role="controlgroup">
<legend>Sort Order:
<legend>
<strong>${HeaderSortOrder}</strong>
</legend>
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -537,6 +537,10 @@ a.itemTag:hover {
padding: 0 1em;
}
.mobileDetailButtons {
display: none;
}
.libraryPage ::-webkit-scrollbar {
width: 12px;
height: 12px;
@ -598,7 +602,7 @@ a.itemTag:hover {
}
.libraryPanelHeader {
margin: 10px 0 20px 0;
margin: 5px 0 25px 0;
}
.libraryPanelHeader a {
@ -722,11 +726,11 @@ a.itemTag:hover {
margin-top: 0;
}
.mobileOverview, .mobileGenres {
.mobileOverview, .mobileGenres, .mobileDetailButtons {
display: block;
}
.desktopOverview, .desktopGenres {
.desktopOverview, .desktopGenres, .desktopDetailButtons {
display: none;
}

View File

@ -299,7 +299,6 @@ h1 .imageLink {
padding: .75em .5em .75em 1.25em;
display: block;
text-decoration: none;
font-size: 14px;
color: #fff!important;
font-weight: normal !important;
}
@ -327,7 +326,7 @@ h1 .imageLink {
}
.appLinks img {
height: 30px;
height: 32px;
}
.activeDevicesCollapsible .ui-collapsible-content {

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<title>${TitleDashboard}</title>
</head>
<body>
<div id="dashboardPage" data-role="page" class="page type-interior adminPage dashboardHomePage">
@ -10,9 +10,9 @@
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">Home</a>
<a href="#" data-role="button" class="ui-btn-active">${TabHome}</a>
<a href="dashboardgeneral.html" data-role="button">${TabGeneral}</a>
<a href="dashboardinfopage.html" data-role="button">Info</a>
<a href="dashboardinfopage.html" data-role="button">${TabInfo}</a>
</div>
<div class="dashboardContent">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<title>${TitleDashboard}</title>
</head>
<body>
<div id="dashboardGeneralPage" data-role="page" class="page type-interior adminPage dashboardHomePage">
@ -10,33 +10,38 @@
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="dashboard.html" data-role="button">Home</a>
<a href="dashboard.html" data-role="button">${TabHome}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabGeneral}</a>
<a href="dashboardinfopage.html" data-role="button">Info</a>
<a href="dashboardinfopage.html" data-role="button">${TabInfo}</a>
</div>
<form class="dashboardGeneralForm">
<ul data-role="listview" class="ulForm">
<li>
<label for="txtServerName">Friendly server name:</label>
<label for="txtServerName">${LabelFriendlyServerName}</label>
<input id="txtServerName" data-mini="true" />
<div class="fieldDescription">This name will be used to identify this server. If left blank, the computer name will be used.</div>
<div class="fieldDescription">${LabelFriendlyServerNameHelp}</div>
</li>
<li>
<label for="selectLocalizationLanguage">Preferred display language</label>
<label for="selectLocalizationLanguage">${LabelPreferredDisplayLanguage}</label>
<select id="selectLocalizationLanguage" data-mini="true">
</select>
<div class="fieldDescription">Translating Media Browser is an ongoing project. <a href="http://mediabrowser3.com/community/index.php?/topic/5727-join-our-translation-team/" target="_blank">Read about how you can contribute</a>.</div>
<div class="fieldDescription">
<div>${LabelPreferredDisplayLanguageHelp}</div>
<div>
<a href="http://mediabrowser3.com/community/index.php?/topic/5727-join-our-translation-team/" target="_blank">${LabelReadHowYouCanContribute}</a>
</div>
</div>
</li>
</ul>
<ul data-role="listview" class="ulForm">
<li>
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete" data-mini="true">
Cancel
${ButtonCancel}
</button>
</li>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<title>${TitleDashboard}</title>
</head>
<body>
<div id="dashboardInfoPage" data-role="page" class="page type-interior adminPage dashboardHomePage">
@ -11,22 +11,22 @@
<div class="readOnlyContent">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="dashboard.html" data-role="button">Home</a>
<a href="dashboard.html" data-role="button">${TabHome}</a>
<a href="dashboardgeneral.html" data-role="button">${TabGeneral}</a>
<a href="#" data-role="button" class="ui-btn-active">Info</a>
<a href="#" data-role="button" class="ui-btn-active">${TabInfo}</a>
</div>
<div data-role="collapsible" data-collapsed="false" style="margin-top: 1em;">
<h3>Links</h3>
<h3>${HeaderLinks}</h3>
<div>
<p><a href="http://mediabrowser3.com/community" target="_blank">Community</a> - Join us!</p>
<p><a href="https://github.com/MediaBrowser/MediaBrowser" target="_blank">Github</a></p>
<p><a href="../swagger-ui/index.html" target="_blank">Api Documentation</a></p>
<p><a href="http://mediabrowser3.com/community" target="_blank">${LinkCommunity}</a></p>
<p><a href="https://github.com/MediaBrowser/MediaBrowser" target="_blank">${LinkGithub}</a></p>
<p><a href="../swagger-ui/index.html" target="_blank">${LinkApiDocumentation}</a></p>
</div>
</div>
<div data-role="collapsible" data-collapsed="false" style="margin-top: 1em;">
<h3>System Paths</h3>
<h3>${HeaderSystemPaths}</h3>
<div>
<p><b>Cache:</b> <span id="cachePath"></span></p>
<p><b>Images by name:</b> <span id="imagesByNamePath"></span></p>

View File

@ -11,7 +11,7 @@
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="dlnasettings.html" data-role="button">${TabSettings}</a>
<a href="dlnaprofiles.html" data-role="button" class="ui-btn-active">Profiles</a>
<a href="dlnaprofiles.html" data-role="button" class="ui-btn-active">${TabProfiles}</a>
</div>
<form class="dlnaProfileForm" style="max-width: 650px;">
@ -132,19 +132,21 @@
<div class="transcodingProfiles"></div>
</div>
<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 device supports the container natively.</p>
<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>
<button class="btnAddContainerProfile" type="button" data-mini="true" data-icon="plus">New</button>
<br />
<div class="containerProfiles"></div>
</div>
<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 device supports the codec natively.</p>
<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>
<button class="btnAddCodecProfile" type="button" data-mini="true" data-icon="plus">New</button>
<br />
<div class="codecProfiles"></div>
</div>
<div class="tabContent tabMediaProfiles">
<p>Response profiles provide a way to customize information sent to the device when playing certain kinds of media.</p>
<button class="btnAddResponseProfile" type="button" data-mini="true" data-icon="plus">New</button>
<br />
<div class="mediaProfiles"></div>
</div>
<br />
@ -300,18 +302,32 @@
<p>Define additional conditions that must be met in order for a file to be direct played.</p>
<div style="margin: 1em 0;">
<label for="selectContainerProfileType">Type:</label>
<select id="selectContainerProfileType" data-mini="true">
<option value="Photo">Photo</option>
<option value="Video">Video</option>
</select>
<!-- <div data-role="controlgroup" data-type="horizontal" data-mini="true">
<input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileInfo" value="tabContainerBasics">
<label for="radioContainerProfileInfo">Info</label>
<input type="radio" name="radioContainerProfileTab" class="radioTabButton" id="radioContainerProfileConditions" value="tabContainerConditions">
<label for="radioContainerProfileConditions">Conditions</label>
</div>-->
<div class="tabContent tabContainerBasics">
<div style="margin: 1em 0;">
<label for="selectContainerProfileType">Type:</label>
<select id="selectContainerProfileType" data-mini="true">
<option value="Photo">Photo</option>
<option value="Video">Video</option>
</select>
</div>
<div style="margin: 1em 0;">
<label for="txtContainerProfileContainer">Containers:</label>
<input type="text" id="txtContainerProfileContainer" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div>
</div>
</div>
<div style="margin: 1em 0;">
<label for="txtContainerProfileContainer">Containers:</label>
<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="tabContent tabContainerConditions" style="display: none;">
</div>
<p>
@ -349,9 +365,57 @@
<div style="margin: 1em 0;">
<label for="txtCodecProfileCodec">Codecs:</label>
<input type="text" id="txtCodecProfileCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div>
</div>
<p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok
</button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');" data-mini="true">
Cancel
</button>
</p>
</form>
</div>
</div>
<div data-role="popup" data-transition="slidefade" id="responseProfilePopup" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Response Profile</h3>
</div>
<div data-role="content">
<form class="editResponseProfileForm">
<div style="margin: 1em 0;">
<label for="selectResponseProfileType">Type:</label>
<select id="selectResponseProfileType" data-mini="true">
<option value="Audio">Audio</option>
<option value="Photo">Photo</option>
<option value="Video">Video</option>
</select>
</div>
<div style="margin: 1em 0;">
<label for="txtResponseProfileContainer">Container:</label>
<input type="text" id="txtResponseProfileContainer" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all containers</div>
</div>
<div id="fldResponseProfileVideoCodec" style="margin: 1em 0;">
<label for="txtResponseProfileVideoCodec">Video codecs:</label>
<input type="text" id="txtResponseProfileVideoCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div>
</div>
<div id="fldResponseProfileAudioCodec" style="margin: 1em 0 2em;">
<label for="txtResponseProfileAudioCodec">Audio codecs:</label>
<input type="text" id="txtResponseProfileAudioCodec" data-mini="true" />
<div>Separated by comma. This can be left empty to apply to all codecs</div>
</div>
<p>
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
Ok
@ -370,6 +434,7 @@
$('.transcodingProfileForm').off('submit', DlnaProfilePage.onTranscodingProfileFormSubmit).on('submit', DlnaProfilePage.onTranscodingProfileFormSubmit);
$('.containerProfileForm').off('submit', DlnaProfilePage.onContainerProfileFormSubmit).on('submit', DlnaProfilePage.onContainerProfileFormSubmit);
$('.codecProfileForm').off('submit', DlnaProfilePage.onCodecProfileFormSubmit).on('submit', DlnaProfilePage.onCodecProfileFormSubmit);
$('.editResponseProfileForm').off('submit', DlnaProfilePage.onResponseProfileFormSubmit).on('submit', DlnaProfilePage.onResponseProfileFormSubmit);
</script>
</div>
</body>

View File

@ -11,26 +11,26 @@
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="dlnasettings.html" data-role="button">${TabSettings}</a>
<a href="#" data-role="button" class="ui-btn-active">Profiles</a>
<a href="#" data-role="button" class="ui-btn-active">${TabProfiles}</a>
</div>
<div class="readOnlyContent">
<div style="position: relative;">
<h2>Custom Profiles</h2>
<h2>${HeaderCustomDlnaProfiles}</h2>
<div style="position: absolute; right: 0; top: -12px;">
<a data-role="button" data-icon="plus" data-mini="true" href="dlnaprofile.html">New</a>
<a data-role="button" data-icon="plus" data-mini="true" href="dlnaprofile.html">${ButtonNew}</a>
</div>
</div>
<p>Create a custom profile to target a new device or override a system profile.</p>
<p>${CustomDlnaProfilesHelp}</p>
<div class="customProfiles"></div>
<br />
<h2>System Profiles</h2>
<h2>${HeaderSystemDlnaProfiles}</h2>
<p>System profiles are read-only. To override a system profile, create a custom profile targeting the same device.</p>
<p>${SystemDlnaProfilesHelp}</p>
<div class="systemProfiles"></div>
</div>

View File

@ -11,33 +11,33 @@
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
<a href="dlnaprofiles.html" data-role="button">Profiles</a>
<a href="dlnaprofiles.html" data-role="button">${TabProfiles}</a>
</div>
<form class="dlnaSettingsForm">
<ul data-role="listview" class="ulForm">
<li>
<label for="chkEnablePlayTo">Enable DLNA Play To</label>
<label for="chkEnablePlayTo">${LabelEnableDlnaPlayTo}</label>
<input type="checkbox" id="chkEnablePlayTo" data-mini="true" />
<div class="fieldDescription">Media Browser can detect devices within your network and offer the ability to remote control them.</div>
<div class="fieldDescription">${LabelEnableDlnaPlayToHelp}</div>
</li>
<li>
<label for="chkEnableDlnaDebugLogging">Enable DLNA debug logging</label>
<label for="chkEnableDlnaDebugLogging">${LabelEnableDlnaDebugLogging}</label>
<input type="checkbox" id="chkEnableDlnaDebugLogging" data-mini="true" />
<div class="fieldDescription">This will create large log files and should only be used as needed for troubleshooting purposes.</div>
<div class="fieldDescription">${LabelEnableDlnaDebugLoggingHelp}</div>
</li>
<li>
<label for="txtClientDiscoveryInterval">Client discovery interval (seconds)</label>
<label for="txtClientDiscoveryInterval">${LabelEnableDlnaClientDiscoveryInterval}</label>
<input type="number" id="txtClientDiscoveryInterval" data-mini="true" min="1" max="300" />
<div class="fieldDescription">Determines the duration in seconds of the interval between SSDP searches performed by Media Browser.</div>
<div class="fieldDescription">${LabelEnableDlnaClientDiscoveryIntervalHelp}</div>
</li>
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -17,19 +17,19 @@
<h1 class="itemName editPageName">&nbsp;</h1>
<br />
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
<a href="#" data-role="button" id="btnEditMetadata">${TabMetadata}</a>
<a id="btnEditPeople" style="display: none;" href="#" data-role="button">${TabPeople}</a>
<a href="#" data-role="button" class="ui-btn-active">Titles</a>
<a id="btnEditImages" href="#" data-role="button">Images</a>
<a href="#" data-role="button" class="ui-btn-active">${TabCollectionTitles}</a>
<a id="btnEditImages" href="#" data-role="button">${TabImages}</a>
</div>
<p style="margin-top: -20px;">
Add or remove any movies, series, albums, books or games you wish to group within this collection.
${EditCollectionItemsHelp}
</p>
<div>
<button type="button" id="btnAddItem" data-icon="plus" data-inline="true" data-mini="true">Add</button>
<button type="button" id="btnRemoveItems" data-icon="delete" data-inline="true" data-mini="true" disabled="disabled">Remove</button>
<button type="button" id="btnAddItem" data-icon="plus" data-inline="true" data-mini="true">${ButtonAdd}</button>
<button type="button" id="btnRemoveItems" data-icon="delete" data-inline="true" data-mini="true" disabled="disabled">${ButtonRemove}</button>
</div>
<br />
<div class="collectionItems"></div>
@ -39,7 +39,7 @@
<div data-role="popup" data-transition="slidefade" class="popupIdentify popup" data-theme="a">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Add Titles
<h3>${HeaderAddTitles}
</h3>
</div>
@ -48,14 +48,14 @@
<form class="collectionItemSearchForm" style="max-width: initial;">
<div>
<label for="txtLookupName">Name:</label>
<label for="txtLookupName">${LabelName}</label>
<div style="display: inline-block; width: 75%;">
<input type="text" id="txtLookupName" data-mini="true" required="required" />
</div>
<button type="submit" data-icon="search" data-mini="true" data-inline="true" data-iconpos="notext">
Search
${ButtonSearch}
</button>
</div>
@ -63,7 +63,7 @@
</div>
<button id="btnAddItems" type="button" data-icon="plus" data-mini="true">
Add
${ButtonAdd}
</button>
</form>
</div>

View File

@ -17,10 +17,10 @@
<h1 class="itemName editPageName">&nbsp;</h1>
<br />
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
<a href="#" data-role="button" id="btnEditMetadata">${TabMetadata}</a>
<a href="#" data-role="button" id="btnEditPeople" style="display: none;">${TabPeople}</a>
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">Titles</a>
<a href="#" data-role="button" class="ui-btn-active">Images</a>
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">${TabCollectionTitles}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabImages}</a>
</div>
<div style="margin: -25px 0 1em;">

View File

@ -16,10 +16,10 @@
<h1 class="itemName editPageName">&nbsp;</h1>
<br />
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">Metadata</a>
<a href="#" data-role="button" class="ui-btn-active">${TabMetadata}</a>
<a id="btnEditPeople" style="display: none;" href="#" data-role="button">${TabPeople}</a>
<a id="btnEditCollectionTitles" style="display: none;" href="editcollectionitems.html" data-role="button">Titles</a>
<a href="#" data-role="button" id="btnEditImages">Images</a>
<a id="btnEditCollectionTitles" style="display: none;" href="editcollectionitems.html" data-role="button">${TabCollectionTitles}</a>
<a href="#" data-role="button" id="btnEditImages">${TabImages}</a>
</div>
<form class="editItemMetadataForm editMetadataForm" style="margin-top: -20px;">

View File

@ -16,13 +16,13 @@
<h1 class="itemName editPageName">&nbsp;</h1>
<br />
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
<a href="#" data-role="button" id="btnEditMetadata">${TabMetadata}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabPeople}</a>
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">Titles</a>
<a href="#" data-role="button" id="btnEditImages">Images</a>
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">${TabCollectionTitles}</a>
<a href="#" data-role="button" id="btnEditImages">${TabImages}</a>
</div>
<div id="divAddPerson" style="display: none;">
<button type="button" data-icon="plus" data-inline="true" data-mini="true" onclick="EditItemPeoplePage.addPerson();">Add Person</button>
<button type="button" data-icon="plus" data-inline="true" data-mini="true" onclick="EditItemPeoplePage.addPerson();">${ButtonAdd}</button>
</div>
<div class="itemsContainer" id="peopleContainer" style="text-align: left;"></div>
</div>

View File

@ -19,46 +19,46 @@
<form class="encodingSettingsForm">
<fieldset data-role="controlgroup">
<legend>Transcoding Quality Preference:</legend>
<legend>${HeaderTranscodingQualityPreference}</legend>
<input type="radio" name="radioEncodingQuality" class="radioEncodingQuality" id="radioAuto" value="Auto">
<label for="radioAuto">
Auto<br />
<span style="font-weight: normal;">The server will decide quality and speed</span></label>
${OptionAutomatic}<br />
<span style="font-weight: normal;">${OptionAutomaticTranscodingHelp}</span></label>
<input type="radio" name="radioEncodingQuality" class="radioEncodingQuality" id="radioHighSpeed" value="HighSpeed">
<label for="radioHighSpeed">
Higher speed<br />
<span style="font-weight: normal;">Lower quality, but faster encoding</span></label>
${OptionHighSpeedTranscoding}<br />
<span style="font-weight: normal;">${OptionHighSpeedTranscodingHelp}</span></label>
<input type="radio" name="radioEncodingQuality" class="radioEncodingQuality" id="radioHighQuality" value="HighQuality">
<label for="radioHighQuality">
Higher quality<br />
<span style="font-weight: normal;">Higher quality, but slower encoding</span></label>
${OptionHighQualityTranscoding}<br />
<span style="font-weight: normal;">${OptionHighQualityTranscodingHelp}</span></label>
<input type="radio" name="radioEncodingQuality" class="radioEncodingQuality" id="radioMaxQuality" value="MaxQuality">
<label for="radioMaxQuality">
Max quality<br />
<span style="font-weight: normal;">Best quality with slower encoding and high CPU usage</span></label>
${OptionMaxQualityTranscoding}<br />
<span style="font-weight: normal;">${OptionMaxQualityTranscodingHelp}</span></label>
</fieldset>
<br />
<ul data-role="listview" class="ulForm">
<li>
<input type="checkbox" id="chkAllowUpscaling" name="chkAllowUpscaling" data-mini="true" />
<label for="chkAllowUpscaling">Allow video upscaling when requested by clients</label>
<div class="fieldDescription">In some cases this will result in improved video quality but will increase CPU usage.</div>
<label for="chkAllowUpscaling">${OptionUpscaling}</label>
<div class="fieldDescription">${OptionUpscalingHelp}</div>
</li>
<li>
<input type="checkbox" id="chkEnableDebugEncodingLogging" name="chkEnableDebugEncodingLogging" data-mini="true" />
<label for="chkEnableDebugEncodingLogging">Enable debug transcoding logging</label>
<div class="fieldDescription">This will create very large log files and is only recommended as needed for troubleshooting purposes.</div>
<label for="chkEnableDebugEncodingLogging">${OptionEnableDebugTranscodingLogging}</label>
<div class="fieldDescription">${OptionEnableDebugTranscodingLoggingHelp}</div>
</li>
</ul>
<ul data-role="listview" class="ulForm">
<li>
<button type="submit" data-theme="b" data-icon="check" data-mini="true">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete" data-mini="true">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -24,13 +24,13 @@
<div class="viewControls" data-role="controlgroup" data-type="horizontal">
<button data-mini="true" data-icon="sort" data-inline="true" data-iconpos="notext" title="${ButtonSort}" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">${ButtonSort}</button>
<button data-mini="true" data-icon="filter" data-inline="true" data-iconpos="notext" title="${ButtonFilter}" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">${ButtonFilter}</button>
<button data-mini="true" data-icon="check" data-inline="true" data-iconpos="notext" title="Select" class="btnToggleSelections">Select</button>
<button data-mini="true" data-icon="check" data-inline="true" data-iconpos="notext" title="${ButtonSelect}" class="btnToggleSelections">${ButtonSelect}</button>
</div>
<div class="listTopPaging">
</div>
<div class="selectionCommands" style="display: none;">
<div data-role="controlgroup" data-type="horizontal" class="selectionCommandsControlGroup">
<button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="Combine Versions">Group Versions</button>
<button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="${ButtonGroupVersions}">${ButtonGroupVersions}</button>
</div>
</div>
</div>
@ -45,13 +45,13 @@
</legend>
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSeriesSortName" value="on" checked="checked" data-sortby="SeriesSortName,SortName" data-mini="true">
<label for="radioSeriesSortName">Series name</label>
<label for="radioSeriesSortName">${OptionSeriesSortName}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
<label for="radioSortName">Episode sort name</label>
<label for="radioSortName">${OptionEpisodeSortName}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioCommunityRating" value="off" data-sortby="CommunityRating,SeriesSortName,SortName" data-mini="true">
<label for="radioCommunityRating">Tvdb rating</label>
<label for="radioCommunityRating">${OptionTvdbRating}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioDateCreated" value="off" data-sortby="DateCreated,SeriesSortName,SortName" data-mini="true">
<label for="radioDateCreated">${OptionDateAdded}</label>
@ -113,13 +113,13 @@
<label for="chkDislikes">${OptionDislikes}</label>
<input type="checkbox" name="chkSpecialFeature" id="chkSpecialFeature" data-mini="true">
<label for="chkSpecialFeature">Season 0</label>
<label for="chkSpecialFeature">${OptionSpecialEpisode}</label>
<input type="checkbox" name="chkMissingEpisode" id="chkMissingEpisode" data-mini="true">
<label for="chkMissingEpisode">Missing Episode</label>
<label for="chkMissingEpisode">${OptionMissingEpisode}</label>
<input type="checkbox" name="chkFutureEpisode" id="chkFutureEpisode" data-mini="true">
<label for="chkFutureEpisode">Unaired Episode</label>
<label for="chkFutureEpisode">${OptionUnairedEpisode}</label>
</fieldset>
<fieldset data-role="controlgroup">

View File

@ -8,7 +8,7 @@
<div class="libraryViewNav">
<a href="gamesrecommended.html">${TabSuggested}</a>
<a href="games.html">${TabGames}</a>
<a href="gamesystems.html">Game Systems</a>
<a href="gamesystems.html">${TabGameSystems}</a>
<a href="gamegenres.html" class="ui-btn-active">${TabGenres}</a>
<a href="gamestudios.html">${TabStudios}</a>
</div>
@ -37,13 +37,6 @@
<input class="chkStandardFilter" type="checkbox" name="chkDislikes" id="chkDislikes" data-filter="Dislikes" data-mini="true">
<label for="chkDislikes">${OptionDislikes}</label>
</fieldset>
<fieldset data-role="controlgroup">
<legend>
<strong>Game System:</strong>
</legend>
</fieldset>
</form>
</div>

View File

@ -8,7 +8,7 @@
<div class="libraryViewNav">
<a href="gamesrecommended.html">${TabSuggested}</a>
<a href="games.html" class="ui-btn-active">${TabGames}</a>
<a href="gamesystems.html">Game Systems</a>
<a href="gamesystems.html">${TabGameSystems}</a>
<a href="gamegenres.html">${TabGenres}</a>
<a href="gamestudios.html">${TabStudios}</a>
</div>
@ -36,7 +36,7 @@
</legend>
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
<label for="radioSortName">Name</label>
<label for="radioSortName">${OptionNameSort}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioCommunityRating" value="off" data-sortby="CommunityRating" data-mini="true">
<label for="radioCommunityRating">${OptionCommunityRating}</label>
@ -91,20 +91,20 @@
<fieldset data-role="controlgroup">
<legend>
<strong>Players:</strong>
<strong>${HeaderNumberOfPlayers}</strong>
</legend>
<input class="radioPlayers" type="radio" name="radioPlayers" id="radioAll" value="on" checked="checked" data-value="all" data-mini="true">
<label for="radioAll">Any</label>
<label for="radioAll">${OptionAnyNumberOfPlayers}</label>
<input class="radioPlayers" type="radio" name="radioPlayers" id="radioTwo" value="off" data-value="2" data-mini="true">
<label for="radioTwo">2+</label>
<label for="radioTwo">${Option2Player}</label>
<input class="radioPlayers" type="radio" name="radioPlayers" id="radioThree" value="off" data-value="3" data-mini="true">
<label for="radioThree">3+</label>
<label for="radioThree">${Option3Player}</label>
<input class="radioPlayers" type="radio" name="radioPlayers" id="radioFour" value="off" data-value="4" data-mini="true">
<label for="radioFour">4+</label>
<label for="radioFour">${Option4Player}</label>
</fieldset>
<fieldset data-role="controlgroup">

View File

@ -16,13 +16,13 @@
<table class="ehsContent">
<tr>
<td>
<h1 class="listHeader">Latest Games</h1>
<h1 class="listHeader">${HeaderLatestGames}</h1>
<div id="recentlyAddedItems">
</div>
<div id="recentlyPlayedSection" style="display: none;">
<h1 class="listHeader">Recently Played Games</h1>
<h1 class="listHeader">${HeaderRecentlyPlayedGames}</h1>
<div id="recentlyPlayedItems">
</div>

View File

@ -8,7 +8,7 @@
<div class="libraryViewNav">
<a href="gamesrecommended.html">${TabSuggested}</a>
<a href="games.html">${TabGames}</a>
<a href="gamesystems.html">Game Systems</a>
<a href="gamesystems.html">${TabGameSystems}</a>
<a href="gamegenres.html">${TabGenres}</a>
<a href="gamestudios.html" class="ui-btn-active">${TabStudios}</a>
</div>
@ -37,13 +37,6 @@
<input class="chkStandardFilter" type="checkbox" name="chkDislikes" id="chkDislikes" data-filter="Dislikes" data-mini="true">
<label for="chkDislikes">${OptionDislikes}</label>
</fieldset>
<fieldset data-role="controlgroup">
<legend>
<strong>Game Systems:</strong>
</legend>
</fieldset>
</form>
</div>
</div>

View File

@ -8,7 +8,7 @@
<div class="libraryViewNav">
<a href="gamesrecommended.html">${TabSuggested}</a>
<a href="games.html">${TabGames}</a>
<a href="gamesystems.html" class="ui-btn-active">Game Systems</a>
<a href="gamesystems.html" class="ui-btn-active">${TabGameSystems}</a>
<a href="gamegenres.html">${TabGenres}</a>
<a href="gamestudios.html">${TabStudios}</a>
</div>

View File

@ -15,7 +15,7 @@
<div id="views">
</div>
<br />
<h1 class="listHeader"><a href="itemlist.html">Media Folders<img src="css/images/rightarrow.png" class="headerArrowImage" /></a></h1>
<h1 class="listHeader"><a href="itemlist.html">${HeaderMediaFolders}<img src="css/images/rightarrow.png" class="headerArrowImage" /></a></h1>
<div id="divCollections"></div>
</td>

View File

@ -146,7 +146,7 @@
<button id="btnPlay" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
</span>
<span id="editButtonContainer" style="display: none;">
<a id="btnEdit" data-role="button" data-icon="edit" data-inline="true" data-mini="true" href="#">Edit</a>
<a id="btnEdit" data-role="button" data-icon="edit" data-inline="true" data-mini="true" href="#">${ButtonEdit}</a>
</span>
</div>
<div data-role="content">

View File

@ -85,7 +85,7 @@
<div class="libraryViewNav">
<a href="gamesrecommended.html">${TabSuggested}</a>
<a href="games.html">${TabGames}</a>
<a href="gamesystems.html" class="ui-btn-active">Game Systems</a>
<a href="gamesystems.html" class="ui-btn-active">${TabGameSystems}</a>
<a href="gamegenres.html">${TabGenres}</a>
<a href="gamestudios.html">${TabStudios}</a>
</div>
@ -109,35 +109,38 @@
<p id="artist"></p>
<p class="itemGenres desktopGenres"></p>
<p class="itemOverview desktopOverview"></p>
<div class="detailButtonsContainer" style="text-align: left;">
<span id="missingIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">MISSING</span>
<div class="detailButtonsContainer desktopDetailButtons" style="text-align: left;">
<span class="missingIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">${LabelMissing}</span>
</span>
<span id="offlineIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">OFFLINE</span>
</span>
<span id="playButtonContainer" style="display: none;">
<button id="btnPlay" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
</span>
<span id="trailerButtonContainer" style="display: none;">
<button id="btnPlayTrailer" type="button" data-icon="video" data-inline="true" data-mini="true">Trailer</button>
</span>
<span id="externalTrailerButtonContainer" style="display: none;">
<a id="btnPlayExternalTrailer" data-role="button" data-icon="video" data-inline="true" data-mini="true" href="#" target="_blank">Trailer</a>
</span>
<span id="playExternalButtonContainer" style="display: none;">
<a id="btnPlayExternal" data-role="button" data-icon="play" data-inline="true" data-mini="true" href="#" target="_blank">${ButtonPlay}</a>
</span>
<span id="editButtonContainer" style="display: none;">
<a id="btnEdit" data-role="button" data-icon="edit" data-inline="true" data-mini="true" href="#">Edit</a>
<span class="offlineIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">${LabelOffline}</span>
</span>
<button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
<button class="btnPlayTrailer hide" type="button" data-icon="video" data-inline="true" data-mini="true">${ButtonPlayTrailer}</button>
<a class="btnPlayExternalTrailer hide" data-role="button" data-icon="video" data-inline="true" data-mini="true" href="#" target="_blank">${ButtonPlayTrailer}</a>
<a class="btnPlayExternal hide" data-role="button" data-icon="play" data-inline="true" data-mini="true" href="#" target="_blank">${ButtonPlay}</a>
<a class="btnEdit hide" data-role="button" data-icon="edit" data-inline="true" data-mini="true" href="#">${ButtonEdit}</a>
</div>
</td>
</tr>
</table>
<div class="detailButtonsContainer mobileDetailButtons">
<span class="missingIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">${LabelMissing}</span>
</span>
<span class="offlineIndicator" style="margin-left: .5em; display: none;">
<span style="background: #cc3333; padding: 5px 1em; border-radius: 5px;">${LabelOffline}</span>
</span>
<button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
<button class="btnPlayTrailer hide" type="button" data-icon="video" data-inline="true" data-mini="true">${ButtonPlayTrailer}</button>
<a class="btnPlayExternalTrailer hide" data-role="button" data-icon="video" data-inline="true" data-mini="true" href="#" target="_blank">${ButtonPlayTrailer}</a>
<a class="btnPlayExternal hide" data-role="button" data-icon="play" data-inline="true" data-mini="true" href="#" target="_blank">${ButtonPlay}</a>
<a class="btnEdit hide" data-role="button" data-icon="edit" data-inline="true" data-mini="true" href="#">${ButtonEdit}</a>
</div>
</div>
<a href="#" id="lnkPreviousItem" class="lnkPreviousItem lnkSibling hide" data-role="button" title="Previous" data-icon="carat-l" data-mini="true" data-inline="true" data-iconpos="notext">Previous</a>
<a href="#" id="lnkNextItem" class="lnkNextItem lnkSibling hide" data-role="button" title="Next" data-icon="carat-r" data-mini="true" data-inline="true" data-iconpos="notext">Next</a>
<a href="#" id="lnkPreviousItem" class="lnkPreviousItem lnkSibling hide" data-role="button" title="${ButtonPrevious}" data-icon="carat-l" data-mini="true" data-inline="true" data-iconpos="notext">${ButtonPrevious}</a>
<a href="#" id="lnkNextItem" class="lnkNextItem lnkSibling hide" data-role="button" title="${ButtonNext}" data-icon="carat-r" data-mini="true" data-inline="true" data-iconpos="notext">${ButtonNext}</a>
<p class="itemGenres mobileGenres"></p>
<p class="itemOverview mobileOverview"></p>
</div>
@ -162,7 +165,7 @@
<div class="detailTab tabMediaInfo">
<div class="splitVersionContainer" style="border-bottom: 1px solid #444;">
<button type="button" class="btnSplitVersions" data-mini="true" data-inline="true" data-icon="delete" title="Split Versions Apart">Split Versions Apart</button>
<button type="button" class="btnSplitVersions" data-mini="true" data-inline="true" data-icon="delete" title="${ButtonSplitVersionsApart}">${ButtonSplitVersionsApart}</button>
</div>
<div id="mediaInfoContent"></div>
@ -184,43 +187,42 @@
</div>
<div id="additionalPartsCollapsible" class="detailSection hide">
<div class="detailSectionHeader">
Additional Parts
${HeaderAdditionalParts}
</div>
<div id="additionalPartsContent" class="detailSectionContent"></div>
</div>
<div id="castCollapsible" style="display: none;" class="detailSection">
<div id="peopleHeader" class="detailSectionHeader">
Cast & Crew
${HeaderCastCrew}
</div>
<div id="castContent" class="detailSectionContent"></div>
</div>
<div id="specialsCollapsible" class="detailSection hide">
<div class="detailSectionHeader">
Special Features
${HeaderSpecialFeatures}
</div>
<div id="specialsContent" class="detailSectionContent"></div>
</div>
<div id="musicVideosCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Music Videos
${HeaderMusicVideos}
</div>
<div id="musicVideosContent" class="detailSectionContent"></div>
</div>
<div id="soundtracksCollapsible" style="display: none;" class="detailSection">
<div id="soundtracksHeader" class="detailSectionHeader">
Soundtracks
${HeaderSoundtracks}
</div>
<div id="soundtracksContent" class="detailSectionContent"></div>
</div>
<div id="similarCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Similar
</div>
<div id="similarContent" class="detailSectionContent"></div>
</div>
<div id="criticReviewsCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Awards and Reviews
${HeaderAwardsAndReviews}
</div>
<div style="padding: 0 .5em;">
<p id="awardSummary"></p>
@ -237,20 +239,20 @@
</div>
<div id="scenesCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Scenes
${HeaderScenes}
</div>
<div id="scenesContent" class="detailSectionContent"></div>
</div>
<div id="themeSongsCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Theme Songs
${HeaderThemeSongs}
</div>
<div id="themeSongsContent" class="detailSectionContent"></div>
</div>
<div id="themeVideosCollapsible" style="display: none;" class="detailSection">
<div class="detailSectionHeader">
Theme Videos
${HeaderThemeVideos}
</div>
<div id="themeVideosContent" class="detailSectionContent"></div>
</div>

View File

@ -15,7 +15,7 @@
<div id="galleryCollapsible" class="detailSection">
<div class="detailSectionHeader">
Gallery
${HeaderGallery}
</div>
<div id="galleryContent" class="detailSectionContent"></div>
</div>

View File

@ -11,15 +11,15 @@
<h1 class="listHeader" style="margin: 0; text-align: center;"><span id="itemName"></span>
<span id="editButtonContainer" style="display: none; margin-left: .5em;">
<button id="btnEdit" type="button" data-icon="edit" data-inline="true" data-mini="true">Edit</button>
<button id="btnEdit" type="button" data-icon="edit" data-inline="true" data-mini="true">${ButtonEdit}</button>
</span>
</h1>
<div class="viewSettings">
<div class="viewControls">
<div style="display: inline-block;">
<select data-mini="true" data-inline="true" id="selectView" name="selectView">
<option value="Backdrop">Backdrop</option>
<option value="Poster">Poster</option>
<option value="Backdrop">${OptionBackdrop}</option>
<option value="Poster">${OptionPoster}</option>
</select>
</div>
</div>
@ -41,7 +41,7 @@
</legend>
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
<label for="radioSortName">Name</label>
<label for="radioSortName">${OptionNameSort}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioCommunityRating" value="off" data-sortby="CommunityRating" data-mini="true">
<label for="radioCommunityRating">${OptionCommunityRating}</label>
@ -62,7 +62,7 @@
<label for="radioRuntime">${OptionRuntime}</label>
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioIsFolder" value="off" data-sortby="IsFolder,SortName" data-mini="true">
<label for="radioIsFolder">Folders</label>
<label for="radioIsFolder">${OptionFolderSort}</label>
</fieldset>
<fieldset data-role="controlgroup">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title></title>
<title>${TitleMediaLibrary}</title>
</head>
<body>
<div id="mediaLibraryPage" data-role="page" class="page type-interior mediaLibraryPage">
@ -9,22 +9,22 @@
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">Folders</a>
<a href="librarypathmapping.html" data-role="button">Path Substitution</a>
<a href="#" data-role="button" class="ui-btn-active">${TabFolders}</a>
<a href="librarypathmapping.html" data-role="button">${TabPathSubstitution}</a>
<a href="librarysettings.html" data-role="button">${TabAdvanced}</a>
</div>
<div class="readOnlyContent">
<p style="margin: 2em 0;">Refer to the <a href="https://github.com/MediaBrowser/MediaBrowser/wiki/Library-Structure" target="_blank">media library wiki.</a> for suggested folder structures.</p>
<p style="margin: 2em 0;"><a href="https://github.com/MediaBrowser/MediaBrowser/wiki/Library-Structure" target="_blank">${ReferToMediaLibraryWiki}</a></p>
<div id="divMediaLibrary">
<p>
<button type="button" data-mini="true" data-icon="plus" onclick="MediaLibraryPage.addVirtualFolder();">Add media folder</button>
<button type="button" data-mini="true" data-icon="plus" onclick="MediaLibraryPage.addVirtualFolder();">${ButtonAddMediaFolder}</button>
</p>
<div id="divVirtualFolders"></div>
</div>
<br />
<div class="readOnlyContent refreshLibraryPanel hide">
<button type="button" class="btnRefresh" data-icon="refresh" data-mini="true">Scan Library</button>
<button type="button" class="btnRefresh" data-icon="refresh" data-mini="true">${ButtonScanLibrary}</button>
<progress max="100" min="0" style="width: 100%;" class="refreshProgress"></progress>
<div style="margin-top: 5px;">Last Result: <span class="lastRefreshResult"></span></div>
</div>
@ -35,31 +35,31 @@
<div data-role="popup" data-transition="slidefade" id="popupEnterText" class="popup">
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
<h3>Rename Media Folder</h3>
<h3></h3>
</div>
<div data-role="content">
<form id="textEntryForm">
<p>
<label id="lblValue" for="txtValue">New name:</label>
<label id="lblValue" for="txtValue"></label>
<input type="text" name="txtValue" id="txtValue" required="required" />
</p>
<p id="fldCollectionType">
<label for="selectCollectionType">Folder type:</label>
<label for="selectCollectionType">${LabelFolderType}</label>
<select id="selectCollectionType" name="selectCollectionType"></select>
</p>
<p class="collectionTypeFieldDescription">
* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.
${MediaFolderHelpPluginRequired}
</p>
<p>
<button type="submit" data-theme="b" data-icon="check">
Ok
${ButtonOk}
</button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');">
Cancel
${ButtonCancel}
</button>
</p>
</form>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Media Library</title>
<title>${TitleMediaLibrary}</title>
</head>
<body>
<div id="libraryPathMappingPage" data-role="page" class="page type-interior mediaLibraryPage">
@ -9,21 +9,21 @@
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="library.html" data-role="button">Folders</a>
<a href="#" data-role="button" class="ui-btn-active">Path Substitution</a>
<a href="library.html" data-role="button">${TabFolders}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabPathSubstitution}</a>
<a href="librarysettings.html" data-role="button">${TabAdvanced}</a>
</div>
<div class="readOnlyContent">
<p>Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.</p>
<p>${PathSubstitutionHelp}</p>
</div>
<table id="tblPaths" data-role="table" data-mode="reflow" class="ui-responsive">
<thead>
<tr>
<th></th>
<th>From</th>
<th>To</th>
<th>${HeaderFrom}</th>
<th>${HeaderTo}</th>
</tr>
</thead>
<tbody class="tbodyPathSubstitutions">
@ -35,21 +35,21 @@
<form class="libraryPathMappingForm">
<div>
<h3 class="ui-bar-a" style="padding: .7em 1em;">Add Substitution</h3>
<h3 class="ui-bar-a" style="padding: .7em 1em;">${ButtonAddPathSubstitution}</h3>
<div>
<label for="txtFrom">From:</label>
<label for="txtFrom">${LabelFrom}</label>
<input id="txtFrom" type="text" required="required" data-mini="true" />
<div class="fieldDescription">Example: D:\Movies (on the server)</div>
<div class="fieldDescription">${LabelFromHelp}</div>
</div>
<br />
<div>
<label for="txtTo">To:</label>
<label for="txtTo">${LabelTo}</label>
<input id="txtTo" type="text" required="required" data-mini="true" />
<div class="fieldDescription">Example: \\MyServer\Movies (a path clients can access)</div>
<div class="fieldDescription">${LabelToHelp}</div>
</div>
<br />
<p>
<button type="submit" data-mini="true" data-icon="plus">Add</button>
<button type="submit" data-mini="true" data-icon="plus">${ButtonAdd}</button>
</p>
</div>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Media Library</title>
<title>${TitleMediaLibrary}</title>
</head>
<body>
<div id="librarySettingsPage" data-role="page" class="page type-interior mediaLibraryPage">
@ -9,8 +9,8 @@
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="library.html" data-role="button">Folders</a>
<a href="librarypathmapping.html" data-role="button">Path Substitution</a>
<a href="library.html" data-role="button">${TabFolders}</a>
<a href="librarypathmapping.html" data-role="button">${TabPathSubstitution}</a>
<a href="#" data-role="button" class="ui-btn-active">${TabAdvanced}</a>
</div>
@ -19,21 +19,21 @@
<ul data-role="listview" class="ulForm">
<li>
<input type="checkbox" id="chkEnableRealtimeMonitor" name="chkEnableRealtimeMonitor" />
<label for="chkEnableRealtimeMonitor">Enable real time monitoring</label>
<label for="chkEnableRealtimeMonitor">${LabelEnableRealtimeMonitor}</label>
<div class="fieldDescription">
Changes will be processed immediately, on supported file systems.
${LabelEnableRealtimeMonitorHelp}
</div>
</li>
<li>
<label for="txtSeasonZeroName">Season 0 display name: </label>
<label for="txtSeasonZeroName">${LabelSeasonZeroDisplayName}</label>
<input type="text" id="txtSeasonZeroName" name="txtSeasonZeroName" required="required" />
</li>
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -23,11 +23,11 @@
<br />
<div data-role="controlgroup" data-type="horizontal" data-mini="true" class="seriesTimerTabs">
<input type="radio" name="radioSeriesTimerTab" class="radioSeriesTimerTab" id="radioSettings" value="settings">
<label for="radioSettings">Settings</label>
<label for="radioSettings">${TabSettings}</label>
<input type="radio" name="radioSeriesTimerTab" class="radioSeriesTimerTab" id="radioRecordings" value="recordings">
<label for="radioRecordings">Recordings</label>
<label for="radioRecordings">${TabRecordings}</label>
<input type="radio" name="radioSeriesTimerTab" class="radioSeriesTimerTab" id="radioScheduled" value="schedule">
<label for="radioScheduled">Schedule</label>
<label for="radioScheduled">${TabScheduled}</label>
</div>
<br />
<br />

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Live TV</title>
<title>${TitleLiveTV}</title>
</head>
<body>
<div id="liveTvSettingsPage" data-role="page" class="page type-interior liveTvSettingsPage">
@ -18,16 +18,16 @@
<ul data-role="listview" class="ulForm">
<li>
<label for="selectActiveService">Active service: </label>
<label for="selectActiveService">${LabelActiveService}</label>
<select id="selectActiveService" data-mini="true">
</select>
<div class="fieldDescription">Multiple tv plugins can be installed but only one can be active at a time.</div>
<div class="fieldDescription">${LabelActiveServiceHelp}</div>
</li>
<li>
<label for="selectGuideDays">Number of days of guide data to download: </label>
<label for="selectGuideDays">${LabelNumberOfGuideDays}</label>
<select id="selectGuideDays" data-mini="true">
<option value="">Auto</option>
<option value="">${OptionAutomatic}</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
@ -36,17 +36,17 @@
<option value="6">6</option>
<option value="7">7</option>
</select>
<div class="fieldDescription">Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.</div>
<div class="fieldDescription">${LabelNumberOfGuideDaysHelp}</div>
</li>
</ul>
<br />
<ul data-role="listview" class="ulForm">
<li>
<button type="submit" data-theme="b" data-icon="check">
Save
${ButtonSave}
</button>
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
Cancel
${ButtonCancel}
</button>
</li>
</ul>
@ -54,9 +54,9 @@
</form>
<div class="noLiveTvServices" style="display: none;">
<div class="readOnlyContent" style="margin-top: 2em;">
<p>A Live TV service provider plugin is required in order to continue.</p>
<p>${LiveTvPluginRequired}</p>
<p>Please <a href="plugincatalog.html">install</a> one of our available plugins, such as ServerWmc.</p>
<p><a href="plugincatalog.html">${LiveTvPluginRequiredHelp}</a></p>
</div>
</div>
</div>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Live TV</title>
<title>${TitleLiveTV}</title>
</head>
<body>
<div id="liveTvStatusPage" data-role="page" class="page type-interior liveTvSettingsPage">
@ -32,7 +32,7 @@
</div>
<br />
<h2>Tuners</h2>
<h2>${HeaderTvTuners}</h2>
<table data-role="table" data-mode="reflow" class="tblTuners stripedTable ui-responsive table-stroke">
<thead>
@ -52,9 +52,9 @@
<div class="noLiveTvServices" style="display: none;">
<p>A Live TV service provider plugin is required in order to continue.</p>
<p>${LiveTvPluginRequired}</p>
<p><a href="plugincatalog.html">Please install one of our available plugins, such as ServerWmc.</a></p>
<p><a href="plugincatalog.html">${LiveTvPluginRequiredHelp}</a></p>
</div>
</div>
</div>

View File

@ -19,8 +19,7 @@
<a href="metadataadvanced.html" data-role="button">${TabAdvanced}</a>
</div>
<p>Customize options per media type</p>
<p>${HeaderCustomizeOptionsPerMediaType}</p>
<div class="tabs">
</div>
@ -39,79 +38,79 @@
</div>
<div data-role="collapsible">
<h2>Image Settings</h2>
<h2>${HeaderImageSettings}</h2>
<div>
<br />
<div class="backdropFields" style="margin-bottom: 2em; display: none;">
<div>
<label for="txtMaxBackdrops">Maximum number of backdrops per item: </label>
<label for="txtMaxBackdrops">${LabelMaxBackdropsPerItem}</label>
<input type="number" id="txtMaxBackdrops" name="txtMaxBackdrops" pattern="[0-9]*" required="required" min="0" data-mini="true" />
</div>
<br />
<div>
<label for="txtMinBackdropDownloadWidth">Minimum backdrop download width: </label>
<label for="txtMinBackdropDownloadWidth">${LabelMinBackdropDownloadWidth}</label>
<input type="number" id="txtMinBackdropDownloadWidth" name="txtMinBackdropDownloadWidth" pattern="[0-9]*" required="required" min="0" data-mini="true" />
</div>
</div>
<div class="screenshotFields" style="margin-bottom: 2em; display: none;">
<div>
<label for="txtMaxScreenshots">Maximum number of screenshots per item: </label>
<label for="txtMaxScreenshots">${LabelMaxScreenshotsPerItem}</label>
<input type="number" id="txtMaxScreenshots" name="txtMaxScreenshots" pattern="[0-9]*" required="required" min="0" data-mini="true" />
</div>
<div>
<label for="txtMinScreenshotDownloadWidth">Minimum screenshot download width: </label>
<label for="txtMinScreenshotDownloadWidth">${LabelMinScreenshotDownloadWidth}</label>
<input type="number" id="txtMinScreenshotDownloadWidth" name="txtMinScreenshotDownloadWidth" pattern="[0-9]*" required="required" min="0" data-mini="true" />
</div>
</div>
<fieldset class="imageSelections" data-role="controlgroup" style="border-bottom: 1px solid #ddd;">
<legend>Fetch Images:</legend>
<legend>${HeaderFetchImages}</legend>
<div class="imageType" data-imagetype="Primary" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadPrimary" name="chkDownloadPrimary" />
<label for="chkDownloadPrimary">Primary</label>
<label for="chkDownloadPrimary">${OptionDownloadPrimaryImage}</label>
</div>
<div class="imageType" data-imagetype="Art" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadArt" name="chkDownloadArt" />
<label for="chkDownloadArt">Art</label>
<label for="chkDownloadArt">${OptionDownloadArtImage}</label>
</div>
<div class="imageType" data-imagetype="BoxRear" style="display: none;">
<input type="checkbox" data-mini="true" id="chkBack" name="chkBack" />
<label for="chkBack">Back</label>
<label for="chkBack">${OptionDownloadBackImage}</label>
</div>
<div class="imageType" data-imagetype="Banner" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadBanner" name="chkDownloadBanner" />
<label for="chkDownloadBanner">Banner</label>
<label for="chkDownloadBanner">${OptionDownloadBannerImage}</label>
</div>
<div class="imageType" data-imagetype="Box" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadBox" name="chkDownloadBox" />
<label for="chkDownloadBox">Box</label>
<label for="chkDownloadBox">${OptionDownloadBoxImage}</label>
</div>
<div class="imageType" data-imagetype="Disc" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadDisc" name="chkDownloadDisc" />
<label for="chkDownloadDisc">Disc</label>
<label for="chkDownloadDisc">${OptionDownloadDiscImage}</label>
</div>
<div class="imageType" data-imagetype="Logo" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadLogo" name="chkDownloadLogo" />
<label for="chkDownloadLogo">Logo</label>
<label for="chkDownloadLogo">${OptionDownloadLogoImage}</label>
</div>
<div class="imageType" data-imagetype="Menu" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadMenu" name="chkDownloadMenu" />
<label for="chkDownloadMenu">Menu</label>
<label for="chkDownloadMenu">${OptionDownloadMenuImage}</label>
</div>
<div class="imageType" data-imagetype="Thumb" style="display: none;">
<input type="checkbox" data-mini="true" id="chkDownloadThumb" name="chkDownloadThumb" />
<label for="chkDownloadThumb">Thumb</label>
<label for="chkDownloadThumb">${OptionDownloadThumbImage}</label>
</div>
</fieldset>
</div>

View File

@ -6,7 +6,7 @@
<body>
<div id="playlistPage" data-role="page" class="page libraryPage" data-theme="b">
<div class="parentName">${HeaderNowPlaying}</div>
<div class="parentName" style="text-align: center;">${HeaderNowPlaying}</div>
<div data-role="content">
<div id="playlist" class="detailTableContainer">

View File

@ -11,7 +11,7 @@
<p id="pTaskDescription"></p>
<p>
<button type="button" data-icon="plus" onclick="ScheduledTaskPage.showAddTriggerPopup();">
Add Task Trigger
${ButtonAddScheduledTaskTrigger}
</button>
</p>
<ul id="ulTaskTriggers" data-role="listview" data-inset="true" data-auto-enhanced="false" data-split-icon="minus"></ul>
@ -21,45 +21,45 @@
<div data-role="popup" id="popupAddTrigger" class="popup" style="min-width: 300px;">
<form class="addTriggerForm">
<div class="ui-bar-b" style="text-align: center; padding: 0 20px;">
<h3>Add Task Trigger</h3>
<h3>${HeaderAddScheduledTaskTrigger}</h3>
</div>
<div data-role="content">
<ul data-role="listview" class="ulForm">
<li>
<label for="selectTriggerType">Trigger Type:</label>
<label for="selectTriggerType">${LabelTriggerType}</label>
<select id="selectTriggerType" name="selectTriggerType" onchange="ScheduledTaskPage.refreshTriggerFields(this.value);">
<option value="DailyTrigger">Daily</option>
<option value="WeeklyTrigger">Weekly</option>
<option value="IntervalTrigger">On an interval</option>
<option value="StartupTrigger">On application startup</option>
<option value="SystemEventTrigger">After a system event</option>
<option value="DailyTrigger">${OptionDaily}</option>
<option value="WeeklyTrigger">${OptionWeekly}</option>
<option value="IntervalTrigger">${OptionOnInterval}</option>
<option value="StartupTrigger">${OptionOnAppStartup}</option>
<option value="SystemEventTrigger">${OptionAfterSystemEvent}</option>
</select>
</li>
<li id="fldDayOfWeek">
<label for="selectDayOfWeek">Day:</label>
<label for="selectDayOfWeek">${LabelDay}</label>
<select id="selectDayOfWeek" name="selectDayOfWeek">
<option value="Sunday">Sunday</option>
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
<option value="Wednesday">Wednesday</option>
<option value="Thursday">Thursday</option>
<option value="Friday">Friday</option>
<option value="Saturday">Saturday</option>
<option value="Sunday">${OptionSunday}</option>
<option value="Monday">${OptionMonday}</option>
<option value="Tuesday">${OptionTuesday}</option>
<option value="Wednesday">${OptionWednesday}</option>
<option value="Thursday">${OptionThursday}</option>
<option value="Friday">${OptionFriday}</option>
<option value="Saturday">${OptionSaturday}</option>
</select>
</li>
<li id="fldTimeOfDay">
<label for="txtTimeOfDay">Time:</label>
<label for="txtTimeOfDay">${LabelTime}</label>
<input type="time" id="txtTimeOfDay" name="txtTimeOfDay" required="required" />
</li>
<li id="fldSelectSystemEvent">
<label for="selectSystemEvent">Event:</label>
<label for="selectSystemEvent">${LabelEvent}</label>
<select id="selectSystemEvent" name="selectSystemEvent">
<option value="WakeFromSleep">Wake from sleep</option>
<option value="WakeFromSleep">${OptionWakeFromSleep}</option>
</select>
</li>
<li id="fldSelectInterval">
<label for="selectInterval">Every:</label>
<label for="selectInterval">${LabelEveryXMinutes}</label>
<select id="selectInterval" name="selectInterval">
<option value="9000000000">15 minutes</option>
<option value="18000000000">30 minutes</option>
@ -75,10 +75,10 @@
</li>
<li>
<button type="submit" data-theme="b" data-icon="check">
Add
${ButtonAdd}
</button>
<button type="button" data-icon="delete" onclick="$(this).parents('.popup').popup('close');">
Cancel
${ButtonCancel}
</button>
</li>
</ul>

View File

@ -11,7 +11,7 @@
Dashboard.showLoadingMsg();
DashboardPage.pollForInfo(page);
DashboardPage.startInterval();
$(ApiClient).on("websocketmessage", DashboardPage.onWebSocketMessage)
.on("websocketopen", DashboardPage.onWebSocketConnectionChange)
.on("websocketerror", DashboardPage.onWebSocketConnectionChange)
@ -173,7 +173,7 @@
pollForInfo: function (page) {
ApiClient.getSessions().done(function (sessions) {
DashboardPage.renderInfo(page, sessions);
});
},
@ -360,9 +360,13 @@
return "<img src='css/images/clients/mbkinect.png' alt='MB Kinect' />";
}
if (clientLowered == "xbmc") {
return "<img src='css/images/clients/xbmc.png' alt='Xbmc' />";
}
if (clientLowered == "chromecast") {
return "<img src='css/images/chromecast/ic_media_route_on_holo_light.png' alt='Chromecast' />";
}
return connection.Client;
},

View File

@ -75,20 +75,6 @@
renderResponseProfiles(page, profile.ResponseProfiles);
}
function editDirectPlayProfile(page, directPlayProfile) {
isSubProfileNew = directPlayProfile == null;
directPlayProfile = directPlayProfile || {};
currentSubProfile = directPlayProfile;
var popup = $('#popupEditDirectPlayProfile', page).popup('open');
$('#selectDirectPlayProfileType', popup).val(directPlayProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtDirectPlayContainer', popup).val(directPlayProfile.Container || '');
$('#txtDirectPlayAudioCodec', popup).val(directPlayProfile.AudioCodec || '');
$('#txtDirectPlayVideoCodec', popup).val(directPlayProfile.VideoCodec || '');
}
function saveDirectPlayProfile(page) {
currentSubProfile.Type = $('#selectDirectPlayProfileType', page).val();
@ -171,6 +157,22 @@
}
function editDirectPlayProfile(page, directPlayProfile) {
isSubProfileNew = directPlayProfile == null;
directPlayProfile = directPlayProfile || {};
currentSubProfile = directPlayProfile;
var popup = $('#popupEditDirectPlayProfile', page);
$('#selectDirectPlayProfileType', popup).val(directPlayProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtDirectPlayContainer', popup).val(directPlayProfile.Container || '');
$('#txtDirectPlayAudioCodec', popup).val(directPlayProfile.AudioCodec || '');
$('#txtDirectPlayVideoCodec', popup).val(directPlayProfile.VideoCodec || '');
popup.popup('open');
}
function renderTranscodingProfiles(page, profiles) {
var html = '';
@ -233,7 +235,7 @@
transcodingProfile = transcodingProfile || {};
currentSubProfile = transcodingProfile;
var popup = $('#transcodingProfilePopup', page).popup('open');
var popup = $('#transcodingProfilePopup', page);
$('#selectTranscodingProfileType', popup).val(transcodingProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtTranscodingContainer', popup).val(transcodingProfile.Container || '');
@ -246,6 +248,8 @@
$('#chkReportByteRangeRequests', popup).checked(transcodingProfile.TranscodeSeekInfo == 'Bytes').checkboxradio('refresh');
$('.radioTabButton:first', popup).checked(true).checkboxradio('refresh').trigger('change');
popup.popup('open');
}
function deleteTranscodingProfile(page, index) {
@ -351,10 +355,14 @@
containerProfile = containerProfile || {};
currentSubProfile = containerProfile;
var popup = $('#containerProfilePopup', page).popup('open');
var popup = $('#containerProfilePopup', page);
$('#selectContainerProfileType', popup).val(containerProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtContainerProfileContainer', popup).val(containerProfile.Container || '');
$('.radioTabButton:first', popup).checked(true).checkboxradio('refresh').trigger('change');
popup.popup('open');
}
function saveContainerProfile(page) {
@ -447,10 +455,14 @@
codecProfile = codecProfile || {};
currentSubProfile = codecProfile;
var popup = $('#codecProfilePopup', page).popup('open');
var popup = $('#codecProfilePopup', page);
$('#selectCodecProfileType', popup).val(codecProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtCodecProfileCodec', popup).val(codecProfile.Codec || '');
$('.radioTabButton:first', popup).checked(true).checkboxradio('refresh').trigger('change');
popup.popup('open');
}
function saveCodecProfile(page) {
@ -525,6 +537,13 @@
var index = this.getAttribute('data-profileindex');
deleteResponseProfile(page, index);
});
$('.lnkEditSubProfile', elem).on('click', function () {
var index = parseInt(this.getAttribute('data-profileindex'));
editResponseProfile(page, currentProfile.ResponseProfiles[index]);
});
}
function deleteResponseProfile(page, index) {
@ -532,7 +551,43 @@
currentProfile.ResponseProfiles.splice(index, 1);
renderResponseProfiles(page, currentProfile.ResponseProfiles);
}
function editResponseProfile(page, responseProfile) {
isSubProfileNew = responseProfile == null;
responseProfile = responseProfile || {};
currentSubProfile = responseProfile;
var popup = $('#responseProfilePopup', page);
$('#selectResponseProfileType', popup).val(responseProfile.Type || 'Video').selectmenu('refresh').trigger('change');
$('#txtResponseProfileContainer', popup).val(responseProfile.Container || '');
$('#txtResponseProfileAudioCodec', popup).val(responseProfile.AudioCodec || '');
$('#txtResponseProfileVideoCodec', popup).val(responseProfile.VideoCodec || '');
$('.radioTabButton:first', popup).checked(true).checkboxradio('refresh').trigger('change');
popup.popup('open');
}
function saveResponseProfile(page) {
currentSubProfile.Type = $('#selectResponseProfileType', page).val();
currentSubProfile.Container = $('#txtResponseProfileContainer', page).val();
currentSubProfile.AudioCodec = $('#txtResponseProfileAudioCodec', page).val();
currentSubProfile.VideoCodec = $('#txtResponseProfileVideoCodec', page).val();
if (isSubProfileNew) {
currentProfile.ResponseProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
$('#responseProfilePopup', page).popup('close');
}
function saveProfile(page, profile) {
@ -648,6 +703,22 @@
});
$('#selectResponseProfileType', page).on('change', function () {
if (this.value == 'Video') {
$('#fldResponseProfileVideoCodec', page).show();
} else {
$('#fldResponseProfileVideoCodec', page).hide();
}
if (this.value == 'Photo') {
$('#fldResponseProfileAudioCodec', page).hide();
} else {
$('#fldResponseProfileAudioCodec', page).show();
}
});
$('.btnAddDirectPlayProfile', page).on('click', function () {
editDirectPlayProfile(page);
@ -672,6 +743,12 @@
});
$('.btnAddResponseProfile', page).on('click', function () {
editResponseProfile(page);
});
}).on('pageshow', "#dlnaProfilePage", function () {
var page = this;
@ -737,6 +814,15 @@
saveCodecProfile(page);
return false;
},
onResponseProfileFormSubmit: function() {
var form = this;
var page = $(form).parents('.page');
saveResponseProfile(page);
return false;
}
};

View File

@ -220,11 +220,31 @@ function humane_elapsed(firstDateStr, secondDateStr) {
}
function getWindowUrl(win) {
return (win || window).location.href;
}
function getWindowLocationSearch(win) {
var search = (win || window).location.search;
if (!search) {
var index = window.location.href.indexOf('?');
if (index != -1) {
search = window.location.href.substring(index);
}
}
return search || '';
}
function getParameterByName(name, url) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS, "i");
var results = regex.exec(url || window.location.search);
var results = regex.exec(url || getWindowLocationSearch());
if (results == null)
return "";
else

View File

@ -87,7 +87,7 @@
$('#playButtonContainer', page).hide();
}
var editImagesHref = user.Configuration.IsAdministrator ? 'edititemimages.html' + window.location.search : null;
var editImagesHref = user.Configuration.IsAdministrator ? 'edititemimages.html' + getWindowLocationSearch() : null;
$('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item, editImagesHref));
if (user.Configuration.IsAdministrator && item.LocationType !== "Offline") {
@ -524,7 +524,7 @@
reload(page);
$('#btnEdit', page).attr('href', 'edititemmetadata.html' + window.location.search);
$('#btnEdit', page).attr('href', 'edititemmetadata.html' + getWindowLocationSearch());
}).on('pagehide', "#itemByNameDetailPage", function () {

View File

@ -46,42 +46,41 @@
LibraryBrowser.renderDetailPageBackdrop(page, item);
if (user.Configuration.IsAdministrator) {
$('#editButtonContainer', page).show();
$('.btnEdit', page).removeClass('hide');
} else {
$('#editButtonContainer', page).hide();
$('.btnEdit', page).addClass('hide');
}
var externalPlayUrl = getExternalPlayUrl(item);
$('#btnPlayExternal', page).attr('href', externalPlayUrl || '#');
$('.btnPlayExternal', page).attr('href', externalPlayUrl || '#');
if (externalPlayUrl) {
$('#playExternalButtonContainer', page).show();
$('#playButtonContainer', page).hide();
$('.btnPlayExternal', page).removeClass('hide');
$('.btnPlay', page).addClass('hide');
}
else if (MediaController.canPlay(item)) {
$('#playButtonContainer', page).show();
$('#playExternalButtonContainer', page).hide();
$('.btnPlay', page).removeClass('hide');
$('.btnPlayExternal', page).addClass('hide');
}
else {
$('#playButtonContainer', page).hide();
$('#playExternalButtonContainer', page).hide();
$('.btnPlay', page).addClass('hide');
$('.btnPlayExternal', page).addClass('hide');
}
if (item.LocalTrailerCount && item.PlayAccess == 'Full') {
$('#trailerButtonContainer', page).show();
$('.btnPlayTrailer', page).removeClass('hide');
} else {
$('#trailerButtonContainer', page).hide();
$('.btnPlayTrailer', page).addClass('hide');
}
if (!item.LocalTrailerCount && item.RemoteTrailers.length && item.PlayAccess == 'Full') {
$('#externalTrailerButtonContainer', page).show();
$('#btnPlayExternalTrailer', page).attr('href', item.RemoteTrailers[0].Url);
$('.btnPlayExternalTrailer', page).removeClass('hide').attr('href', item.RemoteTrailers[0].Url);
} else {
$('#externalTrailerButtonContainer', page).hide();
$('#btnPlayExternalTrailer', page).attr('href', '#');
$('.btnPlayExternalTrailer', page).addClass('hide').attr('href', '#');
}
if (user.Configuration.IsAdministrator && item.MediaSources && item.MediaSources.length > 1) {
@ -93,10 +92,10 @@
if (item.LocationType == "Offline") {
$('#offlineIndicator', page).show();
$('.offlineIndicator', page).show();
}
else {
$('#offlineIndicator', page).hide();
$('.offlineIndicator', page).hide();
}
var isMissingEpisode = false;
@ -113,10 +112,10 @@
if (isMissingEpisode) {
$('#missingIndicator', page).show();
$('.missingIndicator', page).show();
}
else {
$('#missingIndicator', page).hide();
$('.missingIndicator', page).hide();
}
setPeopleHeader(page, item);
@ -128,9 +127,7 @@
Dashboard.hideLoadingMsg();
});
$('#btnEdit', page).attr('href', "edititemmetadata.html?id=" + id);
$('.btnEdit', page).attr('href', "edititemmetadata.html?id=" + id);
}
function setPeopleHeader(page, item) {
@ -1332,7 +1329,7 @@
var page = this;
$('#btnPlay', page).on('click', function () {
$('.btnPlay', page).on('click', function () {
var userdata = currentItem.UserData || {};
var mediaType = currentItem.MediaType;
@ -1344,11 +1341,11 @@
LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, currentItem.IsFolder, mediaType, userdata.PlaybackPositionTicks);
});
$('#btnPlayTrailer', page).on('click', function () {
$('.btnPlayTrailer', page).on('click', function () {
playTrailer(page);
});
$('#btnPlayExternal', page).on('click', function () {
$('.btnPlayExternal', page).on('click', function () {
ApiClient.markPlayed(Dashboard.getCurrentUserId(), currentItem.Id, new Date());
});

View File

@ -338,6 +338,10 @@
getHref: function (item, itemByNameContext) {
if (!item) {
throw new Error('item cannot be null');
}
if (item.url) {
return item.url;
}

View File

@ -649,7 +649,7 @@
}
// Just use the first audio stream
return audioStreams[0];
return audioStreams[0].Index;
}
function getVideoQualityOptions(mediaStreams) {

View File

@ -344,7 +344,7 @@ var Dashboard = {
navigate: function (url, preserveQueryString) {
var queryString = window.location.search;
var queryString = getWindowLocationSearch();
if (preserveQueryString && queryString) {
url += queryString;
}

View File

@ -18,6 +18,7 @@
</div>
<form id="supporterKeyForm">
<div style="margin: 1em 0;">
<label for="txtSupporterKey">MB3 Supporter Key (paste from email)</label>
<input type="password" id="txtSupporterKey" name="txtSupporterKey" data-inline="true" />
@ -33,8 +34,9 @@
</div>
<div style="margin: 2em 0;">
<label for="txtLegacyKey">MB2 Supporter Key</label>
<input type="password" id="txtLegacyKey" name="txtLegacyKey" data-inline="true" />
<input type="password" id="txtLegacyKey" name="txtLegacyKey" />
<div class="fieldDescription">
Some premium plugins may give credit for registrations with previous versions in MB2.
</div>
@ -42,7 +44,6 @@
</div>
<p>
<button type="submit" id="mbLegacyKeyBtn" data-theme="b" data-icon="check">Save</button>
</p>
</form>
<br />
@ -52,7 +53,7 @@
<form id="lostKeyForm">
<div style="margin: 1em 0;">
<label for="txtEmail">Email Address</label>
<input type="email" required id="txtEmail" name="txtEmail" data-inline="true" />
<input type="email" required id="txtEmail" name="txtEmail" />
<div class="fieldDescription">The email address that was used to purchase the key.</div>
</div>
<p>
@ -73,19 +74,19 @@
</p>
<div style="margin: 1em 0;">
<label for="txtEmail">Current Email Address</label>
<input type="email" required id="txtNewEmail" name="txtNewEmail" data-inline="true" />
<input type="email" required id="txtNewEmail" name="txtNewEmail" />
<div class="fieldDescription">
The current email address to which your new key was sent.
</div>
</div>
<p>
<label for="txtNewKey">New Supporter Key</label>
<input type="password" required="required" id="txtNewKey" name="txtNewKey" data-inline="true" />
<input type="password" required="required" id="txtNewKey" name="txtNewKey" />
</p>
<p>
<label for="txtOldKey">Old Supporter Key</label>
<input type="password" required="required" id="txtOldKey" name="txtOldKey" data-inline="true" />
<input type="password" required="required" id="txtOldKey" name="txtOldKey" />
</p>
<p>
<button type="submit" id="mbLinkKeysBtn" data-icon="check" data-theme="b">Link Keys</button>