diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json
index 90a4eff73..b199d3aa1 100644
--- a/dashboard-ui/bower_components/emby-apiclient/.bower.json
+++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json
@@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
- "version": "1.1.95",
- "_release": "1.1.95",
+ "version": "1.1.96",
+ "_release": "1.1.96",
"_resolution": {
"type": "version",
- "tag": "1.1.95",
- "commit": "e8acc2b7fb936b9e8d54a1eda726a16806258639"
+ "tag": "1.1.96",
+ "commit": "d510fead0ace4166990b22f3f6c9fa0deb537bed"
},
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "^1.1.51",
diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
index fdd0934b1..14fad2451 100644
--- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
+++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js
@@ -216,7 +216,7 @@
return connectUser;
};
- var minServerVersion = '3.0.7000';
+ var minServerVersion = '3.0.7300';
self.minServerVersion = function (val) {
if (val) {
diff --git a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.js b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.js
index d7dca92ca..dda02c73e 100644
--- a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.js
+++ b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.js
@@ -60,8 +60,10 @@
if (contentType == 'tvshows') {
parent.querySelector('.chkImportMissingEpisodesContainer').classList.remove('hide');
+ parent.querySelector('.chkAutomaticallyGroupSeriesContainer').classList.remove('hide');
} else {
parent.querySelector('.chkImportMissingEpisodesContainer').classList.add('hide');
+ parent.querySelector('.chkAutomaticallyGroupSeriesContainer').classList.add('hide');
}
}
@@ -76,7 +78,8 @@
DownloadImagesInAdvance: parent.querySelector('#chkDownloadImagesInAdvance').checked,
EnableInternetProviders: parent.querySelector('#chkEnableInternetProviders').checked,
ImportMissingEpisodes: parent.querySelector('#chkImportMissingEpisodes').checked,
- SaveLocalMetadata: parent.querySelector('#chkSaveLocal').checked
+ SaveLocalMetadata: parent.querySelector('#chkSaveLocal').checked,
+ EnableAutomaticSeriesGrouping: parent.querySelector('.chkAutomaticallyGroupSeries').checked
};
return options;
@@ -93,6 +96,7 @@
parent.querySelector('#chkEnableInternetProviders').checked = options.EnableInternetProviders;
parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata;
parent.querySelector('#chkImportMissingEpisodes').checked = options.ImportMissingEpisodes;
+ parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping;
}
return {
diff --git a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html
index 205aa485d..6d59be3b1 100644
--- a/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html
+++ b/dashboard-ui/components/libraryoptionseditor/libraryoptionseditor.template.html
@@ -68,3 +68,11 @@
diff --git a/dashboard-ui/mypreferencesdisplay.html b/dashboard-ui/mypreferencesdisplay.html
index debf19a59..5a5054f47 100644
--- a/dashboard-ui/mypreferencesdisplay.html
+++ b/dashboard-ui/mypreferencesdisplay.html
@@ -58,7 +58,7 @@
${OptionYes}
- ${OptionNo}
+ ${OptionNo}
${LabelEnableBackdropsHelp}
diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js
index 5be329b44..a1e4798c7 100644
--- a/dashboard-ui/scripts/itembynamedetailpage.js
+++ b/dashboard-ui/scripts/itembynamedetailpage.js
@@ -332,6 +332,10 @@
return 'secondaryitems.html?type=' + type + '&artistId=' + item.Id;
}
+ if (item.Type == 'Person') {
+ return 'secondaryitems.html?type=' + type + '&personId=' + item.Id;
+ }
+
return 'secondaryitems.html?type=' + type + '&parentId=' + item.Id;
}
diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js
index d2ab686d8..260605d43 100644
--- a/dashboard-ui/scripts/itemdetailpage.js
+++ b/dashboard-ui/scripts/itemdetailpage.js
@@ -119,7 +119,7 @@
if (dom.getWindowSize().innerWidth >= 800) {
backdrop.setBackdrops([item], {
- blur: 30
+ blur: 27
}, false);
} else {
backdrop.clear();
diff --git a/dashboard-ui/scripts/librarypathmapping.js b/dashboard-ui/scripts/librarypathmapping.js
deleted file mode 100644
index 75af27619..000000000
--- a/dashboard-ui/scripts/librarypathmapping.js
+++ /dev/null
@@ -1,160 +0,0 @@
-define(['jQuery', 'listViewStyle'], function ($) {
- 'use strict';
-
- var currentConfig;
-
- function remove(page, index) {
-
- require(['confirm'], function (confirm) {
-
- confirm(Globalize.translate('MessageConfirmPathSubstitutionDeletion'), Globalize.translate('HeaderConfirmDeletion')).then(function () {
-
- ApiClient.getServerConfiguration().then(function (config) {
-
- config.PathSubstitutions.splice(index, 1);
-
- ApiClient.updateServerConfiguration(config).then(function () {
-
- reload(page);
- });
- });
- });
- });
- }
-
- function addSubstitution(page, config) {
-
- config.PathSubstitutions.push({
- From: $('#txtFrom', page).val(),
- To: $('#txtTo', page).val()
- });
-
- }
-
- function reloadPathMappings(page, config) {
-
- var index = 0;
-
- var html = config.PathSubstitutions.map(function (map) {
-
- var mapHtml = '';
- mapHtml += '
';
-
- mapHtml += '
folder ';
-
- mapHtml += '
';
-
- mapHtml += "
" + map.From + " ";
- mapHtml += "
" + Globalize.translate('HeaderTo') + "
";
- mapHtml += "
" + map.To + "
";
-
- mapHtml += '
';
-
- mapHtml += '
delete ';
-
- mapHtml += '
';
-
- index++;
-
- return mapHtml;
-
- }).join('');
-
- if (config.PathSubstitutions.length) {
- html = '
' + html + '
';
- }
-
- var elem = $('.pathSubstitutions', page).html(html);
-
- $('.btnDeletePath', elem).on('click', function () {
-
- remove(page, parseInt(this.getAttribute('data-index')));
- });
- }
-
- function loadPage(page, config) {
-
- currentConfig = config;
-
- reloadPathMappings(page, config);
- Dashboard.hideLoadingMsg();
- }
-
- function reload(page) {
-
- $('#txtFrom', page).val('');
- $('#txtTo', page).val('');
-
- ApiClient.getServerConfiguration().then(function (config) {
-
- loadPage(page, config);
-
- });
- }
-
- function onSubmit() {
- Dashboard.showLoadingMsg();
-
- var form = this;
- var page = $(form).parents('.page');
-
- ApiClient.getServerConfiguration().then(function (config) {
-
- addSubstitution(page, config);
- ApiClient.updateServerConfiguration(config).then(function () {
-
- reload(page);
- });
- });
-
- // Disable default form submission
- return false;
- }
-
- function getTabs() {
- return [
- {
- href: 'library.html',
- name: Globalize.translate('HeaderLibraries')
- },
- {
- href: 'librarydisplay.html',
- name: Globalize.translate('TabDisplay')
- },
- {
- href: 'librarypathmapping.html',
- name: Globalize.translate('TabPathSubstitution')
- },
- {
- href: 'librarysettings.html',
- name: Globalize.translate('TabAdvanced')
- }];
- }
-
-
- $(document).on('pageinit', "#libraryPathMappingPage", function () {
-
- var page = this;
-
- $('.libraryPathMappingForm').off('submit', onSubmit).on('submit', onSubmit);
-
- }).on('pageshow', "#libraryPathMappingPage", function () {
-
- LibraryMenu.setTabs('librarysetup', 2, getTabs);
- Dashboard.showLoadingMsg();
-
- var page = this;
-
- ApiClient.getServerConfiguration().then(function (config) {
-
- loadPage(page, config);
-
- });
-
- }).on('pagebeforehide', "#libraryPathMappingPage", function () {
-
- currentConfig = null;
-
- });
-
-});
diff --git a/dashboard-ui/scripts/medialibrarypage.js b/dashboard-ui/scripts/medialibrarypage.js
index 2f5caa2af..728038b21 100644
--- a/dashboard-ui/scripts/medialibrarypage.js
+++ b/dashboard-ui/scripts/medialibrarypage.js
@@ -443,10 +443,6 @@
href: 'librarydisplay.html',
name: Globalize.translate('TabDisplay')
},
- {
- href: 'librarypathmapping.html',
- name: Globalize.translate('TabPathSubstitution')
- },
{
href: 'librarysettings.html',
name: Globalize.translate('TabAdvanced')
diff --git a/dashboard-ui/scripts/mypreferencesdisplay.js b/dashboard-ui/scripts/mypreferencesdisplay.js
index cb996bb74..541318b98 100644
--- a/dashboard-ui/scripts/mypreferencesdisplay.js
+++ b/dashboard-ui/scripts/mypreferencesdisplay.js
@@ -15,7 +15,7 @@
page.querySelector('.chkDisplayUnairedEpisodes').checked = user.Configuration.DisplayUnairedEpisodes || false;
page.querySelector('#chkThemeSong').checked = userSettings.enableThemeSongs();
- page.querySelector('#selectBackdrop').value = appStorage.getItem('enableBackdrops-' + user.Id) || '';
+ page.querySelector('#selectBackdrop').value = appStorage.getItem('enableBackdrops-' + user.Id) || '0';
page.querySelector('#selectLanguage').value = userSettings.language() || '';
diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js
index f5bdb4c5a..1f97b4469 100644
--- a/dashboard-ui/scripts/secondaryitems.js
+++ b/dashboard-ui/scripts/secondaryitems.js
@@ -223,7 +223,7 @@
function getItemPromise() {
- var id = params.genreId || params.studioId || params.artistId || params.parentId;
+ var id = params.genreId || params.studioId || params.artistId || params.personId || params.parentId;
if (id) {
return ApiClient.getItem(Dashboard.getCurrentUserId(), id);
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 1b8477ef1..3556059d8 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -466,7 +466,7 @@ var Dashboard = {
divider: true,
name: Globalize.translate('TabLibrary'),
href: "library.html",
- pageIds: ['mediaLibraryPage', 'libraryPathMappingPage', 'librarySettingsPage', 'libraryDisplayPage'],
+ pageIds: ['mediaLibraryPage', 'librarySettingsPage', 'libraryDisplayPage'],
icon: 'folder',
color: '#38c'
}, {
@@ -821,7 +821,7 @@ var Dashboard = {
if (enableVlcAudio) {
profile.DirectPlayProfiles.push({
- Container: "aac,mp3,mpa,wav,wma,mp2,ogg,oga,webma,ape,opus,flac",
+ Container: "aac,mp3,mpa,wav,wma,mp2,ogg,oga,webma,ape,opus,flac,m4a",
Type: 'Audio'
});
@@ -2130,13 +2130,6 @@ var AppInfo = {};
controller: 'dashboard/librarydisplay'
});
- defineRoute({
- path: '/librarypathmapping.html',
- dependencies: [],
- autoFocus: false,
- roles: 'admin'
- });
-
defineRoute({
path: '/librarysettings.html',
dependencies: ['emby-collapse', 'emby-input', 'emby-button', 'emby-select'],
diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json
index f102e8b76..3929312bb 100644
--- a/dashboard-ui/strings/en-US.json
+++ b/dashboard-ui/strings/en-US.json
@@ -1208,7 +1208,7 @@
"OptionPlayNextEpisodeAutomatically": "Play next episode automatically",
"OptionDownloadImagesInAdvance": "Download images in advance",
"SettingsSaved": "Settings saved.",
- "OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by an Emby app. Enable this option to download all images in advance, as new media is imported.",
+ "OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by an Emby app. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.",
"Users": "Users",
"Delete": "Delete",
"Password": "Password",
@@ -1942,5 +1942,8 @@
"HeaderRecordingPostProcessing": "Recording Post Processing",
"LabelPostProcessorArguments": "Post-processor command line arguments:",
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
- "LabelPostProcessor": "Post-processing application:"
+ "LabelPostProcessor": "Post-processing application:",
+ "ErrorAddingXmlTvFile": "There was an error accessing the XmlTV file. Please ensure the file exists and try again.",
+ "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders",
+ "OptionAutomaticallyGroupSeriesHelp": "If enabled, series that are spread across multiple folders within this library will be automatically merged into a single series."
}