diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json
index 90a4eff73f..b199d3aa15 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 fdd0934b12..14fad24516 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 d7dca92ca4..dda02c73eb 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 205aa485df..6d59be3b1b 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 debf19a594..5a5054f478 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 5be329b44d..a1e4798c73 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 d2ab686d81..260605d435 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 75af276195..0000000000
--- 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 2f5caa2af4..728038b213 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 cb996bb74f..541318b985 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 f5bdb4c5a7..1f97b4469b 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 1b8477ef1b..3556059d82 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 f102e8b76e..3929312bb4 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."
}