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 @@
${OptionDetectArchiveFilesAsMediaHelp}
+ +
+ +
${OptionAutomaticallyGroupSeriesHelp}
+
diff --git a/dashboard-ui/components/tvproviders/xmltv.js b/dashboard-ui/components/tvproviders/xmltv.js index 2416f2809e..aba03764ef 100644 --- a/dashboard-ui/components/tvproviders/xmltv.js +++ b/dashboard-ui/components/tvproviders/xmltv.js @@ -107,7 +107,7 @@ }, function () { Dashboard.hideLoadingMsg(); Dashboard.alert({ - message: Globalize.translate('ErrorAddingListingsToSchedulesDirect') + message: Globalize.translate('ErrorAddingXmlTvFile') }); }); diff --git a/dashboard-ui/dashboard/librarydisplay.js b/dashboard-ui/dashboard/librarydisplay.js index a6cce7be13..b95d0c9281 100644 --- a/dashboard-ui/dashboard/librarydisplay.js +++ b/dashboard-ui/dashboard/librarydisplay.js @@ -11,10 +11,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/dashboard/librarysettings.js b/dashboard-ui/dashboard/librarysettings.js index 6370dafcbd..59ddd6fd63 100644 --- a/dashboard-ui/dashboard/librarysettings.js +++ b/dashboard-ui/dashboard/librarysettings.js @@ -87,10 +87,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/librarypathmapping.html b/dashboard-ui/librarypathmapping.html deleted file mode 100644 index 1583065488..0000000000 --- a/dashboard-ui/librarypathmapping.html +++ /dev/null @@ -1,22 +0,0 @@ -
- -
-
-
-

${PathSubstitutionHelp}

- -
-
- -
- -

- Path Substitutions can no longer be added. This feature is being replaced by the network share setup. -

-

- To configure network shares, edit an existing media library, then click on one of the existing folders. You'll then be able to map a network path to a library path. -

- -
-
-
\ No newline at end of file diff --git a/dashboard-ui/metadatanfo.html b/dashboard-ui/metadatanfo.html index f2c991aa19..2a3ea2c52c 100644 --- a/dashboard-ui/metadatanfo.html +++ b/dashboard-ui/metadatanfo.html @@ -32,7 +32,6 @@
${LabelKodiMetadataEnablePathSubstitutionHelp}
-
${LabelKodiMetadataEnablePathSubstitutionHelp2}
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 @@
${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 += ''; - - 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." }