diff --git a/dashboard-ui/bower_components/emby-apiclient/apiclient.js b/dashboard-ui/bower_components/emby-apiclient/apiclient.js index b428d4a27..bfae25535 100644 --- a/dashboard-ui/bower_components/emby-apiclient/apiclient.js +++ b/dashboard-ui/bower_components/emby-apiclient/apiclient.js @@ -3361,6 +3361,22 @@ }); }; + self.cancelSyncItems = function (itemIds, targetId) { + + if (!itemIds) { + throw new Error("null itemIds"); + } + + var url = self.getUrl("Sync/" + (targetId || self.deviceId()) + "/Items", { + ItemIds: itemIds.join(',') + }); + + return self.ajax({ + type: "DELETE", + url: url + }); + }; + /** * Reports a user has stopped playing an item * @param {String} userId diff --git a/dashboard-ui/bower_components/headroom.js/dist/headroom.js b/dashboard-ui/bower_components/headroom.js/dist/headroom.js index 0d35c1018..21f4ab309 100644 --- a/dashboard-ui/bower_components/headroom.js/dist/headroom.js +++ b/dashboard-ui/bower_components/headroom.js/dist/headroom.js @@ -130,11 +130,11 @@ * @param {DOMElement} elem the header element * @param {Object} options options for the widget */ - function Headroom(elem, options) { + function Headroom(elems, options) { options = extend(options, Headroom.options); this.lastKnownScrollY = 0; - this.elem = elem; + this.elems = elems; this.debouncer = new Debouncer(this.update.bind(this)); this.tolerance = normalizeTolerance(options.tolerance); this.classes = options.classes; @@ -143,8 +143,6 @@ this.initialised = false; this.onPin = options.onPin; this.onUnpin = options.onUnpin; - this.onTop = options.onTop; - this.onNotTop = options.onNotTop; } Headroom.prototype = { constructor: Headroom, @@ -154,13 +152,30 @@ */ init: function () { - this.elem.classList.add(this.classes.initial); + for (var i = 0, length = this.elems.length; i < length; i++) { + this.elems[i].classList.add(this.classes.initial); + } this.attachEvent(); return this; }, + add: function (elem) { + elem.classList.add(this.classes.initial); + this.elems.push(elem); + }, + + remove: function (elem) { + + var classes = this.classes; + elem.classList.remove(classes.unpinned, classes.pinned, classes.initial); + var i = this.elems.indexOf(elem); + if (i != -1) { + this.elems.splice(i, 1); + } + }, + /** * Unattaches events and removes any classes that were added */ @@ -168,7 +183,11 @@ var classes = this.classes; this.initialised = false; - this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.initial); + + for (var i = 0, length = this.elems.length; i < length; i++) { + this.elems[i].classList.remove(classes.unpinned, classes.pinned, classes.initial); + } + removeEventListenerWithOptions(this.scroller, 'scroll', this.debouncer, { capture: false, passive: true @@ -196,13 +215,17 @@ * Unpins the header if it's currently pinned */ unpin: function () { - var classList = this.elem.classList, - classes = this.classes; - if (classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) { - classList.add(classes.unpinned); - classList.remove(classes.pinned); - this.onUnpin && this.onUnpin.call(this); + var classes = this.classes; + + for (var i = 0, length = this.elems.length; i < length; i++) { + var classList = this.elems[i].classList; + + if (classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) { + classList.add(classes.unpinned); + classList.remove(classes.pinned); + this.onUnpin && this.onUnpin.call(this); + } } }, @@ -210,42 +233,19 @@ * Pins the header if it's currently unpinned */ pin: function () { - var classList = this.elem.classList, - classes = this.classes; - if (classList.contains(classes.unpinned)) { - classList.remove(classes.unpinned); - classList.add(classes.pinned); - this.onPin && this.onPin.call(this); + var classes = this.classes; + + for (var i = 0, length = this.elems.length; i < length; i++) { + var classList = this.elems[i].classList; + + if (classList.contains(classes.unpinned)) { + classList.remove(classes.unpinned); + classList.add(classes.pinned); + this.onPin && this.onPin.call(this); + } } - }, - /** - * Handles the top states - */ - top: function () { - var classList = this.elem.classList, - classes = this.classes; - - if (!classList.contains(classes.top)) { - classList.add(classes.top); - classList.remove(classes.notTop); - this.onTop && this.onTop.call(this); - } - }, - - /** - * Handles the not top state - */ - notTop: function () { - var classList = this.elem.classList, - classes = this.classes; - - if (!classList.contains(classes.notTop)) { - classList.add(classes.notTop); - classList.remove(classes.top); - this.onNotTop && this.onNotTop.call(this); - } }, /** @@ -315,14 +315,6 @@ return; } - if (this.enableTopClasses) { - if (currentScrollY <= this.offset) { - this.top(); - } else { - this.notTop(); - } - } - if (this.shouldUnpin(currentScrollY, toleranceExceeded)) { this.unpin(); } @@ -347,8 +339,6 @@ classes: { pinned: 'headroom--pinned', unpinned: 'headroom--unpinned', - top: 'headroom--top', - notTop: 'headroom--not-top', initial: 'headroom' } }; diff --git a/dashboard-ui/channels.html b/dashboard-ui/channels.html index 4e442131f..4063a3e06 100644 --- a/dashboard-ui/channels.html +++ b/dashboard-ui/channels.html @@ -1,4 +1,4 @@ -
+
diff --git a/dashboard-ui/components/appfooter/appfooter.css b/dashboard-ui/components/appfooter/appfooter.css index 145d58834..b7013c80a 100644 --- a/dashboard-ui/components/appfooter/appfooter.css +++ b/dashboard-ui/components/appfooter/appfooter.css @@ -5,16 +5,9 @@ right: 0; z-index: 1; bottom: 0; -} - -.appfooter-headroom { transition: transform 180ms linear; } -.appfooter--pinned { - transform: none; -} - -.appfooter--unpinned { +.appfooter.headroom--unpinned { transform: translateY(100%); } \ No newline at end of file diff --git a/dashboard-ui/components/appfooter/appfooter.js b/dashboard-ui/components/appfooter/appfooter.js index c2bdbd5d8..4c21e5cb4 100644 --- a/dashboard-ui/components/appfooter/appfooter.js +++ b/dashboard-ui/components/appfooter/appfooter.js @@ -13,27 +13,10 @@ function initHeadRoom(instance, elem) { - require(["headroom"], function () { + require(["headroom-window"], function (headroom) { - // construct an instance of Headroom, passing the element - var headroom = new Headroom(elem, { - // or scroll tolerance per direction - tolerance: { - down: 20, - up: 0 - }, - classes: { - pinned: 'appfooter--pinned', - unpinned: 'appfooter--unpinned', - top: 'appfooter--top', - notTop: 'appfooter--not-top', - initial: 'appfooter-headroom' - } - }); - // initialise - headroom.init(); - - instance.headroom = headroom; + self.headroom = headroom; + headroom.add(elem); }); } @@ -62,10 +45,11 @@ var self = this; if (self.headroom) { - self.headroom.destroy(); + self.headroom.remove(self.element); + self.headroom = null; } - self.Element = null; + self.element = null; }; return dockedTabs; diff --git a/dashboard-ui/components/navdrawer/navdrawer.css b/dashboard-ui/components/navdrawer/navdrawer.css index 8a00664f5..56543a4b6 100644 --- a/dashboard-ui/components/navdrawer/navdrawer.css +++ b/dashboard-ui/components/navdrawer/navdrawer.css @@ -1,5 +1,5 @@ .touch-menu-la { - width: 240px; + width: 280px; position: fixed; top: 0; bottom: 0; diff --git a/dashboard-ui/components/navdrawer/navdrawer.js b/dashboard-ui/components/navdrawer/navdrawer.js index b300768d6..54fc6136a 100644 --- a/dashboard-ui/components/navdrawer/navdrawer.js +++ b/dashboard-ui/components/navdrawer/navdrawer.js @@ -97,7 +97,10 @@ return; } - var edgeHammer = new Hammer(options.edgeSwipeElement, null); + require(['hammer-main'], initEdgeSwipeInternal); + } + + function initEdgeSwipeInternal(edgeHammer) { var isPeeking = false; edgeHammer.on('panstart panmove', function (ev) { diff --git a/dashboard-ui/css/dashboard.css b/dashboard-ui/css/dashboard.css index 42786b0c2..b790d8bca 100644 --- a/dashboard-ui/css/dashboard.css +++ b/dashboard-ui/css/dashboard.css @@ -100,7 +100,7 @@ paper-input + .fieldDescription { top: 0; right: 0; bottom: 0; - left: 270px; + left: 280px; } .dashboardDocument .adminDrawerLogo { diff --git a/dashboard-ui/devices/android/android.css b/dashboard-ui/devices/android/android.css index 3f1643b96..a723091cf 100644 --- a/dashboard-ui/devices/android/android.css +++ b/dashboard-ui/devices/android/android.css @@ -1,11 +1,11 @@ @media all and (min-width: 300px) { - .libraryViewNav, .libraryViewNav > .contentScrollSlider { + .libraryViewNav, .emby-tabs-slider { display: flex; flex-grow: 1; } - .libraryViewNav .emby-tab-button { - flex-grow: 1; - } + .emby-tab-button { + flex-grow: 1; + } } diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 4688e5f5e..2befbdee9 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -38,7 +38,7 @@
@@ -62,7 +62,7 @@
diff --git a/dashboard-ui/scripts/channels.js b/dashboard-ui/scripts/channels.js index d5e293467..c06a1faa2 100644 --- a/dashboard-ui/scripts/channels.js +++ b/dashboard-ui/scripts/channels.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'cardBuilder', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, cardBuilder) { +define(['libraryBrowser', 'cardBuilder', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'scripts/channelslatest', 'scripts/sections'], function (libraryBrowser, cardBuilder) { // The base query options var query = { @@ -70,18 +70,29 @@ } } - pageIdOn('pageinit', "channelsPage", function () { + return function (view, params) { - var page = this; + var self = this; + var viewTabs = view.querySelector('.libraryViewNav'); - var mdlTabs = page.querySelector('.libraryViewNav'); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1]); - libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), [0, 1]); - - mdlTabs.addEventListener('tabchange', function (e) { - loadTab(page, parseInt(e.detail.selectedTabIndex)); + viewTabs.addEventListener('tabchange', function (e) { + loadTab(view, parseInt(e.detail.selectedTabIndex)); }); - }); + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + view.addEventListener('viewdestroy', function (e) { + + if (self.headroom) { + self.headroom.remove(viewTabs); + } + }); + }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index bd11cf8f5..e03031bd2 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -248,9 +248,9 @@ loadHomeTab(view, tabContent); }; - var mdlTabs = view.querySelector('.libraryViewNav'); + var viewTabs = view.querySelector('.libraryViewNav'); - libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 3]); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 3]); var tabControllers = []; var renderedTabs = []; @@ -319,11 +319,11 @@ }); } - mdlTabs.addEventListener('beforetabchange', function (e) { + viewTabs.addEventListener('beforetabchange', function (e) { preLoadTab(view, parseInt(e.detail.selectedTabIndex)); }); - mdlTabs.addEventListener('tabchange', function (e) { + viewTabs.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); @@ -343,7 +343,7 @@ if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { - mdlTabs.triggerTabChange(); + viewTabs.triggerTabChange(); } } @@ -370,5 +370,18 @@ Events.off(MediaController, 'playbackstop', onPlaybackStop); Events.off(ApiClient, "websocketmessage", onWebSocketMessage); }); + + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + + view.addEventListener('viewdestroy', function (e) { + if (self.headroom) { + self.headroom.remove(viewTabs); + } + }); }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index be5a1304f..6e49d0ef0 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -90,7 +90,7 @@ var elems = page.querySelectorAll('.chkOffline'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].checked = item.SyncPercent == 100; + elems[i].checked = item.SyncPercent != null; } } @@ -1127,7 +1127,8 @@ showTitle: true, centerText: true, lazy: true, - overlayPlayButton: true + overlayPlayButton: true, + allowBottomPadding: !scrollX }); } else if (item.Type == "Season") { @@ -1141,7 +1142,7 @@ overlayText: true, lazy: true, showDetailsMenu: true, - overlayPlayButton: AppInfo.enableAppLayouts + overlayPlayButton: AppInfo.enableAppLayouts, }); } else if (item.Type == "GameSystem") { @@ -2054,21 +2055,33 @@ }); } - function onSyncLocalClick() { - - if (this.checked) { - require(['syncDialog'], function (syncDialog) { - syncDialog.showMenu({ - items: [currentItem] - }); - }); - } else { - - } - } - return function (view, params) { + function resetSyncStatus() { + updateSyncStatus(view, currentItem); + } + + function onSyncLocalClick() { + + if (this.checked) { + require(['syncDialog'], function (syncDialog) { + syncDialog.showMenu({ + items: [currentItem] + }).then(function () { + reload(view, params); + }, resetSyncStatus); + }); + } else { + + require(['confirm'], function (confirm) { + + confirm(Globalize.translate('ConfirmRemoveDownload')).then(function () { + ApiClient.cancelSyncItems([currentItem.Id]); + }, resetSyncStatus); + }); + } + } + function onPlayTrailerClick() { playTrailer(view); } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 003590984..04ba85146 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -116,32 +116,43 @@ configureSwipeTabs: function (ownerpage, tabs) { if (!browser.touch) { - return; + //return; } + //require(['hammer'], function (Hammer) { + + // var hammertime = new Hammer(ownerpage); + // hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL }); + + //}); + var pageCount = ownerpage.querySelectorAll('.pageTabContent').length; - - require(['hammer'], function (Hammer) { - - var hammertime = new Hammer(ownerpage); - hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL }); - - hammertime.on('swipeleft', function (e) { - if (LibraryBrowser.allowSwipe(e.target)) { - var selected = parseInt(tabs.selectedIndex() || '0'); - if (selected < (pageCount - 1)) { - tabs.selectedIndex(selected + 1); - } + var onSwipeLeft = function (e) { + if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) { + var selected = parseInt(tabs.selectedIndex() || '0'); + if (selected < (pageCount - 1)) { + tabs.selectedIndex(selected + 1); } - }); + } + }; - hammertime.on('swiperight', function (e) { - if (LibraryBrowser.allowSwipe(e.target)) { - var selected = parseInt(tabs.selectedIndex() || '0'); - if (selected > 0) { - tabs.selectedIndex(selected - 1); - } + var onSwipeRight = function (e) { + if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) { + var selected = parseInt(tabs.selectedIndex() || '0'); + if (selected > 0) { + tabs.selectedIndex(selected - 1); } + } + }; + + require(['hammer-main'], function (hammertime) { + + hammertime.on('swipeleft', onSwipeLeft); + hammertime.on('swiperight', onSwipeRight); + + ownerpage.addEventListener('viewdestroy', function () { + hammertime.off('swipeleft', onSwipeLeft); + hammertime.off('swiperight', onSwipeRight); }); }); }, diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 720591519..db90a50ff 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -879,21 +879,6 @@ } } - pageClassOn('pageinit', 'page', function () { - - var page = this; - - var isLibraryPage = page.classList.contains('libraryPage'); - - if (isLibraryPage) { - - var navs = page.querySelectorAll('.libraryViewNav'); - for (var i = 0, length = navs.length; i < length; i++) { - initHeadRoom(navs[i]); - } - } - }); - pageClassOn('pagebeforeshow', 'page', function (e) { var page = this; @@ -999,18 +984,9 @@ return; } - require(["headroom"], function () { + require(["headroom-window"], function (headroom) { - // construct an instance of Headroom, passing the element - var headroom = new Headroom(elem, { - // or scroll tolerance per direction - tolerance: { - down: 40, - up: 0 - } - }); - // initialise - headroom.init(); + headroom.add(elem); }); } @@ -1063,8 +1039,8 @@ var drawerWidth = screen.availWidth - 50; // At least 240 drawerWidth = Math.max(drawerWidth, 240); - // But not exceeding 270 - drawerWidth = Math.min(drawerWidth, 270); + // But not exceeding 280 + drawerWidth = Math.min(drawerWidth, 280); var disableEdgeSwipe = false; @@ -1079,8 +1055,7 @@ target: navDrawerElement, onChange: onMainDrawerSelect, width: drawerWidth, - disableEdgeSwipe: disableEdgeSwipe, - edgeSwipeElement: document.querySelector('.mainDrawerPanelContent') + disableEdgeSwipe: disableEdgeSwipe }; } diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index 56fadd322..d492dc760 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -198,11 +198,11 @@ }); } - var mdlTabs = view.querySelector('.libraryViewNav'); + var viewTabs = view.querySelector('.libraryViewNav'); - libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]); - mdlTabs.addEventListener('tabchange', function (e) { + viewTabs.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); @@ -211,8 +211,18 @@ document.body.classList.remove('autoScrollY'); }); + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + view.addEventListener('viewdestroy', function (e) { + if (self.headroom) { + self.headroom.remove(viewTabs); + } tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index 02723d9b2..7fc741957 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -208,15 +208,9 @@ loadSuggestionsTab(view, params, tabContent); }; - var mdlTabs = view.querySelector('.libraryViewNav'); + var viewTabs = view.querySelector('.libraryViewNav'); - var baseUrl = 'movies.html'; - var topParentId = params.topParentId; - if (topParentId) { - baseUrl += '?topParentId=' + topParentId; - } - - libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 3, 4, 5]); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 3, 4, 5]); var tabControllers = []; var renderedTabs = []; @@ -290,14 +284,15 @@ }); } - mdlTabs.addEventListener('beforetabchange', function (e) { + viewTabs.addEventListener('beforetabchange', function (e) { preLoadTab(view, parseInt(e.detail.selectedTabIndex)); }); - mdlTabs.addEventListener('tabchange', function (e) { + viewTabs.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); view.addEventListener('viewbeforeshow', function (e) { + if (!view.getAttribute('data-title')) { var parentId = params.topParentId; @@ -323,7 +318,7 @@ if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { renderedTabs = []; - mdlTabs.triggerTabChange(); + viewTabs.triggerTabChange(); } } @@ -334,6 +329,19 @@ view.addEventListener('viewbeforehide', function (e) { Events.off(MediaController, 'playbackstop', onPlaybackStop); }); + + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + + view.addEventListener('viewdestroy', function (e) { + if (self.headroom) { + self.headroom.remove(viewTabs); + } + }); }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index 70bbc97c9..346f38359 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -349,19 +349,29 @@ }); } - var mdlTabs = view.querySelector('.libraryViewNav'); + var viewTabs = view.querySelector('.libraryViewNav'); - libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]); - mdlTabs.addEventListener('beforetabchange', function (e) { + viewTabs.addEventListener('beforetabchange', function (e) { preLoadTab(view, parseInt(e.detail.selectedTabIndex)); }); - mdlTabs.addEventListener('tabchange', function (e) { + viewTabs.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + view.addEventListener('viewdestroy', function (e) { + if (self.headroom) { + self.headroom.remove(viewTabs); + } tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 1d4f3c3de..190e39550 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1185,6 +1185,31 @@ var AppInfo = {}; } } + function createWindowHeadroom() { + // construct an instance of Headroom, passing the element + var headroom = new Headroom([], { + // or scroll tolerance per direction + tolerance: { + down: 20, + up: 0 + }, + classes: { + //pinned: 'appfooter--pinned', + //unpinned: 'appfooter--unpinned', + //initial: 'appfooter-headroom' + } + }); + // initialise + headroom.init(); + return headroom; + } + + function createMainContentHammer(Hammer) { + + var hammer = new Hammer(document.querySelector('.mainDrawerPanelContent'), null); + return hammer; + } + function initRequire() { var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate()); @@ -1491,6 +1516,9 @@ var AppInfo = {}; return Emby.Page; }); + define("headroom-window", ['headroom'], createWindowHeadroom); + define("hammer-main", ['hammer'], createMainContentHammer); + // mock this for now. not used in this app define("playbackManager", [], function () { return { @@ -1892,7 +1920,8 @@ var AppInfo = {}; path: '/channels.html', dependencies: [], autoFocus: false, - transition: 'fade' + transition: 'fade', + controller: 'scripts/channels' }); defineRoute({ diff --git a/dashboard-ui/scripts/sync.js b/dashboard-ui/scripts/sync.js index 3ada0d9ce..12b3db612 100644 --- a/dashboard-ui/scripts/sync.js +++ b/dashboard-ui/scripts/sync.js @@ -219,93 +219,96 @@ function showSyncMenu(options) { - requirejs(["registrationservices"], function () { - RegistrationServices.validateFeature('sync').then(function () { - showSyncMenuInternal(options); + return new Promise(function (resolve, reject) { + + requirejs(["registrationservices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) { + registrationServices.validateFeature('sync').then(function () { + + showSyncMenuInternal(dialogHelper, options).then(resolve, reject); + + }, reject); }); }); } - function showSyncMenuInternal(options) { + function showSyncMenuInternal(dialogHelper, options) { - require(['dialogHelper', 'formDialogStyle'], function (dialogHelper) { + var userId = Dashboard.getCurrentUserId(); - var userId = Dashboard.getCurrentUserId(); + var dialogOptionsQuery = { + UserId: userId, + ItemIds: (options.items || []).map(function (i) { + return i.Id || i; + }).join(','), - var dialogOptionsQuery = { - UserId: userId, - ItemIds: (options.items || []).map(function (i) { - return i.Id || i; - }).join(','), + ParentId: options.ParentId, + Category: options.Category + }; - ParentId: options.ParentId, - Category: options.Category - }; + return ApiClient.getJSON(ApiClient.getUrl('Sync/Options', dialogOptionsQuery)).then(function (dialogOptions) { - ApiClient.getJSON(ApiClient.getUrl('Sync/Options', dialogOptionsQuery)).then(function (dialogOptions) { + currentDialogOptions = dialogOptions; - currentDialogOptions = dialogOptions; - - var dlg = dialogHelper.createDialog({ - size: 'small', - removeOnClose: true, - autoFocus: false - }); - - dlg.classList.add('ui-body-a'); - dlg.classList.add('background-theme-a'); - dlg.classList.add('formDialog'); - - var html = ''; - html += '
'; - html += ''; - html += '
'; - html += Globalize.translate('SyncMedia'); - html += '
'; - - html += ''; - - html += '
'; - - html += '
'; - html += '
'; - - html += '
'; - - html += '
'; - - html += '

'; - html += ''; - html += '

'; - - html += '
'; - - html += '
'; - html += '
'; - - - dlg.innerHTML = html; - document.body.appendChild(dlg); - - dialogHelper.open(dlg); - - $('form', dlg).on('submit', function () { - - submitJob(dlg, userId, options, this, dialogHelper); - return false; - }); - - $('.btnCancel', dlg).on('click', function () { - dialogHelper.close(dlg); - }); - - renderForm({ - elem: $('.formFields', dlg), - dialogOptions: dialogOptions, - dialogOptionsFn: getTargetDialogOptionsFn(dialogOptionsQuery) - }); + var dlg = dialogHelper.createDialog({ + size: 'small', + removeOnClose: true, + autoFocus: false }); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('formDialog'); + + var html = ''; + html += '
'; + html += ''; + html += '
'; + html += Globalize.translate('SyncMedia'); + html += '
'; + + html += ''; + + html += '
'; + + html += '
'; + html += '
'; + + html += '
'; + + html += '
'; + + html += '

'; + html += ''; + html += '

'; + + html += '
'; + + html += '
'; + html += '
'; + + + dlg.innerHTML = html; + document.body.appendChild(dlg); + + $('form', dlg).on('submit', function () { + + submitJob(dlg, userId, options, this, dialogHelper); + return false; + }); + + $('.btnCancel', dlg).on('click', function () { + dialogHelper.close(dlg); + }); + + var promise = dialogHelper.open(dlg); + + renderForm({ + elem: $('.formFields', dlg), + dialogOptions: dialogOptions, + dialogOptionsFn: getTargetDialogOptionsFn(dialogOptionsQuery) + }); + + return promise; }); } diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index c49335394..6750485b9 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -202,34 +202,28 @@ }); } - var mdlTabs = view.querySelector('.libraryViewNav'); + var viewTabs = view.querySelector('.libraryViewNav'); function onPlaybackStop(e, state) { if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { renderedTabs = []; - mdlTabs.triggerTabChange(); + viewTabs.triggerTabChange(); } } - var baseUrl = 'tv.html'; - var topParentId = params.topParentId; - if (topParentId) { - baseUrl += '?topParentId=' + topParentId; - } - if (enableScrollX()) { view.querySelector('#resumableItems').classList.add('hiddenScrollX'); } else { view.querySelector('#resumableItems').classList.remove('hiddenScrollX'); } - libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]); + libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]); - mdlTabs.addEventListener('beforetabchange', function (e) { + viewTabs.addEventListener('beforetabchange', function (e) { preLoadTab(view, parseInt(e.detail.selectedTabIndex)); }); - mdlTabs.addEventListener('tabchange', function (e) { + viewTabs.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); @@ -278,8 +272,18 @@ Events.off(ApiClient, "websocketmessage", onWebSocketMessage); }); + if (AppInfo.enableHeadRoom) { + require(["headroom-window"], function (headroom) { + headroom.add(viewTabs); + self.headroom = headroom; + }); + } + view.addEventListener('viewdestroy', function (e) { + if (self.headroom) { + self.headroom.remove(viewTabs); + } tabControllers.forEach(function (t) { if (t.destroy) { t.destroy(); diff --git a/dashboard-ui/strings/ar.json b/dashboard-ui/strings/ar.json index 972331014..c12cbf1e2 100644 --- a/dashboard-ui/strings/ar.json +++ b/dashboard-ui/strings/ar.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/be-BY.json b/dashboard-ui/strings/be-BY.json index c3dd67229..c341339e6 100644 --- a/dashboard-ui/strings/be-BY.json +++ b/dashboard-ui/strings/be-BY.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/bg-BG.json b/dashboard-ui/strings/bg-BG.json index 09541acaf..2e225d173 100644 --- a/dashboard-ui/strings/bg-BG.json +++ b/dashboard-ui/strings/bg-BG.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/ca.json b/dashboard-ui/strings/ca.json index 928e20946..b43ff9882 100644 --- a/dashboard-ui/strings/ca.json +++ b/dashboard-ui/strings/ca.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/cs.json b/dashboard-ui/strings/cs.json index af31fa88c..090643c66 100644 --- a/dashboard-ui/strings/cs.json +++ b/dashboard-ui/strings/cs.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/da.json b/dashboard-ui/strings/da.json index ac5cfd34b..7cd548856 100644 --- a/dashboard-ui/strings/da.json +++ b/dashboard-ui/strings/da.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/de.json b/dashboard-ui/strings/de.json index b0324628b..4e0b03ba6 100644 --- a/dashboard-ui/strings/de.json +++ b/dashboard-ui/strings/de.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "Wir konnten kein FFmpeg in dem von Dir erfassten Verzeichnis finden. FFprobe wird ebenso ben\u00f6tigt und muss sich im gleichen Verzeichnis befinden. Diese Komponenten sind normalerweise in einem B\u00fcndel vorhanden um kommen zusammen mit einem Download. Bitte pr\u00fcfe das Verzeichnis und probiere es erneut.", "XmlTvPremiere": "Grunds\u00e4tzlich wird Emby {0} Stunden des EPGs importieren. Um unendlich Daten zu importieren ist eine aktive Emby Premiere Mitgliedschaft notwendig.", "MoreFromValue": "Mehr von {0}", - "OptionSaveMetadataAsHiddenHelp": "\u00c4nderungen werden sich auf neue Metadaten angewendet. Bereits existierende Metadaten werden bei der n\u00e4chsten Speicherung des Emby Servers auf den neusten Stand gebracht." + "OptionSaveMetadataAsHiddenHelp": "\u00c4nderungen werden sich auf neue Metadaten angewendet. Bereits existierende Metadaten werden bei der n\u00e4chsten Speicherung des Emby Servers auf den neusten Stand gebracht.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/el.json b/dashboard-ui/strings/el.json index f9b5e2341..a46db6545 100644 --- a/dashboard-ui/strings/el.json +++ b/dashboard-ui/strings/el.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/en-GB.json b/dashboard-ui/strings/en-GB.json index ede935511..51ac22842 100644 --- a/dashboard-ui/strings/en-GB.json +++ b/dashboard-ui/strings/en-GB.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index 98b3ca335..36715f32d 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -2312,5 +2312,7 @@ "MoreFromValue": "More from {0}", "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", "EnablePhotos": "Enable photos", - "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files." + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } diff --git a/dashboard-ui/strings/es-AR.json b/dashboard-ui/strings/es-AR.json index 2bb0ab24f..8181102ee 100644 --- a/dashboard-ui/strings/es-AR.json +++ b/dashboard-ui/strings/es-AR.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/es-MX.json b/dashboard-ui/strings/es-MX.json index 1a8bb1308..545e6f19a 100644 --- a/dashboard-ui/strings/es-MX.json +++ b/dashboard-ui/strings/es-MX.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "No fue posible localizar FFmpeg usando la ruta que introdujo. FFprobe tambi\u00e9n es requerido y debe de estar en la misma carpeta. Estos componentes normalmente est\u00e1n empaquetados en la misma descarga. Por favor verifique la ruta e intente de nuevo.", "XmlTvPremiere": "Por defecto, Emby importara {0} horas de datos de la gu\u00eda. Para importar datos ilimitados necesita una subscripcion activa de Emby Premiere", "MoreFromValue": "Mas de {0}", - "OptionSaveMetadataAsHiddenHelp": "Cambiando esto se aplicara a nuevos metadatos en adelante. Los archivos de metadatos existentes ser\u00e1n actualizados la pr\u00f3xima vez que sean guardados por el Servidor Emby" + "OptionSaveMetadataAsHiddenHelp": "Cambiando esto se aplicara a nuevos metadatos en adelante. Los archivos de metadatos existentes ser\u00e1n actualizados la pr\u00f3xima vez que sean guardados por el Servidor Emby", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/es.json b/dashboard-ui/strings/es.json index 76da17312..f5eb87c60 100644 --- a/dashboard-ui/strings/es.json +++ b/dashboard-ui/strings/es.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "Por defecto Emby importar\u00e1 {0} horas de programaci\u00f3n. Importar una cantidad ilimitada necesita una suscripci\u00f3n a Emby Premiere.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/fi.json b/dashboard-ui/strings/fi.json index 6e37923c8..b1fa98733 100644 --- a/dashboard-ui/strings/fi.json +++ b/dashboard-ui/strings/fi.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/fr-CA.json b/dashboard-ui/strings/fr-CA.json index 871c23da9..a93530ac7 100644 --- a/dashboard-ui/strings/fr-CA.json +++ b/dashboard-ui/strings/fr-CA.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/fr-FR.json b/dashboard-ui/strings/fr-FR.json index 56fd183bf..38a233d7c 100644 --- a/dashboard-ui/strings/fr-FR.json +++ b/dashboard-ui/strings/fr-FR.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/fr.json b/dashboard-ui/strings/fr.json index deccfdf00..29aca6706 100644 --- a/dashboard-ui/strings/fr.json +++ b/dashboard-ui/strings/fr.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "Nous ne pouvons pas localiser FFmpeg en utilisant le chemin que vous avez saisi. FFprobe est \u00e9galement n\u00e9cessaire et doit exister dans le m\u00eame dossier. Ces composants sont g\u00e9n\u00e9ralement regroup\u00e9s dans le m\u00eame t\u00e9l\u00e9chargement. S'il vous pla\u00eet v\u00e9rifier le chemin et essayer \u00e0 nouveau.", "XmlTvPremiere": "Par d\u00e9faut, Emby importera {0} heures de donn\u00e9es de guidage. L\u2019importation de donn\u00e9es illimit\u00e9 n\u00e9cessite un abonnement Emby Premiere.", "MoreFromValue": "Plus de {0}", - "OptionSaveMetadataAsHiddenHelp": "La modification s'appliquera aux nouvelles m\u00e9tadonn\u00e9es enregistr\u00e9es \u00e0 l'avenir. Les fichiers de m\u00e9tadonn\u00e9es existants seront mis \u00e0 jour la prochaine fois par Emby Server." + "OptionSaveMetadataAsHiddenHelp": "La modification s'appliquera aux nouvelles m\u00e9tadonn\u00e9es enregistr\u00e9es \u00e0 l'avenir. Les fichiers de m\u00e9tadonn\u00e9es existants seront mis \u00e0 jour la prochaine fois par Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/gsw.json b/dashboard-ui/strings/gsw.json index d85a8b697..eff40ae96 100644 --- a/dashboard-ui/strings/gsw.json +++ b/dashboard-ui/strings/gsw.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/he.json b/dashboard-ui/strings/he.json index 6c4cccb01..e278ada37 100644 --- a/dashboard-ui/strings/he.json +++ b/dashboard-ui/strings/he.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/hr.json b/dashboard-ui/strings/hr.json index 3b8be9a48..d7aac1b11 100644 --- a/dashboard-ui/strings/hr.json +++ b/dashboard-ui/strings/hr.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/hu.json b/dashboard-ui/strings/hu.json index 43ddf20d2..70d441cee 100644 --- a/dashboard-ui/strings/hu.json +++ b/dashboard-ui/strings/hu.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/id.json b/dashboard-ui/strings/id.json index 8f801d7a9..d67ca45fb 100644 --- a/dashboard-ui/strings/id.json +++ b/dashboard-ui/strings/id.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/it.json b/dashboard-ui/strings/it.json index e726ad165..ca3b06331 100644 --- a/dashboard-ui/strings/it.json +++ b/dashboard-ui/strings/it.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/kk.json b/dashboard-ui/strings/kk.json index d30ba44ce..14f71d646 100644 --- a/dashboard-ui/strings/kk.json +++ b/dashboard-ui/strings/kk.json @@ -1349,7 +1349,7 @@ "HeaderPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443", "OptionAllowAudioPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0434\u044b\u0431\u044b\u0441 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", "OptionAllowVideoPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding", + "OptionAllowVideoPlaybackRemuxing": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0441\u044b\u0437 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", "OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440 \u04e9\u0437\u0434\u0435\u0440\u0456\u043d\u0456\u04a3 \u0441\u0430\u044f\u0441\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0433\u0435\u043d \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0439\u0442\u044b\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430\u0493\u044b \u049b\u0430\u0442\u0435 \u0442\u0443\u0440\u0430\u043b\u044b \u043e\u04a3\u0430\u0439 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u0440\u0434\u044b \u0430\u043b\u0430\u0434\u044b.", "TabStreaming": "\u0410\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443", "LabelRemoteClientBitrateLimit": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456, \u041c\u0431\u0438\u0442\/\u0441:", @@ -1862,7 +1862,7 @@ "OptionMusicAlbums": "\u041c\u0443\u0437\u044b\u043a\u0430 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440\u044b", "OptionMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", "OptionSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", - "OptionHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", + "OptionHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456 \u043c\u0435\u043d \u0444\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", "OptionBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", "ButtonUp": "\u0416\u043e\u0493\u0430\u0440\u044b\u0493\u0430", "ButtonDown": "\u0422\u04e9\u043c\u0435\u043d\u0433\u0435", @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "\u0411\u0456\u0437\u0433\u0435 \u0441\u0456\u0437 \u0435\u043d\u0433\u0456\u0437\u0433\u0435\u043d FFmpeg \u0436\u043e\u043b\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0442\u0430\u0431\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0431\u043e\u043b\u043c\u0430\u0434\u044b. \u0421\u043e\u043d\u0434\u0430\u0439-\u0430\u049b FFprobe \u0442\u0430\u043b\u0430\u043f \u0435\u0442\u0456\u043b\u0435\u0434\u0456 \u0436\u04d9\u043d\u0435 \u0441\u043e\u043b \u049b\u0430\u043b\u0442\u0430\u0434\u0430 \u0431\u043e\u043b\u0443\u044b \u0436\u04e9\u043d. \u0411\u04b1\u043b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u0430\u0440 \u04d9\u0434\u0435\u0442\u0442\u0435 \u0441\u043e\u043b \u0436\u04af\u043a\u0442\u0435\u0443\u043c\u0435\u043d \u0431\u0456\u0440\u0433\u0435 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u043b\u0435\u0434\u0456. \u0416\u043e\u043b\u0434\u044b \u0442\u0435\u043a\u0441\u0435\u0440\u0456\u043f, \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043f \u043a\u04e9\u0440\u0456\u04a3\u0456\u0437.", "XmlTvPremiere": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435, Emby \u0430\u0440\u049b\u044b\u043b\u044b {0} \u0441\u0430\u0493\u0430\u0442 \u049b\u0430\u043c\u0442\u0438\u0442\u044b\u043d \u0442\u0435\u043b\u0435\u0433\u0438\u0434 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456 \u0448\u0435\u0442\u0442\u0435\u043d \u04d9\u043a\u0435\u043b\u0456\u043d\u0435\u0434\u0456. \u0414\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0448\u0435\u043a\u0441\u0456\u0437 \u0448\u0435\u0442\u0442\u0435\u043d \u04d9\u043a\u0435\u043b\u0443\u0456 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b\u043d \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", "MoreFromValue": "{0} \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0431\u0456\u0440\u0435\u043a", - "OptionSaveMetadataAsHiddenHelp": "\u041e\u0441\u044b \u04e9\u0437\u0433\u0435\u0440\u0442\u0443 \u0431\u043e\u043b\u0430\u0448\u0430\u049b\u0442\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0436\u0430\u04a3\u0430 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0411\u0430\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u043e\u043b\u0430\u0440 Emby \u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u0430 \u043a\u0435\u043b\u0435\u0441\u0456 \u0436\u043e\u043b\u044b \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b." + "OptionSaveMetadataAsHiddenHelp": "\u041e\u0441\u044b \u04e9\u0437\u0433\u0435\u0440\u0442\u0443 \u0431\u043e\u043b\u0430\u0448\u0430\u049b\u0442\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0436\u0430\u04a3\u0430 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0411\u0430\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u043e\u043b\u0430\u0440 Emby \u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u0430 \u043a\u0435\u043b\u0435\u0441\u0456 \u0436\u043e\u043b\u044b \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/ko.json b/dashboard-ui/strings/ko.json index 74996fe58..101f71b82 100644 --- a/dashboard-ui/strings/ko.json +++ b/dashboard-ui/strings/ko.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/ms.json b/dashboard-ui/strings/ms.json index e3e4d567f..6f094688f 100644 --- a/dashboard-ui/strings/ms.json +++ b/dashboard-ui/strings/ms.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/nb.json b/dashboard-ui/strings/nb.json index 99b7f4340..971bd24dd 100644 --- a/dashboard-ui/strings/nb.json +++ b/dashboard-ui/strings/nb.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "Vi kan dessverre ikke finne FFmpeg bruke banen du har angitt. FFprobe er ogs\u00e5 n\u00f8dvendig og m\u00e5 ligge i samme mappe. Disse komponentene er vanligvis buntet sammen i samme nedlastning. Kontroller banen og pr\u00f8v igjen.", "XmlTvPremiere": "Som standard, vill Emby importere {0} timer av tv guide informasjon. For \u00e5 kunne importere ubegrenset med data kreves det et aktivt Emby Premiere abonnement.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/nl.json b/dashboard-ui/strings/nl.json index 6f918a3e4..4b37a57d5 100644 --- a/dashboard-ui/strings/nl.json +++ b/dashboard-ui/strings/nl.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We zijn niet in staat om FFmpeg te lokaliseren met behulp van het pad dat u hebt ingevoerd. FFprobe is ook nodig en moet \u200b\u200bin dezelfde map staan. Deze componenten worden gewoonlijk gebundeld in dezelfde download. Controleer het pad en probeer het opnieuw.", "XmlTvPremiere": "Standaard wordt {0} uur gids data in Emby ge\u00efmporteerd. Het importeren van onbeperkte data vereist een actieve Emby Premiere abonnement.", "MoreFromValue": "Meer van {0}", - "OptionSaveMetadataAsHiddenHelp": "Het veranderen van dit zal gelden voor nieuwe metadata die wordt opgeslagen. Bestaande metadata bestanden zullen de volgende keer dat ze worden opgeslagen door Emby Server worden bijgewerkt." + "OptionSaveMetadataAsHiddenHelp": "Het veranderen van dit zal gelden voor nieuwe metadata die wordt opgeslagen. Bestaande metadata bestanden zullen de volgende keer dat ze worden opgeslagen door Emby Server worden bijgewerkt.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/pl.json b/dashboard-ui/strings/pl.json index 4e8162e69..302ce2269 100644 --- a/dashboard-ui/strings/pl.json +++ b/dashboard-ui/strings/pl.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/pt-BR.json b/dashboard-ui/strings/pt-BR.json index 6a081a5d2..aa74e4119 100644 --- a/dashboard-ui/strings/pt-BR.json +++ b/dashboard-ui/strings/pt-BR.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "N\u00e3o foi poss\u00edvel localizar FFmpeg utilizando o caminho que voc\u00ea digitou. O FFprobe tamb\u00e9m \u00e9 obrigat\u00f3rio e precisa existir na mesma pasta. Estes componentes normalmente est\u00e3o juntos no mesmo download. Por favor verifique o caminho e tente novamente.", "XmlTvPremiere": "Por padr\u00e3o, o Emby importar\u00e1 {0} horas de dados do guia. A importa\u00e7\u00e3o de dados ilimitados exige uma subscri\u00e7\u00e3o ativa do Emby Premiere.", "MoreFromValue": "Mais de {0}", - "OptionSaveMetadataAsHiddenHelp": "Ao alterar isto, aplicar\u00e1 sobre novos metadados salvos daqui para a frente. Os arquivos de metadados existentes ser\u00e3o atualizados na pr\u00f3xima vez que forem salvos no Servidor Emby." + "OptionSaveMetadataAsHiddenHelp": "Ao alterar isto, aplicar\u00e1 sobre novos metadados salvos daqui para a frente. Os arquivos de metadados existentes ser\u00e3o atualizados na pr\u00f3xima vez que forem salvos no Servidor Emby.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/pt-PT.json b/dashboard-ui/strings/pt-PT.json index df2b589ef..9a87ecc7e 100644 --- a/dashboard-ui/strings/pt-PT.json +++ b/dashboard-ui/strings/pt-PT.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/ro.json b/dashboard-ui/strings/ro.json index 0095520c0..ef773be7e 100644 --- a/dashboard-ui/strings/ro.json +++ b/dashboard-ui/strings/ro.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/ru.json b/dashboard-ui/strings/ru.json index a503b7246..13975b009 100644 --- a/dashboard-ui/strings/ru.json +++ b/dashboard-ui/strings/ru.json @@ -1349,7 +1349,7 @@ "HeaderPlayback": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "OptionAllowAudioPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430", "OptionAllowVideoPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430", - "OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding", + "OptionAllowVideoPlaybackRemuxing": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438", "OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.", "TabStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f", "LabelRemoteClientBitrateLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438, \u041c\u0431\u0438\u0442\/\u0441:", @@ -1862,7 +1862,7 @@ "OptionMusicAlbums": "\u041c\u0443\u0437. \u0430\u043b\u044c\u0431\u043e\u043c\u044b", "OptionMusicVideos": "\u041c\u0443\u0437. \u0432\u0438\u0434\u0435\u043e", "OptionSongs": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", - "OptionHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e", + "OptionHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e \u0438 \u0444\u043e\u0442\u043e", "OptionBooks": "\u041a\u043d\u0438\u0433\u0438", "ButtonUp": "\u0412\u0432\u0435\u0440\u0445", "ButtonDown": "\u0412\u043d\u0438\u0437", @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "\u041c\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c FFmpeg \u043f\u043e \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u0432\u0430\u043c\u0438 \u043f\u0443\u0442\u0438. FFprobe \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u042d\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0443\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", "XmlTvPremiere": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432 Emby \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f {0} \u0447\u0430\u0441(\u0430\/\u043e\u0432) \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0430. \u0414\u043b\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere.", "MoreFromValue": "\u0415\u0449\u0451 \u0441 {0}", - "OptionSaveMetadataAsHiddenHelp": "\u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043a \u043d\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 Emby Server." + "OptionSaveMetadataAsHiddenHelp": "\u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043a \u043d\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/sk.json b/dashboard-ui/strings/sk.json index 6c8e2875d..3d1ae8574 100644 --- a/dashboard-ui/strings/sk.json +++ b/dashboard-ui/strings/sk.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/sl-SI.json b/dashboard-ui/strings/sl-SI.json index 2c443fa4e..afc2262d2 100644 --- a/dashboard-ui/strings/sl-SI.json +++ b/dashboard-ui/strings/sl-SI.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/sv.json b/dashboard-ui/strings/sv.json index 8d72c83fa..bd248e186 100644 --- a/dashboard-ui/strings/sv.json +++ b/dashboard-ui/strings/sv.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "Mer fr\u00e5n {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/tr.json b/dashboard-ui/strings/tr.json index fdc278bda..fba8ea325 100644 --- a/dashboard-ui/strings/tr.json +++ b/dashboard-ui/strings/tr.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/uk.json b/dashboard-ui/strings/uk.json index ca84673c5..28b93f81f 100644 --- a/dashboard-ui/strings/uk.json +++ b/dashboard-ui/strings/uk.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/vi.json b/dashboard-ui/strings/vi.json index 0b41cdb50..cf762a0f3 100644 --- a/dashboard-ui/strings/vi.json +++ b/dashboard-ui/strings/vi.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/zh-CN.json b/dashboard-ui/strings/zh-CN.json index 2beb45f37..9f8c2e260 100644 --- a/dashboard-ui/strings/zh-CN.json +++ b/dashboard-ui/strings/zh-CN.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/zh-HK.json b/dashboard-ui/strings/zh-HK.json index f45862364..00b47741c 100644 --- a/dashboard-ui/strings/zh-HK.json +++ b/dashboard-ui/strings/zh-HK.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/dashboard-ui/strings/zh-TW.json b/dashboard-ui/strings/zh-TW.json index f215aab92..70723d99a 100644 --- a/dashboard-ui/strings/zh-TW.json +++ b/dashboard-ui/strings/zh-TW.json @@ -2310,5 +2310,9 @@ "FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.", "XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.", "MoreFromValue": "More from {0}", - "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server." + "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.", + "EnablePhotos": "Enable photos", + "EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", + "MakeAvailableOffline": "Make available offline", + "ConfirmRemoveDownload": "Remove download?" } \ No newline at end of file diff --git a/packages.config b/packages.config index a2d13fdf5..3637c6c84 100644 --- a/packages.config +++ b/packages.config @@ -2,5 +2,5 @@ - + \ No newline at end of file