From 27ff0e7241171b8464e131837cd661f362b821e2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 9 Jan 2020 22:24:45 +0100 Subject: [PATCH 001/260] Enable scrollManager in more cases --- src/components/scrollManager.js | 17 ++--------------- src/components/scroller.js | 2 +- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 9f7035d528..dbf9c5a143 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -372,7 +372,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function useSmoothScroll() { - if (browser.tizen) { + if (browser.tizen || browser.web0s || browser.firefox || browser.chrome) { return true; } @@ -392,20 +392,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage * Returns true if scroll manager is enabled. */ var isEnabled = function() { - - if (!layoutManager.tv) { - return false; - } - - if (browser.tizen) { - return true; - } - - if (browser.web0s) { - return true; - } - - return false; + return layoutManager.tv; }; /** diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..b4c9b9d9b7 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -93,7 +93,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc // in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good if (options.allowNativeScroll === false) { options.enableNativeScroll = false; - } else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) { + } else if (isSmoothScrollSupported && (browser.firefox || options.allowNativeSmoothScroll)) { // native smooth scroll options.enableNativeScroll = true; } else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) { From 442487799aabeaa38df161754ebaabbec42e8534 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 21:15:59 +0300 Subject: [PATCH 002/260] change shape to overflow --- src/assets/css/librarybrowser.css | 16 ++++++++++------ src/controllers/itemdetailpage.js | 5 +++-- src/itemdetails.html | 4 ++-- src/scripts/itembynamedetailpage.js | 16 ++++++++-------- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index af106959e0..9b3f504beb 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -413,11 +413,14 @@ align-items: center; align-content: center; position: sticky; - background-color: #101010; top: 0; z-index: 2; } +.detailSticky { + background-color: #101010; +} + .infoWrapper { flex: 1 0 0; } @@ -431,6 +434,9 @@ .detailPageSecondaryContainer { margin: 1.25em 0; +} + +.detailPageContent { display: flex; flex-direction: column; padding-left: 2%; @@ -443,7 +449,6 @@ } .detailImageContainer { - margin: 1.25em 0; position: sticky; top: 15%; float: left; @@ -452,7 +457,6 @@ .detailPagePrimaryContent { position: relative; - flex-grow: 1 } .detailLogo { @@ -494,7 +498,7 @@ } @media all and (max-width:62.5em) { - .detailPageContent { + .detailPageWrapperContainer { position: relative } @@ -705,13 +709,13 @@ margin-bottom: 3.4em !important } -.detailPageContent { +.detailPageWrapperContainer { border-spacing: 0; border-collapse: collapse; } @media all and (max-width:62.5em) { - .detailPageContent-nodetailimg { + .detailPageWrapperContainer-nodetailimg { padding-top: 0; } } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 1a0b66c75a..8f8b3baf39 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -524,6 +524,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana function reloadFromItem(instance, page, params, item, user) { var context = params.context; + page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); renderName(item, page.querySelector(".nameContainer"), false, context); var apiClient = connectionManager.getApiClient(item.ServerId); renderSeriesTimerEditor(page, item, apiClient, user); @@ -743,9 +744,9 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana if ("Person" !== item.Type) { elem.classList.add("detailimg-hidemobile"); - page.querySelector(".detailPageContent").classList.add("detailPageContent-nodetailimg"); + page.querySelector(".detailPageWrapperContainer").classList.add("detailPageWrapperContainer-nodetailimg"); } else { - page.querySelector(".detailPageContent").classList.remove("detailPageContent-nodetailimg"); + page.querySelector(".detailPageWrapperContainer").classList.remove("detailPageWrapperContainer-nodetailimg"); } var imageTags = item.ImageTags || {}; diff --git a/src/itemdetails.html b/src/itemdetails.html index fbe0cc50de..4ac632b8b1 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -6,7 +6,7 @@ -
+
@@ -107,8 +107,8 @@
-
+
diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 5d3c9dedb9..ea760900ec 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -99,7 +99,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 10, SortBy: "StartDate" }, { - shape: "backdrop", + shape: "overflowBackdrop", showTitle: true, centerText: true, overlayMoreButton: true, @@ -121,7 +121,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 10, SortBy: "SortName" }, { - shape: "portrait", + shape: "overflowPortrait", showTitle: true, centerText: true, overlayMoreButton: true, @@ -140,7 +140,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 10, SortBy: "SortName" }, { - shape: "portrait", + shape: "overflowPortrait", showTitle: true, centerText: true, overlayPlayButton: true @@ -157,7 +157,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 10, SortBy: "SortName" }, { - shape: "portrait", + shape: "overflowPortrait", showTitle: true, centerText: true, overlayPlayButton: true @@ -174,7 +174,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 10, SortBy: "SortName" }, { - shape: "portrait", + shape: "overflowPortrait", showTitle: true, centerText: true, overlayMoreButton: true @@ -191,7 +191,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortOrder: "Descending", SortBy: "ProductionYear,Sortname" }, { - shape: "square", + shape: "overflowSquare", playFromHere: true, showTitle: true, showYear: true, @@ -211,7 +211,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 8, SortBy: "SortName" }, { - shape: "square", + shape: "overflowSquare", playFromHere: true, showTitle: true, showParentTitle: true, @@ -231,7 +231,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB Limit: 6, SortBy: "SortName" }, { - shape: "backdrop", + shape: "overflowBackdrop", showTitle: true, showParentTitle: true, centerText: true, From 28dfc698b5ed606f75d07bef3243bcd52197acb4 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 22:18:43 +0300 Subject: [PATCH 003/260] hide detail img on mobile --- src/controllers/itemdetailpage.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 8f8b3baf39..7bd9369025 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -742,12 +742,7 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana editable = false; } - if ("Person" !== item.Type) { - elem.classList.add("detailimg-hidemobile"); - page.querySelector(".detailPageWrapperContainer").classList.add("detailPageWrapperContainer-nodetailimg"); - } else { - page.querySelector(".detailPageWrapperContainer").classList.remove("detailPageWrapperContainer-nodetailimg"); - } + elem.classList.add("detailimg-hidemobile"); var imageTags = item.ImageTags || {}; From 040f4af781dee13bc9e633c43b0c79853046e691 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 22:20:06 +0300 Subject: [PATCH 004/260] add person img to itembackdrop --- src/controllers/itemdetailpage.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 7bd9369025..c5fb0f1bec 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -467,7 +467,8 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || item.MediaType && item.MediaType !== "Video" || item.Type === "MusicAlbum" || - item.Type === "MusicArtist"; + item.Type === "MusicArtist" || + item.Type === "Person"; if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { imgUrl = apiClient.getScaledImageUrl(item.Id, { From 69251cff483cada8fe8dcb893bda7d1a0e3498c6 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 22:22:50 +0300 Subject: [PATCH 005/260] overide itembackrop class backgroud-size cover to contain hide on desktop person backdrop --- src/assets/css/librarybrowser.css | 8 ++++++++ src/controllers/itemdetailpage.js | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 9b3f504beb..8e9b10646d 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -387,6 +387,10 @@ position: relative } +.personBackdrop { + background-size: contain; +} + .itemBackdropProgressBar { position: absolute !important; bottom: 0; @@ -671,6 +675,10 @@ display: none !important } + .personBackdropimg-hideondesktop { + display: none !important; + } + .mainDetailButtons { font-size: 108%; margin: 1.25em 0 diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index c5fb0f1bec..0b57b91c3e 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -520,6 +520,13 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana itemBackdropElement.style.backgroundImage = ""; } + if ("Person" === item.Type) { + itemBackdropElement.classList.add("personBackdropimg-hideondesktop"); + itemBackdropElement.classList.add("personBackdrop"); + } else { + itemBackdropElement.classList.remove("personBackdrop"); + } + return hasbackdrop; } From 00469f9577277045997170b46362f135cc6af54e Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 22:27:02 +0300 Subject: [PATCH 006/260] show overview and externallink for movie and episode on mobile too --- src/assets/css/librarybrowser.css | 6 ------ src/controllers/itemdetailpage.js | 5 ----- 2 files changed, 11 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8e9b10646d..f13feb1ee3 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -783,12 +783,6 @@ } } -@media all and (max-width:62.5em) { - .detailsHiddenOnMobile { - display: none - } -} - .btnSyncComplete { background: #673AB7 !important } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 0b57b91c3e..9ba512e940 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -1060,11 +1060,6 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana var overview = page.querySelector(".overview"); var externalLinksElem = page.querySelector(".itemExternalLinks"); - if ("Season" !== item.Type && "MusicAlbum" !== item.Type && "MusicArtist" !== item.Type) { - overview.classList.add("detailsHiddenOnMobile"); - externalLinksElem.classList.add("detailsHiddenOnMobile"); - } - renderOverview([overview], item); var i; var itemMiscInfo; From 927fd4d7e6144894424281d7adb0caef1fb12894 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 13 Jan 2020 23:36:23 +0300 Subject: [PATCH 007/260] set header setTransparentMenu for mobile only and fix some style --- src/assets/css/librarybrowser.css | 16 +++++++++------- src/controllers/itemdetailpage.js | 5 ++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index f13feb1ee3..b94ac1e4ac 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -671,12 +671,20 @@ } @media all and (min-width:62.5em) { + .headerTop { + padding: 1.489em 0 + } + + .itemDetailPage { + padding-top: 5em !important + } + .detailFloatingButton { display: none !important } .personBackdropimg-hideondesktop { - display: none !important; + display: none !important } .mainDetailButtons { @@ -722,12 +730,6 @@ border-collapse: collapse; } -@media all and (max-width:62.5em) { - .detailPageWrapperContainer-nodetailimg { - padding-top: 0; - } -} - .mediaInfoStream { margin: 0 3em 0 0; display: inline-block; diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 9ba512e940..652b642f39 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -2098,7 +2098,10 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana }); view.addEventListener("viewshow", function (e) { var page = this; - libraryMenu.setTransparentMenu(true); + + if (layoutManager.mobile) { + libraryMenu.setTransparentMenu(true); + } if (e.detail.isRestored) { if (currentItem) { From 5941c914fc81ffb659a593f8b470a4d094dcc718 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 14 Jan 2020 20:07:13 +0300 Subject: [PATCH 008/260] Fix ProgressBar position --- src/assets/css/librarybrowser.css | 5 +++-- src/itemdetails.html | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b94ac1e4ac..2d96790d63 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -650,8 +650,9 @@ } .detailImageProgressContainer { - margin-left: 6px; - width: 21.886458333333332vw; + position: absolute; + bottom: 0; + width: 22.786458333333332vw; } .detailButton-mobile-text { diff --git a/src/itemdetails.html b/src/itemdetails.html index 4ac632b8b1..96df0a3481 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -108,7 +108,7 @@
-
+
From 89b28d76f58af92c3e42c717b6f34ae593544b30 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 15 Jan 2020 18:54:48 +0300 Subject: [PATCH 009/260] applly suggestion --- src/assets/css/librarybrowser.css | 2 +- src/controllers/itemdetailpage.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 2d96790d63..8d9ca03d0a 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -684,7 +684,7 @@ display: none !important } - .personBackdropimg-hideondesktop { + .personBackdrop { display: none !important } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 652b642f39..82ce33c7c8 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -521,7 +521,6 @@ define(["loading", "appRouter", "layoutManager", "userSettings", "connectionMana } if ("Person" === item.Type) { - itemBackdropElement.classList.add("personBackdropimg-hideondesktop"); itemBackdropElement.classList.add("personBackdrop"); } else { itemBackdropElement.classList.remove("personBackdrop"); From ea68085229debe5187c6e0ebf3ef4441e8c8183c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 17:56:52 +0300 Subject: [PATCH 010/260] fix show favorite on mobile --- src/components/listview/listview.css | 4 ++-- src/components/listview/listview.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 4d3b27ce75..1ed543c11b 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -149,8 +149,8 @@ @media all and (max-width: 64em) { .listItemImage-large { - width: 33.75vw; - height: 22.5vw; + width: 22vw; + height: 16vw; margin-right: 0 !important; } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 94535deb6f..dcc3636a64 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -500,11 +500,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += ''; } + html += ''; + if (itemHelper.canRate(item)) { html += ''; } - - html += ''; } } From c87b0b8263952fafcbb5e8b7c793c04652163dab Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 18:37:12 +0300 Subject: [PATCH 011/260] fix show favorite and wacted on mobile --- src/assets/css/librarybrowser.css | 4 +++- src/components/listview/listview.js | 11 +++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8d9ca03d0a..ed3f0f13fd 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -782,7 +782,9 @@ @media all and (max-width:75em) { .listViewUserDataButtons { - display: none !important + display: flex; + flex-wrap: wrap; + font-size: 85%; } } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index dcc3636a64..06f569c913 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -470,6 +470,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!options.recordButton && (item.Type === 'Timer' || item.Type === 'Program')) { html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside'); } + if (item.Type === 'Episode') { + html += '
'; + } else { + html += '
'; + } + if (!clickEntireItem) { @@ -491,8 +497,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (options.enableUserDataButtons !== false) { - html += ''; - var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; @@ -500,13 +504,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += ''; } - html += ''; - if (itemHelper.canRate(item)) { html += ''; } } } + html += '
'; if (enableContentWrapper) { html += '
'; From 5a41d706c52a81b12277253744b10387c3e696f9 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 18:52:47 +0300 Subject: [PATCH 012/260] fix style on desktop --- src/assets/css/librarybrowser.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index ed3f0f13fd..af483bc1dc 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -752,6 +752,11 @@ font-weight: 600 } +.listViewUserDataButtons { + display: flex; + align-items: center; +} + .recordingProgressBar::-moz-progress-bar { background-color: #c33 } From b051caa8a975d3bc6fb27012fef32085023a412c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 19:26:19 +0300 Subject: [PATCH 013/260] revert back does't gowell on smaller screen and reduce font size --- src/assets/css/librarybrowser.css | 9 ++------- src/components/listview/listview.js | 6 +----- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index af483bc1dc..e2f9e34804 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -752,11 +752,6 @@ font-weight: 600 } -.listViewUserDataButtons { - display: flex; - align-items: center; -} - .recordingProgressBar::-moz-progress-bar { background-color: #c33 } @@ -788,8 +783,8 @@ @media all and (max-width:75em) { .listViewUserDataButtons { display: flex; - flex-wrap: wrap; - font-size: 85%; + align-items: center; + font-size: 65%; } } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 06f569c913..ebcc3fdd92 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -470,12 +470,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!options.recordButton && (item.Type === 'Timer' || item.Type === 'Program')) { html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside'); } - if (item.Type === 'Episode') { - html += '
'; - } else { - html += '
'; - } + html += '
'; if (!clickEntireItem) { From a821b78a8b539b73f09025a62b991351091a0085 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 20:10:38 +0300 Subject: [PATCH 014/260] reduce font size for indicator and btn --- src/components/listview/listview.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 1ed543c11b..3fdce97057 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -154,8 +154,9 @@ margin-right: 0 !important; } + .listItemIndicators, .listItemImageButton { - font-size: 1em !important; + font-size: 0.6em !important; } .listItemBody { From b9ee5c7c242547cb3547f617adfcb410b1dbdee4 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Fri, 17 Jan 2020 21:00:12 +0300 Subject: [PATCH 015/260] centering primery title on mobile layout --- src/assets/css/librarybrowser.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index e2f9e34804..b0037f9ae7 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -408,6 +408,19 @@ position: relative; } +.layout-mobile .parentName, +.layout-mobile .itemName, +.layout-mobile .itemMiscInfo, +.layout-mobile .mainDetailButtons { + display: flex; + align-items: center; + justify-content: center; +} + +.layout-mobile .infoText { + white-space: normal; +} + .layout-tv .detailPagePrimaryContainer { position: relative; } From 60e64f8a582f16b7743df6703934d30f00932bbc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 21 Jan 2020 12:51:33 +0300 Subject: [PATCH 016/260] Add exit on "Go back" --- src/components/appRouter.js | 2 +- src/components/apphost.js | 58 +++++++++++++++++++++++++++++++------ src/scripts/inputManager.js | 8 +++-- src/strings/en-us.json | 1 + src/strings/ru.json | 1 + 5 files changed, 58 insertions(+), 12 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 8643e3f47f..9df0ee5f1b 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -551,7 +551,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM return false; } - if (curr.type === 'home') { + if (!document.querySelector('.dialogContainer') && curr.type === 'home') { return false; } return page.canGoBack(); diff --git a/src/components/apphost.js b/src/components/apphost.js index b1b1c30dc9..d85706b9fd 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -311,6 +311,52 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet }); } + /** + * Do exit according to platform + */ + function doExit() { + try { + if (window.NativeShell) { + window.NativeShell.AppHost.exit(); + } else if (browser.tizen) { + tizen.application.getCurrentApplication().exit(); + } else if (browser.web0s) { + webOS.platformBack(); + } else { + window.close(); + } + } catch (err) { + console.log("error closing application: " + err); + } + } + + var exitPromise; + + /** + * Ask user for exit + */ + function askForExit() { + if (!!exitPromise) { + return; + } + + require(["actionsheet"], function (actionsheet) { + exitPromise = actionsheet.show({ + title: Globalize.translate("MessageConfirmAppExit"), + items: [ + {id: "yes", name: Globalize.translate("Yes")}, + {id: "no", name: Globalize.translate("No")} + ] + }).then(function (value) { + if (value === "yes") { + doExit(); + } + }).finally(function () { + exitPromise = null; + }); + }); + } + var deviceId; var deviceName; var appName = "Jellyfin Web"; @@ -326,16 +372,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet alert("setWindowState is not supported and should not be called"); }, exit: function () { - if (window.NativeShell) { - window.NativeShell.AppHost.exit(); - } else if (browser.tizen) { - try { - tizen.application.getCurrentApplication().exit(); - } catch (err) { - console.log("error closing application: " + err); - } + if (!!window.appMode && browser.tizen) { + askForExit(); } else { - window.close(); + doExit(); } }, supports: function (command) { diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 634b5e1b30..c6a64a69f5 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -1,4 +1,4 @@ -define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playbackManager, focusManager, appRouter, dom) { +define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], function (playbackManager, focusManager, appRouter, dom, appHost) { 'use strict'; var lastInputTime = new Date().getTime(); @@ -98,7 +98,11 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom'], function (playba appRouter.showSettings(); break; case 'back': - appRouter.back(); + if (appRouter.canGoBack()) { + appRouter.back(); + } else if (appHost.supports('exit')) { + appHost.exit(); + } break; case 'forward': break; diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 6dea5a7892..4eb2289c99 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -945,6 +945,7 @@ "MessageAlreadyInstalled": "This version is already installed.", "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", + "MessageConfirmAppExit": "Do you want to exit?", "MessageConfirmDeleteGuideProvider": "Are you sure you wish to delete this guide provider?", "MessageConfirmDeleteTunerDevice": "Are you sure you wish to delete this device?", "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", diff --git a/src/strings/ru.json b/src/strings/ru.json index 4e612aa5bd..140c5bdb80 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -890,6 +890,7 @@ "MessageAlreadyInstalled": "Данная версия уже установлена.", "MessageAreYouSureDeleteSubtitles": "Вы действительно хотите удалить данный файл субитров?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Вы действительно хотите изъять данную медиапапку?", + "MessageConfirmAppExit": "Вы хотите выйти?", "MessageConfirmDeleteGuideProvider": "Вы действительно хотите удалить данного поставщика телегида?", "MessageConfirmDeleteTunerDevice": "Вы действительно хотите удалить данное устройство?", "MessageConfirmProfileDeletion": "Вы действительно хотите удалить данный профиль?", From d345e32333ff27c432f58298b23cde49a1908ed3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 21 Jan 2020 14:04:26 +0300 Subject: [PATCH 017/260] Fix eslint errors --- src/components/apphost.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index d85706b9fd..d6099b6ddf 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -342,18 +342,18 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet require(["actionsheet"], function (actionsheet) { exitPromise = actionsheet.show({ - title: Globalize.translate("MessageConfirmAppExit"), - items: [ - {id: "yes", name: Globalize.translate("Yes")}, - {id: "no", name: Globalize.translate("No")} - ] - }).then(function (value) { - if (value === "yes") { - doExit(); - } - }).finally(function () { - exitPromise = null; - }); + title: Globalize.translate("MessageConfirmAppExit"), + items: [ + {id: "yes", name: Globalize.translate("Yes")}, + {id: "no", name: Globalize.translate("No")} + ] + }).then(function (value) { + if (value === "yes") { + doExit(); + } + }).finally(function () { + exitPromise = null; + }); }); } From 633999e5282317dbee60aeab80b08593ace5518a Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 21 Jan 2020 20:11:24 +0300 Subject: [PATCH 018/260] fix header tab scroll for mobile --- src/components/emby-tabs/emby-tabs.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/emby-tabs/emby-tabs.css b/src/components/emby-tabs/emby-tabs.css index b8831b881a..8d1ac464fb 100644 --- a/src/components/emby-tabs/emby-tabs.css +++ b/src/components/emby-tabs/emby-tabs.css @@ -31,6 +31,10 @@ overflow: hidden; } +.layout-mobile .emby-tabs-slider { + overflow: auto; +} + .tabContent:not(.is-active) { display: none; } From a25e5d7f9bdaf2df28fe4742084f4789b47f020b Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 21 Jan 2020 21:58:44 +0300 Subject: [PATCH 019/260] fix alphaPicker class --- src/controllers/movies/movies.js | 8 +++++--- src/controllers/movies/movietrailers.js | 8 +++++--- src/controllers/music/musicalbums.js | 8 +++++--- src/controllers/music/musicartists.js | 10 +++++++--- src/controllers/shows/tvshows.js | 10 +++++++--- src/movies.html | 8 ++++---- src/music.html | 12 ++++++------ src/tv.html | 4 ++-- 8 files changed, 41 insertions(+), 27 deletions(-) diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 3a365acc90..fcf827016f 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -169,9 +169,11 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { - alphaPickerElement.classList.add("alphabetPicker-right"); - itemsContainer.classList.remove("padded-left-withalphapicker"); + if (layoutManager.tv) { + alphaPickerElement.classList.add("alphaPicker-fixed-left"); + itemsContainer.classList.add("padded-left-withalphapicker"); + } else { + alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } } diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 3e62298613..3f6a9d7d00 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -193,6 +193,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; var query = getQuery(tabContent); @@ -205,10 +206,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { + if (layoutManager.tv) { + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + itemsContainer.classList.add("padded-left-withalphapicker"); + } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 480f0af77f..b5bb5eacab 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -199,6 +199,7 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -211,10 +212,11 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { + if (layoutManager.tv) { + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + itemsContainer.classList.add("padded-left-withalphapicker"); + } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index aaeea8c885..01fdf7d563 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -181,6 +181,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -193,10 +194,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { + if (layoutManager.tv) { + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + alphaPickerElement.classList.add("alphaPicker-fixed-left"); + itemsContainer.classList.add("padded-left-withalphapicker"); + } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 1dec530540..c37b3d8fbd 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -210,6 +210,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " function initPage(tabContent) { var alphaPickerElement = tabContent.querySelector(".alphaPicker"); + var itemsContainer = tabContent.querySelector(".itemsContainer"); alphaPickerElement.addEventListener("alphavaluechanged", function (e) { var newValue = e.detail.value; @@ -222,10 +223,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.desktop || layoutManager.mobile) { + if (layoutManager.tv) { + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + alphaPickerElement.classList.add("alphaPicker-fixed-left"); + itemsContainer.classList.add("padded-left-withalphapicker"); + } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - var itemsContainer = tabContent.querySelector(".itemsContainer"); - itemsContainer.classList.remove("padded-left-withalphapicker"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/movies.html b/src/movies.html index c211d9686a..ae5aaf5e73 100644 --- a/src/movies.html +++ b/src/movies.html @@ -8,10 +8,10 @@
-
+
-
+
@@ -53,7 +53,7 @@
-
+
@@ -90,4 +90,4 @@
-
\ No newline at end of file +
diff --git a/src/music.html b/src/music.html index e86f179208..6e860de01f 100644 --- a/src/music.html +++ b/src/music.html @@ -44,10 +44,10 @@
-
+
-
+
@@ -60,10 +60,10 @@
-
+
-
+
@@ -76,10 +76,10 @@
-
+
-
+
diff --git a/src/tv.html b/src/tv.html index 1327d53ffe..f097eba15d 100644 --- a/src/tv.html +++ b/src/tv.html @@ -8,8 +8,8 @@
-
-
+
+
From 4939f2fd60468e4716634a72fde3d43734b5d4d4 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 21 Jan 2020 22:21:03 +0300 Subject: [PATCH 020/260] add alphaPicker-fixed left and right class --- src/controllers/movies/movietrailers.js | 2 ++ src/controllers/music/musicalbums.js | 3 +++ src/controllers/music/musicartists.js | 1 + 3 files changed, 6 insertions(+) diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 3f6a9d7d00..33cfe628c1 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -208,9 +208,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " if (layoutManager.tv) { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + alphaPickerElement.classList.add("alphaPicker-fixed-left"); itemsContainer.classList.add("padded-left-withalphapicker"); } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index b5bb5eacab..d48f7466b7 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -212,11 +212,14 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser element: alphaPickerElement, valueChangeEvent: "click" }); + if (layoutManager.tv) { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); + alphaPickerElement.classList.add("alphaPicker-fixed-left"); itemsContainer.classList.add("padded-left-withalphapicker"); } else { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 01fdf7d563..5e1a23dfe9 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -194,6 +194,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); + if (layoutManager.tv) { tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); alphaPickerElement.classList.add("alphaPicker-fixed-left"); From 474e53cc47756afd8013d91ad31ef91752ba7dd0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 00:22:26 +0300 Subject: [PATCH 021/260] Fix some sytle for PR #663 --- src/assets/css/librarybrowser.css | 29 ++++++++++------------------- src/itemdetails.html | 4 ++-- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b0037f9ae7..74b25c3c76 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -242,20 +242,6 @@ } @media all and (min-width:84em) { - .headerTop { - padding: 1.489em 0 - } - - .headerTabs { - align-self: center; - width: auto; - align-items: center; - justify-content: center; - margin-top: -3.34em; - position: relative; - top: -1.05em - } - .libraryPage:not(.noSecondaryNavPage) { padding-top: 4.6em !important } @@ -430,7 +416,7 @@ align-items: center; align-content: center; position: sticky; - top: 0; + top: 8%; z-index: 2; } @@ -467,7 +453,7 @@ .detailImageContainer { position: sticky; - top: 15%; + top: 25%; float: left; width: 22.786458333333332vw; } @@ -686,11 +672,16 @@ @media all and (min-width:62.5em) { .headerTop { - padding: 1.489em 0 + padding: 0.8em 0 } - .itemDetailPage { - padding-top: 5em !important + .headerTabs { + align-self: center; + width: auto; + align-items: center; + justify-content: center; + margin-top: -3.34em; + position: relative; } .detailFloatingButton { diff --git a/src/itemdetails.html b/src/itemdetails.html index 96df0a3481..849642f451 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -6,7 +6,7 @@
-
+
@@ -108,7 +108,7 @@
-
+
From f3426a97a1bfc8c0e1c0422573073cf890856ea0 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 19:42:43 +0300 Subject: [PATCH 022/260] remove alphabetPicker-left alphaPicker-fixed-left padded-left-withalphapicker class --- src/assets/css/librarybrowser.css | 4 ---- src/components/alphapicker/style.css | 8 -------- src/controllers/list.js | 20 ++++---------------- src/controllers/movies/movies.js | 9 ++------- src/controllers/movies/movietrailers.js | 12 +++--------- src/controllers/music/musicalbums.js | 12 +++--------- src/controllers/music/musicartists.js | 12 +++--------- src/controllers/shows/tvshows.js | 13 ++++--------- 8 files changed, 19 insertions(+), 71 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index b9f406bc0d..2b53663f2a 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -895,10 +895,6 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } @media all and (min-height:31.25em) { - .padded-left-withalphapicker { - padding-left: 7.5%; - } - .padded-right-withalphapicker { padding-right: 7.5%; } diff --git a/src/components/alphapicker/style.css b/src/components/alphapicker/style.css index 29543421eb..90208d039f 100644 --- a/src/components/alphapicker/style.css +++ b/src/components/alphapicker/style.css @@ -112,20 +112,12 @@ bottom: 1%; } -.alphaPicker-fixed-left { - left: .4em; -} - .alphaPicker-fixed-right { right: .4em; } @media all and (min-width: 62.5em) { - .alphaPicker-fixed-left { - left: 1em; - } - .alphaPicker-fixed-right { right: 1em; } diff --git a/src/controllers/list.js b/src/controllers/list.js index a554bec611..f5d601345d 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -203,15 +203,9 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" if ("SortName" === values.sortBy && "Ascending" === values.sortOrder && numItems > 40) { alphaPicker.classList.remove("hide"); - - if (layoutManager.tv) { - instance.itemsContainer.parentNode.classList.add("padded-left-withalphapicker"); - } else { - instance.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); - } + instance.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); } else { alphaPicker.classList.add("hide"); - instance.itemsContainer.parentNode.classList.remove("padded-left-withalphapicker"); instance.itemsContainer.parentNode.classList.remove("padded-right-withalphapicker"); } } @@ -540,15 +534,9 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" self.scroller = view.querySelector(".scrollFrameY"); var alphaPickerElement = self.alphaPickerElement; - if (layoutManager.tv) { - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - alphaPickerElement.classList.add("focuscontainer-left"); - self.itemsContainer.parentNode.classList.add("padded-left-withalphapicker"); - } else { - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - alphaPickerElement.classList.add("focuscontainer-right"); - self.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); - } + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + alphaPickerElement.classList.add("focuscontainer-right"); + self.itemsContainer.parentNode.classList.add("padded-right-withalphapicker"); self.alphaPicker = new alphaPicker({ element: alphaPickerElement, diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index fcf827016f..7ba467c1a4 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -169,13 +169,8 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", valueChangeEvent: "click" }); - if (layoutManager.tv) { - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - itemsContainer.classList.add("padded-left-withalphapicker"); - } else { - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); } var btnFilter = tabContent.querySelector(".btnFilter"); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 33cfe628c1..c764190ee0 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -206,15 +206,9 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " valueChangeEvent: "click" }); - if (layoutManager.tv) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - itemsContainer.classList.add("padded-left-withalphapicker"); - } else { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index d48f7466b7..58d30e71da 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -213,15 +213,9 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser valueChangeEvent: "click" }); - if (layoutManager.tv) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - itemsContainer.classList.add("padded-left-withalphapicker"); - } else { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 5e1a23dfe9..ceed448a06 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -195,15 +195,9 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " valueChangeEvent: "click" }); - if (layoutManager.tv) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - itemsContainer.classList.add("padded-left-withalphapicker"); - } else { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index c37b3d8fbd..24f6cb1a03 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -223,15 +223,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", " element: alphaPickerElement, valueChangeEvent: "click" }); - if (layoutManager.tv) { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-left"); - alphaPickerElement.classList.add("alphaPicker-fixed-left"); - itemsContainer.classList.add("padded-left-withalphapicker"); - } else { - tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); - alphaPickerElement.classList.add("alphaPicker-fixed-right"); - itemsContainer.classList.add("padded-right-withalphapicker"); - } + + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); + alphaPickerElement.classList.add("alphaPicker-fixed-right"); + itemsContainer.classList.add("padded-right-withalphapicker"); tabContent.querySelector(".btnFilter").addEventListener("click", function () { self.showFilterMenu(); From a592ac2b1a2ff563a1a0dbb49a4f585f0567b377 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 22 Jan 2020 23:14:28 +0300 Subject: [PATCH 023/260] rename detailButton-mobile to detailButton --- src/assets/css/librarybrowser.css | 26 ++++---- src/itemdetails.html | 102 +++++++++++++++--------------- 2 files changed, 62 insertions(+), 66 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 74b25c3c76..a6af6dccd2 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -4,7 +4,7 @@ vertical-align: middle } -.detailButton-mobile, +.detailButton, .itemLinks, .listPaging, .sectionTabs, @@ -95,7 +95,7 @@ display: flex; } -.detailButton-mobile, +.detailButton, .skinHeader { flex-direction: column; } @@ -563,7 +563,7 @@ } } -.detailButton-mobile, +.detailButton, .mainDetailButtons { display: flex; } @@ -601,7 +601,7 @@ margin-top: 1.5em !important } -.detailButton-mobile { +.detailButton { display: flex; flex-direction: column; justify-content: center; @@ -610,39 +610,35 @@ padding: .5em .7em !important } -.detailButton { - margin: 0 .5em 0 0 !important -} - @media all and (min-width:29em) { - .detailButton-mobile { + .detailButton { padding-left: .75em !important; padding-right: .75em !important } } @media all and (min-width:32em) { - .detailButton-mobile { + .detailButton { padding-left: .8em !important; padding-right: .8em !important } } @media all and (min-width:35em) { - .detailButton-mobile { + .detailButton { padding-left: .85em !important; padding-right: .85em !important } } -.detailButton-mobile-content { +.detailButton-content { display: flex; flex-direction: column; justify-content: center; align-items: center } -.detailButton-mobile-icon { +.detailButton-icon { font-size: 1.6em !important; width: 1em; height: 1em @@ -654,7 +650,7 @@ width: 22.786458333333332vw; } -.detailButton-mobile-text { +.detailButton-text { margin-top: .7em; font-size: 80%; font-weight: 400 @@ -665,7 +661,7 @@ margin-left: -.5em } - .detailButton { + .detailButtonHideonMobile { display: none !important } } diff --git a/src/itemdetails.html b/src/itemdetails.html index 849642f451..038b4b11ff 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -15,94 +15,94 @@
- - - - - - - - - - - -
From 509497e2340bc8e357b5bf26e6159fa7fa9a3fa3 Mon Sep 17 00:00:00 2001 From: Deven Lahoti Date: Thu, 23 Jan 2020 17:03:08 -0500 Subject: [PATCH 024/260] sort items to play in the correct order Fixes #692. --- src/components/chromecast/chromecastplayer.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 7302b74124..112d2980ab 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -686,6 +686,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }); } + if (options.items.length > 1 && options && options.ids) { + // Use the original request id array for sorting the result in the proper order + options.items.sort(function (a, b) { + return options.ids.indexOf(a.Id) - options.ids.indexOf(b.Id); + }); + } + return this._castPlayer.loadMedia(options, command); }; From 1ebf03d21b39668582116cd0452140626563e51e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 01:18:07 +0300 Subject: [PATCH 025/260] Exit app on "go back" at login page --- src/components/appRouter.js | 7 ++++++- src/scripts/routes.js | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 9df0ee5f1b..9305dbca3f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -545,13 +545,18 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM page.back(); } + /** + * Pages of "no return" (Go back). + */ + var startPages = ['home', 'login']; + function canGoBack() { var curr = current(); if (!curr) { return false; } - if (!document.querySelector('.dialogContainer') && curr.type === 'home') { + if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { return false; } return page.canGoBack(); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index a3427c6551..69c996877f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -226,7 +226,8 @@ define([ autoFocus: false, anonymous: true, startup: true, - controller: "auth/login" + controller: "auth/login", + type: "login" }); defineRoute({ path: "/metadataimages.html", From d93c16ea729e74d656442cd12465cb967ce6f349 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 25 Jan 2020 15:32:24 +0300 Subject: [PATCH 026/260] Exit app on "go back" at server selection page --- src/components/appRouter.js | 2 +- src/scripts/routes.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 9305dbca3f..ad3a6ecd87 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -548,7 +548,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM /** * Pages of "no return" (Go back). */ - var startPages = ['home', 'login']; + var startPages = ['home', 'login', 'selectserver']; function canGoBack() { var curr = current(); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 69c996877f..b726aaf872 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -313,7 +313,8 @@ define([ autoFocus: false, anonymous: true, startup: true, - controller: "auth/selectserver" + controller: "auth/selectserver", + type: "selectserver" }); defineRoute({ path: "/serveractivity.html", From a9ca46b6d841e546a7757e13ae939a6095f17fb1 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 26 Jan 2020 00:20:01 +0300 Subject: [PATCH 027/260] apply suggustiion --- src/controllers/movies/movies.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 7ba467c1a4..ce077bd179 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -169,6 +169,7 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", valueChangeEvent: "click" }); + tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right"); alphaPickerElement.classList.add("alphaPicker-fixed-right"); itemsContainer.classList.add("padded-right-withalphapicker"); } From b3558a0dc6acf83643de2b3dc5f12eaee0d33a92 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 26 Jan 2020 14:36:22 +0100 Subject: [PATCH 028/260] Enable image fadein --- src/components/images/imageLoader.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index a2906cca85..17af296af4 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -7,9 +7,6 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', var self = {}; - // seeing slow performance with firefox - var enableFade = false; - function fillImage(elem, source, enableEffects) { if (!elem) { @@ -30,7 +27,7 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', function fillImageElement(elem, source, enableEffects) { imageFetcher.loadImage(elem, source).then(function () { - if (enableFade && enableEffects !== false) { + if (enableEffects !== false) { fadeIn(elem); } From c49f632f62cda4144b1597aa0ad09f7f6f54a133 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 26 Jan 2020 15:32:13 +0100 Subject: [PATCH 029/260] Add Display setting for fast image fade-in --- src/components/displaysettings/displaysettings.js | 2 ++ .../displaysettings/displaysettings.template.html | 12 ++++++++++++ src/components/images/imageLoader.js | 11 ++++++----- src/components/usersettings/usersettingsbuilder.js | 9 +++++++++ src/strings/en-gb.json | 2 ++ src/strings/en-us.json | 2 ++ 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/components/displaysettings/displaysettings.js b/src/components/displaysettings/displaysettings.js index fea7d9bd3e..da407c11f1 100644 --- a/src/components/displaysettings/displaysettings.js +++ b/src/components/displaysettings/displaysettings.js @@ -180,6 +180,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', ' context.querySelector('#chkThemeSong').checked = userSettings.enableThemeSongs(); context.querySelector('#chkThemeVideo').checked = userSettings.enableThemeVideos(); + context.querySelector('#chkFadein').checked = userSettings.enableFastFadein(); context.querySelector('#chkBackdrops').checked = userSettings.enableBackdrops(); context.querySelector('#selectLanguage').value = userSettings.language() || ''; @@ -216,6 +217,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', ' userSettingsInstance.skin(context.querySelector('.selectSkin').value); + userSettingsInstance.enableFastFadein(context.querySelector('#chkFadein').checked); userSettingsInstance.enableBackdrops(context.querySelector('#chkBackdrops').checked); if (user.Id === apiClient.getCurrentUserId()) { diff --git a/src/components/displaysettings/displaysettings.template.html b/src/components/displaysettings/displaysettings.template.html index f469d8d5ce..16bbf0dd8a 100644 --- a/src/components/displaysettings/displaysettings.template.html +++ b/src/components/displaysettings/displaysettings.template.html @@ -3,6 +3,7 @@

${Display}

+
+
@@ -141,6 +143,14 @@
+
+ +
${EnableFastImageFadeInHelp}
+
+
${EnableBackdropsHelp}
+
${EnableThemeSongsHelp}
+
"; elem.innerHTML = html; + if (detectRatio && item.PrimaryImageAspectRatio) { + if (item.PrimaryImageAspectRatio >= 1.48) { + shape = "thumb"; + } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) { + shape = "square"; + } + } + if ("thumb" == shape) { elem.classList.add("thumbDetailImageContainer"); elem.classList.remove("portraitDetailImageContainer"); From f2c24921e1c43777516d853e619b761ced69ebd1 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 30 Jan 2020 11:45:32 +0000 Subject: [PATCH 033/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index be7a504710..e3d0142bc6 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1454,5 +1454,6 @@ "LabelAlbumArtHelp": "PN používa obrázok albumu, vrámci dlna:profileID atribútu upnp:albumArtURI. Niektoré zariadenia vyžadujú špecifickú hodnotu, bez ohľadu na veľkosť obrázku.", "HeaderDirectPlayProfileHelp": "Pridať direct play profil pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", "LabelInNetworkSignInWithEasyPasswordHelp": "Použite jednoduchý PIN kód na prihlásenie v klientoch vo vnútri lokálnej siete. Vaše bežné heslo bude potrebné len pokiaľ ste mimo domova. Pokiaľ je PIN kód ponechaný prázdny, tak nebude potrebovať heslo vo vašej domácej sieti.", - "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti." + "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti.", + "HeaderNavigation": "Navigácia" } From 16c75e9e5ec3d3ddef3a8b7374ee57409b9a09d7 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Thu, 30 Jan 2020 21:08:01 +0100 Subject: [PATCH 034/260] Showing toast when copying stream URL fails --- src/components/itemcontextmenu.js | 9 +++++---- src/strings/en-us.json | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 63c7350fd4..4e9bab6849 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -351,14 +351,15 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", document.body.appendChild(textArea); textArea.focus(); textArea.select(); - try { - document.execCommand("copy"); - + if (document.execCommand("copy")) { require(["toast"], function (toast) { toast(globalize.translate("CopyStreamURLSuccess")); }); - } catch (err) { + } else { console.error("Failed to copy to clipboard"); + require(["toast"], function (toast) { + toast(globalize.translate("CopyStreamURLError")); + }); } document.body.removeChild(textArea); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f90e436645..95ce4675c9 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -161,6 +161,7 @@ "Continuing": "Continuing", "CopyStreamURL": "Copy Stream URL", "CopyStreamURLSuccess": "URL copied successfully.", + "CopyStreamURLError": "There was an error copying the URL.", "CriticRating": "Critic rating", "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", "DateAdded": "Date added", From 5de30b9f0f38344f02e120a454026ee3034b6470 Mon Sep 17 00:00:00 2001 From: vortexnix Date: Thu, 30 Jan 2020 20:02:50 +0000 Subject: [PATCH 035/260] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index ad40c3ec53..cbcac11332 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -17,9 +17,20 @@ "AllLibraries": "सभी संग्रह", "All": "सारे", "AirDate": "प्रसारित होने की तिथि", - "AddToPlayQueue": "सक्रीय प्लेलिस्ट में जोड़ें", + "AddToPlayQueue": "सक्रिय कतार में जोड़ें", "AddToCollection": "संग्रह में जोड़ें", "Add": "जोड़ें", "Actor": "अभिनेता", - "AccessRestrictedTryAgainLater": "अभी प्रवेश प्रतिबंधित है। थोड़ी देर बाद कोशिश करें।" + "AccessRestrictedTryAgainLater": "अभी प्रवेश प्रतिबंधित है। थोड़ी देर बाद कोशिश करें।", + "AllowHWTranscodingHelp": "ट्यूनर को निरंतर रूप से धाराओं को ट्रांसकोड करने दें। यह सर्वर द्वारा ट्रांसकोडिंग को कम करने में मदद कर सकता है।", + "AllLanguages": "सभी भाषाएं", + "AllEpisodes": "सभी प्रकरण", + "AllComplexFormats": "सभी जटिल प्रारूप (ASS, SSA, VOBSUB, PGS, SUB / IDX, आदि)", + "AllChannels": "सभी चैनल्स", + "Alerts": "चेतावनियां", + "Albums": "संग्रहिकाएँ", + "Aired": "प्रसारित हो चुका", + "AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।", + "AddedOnValue": "जोड़ दिया", + "AddToPlaylist": "प्लेलिस्ट में जोड़ें" } From 9b253c5ff7851b37e4cf5fb990a80a27be886e76 Mon Sep 17 00:00:00 2001 From: Kacper Marcisz Date: Fri, 31 Jan 2020 05:11:29 +0000 Subject: [PATCH 036/260] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 37ef09c707..92f1e54363 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1452,5 +1452,8 @@ "LabelAudioBitDepth": "Głębia bitowa audio:", "HeaderFavoritePeople": "Ulubieni ludzie", "FetchingData": "Pobieranie dodatkowych danych", - "ButtonSplit": "Rozdziel" + "ButtonSplit": "Rozdziel", + "SelectAdminUsername": "Proszę wybierz nazwę użytkownika dla konta administratora.", + "MessageConfirmAppExit": "Czy chcesz wyjść?", + "HeaderNavigation": "Nawigacja" } From 74530fe4d9f3047bf9409ea2ac5e17951816e821 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Sat, 1 Feb 2020 17:26:03 +0100 Subject: [PATCH 037/260] Moved URL copy to Clipboard API method --- src/components/itemcontextmenu.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 4e9bab6849..192bd821da 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -346,23 +346,16 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", break; case "copy-stream": var downloadHref = apiClient.getItemDownloadUrl(itemId); - var textArea = document.createElement("textarea"); - textArea.value = downloadHref; - document.body.appendChild(textArea); - textArea.focus(); - textArea.select(); - if (document.execCommand("copy")) { + navigator.clipboard.writeText(downloadHref).then(function () { require(["toast"], function (toast) { toast(globalize.translate("CopyStreamURLSuccess")); }); - } else { + }, function () { console.error("Failed to copy to clipboard"); require(["toast"], function (toast) { toast(globalize.translate("CopyStreamURLError")); }); - } - - document.body.removeChild(textArea); + }); getResolveFunction(resolve, id)(); break; case "editsubtitles": From 4bea999849bcd387be5f703481461eecccd85d01 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Sat, 1 Feb 2020 17:28:04 +0100 Subject: [PATCH 038/260] Fallback method to copy URL in unsupported cases --- CONTRIBUTORS.md | 1 + src/components/itemcontextmenu.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index e0855c1e09..5a43208068 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -32,6 +32,7 @@ - [bilde2910](https://github.com/bilde2910) - [Daniel Hartung](https://github.com/dhartung) - [Ryan Hartzell](https://github.com/ryan-hartzell) + - [Thibault Nocchi](https://github.com/ThibaultNocchi) # Emby Contributors diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 192bd821da..cfbdb260d6 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -351,9 +351,9 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", toast(globalize.translate("CopyStreamURLSuccess")); }); }, function () { - console.error("Failed to copy to clipboard"); + prompt(globalize.translate("CopyStreamURL"), downloadHref); require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLError")); + toast(globalize.translate("CopyStreamURLSuccess")); }); }); getResolveFunction(resolve, id)(); From b113f25327c8d03d966ac89ebebab025e49349a2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Feb 2020 18:28:57 +0100 Subject: [PATCH 039/260] Don't use smooth scrolling by default on non-Tizen --- src/components/scrollManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index dbf9c5a143..57107ed185 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -372,7 +372,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function useSmoothScroll() { - if (browser.tizen || browser.web0s || browser.firefox || browser.chrome) { + if (browser.tizen) { return true; } From ccfaf11218d8ff397a725dce38cd02c7dc82d78d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Feb 2020 18:30:59 +0100 Subject: [PATCH 040/260] Remove scroller changes --- src/components/scroller.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/scroller.js b/src/components/scroller.js index b4c9b9d9b7..65f33b8e8d 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -93,7 +93,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc // in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good if (options.allowNativeScroll === false) { options.enableNativeScroll = false; - } else if (isSmoothScrollSupported && (browser.firefox || options.allowNativeSmoothScroll)) { + } else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) { // native smooth scroll options.enableNativeScroll = true; } else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) { From 014419231870b5d773b12bd7a323246b3a67a4c4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 20:38:29 +0100 Subject: [PATCH 041/260] Adjust header margins and padding --- src/assets/css/librarybrowser.css | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index e5f45f7ab1..7cdd584cec 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -115,7 +115,7 @@ display: -webkit-inline-box; display: -webkit-inline-flex; display: inline-flex; - margin: 0.3em 0 0 0.5em; + margin: 0 0 0 0.5em; height: 1.7em; -webkit-box-align: center; -webkit-align-items: center; @@ -272,7 +272,26 @@ } } -@media all and (min-width:84em) { +@media all and (min-width: 84em) { + .headerTop { + padding: 1.25em 1.25em; + } + + .headerTabs { + -webkit-align-self: center; + align-self: center; + width: auto; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + margin-top: -3em; + position: relative; + top: -1.05em; + } + .libraryPage:not(.noSecondaryNavPage) { padding-top: 4.6em !important; } @@ -426,7 +445,7 @@ .desktopMiscInfoContainer { position: absolute; - bottom: .75em + bottom: 0.75em; } .layout-mobile .detailPagePrimaryContainer { From 072118ab6599f458a01829a7def2ee3f9947566f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 20:39:03 +0100 Subject: [PATCH 042/260] Center text vertically in listviews --- src/components/listview/listview.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/listview/listview.css b/src/components/listview/listview.css index 9c32d01222..b653502dae 100644 --- a/src/components/listview/listview.css +++ b/src/components/listview/listview.css @@ -111,6 +111,10 @@ text-overflow: ellipsis; } +.layout-desktop .listItemBodyText { + margin: 0.25em 0 0 0; +} + .listItemBodyText-nowrap { white-space: nowrap; } From 1b45bf1aae4830affccb3869709135718ef34d0c Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 20:39:26 +0100 Subject: [PATCH 043/260] Fix misaligned server select card in TV layout --- src/components/emby-scroller/emby-scroller.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/emby-scroller/emby-scroller.css b/src/components/emby-scroller/emby-scroller.css index 11c2c73271..d2157f9355 100644 --- a/src/components/emby-scroller/emby-scroller.css +++ b/src/components/emby-scroller/emby-scroller.css @@ -13,6 +13,11 @@ margin-right: 1.2em; } +.servers > .card > .cardBox { + margin-left: .6em; + margin-right: .6em; +} + .layout-tv .emby-scroller, .layout-mobile .emby-scroller { padding-left: 3.3%; From f2ca10aae951a86219b561c8e0c7dd69676c2a0a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 23:37:58 +0100 Subject: [PATCH 044/260] Align section title with chevron --- src/assets/css/librarybrowser.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 7cdd584cec..a2ae5aac43 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -969,7 +969,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { } .sectionTitleTextButton > .sectionTitle { - margin-bottom: 0; + margin-bottom: 0.35em; margin-top: 0; } From 19ce5531605ee7e2b20f0fbd5450700ab70190f3 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 25 Jan 2020 23:49:42 +0100 Subject: [PATCH 045/260] Align text with icons in navigation drawer --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index a2ae5aac43..662ac3bf6c 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -201,6 +201,7 @@ .navMenuOptionText { white-space: nowrap; + margin-top: 0.25em; } .sidebarHeader { From b59ab3605ef0daaec33449de6efb38c223bcd8b3 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Feb 2020 18:56:19 +0100 Subject: [PATCH 046/260] Fix some rebasing issues --- package.json | 2 +- src/assets/css/librarybrowser.css | 128 +++++++++--------- src/components/alphapicker/style.css | 1 - .../emby-scroller/emby-scroller.css | 4 +- src/elements/emby-input/emby-input.css | 4 +- 5 files changed, 69 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 02ae28eaa7..4392f12153 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "serve": "webpack-dev-server --config webpack.dev.js --open", "build": "webpack --config webpack.prod.js", "lint": "eslint \"src\"", - "stylelint": "stylelint src/**/*.css", + "stylelint": "stylelint \"src/**/*.css\"", "prepare": "webpack --config webpack.prod.js" } } diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 662ac3bf6c..0210641029 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -449,9 +449,41 @@ bottom: 0.75em; } -.layout-mobile .detailPagePrimaryContainer { +.parentName { display: block; - position: relative; + margin-bottom: 0.5em; +} + +.mainDetailButtons { + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + margin: 1em 0; +} + +.detailButton, +.mainDetailButtons { + display: flex; + display: -webkit-box; + display: -webkit-flex; +} + +.itemName { + margin: 0.5em 0; +} + +.itemMiscInfo { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; } .layout-mobile .parentName, @@ -463,14 +495,6 @@ justify-content: center; } -.layout-mobile .infoText { - white-space: normal; -} - -.layout-tv .detailPagePrimaryContainer { - position: relative; -} - .detailPagePrimaryContainer { display: flex; align-items: center; @@ -480,6 +504,15 @@ z-index: 2; } +.layout-mobile .detailPagePrimaryContainer { + display: block; + position: relative; +} + +.layout-tv .detailPagePrimaryContainer { + position: relative; +} + .detailSticky { background-color: #101010; } @@ -495,6 +528,10 @@ text-align: left; } +.layout-mobile .infoText { + white-space: normal; +} + .detailPageSecondaryContainer { margin: 1.25em 0; } @@ -562,9 +599,9 @@ -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } -@media all and (max-width:62.5em) { +@media all and (max-width: 62.5em) { .detailPageWrapperContainer { - position: relative + position: relative; } .btnPlaySimple { @@ -578,11 +615,6 @@ } } -.parentName { - display: block; - margin-bottom: 0.5em; -} - .btnSyncComplete { background: #673ab7 !important; } @@ -633,17 +665,6 @@ } } -.detailButton, -.mainDetailButtons { - display: flex; - display: -webkit-box; - display: -webkit-flex; -} - -.itemName { - margin: 0.5em 0; -} - .empty { margin: 0; } @@ -656,16 +677,6 @@ margin-top: 0; } -.mainDetailButtons { - display: flex; - -webkit-box-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; - margin: 1em 0; -} - .recordingFields button { margin-left: 0; margin-right: 0.5em; @@ -690,24 +701,24 @@ padding: 0.5em 0.7em !important; } -@media all and (min-width:29em) { +@media all and (min-width: 29em) { .detailButton { - padding-left: .75em !important; - padding-right: .75em !important + padding-left: 0.75em !important; + padding-right: 0.75em !important; } } -@media all and (min-width:32em) { +@media all and (min-width: 32em) { .detailButton { - padding-left: .8em !important; - padding-right: .8em !important + padding-left: 0.8em !important; + padding-right: 0.8em !important; } } -@media all and (min-width:35em) { +@media all and (min-width: 35em) { .detailButton { - padding-left: .85em !important; - padding-right: .85em !important + padding-left: 0.85em !important; + padding-right: 0.85em !important; } } @@ -740,7 +751,7 @@ } .detailButton-text { - margin-top: .7em; + margin-top: 0.7em; font-size: 80%; font-weight: 400; } @@ -751,13 +762,13 @@ } .detailButtonHideonMobile { - display: none !important + display: none !important; } } -@media all and (min-width:62.5em) { +@media all and (min-width: 62.5em) { .headerTop { - padding: 0.8em 0 + padding: 0.8em 0; } .headerTabs { @@ -774,7 +785,7 @@ } .personBackdrop { - display: none !important + display: none !important; } .mainDetailButtons { @@ -789,17 +800,6 @@ } } -.itemMiscInfo { - display: -webkit-box; - display: -webkit-flex; - display: flex; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -webkit-align-items: center; - align-items: center; -} - @media all and (max-width: 31.25em) { .mobileDetails .itemMiscInfo { text-align: center; @@ -1000,7 +1000,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { margin-bottom: -1em; } -@media all and (min-height:31.25em) { +@media all and (min-height: 31.25em) { .padded-right-withalphapicker { padding-right: 7.5%; } diff --git a/src/components/alphapicker/style.css b/src/components/alphapicker/style.css index 2f396d1fec..4e94c0f754 100644 --- a/src/components/alphapicker/style.css +++ b/src/components/alphapicker/style.css @@ -112,7 +112,6 @@ } @media all and (min-width: 62.5em) { - .alphaPicker-fixed-right { right: 1em; } diff --git a/src/components/emby-scroller/emby-scroller.css b/src/components/emby-scroller/emby-scroller.css index d2157f9355..d4d2c69c85 100644 --- a/src/components/emby-scroller/emby-scroller.css +++ b/src/components/emby-scroller/emby-scroller.css @@ -14,8 +14,8 @@ } .servers > .card > .cardBox { - margin-left: .6em; - margin-right: .6em; + margin-left: 0.6em; + margin-right: 0.6em; } .layout-tv .emby-scroller, diff --git a/src/elements/emby-input/emby-input.css b/src/elements/emby-input/emby-input.css index 683498455b..18ad37a87a 100644 --- a/src/elements/emby-input/emby-input.css +++ b/src/elements/emby-input/emby-input.css @@ -21,8 +21,8 @@ border: 0; } -.emby-input:required { - box-shadow: none; +.emby-input:required { + box-shadow: none; } .inputContainer { From 6d6cce02afba784ee778e56b3a0a07761dea02e0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 1 Feb 2020 23:55:07 +0300 Subject: [PATCH 047/260] Add server select support for NativeShell --- src/controllers/auth/login.js | 3 +++ src/controllers/user/menu.js | 4 ++++ src/login.html | 4 ++-- src/mypreferencesmenu.html | 2 +- src/scripts/site.js | 7 +++++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index ceecb2aba3..4296b8bfb3 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -187,6 +187,9 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout view.querySelector("#txtManualName").value = ""; showManualForm(view, true); }); + view.querySelector(".btnSelectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); view.addEventListener("viewshow", function (e) { loading.show(); diff --git a/src/controllers/user/menu.js b/src/controllers/user/menu.js index 4e0a7824b7..6087beadfe 100644 --- a/src/controllers/user/menu.js +++ b/src/controllers/user/menu.js @@ -6,6 +6,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio Dashboard.logout(); }); + view.querySelector(".selectServer").addEventListener("click", function () { + Dashboard.selectServer(); + }); + view.addEventListener("viewshow", function() { // this page can also be used by admins to change user preferences from the user edit page var userId = params.userId || Dashboard.getCurrentUserId(); diff --git a/src/login.html b/src/login.html index 21c9d8a347..955ce3879e 100644 --- a/src/login.html +++ b/src/login.html @@ -47,9 +47,9 @@ ${ButtonForgotPassword} - +

diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index 96e9626899..cb63322f31 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -69,7 +69,7 @@

${HeaderUser}

- +
wifi
diff --git a/src/scripts/site.js b/src/scripts/site.js index 3a10dc85a1..c34b3e475d 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -221,6 +221,13 @@ var Dashboard = { }; appHost.getPushTokenInfo(); return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); + }, + selectServer: function () { + if (window.NativeShell && typeof window.NativeShell.selectServer === "function") { + window.NativeShell.selectServer(); + } else { + Dashboard.navigate("selectserver.html"); + } } }; From 65de99f6dd3b275d38bbe7dda425b38d5a2bc461 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 2 Feb 2020 10:20:33 +0100 Subject: [PATCH 048/260] Correct page title margin --- src/assets/css/librarybrowser.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 0210641029..f5b3103038 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -115,7 +115,7 @@ display: -webkit-inline-box; display: -webkit-inline-flex; display: inline-flex; - margin: 0 0 0 0.5em; + margin: 0.3em 0 0 0.5em; height: 1.7em; -webkit-box-align: center; -webkit-align-items: center; From d104d03e5ce2be27ad6ee39ff7fbc27beb7c40a0 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 2 Feb 2020 11:10:26 +0100 Subject: [PATCH 049/260] Adjust tabs top margin --- src/assets/css/librarybrowser.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index f5b3103038..dd47651d3f 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -290,7 +290,7 @@ justify-content: center; margin-top: -3em; position: relative; - top: -1.05em; + top: -0.35em; } .libraryPage:not(.noSecondaryNavPage) { From f7daecb42d4397839f7d5a7069682772ab1512dd Mon Sep 17 00:00:00 2001 From: DJSweder Date: Sat, 1 Feb 2020 05:45:36 +0000 Subject: [PATCH 050/260] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 14d2aa4874..5f0c1e60b3 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1558,5 +1558,7 @@ "OptionRandom": "Náhodně", "SelectAdminUsername": "Vyberte uživatelské jméno pro účet správce.", "HeaderNavigation": "Navigace", - "ButtonSplit": "Rozdělit" + "ButtonSplit": "Rozdělit", + "MessageConfirmAppExit": "Přejete si odejít?", + "CopyStreamURLError": "Při kopírování URL došlo k chybě." } From 3ea1696072eb7a1205b38d1e67866e95f60a03ef Mon Sep 17 00:00:00 2001 From: Nutjob Date: Fri, 31 Jan 2020 21:45:01 +0000 Subject: [PATCH 051/260] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 120 +++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index a54203665c..19ed9b741e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -32,7 +32,7 @@ "Artists": "Artisti", "AsManyAsPossible": "Tutto il possibile", "Ascending": "Crescente", - "AspectRatio": "Rapporto d'aspetto", + "AspectRatio": "Rapporto d'Aspetto", "AttributeNew": "Nuovo", "AutoBasedOnLanguageSetting": "Auto (basato sull'impostazione della lingua)", "Backdrop": "Sfondo", @@ -574,57 +574,57 @@ "LabelEvent": "Evento:", "LabelEveryXMinutes": "Tutti:", "LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione della libreria", - "LabelExtractChaptersDuringLibraryScanHelp": "Se abilitata, le immagini capitolo verranno estratti quando i video vengono importati durante la scansione della libreria. Se disabilitata verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", + "LabelExtractChaptersDuringLibraryScanHelp": "Genera le immagini del capitolo quando i video vengono importati durante la scansione della libreria. Altrimenti verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", "LabelFailed": "Fallito", "LabelFileOrUrl": "File o URL:", "LabelFinish": "Finito", "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server sulla rete.Se lasciato vuoto verra usato il nome del pc", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e verrà usato di default come nome del pc.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", "LabelH264EncodingPreset": "Preset di codifica H264:", "LabelHardwareAccelerationType": "Accelerazione Hardware:", - "LabelHardwareAccelerationTypeHelp": "Disponibile solo su sistemi supportati.", + "LabelHardwareAccelerationTypeHelp": "Questa è una componente sperimentale disponibile solo su sistemi supportati.", "LabelHomeNetworkQuality": "Qualità della rete domestica:", "LabelHomeScreenSectionValue": "Pagina iniziale Sezione {0}:", - "LabelHttpsPort": "Porta HTTPS locale", - "LabelHttpsPortHelp": "Numero di porta TCP da associare al server https di Jellyfin", - "LabelIconMaxHeight": "Altezza Icona massima:", + "LabelHttpsPort": "Porta HTTPS locale:", + "LabelHttpsPortHelp": "Numero di porta TCP da associare al server HTTPS di Jellyfin.", + "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", - "LabelIconMaxWidth": "Larghezza massima Icona:", + "LabelIconMaxWidth": "Larghezza massima icona:", "LabelIconMaxWidthHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", "LabelImageType": "Tipo immagine:", "LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN.", - "LabelInNetworkSignInWithEasyPasswordHelp": "Se attivata, sarai in grado di utilizzare il tuo codice pin facile per accedere alle app di Jellyfin all'interno della tua rete domestica. La tua password usuale sarà necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Usa il codice pin facile per accedere alle app all'interno della tua rete domestica. La tua password usuale sarà necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", "LabelInternetQuality": "Qualità Internet:", "LabelKeepUpTo": "Conservane fino a:", "LabelKidsCategories": "Categorie bambini:", "LabelKodiMetadataDateFormat": "Data di uscita Formato:", - "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno del nfo verranno letti e scritti utilizzando questo formato.", + "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno dei files NFO verranno analizzate utilizzando questo formato.", "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart in extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Copia extrafanart in extrathumbs", "LabelKodiMetadataEnablePathSubstitution": "Abilita sostituzione di percorso", "LabelKodiMetadataEnablePathSubstitutionHelp": "Consente percorso sostituzione dei percorsi delle immagini utilizzando le impostazioni di sostituzione percorso del server.", "LabelKodiMetadataSaveImagePaths": "Salva percorsi delle immagini all'interno dei file NFO", "LabelKodiMetadataSaveImagePathsHelp": "Questo è consigliato se si dispone di nomi di file immagine che non sono conformi alle linee guida Kodi.", - "LabelKodiMetadataUser": "Salva dati utente in file nfo per:", - "LabelKodiMetadataUserHelp": "Abilita questa opzione per salvare i dati in file Nfo per usarli in altre applicazioni", + "LabelKodiMetadataUser": "Salva dati utente nei files NFO per:", + "LabelKodiMetadataUserHelp": "Salvare i dati nei filse NFO per usarli in altre applicazioni.", "LabelLanNetworks": "Reti LAN:", "LabelLanguage": "Lingua:", "LabelLineup": "Allineare:", - "LabelLocalHttpServerPortNumber": "Porta HTTP locale", - "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server http di Jellyfin", + "LabelLocalHttpServerPortNumber": "Porta HTTP locale:", + "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server HTTP di Jellyfin.", "LabelLockItemToPreventChanges": "Blocca questo elemento per impedire modifiche future", "LabelLoginDisclaimer": "Avviso Login:", - "LabelLoginDisclaimerHelp": "Questo verrà visualizzato nella parte inferiore della pagina di accesso.", + "LabelLoginDisclaimerHelp": "Un messaggio che verrà visualizzato nella parte inferiore della pagina di accesso.", "LabelLogs": "Log:", - "LabelManufacturer": "Produttore", + "LabelManufacturer": "Produttore:", "LabelManufacturerUrl": "URL del produttore", "LabelMaxBackdropsPerItem": "Massimo numero di sfondi per oggetto:", "LabelMaxChromecastBitrate": "Qualità streaming su Chromecast:", @@ -646,22 +646,22 @@ "LabelMetadataSaversHelp": "Scegliere i formati di file per salvare i metadati", "LabelMethod": "Metodo:", "LabelMinBackdropDownloadWidth": "Massima larghezza sfondo:", - "LabelMinResumeDuration": "Durata minima per il riprendi (secondi)", - "LabelMinResumeDurationHelp": "I film più corti non saranno riprendibili", - "LabelMinResumePercentage": "Percentuale minima per il riprendi", - "LabelMinResumePercentageHelp": "I film Sono considerati non visti se fermati prima di questo tempo", + "LabelMinResumeDuration": "Durata minima per il riprendi:", + "LabelMinResumeDurationHelp": "La durata video più corta in secondi che salverà la locazione di riproduzione e ti permetterà di riprendere.", + "LabelMinResumePercentage": "Percentuale minima per il riprendi:", + "LabelMinResumePercentageHelp": "I film sono considerati non visti se fermati prima di questo tempo.", "LabelMinScreenshotDownloadWidth": "Larghezza minima screenshot scaricati:", "LabelModelDescription": "Descrizione Modello", "LabelModelName": "Nome Modello", "LabelModelNumber": "Numero Modello", - "LabelModelUrl": "Url Modello", + "LabelModelUrl": "Modello URL", "LabelMonitorUsers": "Monitora l'attività da:", "LabelMovieCategories": "Categorie film:", "LabelMoviePrefix": "Prefisso film:", - "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che Jellyfin possa gestirlo correttamente.", + "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che il server possa gestirlo correttamente.", "LabelMovieRecordingPath": "Percorso di registrazione film (opzionale):", "LabelMusicStreamingTranscodingBitrate": "Musica trascodifica bitrate:", - "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il max Bitrate per lo streaming musica", + "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il massimo bitrate per lo streaming musicale.", "LabelName": "Nome:", "LabelNewName": "Nuovo nome:", "LabelNewPassword": "Nuova password:", @@ -702,9 +702,9 @@ "LabelProtocol": "Protocollo:", "LabelProtocolInfo": "Info protocollo:", "LabelProtocolInfoHelp": "Il valore che verrà utilizzato quando si risponde a richieste GetProtocolInfo dal dispositivo.", - "LabelPublicHttpPort": "Porta HTTP pubblica", + "LabelPublicHttpPort": "Porta HTTP pubblica:", "LabelPublicHttpPortHelp": "Numero di porta pubblica che dovrebbe essere mappato sulla porta HTTP locale.", - "LabelPublicHttpsPort": "Numero porta HTTPS pubblica", + "LabelPublicHttpsPort": "Numero porta HTTPS pubblica:", "LabelPublicHttpsPortHelp": "Numero della porta pubblica che dovrebbe essere mappato sulla porta HTTPS locale.", "LabelReadHowYouCanContribute": "Scopri come puoi contribuire.", "LabelReasonForTranscoding": "Motivo per la transcodifica:", @@ -765,9 +765,9 @@ "LabelTrackNumber": "Numero traccia:", "LabelTranscodingAudioCodec": "Codec Audio:", "LabelTranscodingContainer": "contenitore:", - "LabelTranscodingTempPathHelp": "Questa cartella contiene i file di lavoro utilizzati dal transcoder. Specificare un percorso personalizzato, oppure lasciare vuoto per utilizzare l'impostazione predefinita all'interno della cartella dei dati del server.", + "LabelTranscodingTempPathHelp": "Specifica un percorso personalizzato per la transcodifica dei files utilizzati dai client. Lasciare vuoto per utilizzare l'impostazione predefinita dal server.", "LabelTranscodingThreadCount": "Transcodifica numero di thread:", - "LabelTranscodingThreadCountHelp": "Selezionare il numero massimo di thread da utilizzare durante la transcodifica. Ridurre il numero di thread si abbasserà l'utilizzo della CPU, ma non può convertire abbastanza veloce per un'esperienza di riproduzione fluida.", + "LabelTranscodingThreadCountHelp": "Selezionare il numero massimo di thread da utilizzare durante la transcodifica. Ridurre il numero di thread si abbasserà l'utilizzo della CPU, ma può non convertire abbastanza veloce per un'esperienza di riproduzione fluida.", "LabelTranscodingVideoCodec": "Codec Video:", "LabelTriggerType": "Tipo Evento:", "LabelTunerIpAddress": "Tuner Indirizzo IP:", @@ -779,7 +779,7 @@ "LabelUserAgent": "Agente utente:", "LabelUserLibrary": "Libreria utente:", "LabelUserLibraryHelp": "Selezionare la libreria utente da visualizzare sul dispositivo. Lasciare vuoto per ereditare l'impostazione predefinita.", - "LabelUserRemoteClientBitrateLimitHelp": "Questo sovrascriverà il valore globale predefinito impostato nelle impostazioni di riproduzione del server.", + "LabelUserRemoteClientBitrateLimitHelp": "Sovrascrive il valore globale predefinito impostato nelle impostazioni di riproduzione del server.", "LabelUsername": "Nome utente", "LabelVaapiDevice": "Dispositivo VA API:", "LabelVaapiDeviceHelp": "Questo è il nodo rendering usato dall'accelerazione hardware.", @@ -799,7 +799,7 @@ "Large": "Grande", "LatestFromLibrary": "Ultimi {0}", "LearnHowYouCanContribute": "Scopri come puoi contribuire.", - "LibraryAccessHelp": "Seleziona le cartelle multimediali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", + "LibraryAccessHelp": "Seleziona le librerie da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", "Like": "Mi piace", "List": "Lista", "Live": "In diretta", @@ -842,38 +842,38 @@ "MessageConfirmRemoveMediaLocation": "Sei sicuro di voler rimuovere questa posizione?", "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Jellyfin?", "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente", - "MessageConfirmShutdown": "Sei sicuro di voler spegnere il Server Jellyfin?", + "MessageConfirmShutdown": "Sei sicuro di voler spegnere il server?", "MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.", "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", "MessageDirectoryPickerInstruction": "Percorsi di rete possono essere inseriti manualmente nel caso in cui il pulsante Rete non riesce a individuare i vostri dispositivi. Ad esempio, {0} o {1}", - "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, OpenSuse o Ubuntu, è necessario concedere all'utente del sistema Jellyfin almeno l'accesso alle posizioni di archiviazione.", + "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", "MessageFileReadError": "Si è verificato un errore durante la lettura del file. Si prega di riprovare.", "MessageForgotPasswordFileCreated": "Il seguente file è stato creato sul server e contiene le istruzioni su come procedere:", "MessageForgotPasswordInNetworkRequired": "Riprova all'interno della rete domestica per avviare il processo di reimpostazione della password.", - "MessageInstallPluginFromApp": "Questo Plugin deve essere installato dall'app in cui vuoi farlo funzionare", - "MessageInvalidForgotPasswordPin": "Un pin Invalido o scaduto è stato inserito. Riprova.", + "MessageInstallPluginFromApp": "Questo plugin deve essere installato dall'app in cui vuoi farlo funzionare.", + "MessageInvalidForgotPasswordPin": "É stato inserito un codice pin invalido o scaduto . Riprova.", "MessageInvalidUser": "Utente o password errato. Riprova", "MessageItemSaved": "Elemento salvato.", "MessageItemsAdded": "Elementi aggiunti.", - "MessageLeaveEmptyToInherit": "Lascia vuoto per ereditare le impostazioni dall'elemento principale, o il valore predefinito globale.", + "MessageLeaveEmptyToInherit": "Lascia vuoto per ereditare le impostazioni dall'elemento principale o il valore predefinito globale.", "MessageNoAvailablePlugins": "Nessun plugin disponibile.", "MessageNoMovieSuggestionsAvailable": "Nessun suggerimento di film attualmente disponibile. Iniziare a guardare e valutare i vostri film, e poi tornare per i suggerimenti.", "MessageNoPluginsInstalled": "Non hai plugin installati", "MessageNoTrailersFound": "Nessun Trailer trovato.Installa Il plug in dei trailer per importare la libreria dei trailer da internet", "MessageNothingHere": "Non c'è niente qui.", - "MessagePasswordResetForUsers": "Le password sono state rimosse dai seguenti utenti. Per accedere lasciare vuoto il campo password.", - "MessagePlayAccessRestricted": "Le riproduzione di questi contenuti è bloccata. Per favore contatta il tuo amministratore Jellyfin Server per maggiori informazioni.", + "MessagePasswordResetForUsers": "I seguenti utenti havvo avuto le loro password resettate. Adesso possono accedere con i codici pin che sono stati utilizzati per eseguire il reset.", + "MessagePlayAccessRestricted": "Le riproduzione di questi contenuti è bloccata. Per favore contatta il tuo amministratore del server per maggiori informazioni.", "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati Internet sia abilitato.", "MessagePleaseWait": "Per favore attendi. La procedura potrebbe impiegare qualche minuto.", "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.", "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità Jellyfin sono un ottimo modo per migliorare l'esperienza di Jellyfin con funzionalità e vantaggi aggiuntivi. Prima di installare, si prega di notare gli effetti che possono avere sul tuo server Jellyfin, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", "MessageReenableUser": "Guarda in basso per ri-abilitare", "MessageSettingsSaved": "Settaggi salvati.", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria Jellyfin:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria:", "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al server selezionato al momento. Per favore assicurati che sia in esecuzione e riprova.", "MessageUnsetContentHelp": "Il contenuto verrà visualizzato come pianura cartelle. Per ottenere i migliori risultati utilizzare il gestore di metadati per impostare i tipi di contenuto di sottocartelle.", "MessageYouHaveVersionInstalled": "Attualmente hai la versione {0} installato.", @@ -883,10 +883,10 @@ "MinutesBefore": "minuti prima", "Monday": "Lunedì", "MoreFromValue": "Altro di {0}", - "MoreUsersCanBeAddedLater": "Altri utenti possono essere aggiunti in un secondo momento dal Pannello di Controllo.", + "MoreUsersCanBeAddedLater": "Altri utenti possono essere aggiunti in un secondo momento dal pannello di controllo.", "MoveLeft": "Sposta a sinistra", "MoveRight": "Sposta a destra", - "MovieLibraryHelp": "Rivedere la {0} guida di denominazione del film Jellyfin {1}.", + "MovieLibraryHelp": "Rivedere la {0} guida di denominazione dei film{1}.", "Movies": "Film", "Mute": "Muto", "MySubtitles": "I miei Sottotitoli", @@ -912,7 +912,7 @@ "OneChannel": "Un canale", "OnlyForcedSubtitles": "Solo i sottotitoli forzati", "OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", - "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB / IDX, ecc.)", + "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB, ecc)", "OptionAdminUsers": "Amministratori", "OptionAlbumArtist": "Artista Album", "OptionAllUsers": "Tutti gli utenti", @@ -957,7 +957,7 @@ "OptionDisableUserHelp": "Se disabilitato, il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", "OptionDislikes": "Non mi piace", "OptionDisplayFolderView": "Visualizza cartelle come normali cartelle dei media", - "OptionDisplayFolderViewHelp": "Se abilitato, le applicazioni Jellyfin visualizzeranno una categoria Cartelle accanto alla libreria multimediale. Ciò è utile se si desidera avere viste di cartelle semplici.", + "OptionDisplayFolderViewHelp": "Visualizza le cartelle accanto alle librerie multimediali. Questo può essere utile se si desidera avere una vista di cartelle semplici.", "OptionDownloadBackImage": "Indietro", "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", @@ -970,7 +970,7 @@ "OptionEnableAccessToAllChannels": "Abilita l'accesso a tutti i canali", "OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie", "OptionEnableExternalContentInSuggestions": "Abilita contenuto remoto nei suggerimenti", - "OptionEnableExternalContentInSuggestionsHelp": "Consenti l'inclusione di trailer Internet e programmi TV tra i contenuti suggeriti.", + "OptionEnableExternalContentInSuggestionsHelp": "Consenti l'inclusione di trailer da Internet e programmi TV in diretta tra i contenuti suggeriti.", "OptionEnableForAllTuners": "Abilita per tutti i sintonizzatori", "OptionEnableM2tsMode": "Attiva modalità M2TS", "OptionEnableM2tsModeHelp": "Attivare la modalità m2ts durante la codifica di mpegts.", @@ -988,8 +988,8 @@ "OptionHasThemeVideo": "Video Sigla", "OptionHideUser": "Nascondi questo utente dalla schermata di accesso", "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avrà bisogno di accedere manualmente utilizzando la propria username e password", - "OptionHlsSegmentedSubtitles": "Hls segmentato sottotitoli", - "OptionHomeVideos": "Video e foto personali", + "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", + "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se abilitata, queste richieste saranno onorate, ma ignorano l'intervallo di byte.", "OptionImdbRating": "Voto IMDB", @@ -1027,7 +1027,7 @@ "OptionThursday": "Giovedì", "OptionTrackName": "Titolo Traccia", "OptionTuesday": "Martedì", - "OptionTvdbRating": "Voto Tvdb", + "OptionTvdbRating": "Voto TVDB", "OptionUnairedEpisode": "Episodi mai andati in onda", "OptionUnplayed": "Non visto", "OptionWakeFromSleep": "Risveglio:", @@ -1062,7 +1062,7 @@ "Playlists": "Playlist", "PleaseAddAtLeastOneFolder": "Per favore aggiungi almeno una cartella alla raccolta cliccando sul pulsante Aggiungi.", "PleaseConfirmPluginInstallation": "Per favore premi OK per confermare che hai letto quanto precede e che vuoi procedere all'installazione del plug-in.", - "PleaseEnterNameOrId": "Per favore inserisci un nome o un id esterno.", + "PleaseEnterNameOrId": "Per favore inserisci un nome o un ID esterno.", "PleaseRestartServerName": "Per favore riavvia Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Seleziona almeno due elementi.", "PluginInstalledMessage": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", @@ -1129,7 +1129,7 @@ "SendMessage": "Invio messaggio", "Series": "Serie TV", "SeriesCancelled": "Serie TV annullate.", - "SeriesDisplayOrderHelp": "Ordina gli episodi per data messa in onda, ordine dvd o numerazione assoluta.", + "SeriesDisplayOrderHelp": "Ordina gli episodi per data messa in onda, ordine DVD o numerazione assoluta.", "SeriesRecordingScheduled": "Registrazione serie TV pianificata.", "SeriesSettings": "Impostazioni Serie TV", "SeriesYearToPresent": "{0} - Oggi", @@ -1161,7 +1161,7 @@ "Sports": "Sport", "StopRecording": "Ferma registrazione", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Queste impostazioni si applicano anche a qualsiasi riproduzione di Chromecast avviata da questo dispositivo.", - "SubtitleAppearanceSettingsDisclaimer": "Queste impostazioni non si applicano a sottotitoli grafici (PGS, DVD, ecc.), o sottotitoli che hanno i propri stili incorporati (ASS / SSA).", + "SubtitleAppearanceSettingsDisclaimer": "Queste impostazioni non si applicano a sottotitoli grafici (PGS, DVD, ecc.) o sottotitoli ASS/SSA che hanno i propri stili.", "SubtitleDownloadersHelp": "Abilita e classifica i tuoi downloader di sottotitoli preferiti in ordine di priorità.", "Subtitles": "Sottotitoli", "Suggestions": "Suggerimenti", @@ -1194,7 +1194,7 @@ "TabMusicVideos": "Video Musicali", "TabMyPlugins": "I miei Plug-in", "TabNetworks": "Reti", - "TabNfoSettings": "Impostazioni nfo", + "TabNfoSettings": "Impostazioni NFO", "TabNotifications": "Notifiche", "TabOther": "Altro", "TabParentalControl": "Controllo Genitore", @@ -1204,7 +1204,7 @@ "TabProfiles": "Profili", "TabRecordings": "Registrazioni", "TabResponses": "Risposte", - "TabResumeSettings": "Ripristina Impostazioni", + "TabResumeSettings": "Ripristina", "TabScheduledTasks": "Operazioni Pianificate", "TabSeries": "Serie TV", "TabSettings": "Impostazioni", @@ -1230,7 +1230,7 @@ "Trailers": "Trailer", "Transcoding": "Trascodifica", "Tuesday": "Martedì", - "TvLibraryHelp": "Rivedere la {0} guida di denominazione Jellyfin TV {1}.", + "TvLibraryHelp": "Rivedere la {0} guida di denominazione TV{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Sei sicuro di voler Disinstallare {0}?", "UninstallPluginHeader": "Disinstalla Plugin", @@ -1239,8 +1239,8 @@ "Unrated": "Non votato", "Up": "Su", "Upload": "Carica", - "UserAgentHelp": "Fornire un'intestazione http personalizzata per utente-agente, se necessario.", - "UserProfilesIntro": "Jellyfin include il supporto integrato per i profili utente, che permette ad ogni utente di avere le proprie impostazioni di visualizzazione, stato di riproduzione e controlli parentali.", + "UserAgentHelp": "Fornire un'intestazione HTTP personalizzata per utente-agente.", + "UserProfilesIntro": "Jellyfin include il supporto per i profili utente con impostazioni di visualizzazione granulare, stato di riproduzione, e controlli parentali.", "ValueAlbumCount": "{0} album", "ValueAudioCodec": "Codec Audio: {0}", "ValueConditions": "Condizioni: {0}", @@ -1269,13 +1269,13 @@ "Watched": "Visto", "Wednesday": "Mercoledì", "WelcomeToProject": "Benvenuto in Jellyfin!", - "WizardCompleted": "Questo è tutto ciò che serve per ora. Jellyfin ha iniziato a raccogliere informazioni sulla tua libreria di media. Scopri alcune delle nostre app, quindi clicca su Fine per visualizzare il Pannello di Controllo del server.", + "WizardCompleted": "Questo è tutto ciò che serve per ora. Jellyfin ha iniziato a raccogliere informazioni sulla tua libreria di media. Scopri alcune delle nostre app, quindi clicca su Fine per visualizzare il Pannello di Controllo.", "Writer": "Scrittore", "XmlDocumentAttributeListHelp": "Questi attributi vengono applicati all'elemento radice di ogni risposta XML.", "XmlTvKidsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi per i bambini. Separa multipli con '|'.", "XmlTvMovieCategoriesHelp": "I programmi con queste categorie saranno visualizzati come filmati. Separa multipli con '|'.", "XmlTvNewsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi di news. Separa multipli con '|'.", - "XmlTvPathHelp": "Un percorso di un file xml tv. Jellyfin leggerà questo file e controlla periodicamente per gli aggiornamenti. Sei responsabile della creazione e dell'aggiornamento del file.", + "XmlTvPathHelp": "Un percorso di un file XMLTV. Jellyfin leggerà questo file e controlla periodicamente per gli aggiornamenti. Sei responsabile della creazione e dell'aggiornamento del file.", "XmlTvSportsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi sportivi. Separa multipli con '|'.", "Yes": "Si", "Yesterday": "Ieri", @@ -1402,7 +1402,7 @@ "DashboardServerName": "Server: {0}", "LabelVideo": "Video:", "DashboardArchitecture": "Architettura: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server", "LaunchWebAppOnStartupHelp": "Apri il client web nel tuo web browser quando il server si avvia inizialmente. Ciò non accadrà quando si usa la funzione riavvio server.", "LeaveBlankToNotSetAPassword": "Puoi lasciare questo campo vuoto per non impostare alcuna password.", @@ -1450,5 +1450,11 @@ "TabStreaming": "Streaming", "ValueCodec": "Codec: {0}", "ValueMinutes": "{0} min", - "ValueOneAlbum": "1 album" + "ValueOneAlbum": "1 album", + "ButtonSplit": "Dividi", + "SelectAdminUsername": "Scegli un nome utente per l'account d'amministratore.", + "OptionRandom": "Casuale", + "MessageConfirmAppExit": "Vuoi uscire?", + "HeaderNavigation": "Navigazione", + "CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo." } From 9ef1dfc362c2c68728d9e8016150416c03101361 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Sat, 1 Feb 2020 14:35:17 +0000 Subject: [PATCH 052/260] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 104 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 3 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index d5822cd26a..89df6ba163 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1002,7 +1002,7 @@ "RequiredForAllRemoteConnections": "Necessário para todas as ligações externas", "ReplaceAllMetadata": "Substituir todos os metadados", "RepeatOne": "Repetir este", - "RepeatMode": "Modo de repetição", + "RepeatMode": "Modo de Repetição", "ServerRestartNeededAfterPluginInstall": "O Servidor Jellyfin necessitará de reiniciar depois de instalar uma extensão.", "NoPluginConfigurationMessage": "Esta extensão não é configurável.", "MessagePluginInstallDisclaimer": "As extensões desenvolvidas pela comunidade Jellyfin são uma ótima forma de melhorar a experiência de utilização do Jellyfin, adicionando novas funcionalidades e benefícios. Antes de proceder à instalação, tenha em atenção que estas podem alterar determinados comportamentos no Servidor Jellyfin e provocar efeitos como tempos de atualização da Biblioteca mais longos, processamento adicional em segundo plano e estabilidade do sistema reduzida.", @@ -1201,7 +1201,7 @@ "Home": "Início", "GuideProviderLogin": "Iniciar Sessão", "HeaderSubtitleDownloads": "Transferir legendas", - "LabelRecord": "Registo/Guardar", + "LabelRecord": "Gravação:", "LabelSkin": "Máscara:", "LabelMetadataDownloadersHelp": "Active e ordene os seus provedores de metadados por ordem de preferência. Provedores com menos prioriadade só serão usados para completar informação em falta.", "LabelMetadataReadersHelp": "Ordene as suas fontes preferidas de metadados por ordem de preferência. O primeiro ficheiro encontrado será utilizado.", @@ -1344,5 +1344,103 @@ "MusicAlbum": " Álbum de Música", "MoreMediaInfo": "Informações", "MediaInfoBitrate": "Taxa de Bits", - "LabelUserAgent": "User-Agent:" + "LabelUserAgent": "User-Agent:", + "MediaInfoAnamorphic": "Anamórfico", + "LabelTranscodes": "Transcodificação:", + "Whitelist": "Lista branca", + "VideoRange": "Alcance video", + "ValueOneAlbum": "1 álbum", + "ValueMusicVideoCount": "{0} videoclipes musicais", + "ValueMovieCount": "{0} filmes", + "ValueMinutes": "{0} min", + "ValueEpisodeCount": "{0} episódios", + "ValueDiscNumber": "Disco {0}", + "ValueContainer": "Contentor: {0}", + "ValueCodec": "Codec: {0}", + "ValueAlbumCount": "{0} álbuns", + "Upload": "Carregar", + "Up": "Cima", + "Unrated": "Sem avaliação", + "Transcoding": "Transcodificando", + "Trailers": "Videoclipes", + "TitleHostingSettings": "Configurações de Hospedagem", + "Thumb": "Miniatura", + "ThemeVideos": "Vídeos de tema", + "ThemeSongs": "Músicas de tema", + "TagsValue": "Etiquetas: {0}", + "Tags": "Etiquetas", + "TabTrailers": "Videoclipes", + "TabResumeSettings": "Resumir", + "TabLogs": "Logs", + "TabInfo": "Info", + "TabCodecs": "Codecs", + "Suggestions": "Sugestões", + "SortName": "Ordenar nome", + "SortByValue": "Ordenar por {0}", + "Sort": "Ordenar", + "Smart": "Inteligente", + "Smaller": "Menor", + "Small": "Pequeno", + "ShowTitle": "Mostrar título", + "ShowIndicatorsFor": "Mostrar indicadores para:", + "ServerNameIsShuttingDown": "Jellyfin Server - {0} está a desligar.", + "ServerNameIsRestarting": "Jellyfin Server - {0} está a reiniciar.", + "SeriesYearToPresent": "{0} - Presente", + "SeriesSettings": "Configuração de série", + "SeriesCancelled": "Série cancelada.", + "SelectAdminUsername": "Por favor selecione um nome de utilizador para a conta de administração.", + "RepeatEpisodes": "Repetir episódios", + "RepeatAll": "Repetir tudo", + "RemoveFromCollection": "Remover da coleção", + "RememberMe": "Lembrar-me", + "ReleaseDate": "Data de lançamento", + "RefreshQueued": "Recarregar na fila.", + "RefreshMetadata": "Recarregar metadados", + "RecentlyWatched": "Vistos recentemente", + "Rate": "Avaliação", + "QueueAllFromHere": "Fila a partir daqui", + "Quality": "Qualidade", + "ProductionLocations": "Localizações de produção", + "Primary": "Primário", + "Previous": "Anterior", + "Premieres": "Estreias", + "Premiere": "Estreia", + "PreferredNotRequired": "Prefiro, mas não obrigatório", + "PreferEmbeddedTitlesOverFileNames": "Preferir títulos embutidos a nomes de ficheiro", + "PictureInPicture": "Imagem em imagem", + "OptionThumbCard": "Miniatura cartão", + "OptionThumb": "Miniatura", + "OptionPosterCard": "Poster cartão", + "OptionPoster": "Poster", + "OptionDownloadBannerImage": "Cartaz", + "OptionDisplayFolderView": "Mostre em vista de pasta para ver pastas de mídia", + "OptionBanner": "Cartaz", + "NewCollectionHelp": "Coleções permitem criar grupos personalizados de filmes e outros tipos de conteúdo.", + "MusicLibraryHelp": "Reveja o {0}guia de nomeação de música{1}.", + "MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.", + "MessageConfirmAppExit": "Quer sair?", + "MediaInfoRefFrames": "Ref quadros", + "MediaInfoLayout": "Disposição", + "MediaInfoDefault": "Padrão", + "MediaInfoBitDepth": "Bit profundidade", + "Logo": "Logotipo", + "LinksValue": "Ligações: {0}", + "Like": "Gosto", + "LaunchWebAppOnStartupHelp": "Abra o cliente web no ser browser padrão quando o servidor iniciar. Isto não acontecerá usando uma função de reiniciar de servidor.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", + "LabelVaapiDevice": "VA API Dispositivo:", + "LabelTypeMetadataDownloaders": "{0} transferências de metadados:", + "LabelTheme": "Tema:", + "LabelTVHomeScreen": "TV modo ecrã de casa:", + "LabelSubtitleDownloaders": "Transferência de legendas:", + "LabelParentNumber": "Número fonte:", + "LabelMetadataSavers": "Gravadores de metadados:", + "LabelAudioBitDepth": "Áudio bit quantidade:", + "HeaderNavigation": "Navegação", + "EnableStreamLooping": "Auto-cíclico de streams ao vivo", + "Down": "Baixo", + "CopyStreamURLError": "Ocorreu um erro a copiar o URL.", + "ButtonSplit": "Dividir" } From b273853f0c160ade001a08d215bc460440cfba98 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Sat, 1 Feb 2020 22:15:46 +0000 Subject: [PATCH 053/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index c21b57198b..d18607642c 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1453,5 +1453,7 @@ "TabCatalog": "Registru", "TV": "TV", "SystemDlnaProfilesHelp": "Profilele de sistem pot fi numai citite. Modificările aduse unui profil de sistem vor fi salvate într-un nou profil personalizat.", - "HeaderNavigation": "Navigare" + "HeaderNavigation": "Navigare", + "MessageConfirmAppExit": "Vrei să ieși?", + "CopyStreamURLError": "A apărut o eroare la copierea adresei URL." } From e24bed00e96a97ad6688132656f8656d938d43f7 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sun, 2 Feb 2020 18:34:24 +0800 Subject: [PATCH 054/260] Add some translations for playback info --- src/components/htmlvideoplayer/plugin.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index d2f9632adb..45eff41dbe 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,4 +1,4 @@ -define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager) { +define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager, globalize) { "use strict"; var mediaManager; @@ -1855,7 +1855,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (protocol) { mediaCategory.stats.push({ - label: 'Protocol:', + label: globalize.translate("LabelProtocol"), value: protocol }); } @@ -1865,12 +1865,12 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (this._hlsPlayer || this._shakaPlayer) { mediaCategory.stats.push({ - label: 'Stream type:', + label: globalize.translate("LabelStreamType"), value: 'HLS' }); } else { mediaCategory.stats.push({ - label: 'Stream type:', + label: globalize.translate("LabelStreamType"), value: 'Video' }); } @@ -1882,13 +1882,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa categories.push(videoCategory); var rect = mediaElement.getBoundingClientRect ? mediaElement.getBoundingClientRect() : {}; - var height = rect.height; - var width = rect.width; + var height = parseInt(rect.height); + var width = parseInt(rect.width); // Don't show player dimensions on smart TVs because the app UI could be lower resolution than the video and this causes users to think there is a problem if (width && height && !browser.tv) { videoCategory.stats.push({ - label: 'Player dimensions:', + label: globalize.translate("LabelPlayerDimensions"), value: width + 'x' + height }); } @@ -1898,7 +1898,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (width && height) { videoCategory.stats.push({ - label: 'Video resolution:', + label: globalize.translate("LabelVideoResolution"), value: width + 'x' + height }); } @@ -1908,13 +1908,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var droppedVideoFrames = playbackQuality.droppedVideoFrames || 0; videoCategory.stats.push({ - label: 'Dropped frames:', + label: globalize.translate("LabelDroppedFrames"), value: droppedVideoFrames }); var corruptedVideoFrames = playbackQuality.corruptedVideoFrames || 0; videoCategory.stats.push({ - label: 'Corrupted frames:', + label: globalize.translate("LabelCorruptedFrames"), value: corruptedVideoFrames }); } From e8e47cc4578c210c9d8c5296021127084bb8e292 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sun, 2 Feb 2020 18:36:01 +0800 Subject: [PATCH 055/260] Add some translations for playback messages --- src/strings/en-us.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 95ce4675c9..78ab7eb1e3 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -575,6 +575,7 @@ "LabelCollection": "Collection:", "LabelCommunityRating": "Community rating:", "LabelContentType": "Content type:", + "LabelCorruptedFrames": "Corrupted frames:", "LabelCountry": "Country:", "LabelCriticRating": "Critic rating:", "LabelCurrentPassword": "Current password:", @@ -609,6 +610,7 @@ "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. A value of one will preserve the original volume.", "LabelDownloadLanguages": "Download languages:", "LabelDropImageHere": "Drop image here, or click to browse.", + "LabelDroppedFrames": "Dropped frames:", "LabelDropShadow": "Drop shadow:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "Easy pin code:", @@ -757,6 +759,7 @@ "LabelPlaceOfBirth": "Place of birth:", "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", "LabelPlayer": "Player:", + "LabelPlayerDimensions": "Player dimensions:", "LabelPlaylist": "Playlist:", "LabelPlayMethod": "Play method:", "LabelPleaseRestart": "Changes will take effect after manually reloading the web client.", @@ -828,6 +831,7 @@ "LabelStatus": "Status:", "LabelStopWhenPossible": "Stop when possible:", "LabelStopping": "Stopping", + "LabelStreamType": "Stream type:", "LabelSubtitleDownloaders": "Subtitle downloaders:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitlePlaybackMode": "Subtitle mode:", @@ -880,6 +884,7 @@ "LabelVideo": "Video:", "LabelVideoBitrate": "Video bitrate:", "LabelVideoCodec": "Video codec:", + "LabelVideoResolution": "Video resolution:", "LabelWeb": "Web:", "LabelXDlnaCap": "X-DLNA cap:", "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", From c4b0c272591a308f4983b825ecc85e976852b201 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sun, 2 Feb 2020 18:36:37 +0800 Subject: [PATCH 056/260] Add some translations for playback messages --- src/strings/zh-cn.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 94c235a7d7..a6e5bfae2c 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -506,6 +506,7 @@ "LabelCollection": "收藏:", "LabelCommunityRating": "公众评分:", "LabelContentType": "内容类型:", + "LabelCorruptedFrames": "损坏的帧:", "LabelCountry": "国家:", "LabelCriticRating": "影评人评分:", "LabelCurrentPassword": "当前密码:", @@ -540,6 +541,7 @@ "LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。", "LabelDownloadLanguages": "下载语言:", "LabelDropImageHere": "拖拽或点击选择图像于此处。", + "LabelDroppedFrames": "丢弃的帧:", "LabelDropShadow": "阴影:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "简易PIN码:", @@ -681,6 +683,7 @@ "LabelPersonRole": "角色:", "LabelPlaceOfBirth": "出生地:", "LabelPlayDefaultAudioTrack": "播放默认音轨无论是什么语言", + "LabelPlayerDimensions": "播放器尺寸:", "LabelPlaylist": "播放列表:", "LabelPostProcessor": "后处理应用程序:", "LabelPostProcessorArguments": "处理器后命令行参数:", @@ -746,6 +749,7 @@ "LabelStatus": "状态:", "LabelStopWhenPossible": "当可能时自动停止:", "LabelStopping": "停止", + "LabelStreamType": "串流类型:", "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", @@ -787,6 +791,7 @@ "LabelVersion": "版本:", "LabelVersionInstalled": "{0} 已安装", "LabelVersionNumber": "版本 {0}", + "LabelVideoResolution": "视频分辨率:", "LabelXDlnaCap": "X-DLNA CAP:", "LabelXDlnaCapHelp": "决定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的内容。", "LabelXDlnaDoc": "X-DLNA DOC:", From c9de45e55a813b04e4eef07a10cab0e1ef8812c6 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 2 Feb 2020 11:56:45 +0100 Subject: [PATCH 057/260] Small tab improvements --- src/assets/css/librarybrowser.css | 10 +++++----- src/components/emby-tabs/emby-tabs.css | 5 ++++- src/themes/dark/theme.css | 8 ++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index dd47651d3f..8475b72b2f 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -275,7 +275,7 @@ @media all and (min-width: 84em) { .headerTop { - padding: 1.25em 1.25em; + padding: 0.8em 0.8em; } .headerTabs { @@ -288,9 +288,8 @@ -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center; - margin-top: -3em; position: relative; - top: -0.35em; + margin-top: -4.3em; } .libraryPage:not(.noSecondaryNavPage) { @@ -768,7 +767,8 @@ @media all and (min-width: 62.5em) { .headerTop { - padding: 0.8em 0; + padding-left: 0.8em; + padding-right: 0.8em; } .headerTabs { @@ -776,7 +776,7 @@ width: auto; align-items: center; justify-content: center; - margin-top: -3.34em; + margin-top: -4.3em; position: relative; } diff --git a/src/components/emby-tabs/emby-tabs.css b/src/components/emby-tabs/emby-tabs.css index 8d1ac464fb..733a05fb0b 100644 --- a/src/components/emby-tabs/emby-tabs.css +++ b/src/components/emby-tabs/emby-tabs.css @@ -1,4 +1,7 @@ .emby-tab-button { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; background: transparent; box-shadow: none; cursor: pointer; @@ -10,7 +13,7 @@ vertical-align: middle; flex-shrink: 0; margin: 0; - padding: 1em 0.9em; + padding: 1.5em; position: relative; height: auto; min-width: initial; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 4912e591c7..58e9ab1856 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -311,6 +311,14 @@ html { .emby-tab-button-active { color: #fff; + border-bottom: 2px solid #fff; + padding-top: 1.55em; + padding-bottom: 1.38em; +} + +.layout-mobile .emby-tab-button-active { + padding-top: 1.56em; /* Add one pixel to get a better fit in mobile layout */ + padding-bottom: 1.38em; } .emby-tab-button.show-focus:focus { From f2735dc5a2c0dafc7fa0eac4c6f37c2d94059f52 Mon Sep 17 00:00:00 2001 From: DJSweder Date: Sat, 1 Feb 2020 05:45:36 +0000 Subject: [PATCH 058/260] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 14d2aa4874..5f0c1e60b3 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1558,5 +1558,7 @@ "OptionRandom": "Náhodně", "SelectAdminUsername": "Vyberte uživatelské jméno pro účet správce.", "HeaderNavigation": "Navigace", - "ButtonSplit": "Rozdělit" + "ButtonSplit": "Rozdělit", + "MessageConfirmAppExit": "Přejete si odejít?", + "CopyStreamURLError": "Při kopírování URL došlo k chybě." } From 34ef7610773c0046eb8b83253b92a4a91f91ea1f Mon Sep 17 00:00:00 2001 From: Nutjob Date: Fri, 31 Jan 2020 21:45:01 +0000 Subject: [PATCH 059/260] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 120 +++++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index a54203665c..19ed9b741e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -32,7 +32,7 @@ "Artists": "Artisti", "AsManyAsPossible": "Tutto il possibile", "Ascending": "Crescente", - "AspectRatio": "Rapporto d'aspetto", + "AspectRatio": "Rapporto d'Aspetto", "AttributeNew": "Nuovo", "AutoBasedOnLanguageSetting": "Auto (basato sull'impostazione della lingua)", "Backdrop": "Sfondo", @@ -574,57 +574,57 @@ "LabelEvent": "Evento:", "LabelEveryXMinutes": "Tutti:", "LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione della libreria", - "LabelExtractChaptersDuringLibraryScanHelp": "Se abilitata, le immagini capitolo verranno estratti quando i video vengono importati durante la scansione della libreria. Se disabilitata verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", + "LabelExtractChaptersDuringLibraryScanHelp": "Genera le immagini del capitolo quando i video vengono importati durante la scansione della libreria. Altrimenti verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", "LabelFailed": "Fallito", "LabelFileOrUrl": "File o URL:", "LabelFinish": "Finito", "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server sulla rete.Se lasciato vuoto verra usato il nome del pc", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e verrà usato di default come nome del pc.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", "LabelH264EncodingPreset": "Preset di codifica H264:", "LabelHardwareAccelerationType": "Accelerazione Hardware:", - "LabelHardwareAccelerationTypeHelp": "Disponibile solo su sistemi supportati.", + "LabelHardwareAccelerationTypeHelp": "Questa è una componente sperimentale disponibile solo su sistemi supportati.", "LabelHomeNetworkQuality": "Qualità della rete domestica:", "LabelHomeScreenSectionValue": "Pagina iniziale Sezione {0}:", - "LabelHttpsPort": "Porta HTTPS locale", - "LabelHttpsPortHelp": "Numero di porta TCP da associare al server https di Jellyfin", - "LabelIconMaxHeight": "Altezza Icona massima:", + "LabelHttpsPort": "Porta HTTPS locale:", + "LabelHttpsPortHelp": "Numero di porta TCP da associare al server HTTPS di Jellyfin.", + "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", - "LabelIconMaxWidth": "Larghezza massima Icona:", + "LabelIconMaxWidth": "Larghezza massima icona:", "LabelIconMaxWidthHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", "LabelImageType": "Tipo immagine:", "LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN.", - "LabelInNetworkSignInWithEasyPasswordHelp": "Se attivata, sarai in grado di utilizzare il tuo codice pin facile per accedere alle app di Jellyfin all'interno della tua rete domestica. La tua password usuale sarà necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Usa il codice pin facile per accedere alle app all'interno della tua rete domestica. La tua password usuale sarà necessaria solo per accedere alle app quando sei fuori casa. Se il codice PIN viene lasciato vuoto, non avrai bisogno di una password quando sei all'interno della tua rete domestica.", "LabelInternetQuality": "Qualità Internet:", "LabelKeepUpTo": "Conservane fino a:", "LabelKidsCategories": "Categorie bambini:", "LabelKodiMetadataDateFormat": "Data di uscita Formato:", - "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno del nfo verranno letti e scritti utilizzando questo formato.", + "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno dei files NFO verranno analizzate utilizzando questo formato.", "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart in extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Copia extrafanart in extrathumbs", "LabelKodiMetadataEnablePathSubstitution": "Abilita sostituzione di percorso", "LabelKodiMetadataEnablePathSubstitutionHelp": "Consente percorso sostituzione dei percorsi delle immagini utilizzando le impostazioni di sostituzione percorso del server.", "LabelKodiMetadataSaveImagePaths": "Salva percorsi delle immagini all'interno dei file NFO", "LabelKodiMetadataSaveImagePathsHelp": "Questo è consigliato se si dispone di nomi di file immagine che non sono conformi alle linee guida Kodi.", - "LabelKodiMetadataUser": "Salva dati utente in file nfo per:", - "LabelKodiMetadataUserHelp": "Abilita questa opzione per salvare i dati in file Nfo per usarli in altre applicazioni", + "LabelKodiMetadataUser": "Salva dati utente nei files NFO per:", + "LabelKodiMetadataUserHelp": "Salvare i dati nei filse NFO per usarli in altre applicazioni.", "LabelLanNetworks": "Reti LAN:", "LabelLanguage": "Lingua:", "LabelLineup": "Allineare:", - "LabelLocalHttpServerPortNumber": "Porta HTTP locale", - "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server http di Jellyfin", + "LabelLocalHttpServerPortNumber": "Porta HTTP locale:", + "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server HTTP di Jellyfin.", "LabelLockItemToPreventChanges": "Blocca questo elemento per impedire modifiche future", "LabelLoginDisclaimer": "Avviso Login:", - "LabelLoginDisclaimerHelp": "Questo verrà visualizzato nella parte inferiore della pagina di accesso.", + "LabelLoginDisclaimerHelp": "Un messaggio che verrà visualizzato nella parte inferiore della pagina di accesso.", "LabelLogs": "Log:", - "LabelManufacturer": "Produttore", + "LabelManufacturer": "Produttore:", "LabelManufacturerUrl": "URL del produttore", "LabelMaxBackdropsPerItem": "Massimo numero di sfondi per oggetto:", "LabelMaxChromecastBitrate": "Qualità streaming su Chromecast:", @@ -646,22 +646,22 @@ "LabelMetadataSaversHelp": "Scegliere i formati di file per salvare i metadati", "LabelMethod": "Metodo:", "LabelMinBackdropDownloadWidth": "Massima larghezza sfondo:", - "LabelMinResumeDuration": "Durata minima per il riprendi (secondi)", - "LabelMinResumeDurationHelp": "I film più corti non saranno riprendibili", - "LabelMinResumePercentage": "Percentuale minima per il riprendi", - "LabelMinResumePercentageHelp": "I film Sono considerati non visti se fermati prima di questo tempo", + "LabelMinResumeDuration": "Durata minima per il riprendi:", + "LabelMinResumeDurationHelp": "La durata video più corta in secondi che salverà la locazione di riproduzione e ti permetterà di riprendere.", + "LabelMinResumePercentage": "Percentuale minima per il riprendi:", + "LabelMinResumePercentageHelp": "I film sono considerati non visti se fermati prima di questo tempo.", "LabelMinScreenshotDownloadWidth": "Larghezza minima screenshot scaricati:", "LabelModelDescription": "Descrizione Modello", "LabelModelName": "Nome Modello", "LabelModelNumber": "Numero Modello", - "LabelModelUrl": "Url Modello", + "LabelModelUrl": "Modello URL", "LabelMonitorUsers": "Monitora l'attività da:", "LabelMovieCategories": "Categorie film:", "LabelMoviePrefix": "Prefisso film:", - "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che Jellyfin possa gestirlo correttamente.", + "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che il server possa gestirlo correttamente.", "LabelMovieRecordingPath": "Percorso di registrazione film (opzionale):", "LabelMusicStreamingTranscodingBitrate": "Musica trascodifica bitrate:", - "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il max Bitrate per lo streaming musica", + "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il massimo bitrate per lo streaming musicale.", "LabelName": "Nome:", "LabelNewName": "Nuovo nome:", "LabelNewPassword": "Nuova password:", @@ -702,9 +702,9 @@ "LabelProtocol": "Protocollo:", "LabelProtocolInfo": "Info protocollo:", "LabelProtocolInfoHelp": "Il valore che verrà utilizzato quando si risponde a richieste GetProtocolInfo dal dispositivo.", - "LabelPublicHttpPort": "Porta HTTP pubblica", + "LabelPublicHttpPort": "Porta HTTP pubblica:", "LabelPublicHttpPortHelp": "Numero di porta pubblica che dovrebbe essere mappato sulla porta HTTP locale.", - "LabelPublicHttpsPort": "Numero porta HTTPS pubblica", + "LabelPublicHttpsPort": "Numero porta HTTPS pubblica:", "LabelPublicHttpsPortHelp": "Numero della porta pubblica che dovrebbe essere mappato sulla porta HTTPS locale.", "LabelReadHowYouCanContribute": "Scopri come puoi contribuire.", "LabelReasonForTranscoding": "Motivo per la transcodifica:", @@ -765,9 +765,9 @@ "LabelTrackNumber": "Numero traccia:", "LabelTranscodingAudioCodec": "Codec Audio:", "LabelTranscodingContainer": "contenitore:", - "LabelTranscodingTempPathHelp": "Questa cartella contiene i file di lavoro utilizzati dal transcoder. Specificare un percorso personalizzato, oppure lasciare vuoto per utilizzare l'impostazione predefinita all'interno della cartella dei dati del server.", + "LabelTranscodingTempPathHelp": "Specifica un percorso personalizzato per la transcodifica dei files utilizzati dai client. Lasciare vuoto per utilizzare l'impostazione predefinita dal server.", "LabelTranscodingThreadCount": "Transcodifica numero di thread:", - "LabelTranscodingThreadCountHelp": "Selezionare il numero massimo di thread da utilizzare durante la transcodifica. Ridurre il numero di thread si abbasserà l'utilizzo della CPU, ma non può convertire abbastanza veloce per un'esperienza di riproduzione fluida.", + "LabelTranscodingThreadCountHelp": "Selezionare il numero massimo di thread da utilizzare durante la transcodifica. Ridurre il numero di thread si abbasserà l'utilizzo della CPU, ma può non convertire abbastanza veloce per un'esperienza di riproduzione fluida.", "LabelTranscodingVideoCodec": "Codec Video:", "LabelTriggerType": "Tipo Evento:", "LabelTunerIpAddress": "Tuner Indirizzo IP:", @@ -779,7 +779,7 @@ "LabelUserAgent": "Agente utente:", "LabelUserLibrary": "Libreria utente:", "LabelUserLibraryHelp": "Selezionare la libreria utente da visualizzare sul dispositivo. Lasciare vuoto per ereditare l'impostazione predefinita.", - "LabelUserRemoteClientBitrateLimitHelp": "Questo sovrascriverà il valore globale predefinito impostato nelle impostazioni di riproduzione del server.", + "LabelUserRemoteClientBitrateLimitHelp": "Sovrascrive il valore globale predefinito impostato nelle impostazioni di riproduzione del server.", "LabelUsername": "Nome utente", "LabelVaapiDevice": "Dispositivo VA API:", "LabelVaapiDeviceHelp": "Questo è il nodo rendering usato dall'accelerazione hardware.", @@ -799,7 +799,7 @@ "Large": "Grande", "LatestFromLibrary": "Ultimi {0}", "LearnHowYouCanContribute": "Scopri come puoi contribuire.", - "LibraryAccessHelp": "Seleziona le cartelle multimediali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", + "LibraryAccessHelp": "Seleziona le librerie da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", "Like": "Mi piace", "List": "Lista", "Live": "In diretta", @@ -842,38 +842,38 @@ "MessageConfirmRemoveMediaLocation": "Sei sicuro di voler rimuovere questa posizione?", "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Jellyfin?", "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente", - "MessageConfirmShutdown": "Sei sicuro di voler spegnere il Server Jellyfin?", + "MessageConfirmShutdown": "Sei sicuro di voler spegnere il server?", "MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.", "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", "MessageDirectoryPickerInstruction": "Percorsi di rete possono essere inseriti manualmente nel caso in cui il pulsante Rete non riesce a individuare i vostri dispositivi. Ad esempio, {0} o {1}", - "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, OpenSuse o Ubuntu, è necessario concedere all'utente del sistema Jellyfin almeno l'accesso alle posizioni di archiviazione.", + "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", "MessageFileReadError": "Si è verificato un errore durante la lettura del file. Si prega di riprovare.", "MessageForgotPasswordFileCreated": "Il seguente file è stato creato sul server e contiene le istruzioni su come procedere:", "MessageForgotPasswordInNetworkRequired": "Riprova all'interno della rete domestica per avviare il processo di reimpostazione della password.", - "MessageInstallPluginFromApp": "Questo Plugin deve essere installato dall'app in cui vuoi farlo funzionare", - "MessageInvalidForgotPasswordPin": "Un pin Invalido o scaduto è stato inserito. Riprova.", + "MessageInstallPluginFromApp": "Questo plugin deve essere installato dall'app in cui vuoi farlo funzionare.", + "MessageInvalidForgotPasswordPin": "É stato inserito un codice pin invalido o scaduto . Riprova.", "MessageInvalidUser": "Utente o password errato. Riprova", "MessageItemSaved": "Elemento salvato.", "MessageItemsAdded": "Elementi aggiunti.", - "MessageLeaveEmptyToInherit": "Lascia vuoto per ereditare le impostazioni dall'elemento principale, o il valore predefinito globale.", + "MessageLeaveEmptyToInherit": "Lascia vuoto per ereditare le impostazioni dall'elemento principale o il valore predefinito globale.", "MessageNoAvailablePlugins": "Nessun plugin disponibile.", "MessageNoMovieSuggestionsAvailable": "Nessun suggerimento di film attualmente disponibile. Iniziare a guardare e valutare i vostri film, e poi tornare per i suggerimenti.", "MessageNoPluginsInstalled": "Non hai plugin installati", "MessageNoTrailersFound": "Nessun Trailer trovato.Installa Il plug in dei trailer per importare la libreria dei trailer da internet", "MessageNothingHere": "Non c'è niente qui.", - "MessagePasswordResetForUsers": "Le password sono state rimosse dai seguenti utenti. Per accedere lasciare vuoto il campo password.", - "MessagePlayAccessRestricted": "Le riproduzione di questi contenuti è bloccata. Per favore contatta il tuo amministratore Jellyfin Server per maggiori informazioni.", + "MessagePasswordResetForUsers": "I seguenti utenti havvo avuto le loro password resettate. Adesso possono accedere con i codici pin che sono stati utilizzati per eseguire il reset.", + "MessagePlayAccessRestricted": "Le riproduzione di questi contenuti è bloccata. Per favore contatta il tuo amministratore del server per maggiori informazioni.", "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati Internet sia abilitato.", "MessagePleaseWait": "Per favore attendi. La procedura potrebbe impiegare qualche minuto.", "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.", "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità Jellyfin sono un ottimo modo per migliorare l'esperienza di Jellyfin con funzionalità e vantaggi aggiuntivi. Prima di installare, si prega di notare gli effetti che possono avere sul tuo server Jellyfin, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", "MessageReenableUser": "Guarda in basso per ri-abilitare", "MessageSettingsSaved": "Settaggi salvati.", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria Jellyfin:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria:", "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al server selezionato al momento. Per favore assicurati che sia in esecuzione e riprova.", "MessageUnsetContentHelp": "Il contenuto verrà visualizzato come pianura cartelle. Per ottenere i migliori risultati utilizzare il gestore di metadati per impostare i tipi di contenuto di sottocartelle.", "MessageYouHaveVersionInstalled": "Attualmente hai la versione {0} installato.", @@ -883,10 +883,10 @@ "MinutesBefore": "minuti prima", "Monday": "Lunedì", "MoreFromValue": "Altro di {0}", - "MoreUsersCanBeAddedLater": "Altri utenti possono essere aggiunti in un secondo momento dal Pannello di Controllo.", + "MoreUsersCanBeAddedLater": "Altri utenti possono essere aggiunti in un secondo momento dal pannello di controllo.", "MoveLeft": "Sposta a sinistra", "MoveRight": "Sposta a destra", - "MovieLibraryHelp": "Rivedere la {0} guida di denominazione del film Jellyfin {1}.", + "MovieLibraryHelp": "Rivedere la {0} guida di denominazione dei film{1}.", "Movies": "Film", "Mute": "Muto", "MySubtitles": "I miei Sottotitoli", @@ -912,7 +912,7 @@ "OneChannel": "Un canale", "OnlyForcedSubtitles": "Solo i sottotitoli forzati", "OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", - "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB / IDX, ecc.)", + "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB, ecc)", "OptionAdminUsers": "Amministratori", "OptionAlbumArtist": "Artista Album", "OptionAllUsers": "Tutti gli utenti", @@ -957,7 +957,7 @@ "OptionDisableUserHelp": "Se disabilitato, il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", "OptionDislikes": "Non mi piace", "OptionDisplayFolderView": "Visualizza cartelle come normali cartelle dei media", - "OptionDisplayFolderViewHelp": "Se abilitato, le applicazioni Jellyfin visualizzeranno una categoria Cartelle accanto alla libreria multimediale. Ciò è utile se si desidera avere viste di cartelle semplici.", + "OptionDisplayFolderViewHelp": "Visualizza le cartelle accanto alle librerie multimediali. Questo può essere utile se si desidera avere una vista di cartelle semplici.", "OptionDownloadBackImage": "Indietro", "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", @@ -970,7 +970,7 @@ "OptionEnableAccessToAllChannels": "Abilita l'accesso a tutti i canali", "OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie", "OptionEnableExternalContentInSuggestions": "Abilita contenuto remoto nei suggerimenti", - "OptionEnableExternalContentInSuggestionsHelp": "Consenti l'inclusione di trailer Internet e programmi TV tra i contenuti suggeriti.", + "OptionEnableExternalContentInSuggestionsHelp": "Consenti l'inclusione di trailer da Internet e programmi TV in diretta tra i contenuti suggeriti.", "OptionEnableForAllTuners": "Abilita per tutti i sintonizzatori", "OptionEnableM2tsMode": "Attiva modalità M2TS", "OptionEnableM2tsModeHelp": "Attivare la modalità m2ts durante la codifica di mpegts.", @@ -988,8 +988,8 @@ "OptionHasThemeVideo": "Video Sigla", "OptionHideUser": "Nascondi questo utente dalla schermata di accesso", "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avrà bisogno di accedere manualmente utilizzando la propria username e password", - "OptionHlsSegmentedSubtitles": "Hls segmentato sottotitoli", - "OptionHomeVideos": "Video e foto personali", + "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", + "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se abilitata, queste richieste saranno onorate, ma ignorano l'intervallo di byte.", "OptionImdbRating": "Voto IMDB", @@ -1027,7 +1027,7 @@ "OptionThursday": "Giovedì", "OptionTrackName": "Titolo Traccia", "OptionTuesday": "Martedì", - "OptionTvdbRating": "Voto Tvdb", + "OptionTvdbRating": "Voto TVDB", "OptionUnairedEpisode": "Episodi mai andati in onda", "OptionUnplayed": "Non visto", "OptionWakeFromSleep": "Risveglio:", @@ -1062,7 +1062,7 @@ "Playlists": "Playlist", "PleaseAddAtLeastOneFolder": "Per favore aggiungi almeno una cartella alla raccolta cliccando sul pulsante Aggiungi.", "PleaseConfirmPluginInstallation": "Per favore premi OK per confermare che hai letto quanto precede e che vuoi procedere all'installazione del plug-in.", - "PleaseEnterNameOrId": "Per favore inserisci un nome o un id esterno.", + "PleaseEnterNameOrId": "Per favore inserisci un nome o un ID esterno.", "PleaseRestartServerName": "Per favore riavvia Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Seleziona almeno due elementi.", "PluginInstalledMessage": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", @@ -1129,7 +1129,7 @@ "SendMessage": "Invio messaggio", "Series": "Serie TV", "SeriesCancelled": "Serie TV annullate.", - "SeriesDisplayOrderHelp": "Ordina gli episodi per data messa in onda, ordine dvd o numerazione assoluta.", + "SeriesDisplayOrderHelp": "Ordina gli episodi per data messa in onda, ordine DVD o numerazione assoluta.", "SeriesRecordingScheduled": "Registrazione serie TV pianificata.", "SeriesSettings": "Impostazioni Serie TV", "SeriesYearToPresent": "{0} - Oggi", @@ -1161,7 +1161,7 @@ "Sports": "Sport", "StopRecording": "Ferma registrazione", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Queste impostazioni si applicano anche a qualsiasi riproduzione di Chromecast avviata da questo dispositivo.", - "SubtitleAppearanceSettingsDisclaimer": "Queste impostazioni non si applicano a sottotitoli grafici (PGS, DVD, ecc.), o sottotitoli che hanno i propri stili incorporati (ASS / SSA).", + "SubtitleAppearanceSettingsDisclaimer": "Queste impostazioni non si applicano a sottotitoli grafici (PGS, DVD, ecc.) o sottotitoli ASS/SSA che hanno i propri stili.", "SubtitleDownloadersHelp": "Abilita e classifica i tuoi downloader di sottotitoli preferiti in ordine di priorità.", "Subtitles": "Sottotitoli", "Suggestions": "Suggerimenti", @@ -1194,7 +1194,7 @@ "TabMusicVideos": "Video Musicali", "TabMyPlugins": "I miei Plug-in", "TabNetworks": "Reti", - "TabNfoSettings": "Impostazioni nfo", + "TabNfoSettings": "Impostazioni NFO", "TabNotifications": "Notifiche", "TabOther": "Altro", "TabParentalControl": "Controllo Genitore", @@ -1204,7 +1204,7 @@ "TabProfiles": "Profili", "TabRecordings": "Registrazioni", "TabResponses": "Risposte", - "TabResumeSettings": "Ripristina Impostazioni", + "TabResumeSettings": "Ripristina", "TabScheduledTasks": "Operazioni Pianificate", "TabSeries": "Serie TV", "TabSettings": "Impostazioni", @@ -1230,7 +1230,7 @@ "Trailers": "Trailer", "Transcoding": "Trascodifica", "Tuesday": "Martedì", - "TvLibraryHelp": "Rivedere la {0} guida di denominazione Jellyfin TV {1}.", + "TvLibraryHelp": "Rivedere la {0} guida di denominazione TV{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Sei sicuro di voler Disinstallare {0}?", "UninstallPluginHeader": "Disinstalla Plugin", @@ -1239,8 +1239,8 @@ "Unrated": "Non votato", "Up": "Su", "Upload": "Carica", - "UserAgentHelp": "Fornire un'intestazione http personalizzata per utente-agente, se necessario.", - "UserProfilesIntro": "Jellyfin include il supporto integrato per i profili utente, che permette ad ogni utente di avere le proprie impostazioni di visualizzazione, stato di riproduzione e controlli parentali.", + "UserAgentHelp": "Fornire un'intestazione HTTP personalizzata per utente-agente.", + "UserProfilesIntro": "Jellyfin include il supporto per i profili utente con impostazioni di visualizzazione granulare, stato di riproduzione, e controlli parentali.", "ValueAlbumCount": "{0} album", "ValueAudioCodec": "Codec Audio: {0}", "ValueConditions": "Condizioni: {0}", @@ -1269,13 +1269,13 @@ "Watched": "Visto", "Wednesday": "Mercoledì", "WelcomeToProject": "Benvenuto in Jellyfin!", - "WizardCompleted": "Questo è tutto ciò che serve per ora. Jellyfin ha iniziato a raccogliere informazioni sulla tua libreria di media. Scopri alcune delle nostre app, quindi clicca su Fine per visualizzare il Pannello di Controllo del server.", + "WizardCompleted": "Questo è tutto ciò che serve per ora. Jellyfin ha iniziato a raccogliere informazioni sulla tua libreria di media. Scopri alcune delle nostre app, quindi clicca su Fine per visualizzare il Pannello di Controllo.", "Writer": "Scrittore", "XmlDocumentAttributeListHelp": "Questi attributi vengono applicati all'elemento radice di ogni risposta XML.", "XmlTvKidsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi per i bambini. Separa multipli con '|'.", "XmlTvMovieCategoriesHelp": "I programmi con queste categorie saranno visualizzati come filmati. Separa multipli con '|'.", "XmlTvNewsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi di news. Separa multipli con '|'.", - "XmlTvPathHelp": "Un percorso di un file xml tv. Jellyfin leggerà questo file e controlla periodicamente per gli aggiornamenti. Sei responsabile della creazione e dell'aggiornamento del file.", + "XmlTvPathHelp": "Un percorso di un file XMLTV. Jellyfin leggerà questo file e controlla periodicamente per gli aggiornamenti. Sei responsabile della creazione e dell'aggiornamento del file.", "XmlTvSportsCategoriesHelp": "I programmi con queste categorie saranno visualizzati come programmi sportivi. Separa multipli con '|'.", "Yes": "Si", "Yesterday": "Ieri", @@ -1402,7 +1402,7 @@ "DashboardServerName": "Server: {0}", "LabelVideo": "Video:", "DashboardArchitecture": "Architettura: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server", "LaunchWebAppOnStartupHelp": "Apri il client web nel tuo web browser quando il server si avvia inizialmente. Ciò non accadrà quando si usa la funzione riavvio server.", "LeaveBlankToNotSetAPassword": "Puoi lasciare questo campo vuoto per non impostare alcuna password.", @@ -1450,5 +1450,11 @@ "TabStreaming": "Streaming", "ValueCodec": "Codec: {0}", "ValueMinutes": "{0} min", - "ValueOneAlbum": "1 album" + "ValueOneAlbum": "1 album", + "ButtonSplit": "Dividi", + "SelectAdminUsername": "Scegli un nome utente per l'account d'amministratore.", + "OptionRandom": "Casuale", + "MessageConfirmAppExit": "Vuoi uscire?", + "HeaderNavigation": "Navigazione", + "CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo." } From 128dc8598b0492bdf92ea9985c9b50087006e3ed Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Sat, 1 Feb 2020 14:35:17 +0000 Subject: [PATCH 060/260] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 104 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 3 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index d5822cd26a..89df6ba163 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1002,7 +1002,7 @@ "RequiredForAllRemoteConnections": "Necessário para todas as ligações externas", "ReplaceAllMetadata": "Substituir todos os metadados", "RepeatOne": "Repetir este", - "RepeatMode": "Modo de repetição", + "RepeatMode": "Modo de Repetição", "ServerRestartNeededAfterPluginInstall": "O Servidor Jellyfin necessitará de reiniciar depois de instalar uma extensão.", "NoPluginConfigurationMessage": "Esta extensão não é configurável.", "MessagePluginInstallDisclaimer": "As extensões desenvolvidas pela comunidade Jellyfin são uma ótima forma de melhorar a experiência de utilização do Jellyfin, adicionando novas funcionalidades e benefícios. Antes de proceder à instalação, tenha em atenção que estas podem alterar determinados comportamentos no Servidor Jellyfin e provocar efeitos como tempos de atualização da Biblioteca mais longos, processamento adicional em segundo plano e estabilidade do sistema reduzida.", @@ -1201,7 +1201,7 @@ "Home": "Início", "GuideProviderLogin": "Iniciar Sessão", "HeaderSubtitleDownloads": "Transferir legendas", - "LabelRecord": "Registo/Guardar", + "LabelRecord": "Gravação:", "LabelSkin": "Máscara:", "LabelMetadataDownloadersHelp": "Active e ordene os seus provedores de metadados por ordem de preferência. Provedores com menos prioriadade só serão usados para completar informação em falta.", "LabelMetadataReadersHelp": "Ordene as suas fontes preferidas de metadados por ordem de preferência. O primeiro ficheiro encontrado será utilizado.", @@ -1344,5 +1344,103 @@ "MusicAlbum": " Álbum de Música", "MoreMediaInfo": "Informações", "MediaInfoBitrate": "Taxa de Bits", - "LabelUserAgent": "User-Agent:" + "LabelUserAgent": "User-Agent:", + "MediaInfoAnamorphic": "Anamórfico", + "LabelTranscodes": "Transcodificação:", + "Whitelist": "Lista branca", + "VideoRange": "Alcance video", + "ValueOneAlbum": "1 álbum", + "ValueMusicVideoCount": "{0} videoclipes musicais", + "ValueMovieCount": "{0} filmes", + "ValueMinutes": "{0} min", + "ValueEpisodeCount": "{0} episódios", + "ValueDiscNumber": "Disco {0}", + "ValueContainer": "Contentor: {0}", + "ValueCodec": "Codec: {0}", + "ValueAlbumCount": "{0} álbuns", + "Upload": "Carregar", + "Up": "Cima", + "Unrated": "Sem avaliação", + "Transcoding": "Transcodificando", + "Trailers": "Videoclipes", + "TitleHostingSettings": "Configurações de Hospedagem", + "Thumb": "Miniatura", + "ThemeVideos": "Vídeos de tema", + "ThemeSongs": "Músicas de tema", + "TagsValue": "Etiquetas: {0}", + "Tags": "Etiquetas", + "TabTrailers": "Videoclipes", + "TabResumeSettings": "Resumir", + "TabLogs": "Logs", + "TabInfo": "Info", + "TabCodecs": "Codecs", + "Suggestions": "Sugestões", + "SortName": "Ordenar nome", + "SortByValue": "Ordenar por {0}", + "Sort": "Ordenar", + "Smart": "Inteligente", + "Smaller": "Menor", + "Small": "Pequeno", + "ShowTitle": "Mostrar título", + "ShowIndicatorsFor": "Mostrar indicadores para:", + "ServerNameIsShuttingDown": "Jellyfin Server - {0} está a desligar.", + "ServerNameIsRestarting": "Jellyfin Server - {0} está a reiniciar.", + "SeriesYearToPresent": "{0} - Presente", + "SeriesSettings": "Configuração de série", + "SeriesCancelled": "Série cancelada.", + "SelectAdminUsername": "Por favor selecione um nome de utilizador para a conta de administração.", + "RepeatEpisodes": "Repetir episódios", + "RepeatAll": "Repetir tudo", + "RemoveFromCollection": "Remover da coleção", + "RememberMe": "Lembrar-me", + "ReleaseDate": "Data de lançamento", + "RefreshQueued": "Recarregar na fila.", + "RefreshMetadata": "Recarregar metadados", + "RecentlyWatched": "Vistos recentemente", + "Rate": "Avaliação", + "QueueAllFromHere": "Fila a partir daqui", + "Quality": "Qualidade", + "ProductionLocations": "Localizações de produção", + "Primary": "Primário", + "Previous": "Anterior", + "Premieres": "Estreias", + "Premiere": "Estreia", + "PreferredNotRequired": "Prefiro, mas não obrigatório", + "PreferEmbeddedTitlesOverFileNames": "Preferir títulos embutidos a nomes de ficheiro", + "PictureInPicture": "Imagem em imagem", + "OptionThumbCard": "Miniatura cartão", + "OptionThumb": "Miniatura", + "OptionPosterCard": "Poster cartão", + "OptionPoster": "Poster", + "OptionDownloadBannerImage": "Cartaz", + "OptionDisplayFolderView": "Mostre em vista de pasta para ver pastas de mídia", + "OptionBanner": "Cartaz", + "NewCollectionHelp": "Coleções permitem criar grupos personalizados de filmes e outros tipos de conteúdo.", + "MusicLibraryHelp": "Reveja o {0}guia de nomeação de música{1}.", + "MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.", + "MessageConfirmAppExit": "Quer sair?", + "MediaInfoRefFrames": "Ref quadros", + "MediaInfoLayout": "Disposição", + "MediaInfoDefault": "Padrão", + "MediaInfoBitDepth": "Bit profundidade", + "Logo": "Logotipo", + "LinksValue": "Ligações: {0}", + "Like": "Gosto", + "LaunchWebAppOnStartupHelp": "Abra o cliente web no ser browser padrão quando o servidor iniciar. Isto não acontecerá usando uma função de reiniciar de servidor.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", + "LabelVaapiDevice": "VA API Dispositivo:", + "LabelTypeMetadataDownloaders": "{0} transferências de metadados:", + "LabelTheme": "Tema:", + "LabelTVHomeScreen": "TV modo ecrã de casa:", + "LabelSubtitleDownloaders": "Transferência de legendas:", + "LabelParentNumber": "Número fonte:", + "LabelMetadataSavers": "Gravadores de metadados:", + "LabelAudioBitDepth": "Áudio bit quantidade:", + "HeaderNavigation": "Navegação", + "EnableStreamLooping": "Auto-cíclico de streams ao vivo", + "Down": "Baixo", + "CopyStreamURLError": "Ocorreu um erro a copiar o URL.", + "ButtonSplit": "Dividir" } From a72d05db84352c2b1bbcbd5ba3361faac141df6b Mon Sep 17 00:00:00 2001 From: 4d1m Date: Sat, 1 Feb 2020 22:15:46 +0000 Subject: [PATCH 061/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index c21b57198b..d18607642c 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1453,5 +1453,7 @@ "TabCatalog": "Registru", "TV": "TV", "SystemDlnaProfilesHelp": "Profilele de sistem pot fi numai citite. Modificările aduse unui profil de sistem vor fi salvate într-un nou profil personalizat.", - "HeaderNavigation": "Navigare" + "HeaderNavigation": "Navigare", + "MessageConfirmAppExit": "Vrei să ieși?", + "CopyStreamURLError": "A apărut o eroare la copierea adresei URL." } From 2e6b2b5f82a9480fddc5707e8a1ad53dff2810aa Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Sun, 2 Feb 2020 14:13:43 +0100 Subject: [PATCH 062/260] Added back old URL copy method as fallback --- src/components/itemcontextmenu.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index cfbdb260d6..b6dce6b2e6 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -351,10 +351,22 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", toast(globalize.translate("CopyStreamURLSuccess")); }); }, function () { - prompt(globalize.translate("CopyStreamURL"), downloadHref); - require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLSuccess")); - }); + var textArea = document.createElement("textarea"); + textArea.value = downloadHref; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + if (document.execCommand("copy")) { + require(["toast"], function (toast) { + toast(globalize.translate("CopyStreamURLSuccess")); + }); + } else { + prompt(globalize.translate("CopyStreamURL"), downloadHref); + require(["toast"], function (toast) { + toast(globalize.translate("CopyStreamURLSuccess")); + }); + } + document.body.removeChild(textArea); }); getResolveFunction(resolve, id)(); break; From ae5bea2a94908ed9f066ffdd99f33c294b97a173 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sun, 2 Feb 2020 22:18:31 +0800 Subject: [PATCH 063/260] Update src/strings/en-us.json Co-Authored-By: dkanada --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 78ab7eb1e3..b3b716844d 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -610,7 +610,7 @@ "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. A value of one will preserve the original volume.", "LabelDownloadLanguages": "Download languages:", "LabelDropImageHere": "Drop image here, or click to browse.", - "LabelDroppedFrames": "Dropped frames:", + "LabelDroppedFrames": "Dropped frames:", "LabelDropShadow": "Drop shadow:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "Easy pin code:", From 5dd2a73f6f8f18ad2056dec23186c0959174ce39 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 2 Feb 2020 11:58:14 +0000 Subject: [PATCH 064/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 94c235a7d7..1ef1071d0f 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1459,5 +1459,6 @@ "OptionRandom": "随机", "ButtonSplit": "拆分", "SelectAdminUsername": "请为管理员账户选择一个用户名。", - "HeaderNavigation": "导航" + "HeaderNavigation": "导航", + "CopyStreamURLError": "复制URL地址时发生错误。" } From 9c21e92e04877bf83a9b1d8f68c8964b9dc2bf0e Mon Sep 17 00:00:00 2001 From: Nutjob Date: Sun, 2 Feb 2020 20:21:10 +0000 Subject: [PATCH 065/260] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 19ed9b741e..18b08f8853 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -595,7 +595,7 @@ "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIconMaxWidth": "Larghezza massima icona:", - "LabelIconMaxWidthHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", + "LabelIconMaxWidthHelp": "Risoluzione massima delle icone esposte tramite upnp:icon.", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", "LabelImageType": "Tipo immagine:", @@ -607,7 +607,7 @@ "LabelKidsCategories": "Categorie bambini:", "LabelKodiMetadataDateFormat": "Data di uscita Formato:", "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno dei files NFO verranno analizzate utilizzando questo formato.", - "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart in extrathumbs", + "LabelKodiMetadataEnableExtraThumbs": "Copia extrafanart nel campo extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Copia extrafanart in extrathumbs", "LabelKodiMetadataEnablePathSubstitution": "Abilita sostituzione di percorso", "LabelKodiMetadataEnablePathSubstitutionHelp": "Consente percorso sostituzione dei percorsi delle immagini utilizzando le impostazioni di sostituzione percorso del server.", @@ -1456,5 +1456,7 @@ "OptionRandom": "Casuale", "MessageConfirmAppExit": "Vuoi uscire?", "HeaderNavigation": "Navigazione", - "CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo." + "CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo.", + "EnableFastImageFadeInHelp": "Abilita la dissolvenza veloce per le immagini caricate", + "EnableFastImageFadeIn": "Dissolvenza immagine veloce" } From c2ffca6d56186097b6f71334e5b6339937aa1424 Mon Sep 17 00:00:00 2001 From: Kimme Utsi Date: Mon, 3 Feb 2020 00:12:07 +0000 Subject: [PATCH 066/260] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index f708c33245..1f801f8fa7 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1454,5 +1454,9 @@ "Raised": "Hevet", "ButtonSplit": "Del opp", "SelectAdminUsername": "Vennligst velg et brukernavn for administrator-kontoen.", - "HeaderNavigation": "Navigering" + "HeaderNavigation": "Navigering", + "MessageConfirmAppExit": "Vil du avslutte?", + "EnableFastImageFadeInHelp": "Bruk rask inntoning av animasjon for lastede bilder", + "EnableFastImageFadeIn": "Rask bilde inntoning", + "CopyStreamURLError": "Det var en feil under kopiering av URL'en." } From 8a28a65ab9b4da2702c416ba4aa2816c0fd111c8 Mon Sep 17 00:00:00 2001 From: Fernando Date: Mon, 3 Feb 2020 16:36:00 +0000 Subject: [PATCH 067/260] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 86f32d3d54..426aacb86e 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1461,5 +1461,9 @@ "OptionRandom": "Aleatorio", "SelectAdminUsername": "Por favor seleccione un nombre de usuario para la cuenta de administrador.", "ButtonSplit": "Dividir", - "HeaderNavigation": "Navegación" + "HeaderNavigation": "Navegación", + "MessageConfirmAppExit": "¿Quieres salir?", + "EnableFastImageFadeInHelp": "Las imágenes que hayan terminado de cargarse mostrarán una pequeña animación", + "EnableFastImageFadeIn": "Cargar las imágenes suavemente", + "CopyStreamURLError": "Ha habido un error copiando la dirección." } From 3b84aef18376edf88e4e2dd07788868b98e7476f Mon Sep 17 00:00:00 2001 From: 4d1m Date: Mon, 3 Feb 2020 20:26:41 +0000 Subject: [PATCH 068/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index d18607642c..a983d98c7a 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1455,5 +1455,7 @@ "SystemDlnaProfilesHelp": "Profilele de sistem pot fi numai citite. Modificările aduse unui profil de sistem vor fi salvate într-un nou profil personalizat.", "HeaderNavigation": "Navigare", "MessageConfirmAppExit": "Vrei să ieși?", - "CopyStreamURLError": "A apărut o eroare la copierea adresei URL." + "CopyStreamURLError": "A apărut o eroare la copierea adresei URL.", + "EnableFastImageFadeInHelp": "Activați animația mai rapidă de tranziție pentru imaginile încărcate", + "EnableFastImageFadeIn": "Tranziție a imaginii rapidă" } From d25ba7c711197885ac33f40e2ce3081ef043d0c2 Mon Sep 17 00:00:00 2001 From: William Chu Date: Mon, 3 Feb 2020 16:54:59 +0000 Subject: [PATCH 069/260] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index d4d6141d14..ceb4af38f6 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1369,7 +1369,7 @@ "LabelUserLibraryHelp": "選擇在裝置上顯示的使用者媒體庫,留空則使用預設設定值。", "LabelUserLoginAttemptsBeforeLockout": "使用者被封鎖前可嘗試的次數:", "LabelVaapiDeviceHelp": "此渲染節點用來硬體加速。", - "LabelWeb": "網站: ", + "LabelWeb": "網站:", "LabelXDlnaCapHelp": "決定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的內容。", "LabelXDlnaDocHelp": "決定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X-Dlna doc 元素的內容。", "LaunchWebAppOnStartup": "在啟動伺服器時啟動使用者介面", @@ -1624,5 +1624,9 @@ "PlaceFavoriteChannelsAtBeginning": "將喜愛的頻道置頂", "PlaybackData": "恢復播放資料", "OptionRandom": "隨機", - "HeaderFavoritePeople": "最愛人物" + "HeaderFavoritePeople": "最愛人物", + "XmlDocumentAttributeListHelp": "這些屬性會在每一個XML回應的根元素上應用。", + "SkipEpisodesAlreadyInMyLibraryHelp": "劇集將使用季和劇集編號進行比較。", + "SelectAdminUsername": "請為管理員賬戶選擇一個用戶名。", + "CopyStreamURLError": "複製網址的時候發生錯誤." } From 5e86eb84314cd1484142ffae58110702c1080708 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 4 Feb 2020 21:25:00 +0100 Subject: [PATCH 070/260] Adjust details page ribbon margins and colors --- src/assets/css/librarybrowser.css | 2 +- src/themes/appletv/theme.css | 8 + src/themes/blueradiance/theme.css | 8 + src/themes/emby/theme.css | 432 ------------------------------ src/themes/light/theme.css | 8 + src/themes/purplehaze/theme.css | 7 + src/themes/wmc/theme.css | 4 + 7 files changed, 36 insertions(+), 433 deletions(-) delete mode 100644 src/themes/emby/theme.css diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8475b72b2f..9f1516c16e 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -499,7 +499,7 @@ align-items: center; align-content: center; position: sticky; - top: 8%; + top: 6.6%; z-index: 2; } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 9c3bc803ec..ccc6eaaabe 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -224,6 +224,14 @@ html { color: #fff !important; } +.detailSticky { + background: #303030; + background: -webkit-gradient(linear, left top, right top, from(#bcbcbc), color-stop(#a7b4b7), color-stop(#beb5a5), color-stop(#adbec2), to(#b9c7cb)); + background: -webkit-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: -o-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); + background: linear-gradient(to right, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); +} + .detailTableBodyRow-shaded:nth-child(even) { background: #f8f8f8; background: rgba(0, 0, 0, 0.1); diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index b1979e4901..63c765e4e6 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -216,6 +216,14 @@ html { color: #fff !important; } +.detailSticky { + background: #303030; + background: -webkit-gradient(linear, left top, right top, from(#291a31), color-stop(#033664), color-stop(#011432), color-stop(#141a3a), to(#291a31)); + background: -webkit-linear-gradient(left, #291a31, #033664, #011432, #141a3a, #291a31); + background: -o-linear-gradient(left, #291a31, #033664, #011432, #141a3a, #291a31); + background: linear-gradient(to right, #291a31, #033664, #011432, #141a3a, #291a31); +} + .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; background: rgba(30, 30, 30, 0.9); diff --git a/src/themes/emby/theme.css b/src/themes/emby/theme.css deleted file mode 100644 index ba0699cc65..0000000000 --- a/src/themes/emby/theme.css +++ /dev/null @@ -1,432 +0,0 @@ -.skinHeader, -html { - color: #ddd; - color: rgba(255, 255, 255, 0.8); -} - -.wizardStartForm, -.ui-corner-all, -.ui-shadow { - background-color: #1f1f1f; -} - -.emby-collapsible-button { - border-color: #383838; - border-color: rgba(255, 255, 255, 0.135); -} - -.skinHeader-withBackground { - background-color: #1f1f1f; -} - -.skinHeader.semiTransparent { - backdrop-filter: none !important; - background-color: rgba(0, 0, 0, 0.4); -} - -.pageTitleWithDefaultLogo { - background-image: url(../logowhite.png); -} - -.backgroundContainer, -.dialog, -html { - background-color: #1a1a1a; -} - -.backgroundContainer.withBackdrop { - background-color: rgba(0, 0, 0, 0.86); -} - -.paper-icon-button-light:hover:not(:disabled) { - color: #52b54b; - background-color: rgba(82, 181, 75, 0.2); -} - -.paper-icon-button-light.show-focus:focus { - color: #52b54b; -} - -.fab, -.raised { - background: #303030; - color: rgba(255, 255, 255, 0.87); -} - -.fab:focus, -.raised:focus { - background: #383838; -} - -.button-submit { - background: #52b54b; - color: #fff; -} - -.button-submit:focus { - background: #5ec157; - color: #fff; -} - -.button-delete { - background: rgb(247, 0, 0); - color: rgba(255, 255, 255, 0.87); -} - -.checkboxLabel { - color: inherit; -} - -.checkboxListLabel, -.inputLabel, -.inputLabelUnfocused, -.paperListLabel, -.textareaLabelUnfocused { - color: #bbb; - color: rgba(255, 255, 255, 0.7); -} - -.inputLabelFocused, -.selectLabelFocused, -.textareaLabelFocused { - color: #52b54b; -} - -.checkboxOutline { - border-color: currentColor; -} - -.collapseContent, -.formDialogFooter:not(.formDialogFooter-clear), -.formDialogHeader:not(.formDialogHeader-clear), -.paperList, -.visualCardBox { - background-color: #242424; -} - -.defaultCardBackground1 { - background-color: #d2b019; -} - -.defaultCardBackground2 { - background-color: #338abb; -} - -.defaultCardBackground3 { - background-color: #6b689d; -} - -.defaultCardBackground4 { - background-color: #dd452b; -} - -.defaultCardBackground5 { - background-color: #5ccea9; -} - -.cardText-secondary, -.fieldDescription, -.guide-programNameCaret, -.listItem .secondary, -.nowPlayingBarSecondaryText, -.programSecondaryTitle, -.secondaryText { - color: #999; - color: rgba(255, 255, 255, 0.5); -} - -.actionsheetDivider { - background: #444; - background: rgba(255, 255, 255, 0.14); -} - -.cardFooter-vibrant .cardText-secondary { - color: inherit; - opacity: 0.5; -} - -.actionSheetMenuItem:hover { - background-color: #242424; -} - -.toast { - background: #303030; - color: #fff; - color: rgba(255, 255, 255, 0.87); -} - -.appfooter { - background: #101010; - color: #ccc; - color: rgba(255, 255, 255, 0.78); -} - -.itemSelectionPanel { - border: 1px solid #52b54b; -} - -.selectionCommandsPanel { - background: #52b54b; - color: #fff; -} - -.upNextDialog-countdownText { - color: #52b54b; -} - -.alphaPickerButton { - color: #999; - color: rgba(255, 255, 255, 0.5); - background-color: transparent; -} - -.alphaPickerButton-selected { - color: #fff; -} - -.alphaPickerButton-tv:focus { - background-color: #52b54b; - color: #fff !important; -} - -.detailTableBodyRow-shaded:nth-child(even) { - background: #1c1c1c; - background: rgba(30, 30, 30, 0.9); -} - -.listItem-border { - border-color: rgba(34, 34, 34, 0.9) !important; -} - -.listItem:focus { - background: #333; -} - -.progressring-spiner { - border-color: #52b54b; -} - -.button-flat-accent, -.button-link { - color: #52b54b; -} - -.mediaInfoText { - color: #ddd; - background: rgba(170, 170, 190, 0.2); -} - -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - -.emby-input, -.emby-textarea { - color: inherit; - background: #292929; - border: 0.16em solid #292929; - border-radius: 0.2em; -} - -.emby-input:focus, -.emby-textarea:focus { - border-color: #52b54b; -} - -.emby-select-withcolor { - color: inherit; - background: #292929; - border: 0.07em solid #292929; -} - -.emby-select-withcolor > option { - color: inherit; - background: #222; -} - -.emby-select-withcolor:focus { - border-color: #52b54b !important; -} - -.emby-select-tv-withcolor:focus { - background-color: #52b54b !important; - color: #fff !important; -} - -.emby-checkbox:checked + span + .checkboxOutline { - border-color: #52b54b; -} - -.emby-checkbox:focus + span + .checkboxOutline { - border-color: #fff; -} - -.emby-checkbox:checked + span + .checkboxOutline, -.itemProgressBarForeground { - background-color: #52b54b; -} - -.emby-checkbox:focus:not(:checked) + span + .checkboxOutline { - border-color: #52b54b; -} - -.itemProgressBarForeground-recording { - background-color: #cb272a; -} - -.countIndicator, -.fullSyncIndicator, -.playedIndicator { - background: #52b54b; -} - -.fullSyncIndicator { - color: #fff; -} - -.mainDrawer { - background-color: #1c1c1c; -} - -.navMenuOption:hover { - background: #252528; -} - -.navMenuOption-selected { - background: #52b54b !important; - color: #fff; -} - -.emby-button.show-focus:focus { - background: #52b54b; - color: #fff; -} - -.emby-tab-button { - color: #999; -} - -.emby-tab-button-active { - color: #52b54b; -} - -.emby-tab-button.show-focus:focus { - color: #52b54b; -} - -.emby-tab-button:hover { - color: #52b54b; -} - -.channelPrograms, -.guide-channelHeaderCell, -.programCell { - border-color: rgba(255, 255, 255, 0.05); -} - -.programCell-sports { - background: #3949ab !important; -} - -.programCell-movie { - background: #5e35b1 !important; -} - -.programCell-kids { - background: #039be5 !important; -} - -.programCell-news { - background: #43a047 !important; -} - -.programCell-active { - background: #1e1e1e !important; -} - -.guide-channelHeaderCell:focus, -.programCell:focus { - background-color: #52b54b !important; - color: #fff !important; -} - -.guide-programTextIcon { - color: #1e1e1e; - background: #555; -} - -.guide-headerTimeslots { - color: inherit; -} - -.guide-date-tab-button { - color: #555; - color: rgba(255, 255, 255, 0.3); -} - -.guide-date-tab-button.emby-tab-button-active, -.guide-date-tab-button:focus { - color: #52b54b; -} - -.guide-date-tab-button.show-focus:focus { - background-color: #52b54b; - color: #fff; -} - -.infoBanner { - color: #ddd; - background: #111; - padding: 1em; - border-radius: 0.25em; -} - -.ratingbutton-icon-withrating { - color: #c33; -} - -.downloadbutton-icon-complete, -.downloadbutton-icon-on { - color: #4285f4; -} - -.playstatebutton-icon-played { - color: #c33; -} - -.repeatButton-active { - color: #4285f4; -} - -.card:focus .cardBox.visualCardBox, -.card:focus .cardBox:not(.visualCardBox) .cardScalable { - border-color: #52b54b !important; -} - -::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); -} - -::-webkit-scrollbar-track-piece { - background-color: #3b3b3b; -} - -.layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em; -} - -::-webkit-scrollbar-thumb:horizontal, -::-webkit-scrollbar-thumb:vertical { - border-radius: 2px; - background: center no-repeat #888; -} - -.timeslotHeaders-desktop::-webkit-scrollbar { - height: 0.7em; -} - -.metadataSidebarIcon { - color: #00a4dc; -} diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index c6e5bca899..cedc8bfb8b 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -218,6 +218,14 @@ html { color: #fff !important; } +.detailSticky { + background-color: #303030; + color: #ccc; + color: rgba(255, 255, 255, 0.87); + -webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); + box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); +} + .detailTableBodyRow-shaded:nth-child(even) { background: #f8f8f8; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 7f10c9265b..4986736582 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -304,6 +304,13 @@ a[data-role=button] { color: #f8f8fe !important; } +.detailSticky { + background: #000420; + background: -moz-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); + background: -webkit-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); + background: linear-gradient(to right, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); +} + .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; background: rgba(30, 30, 30, 0.9); diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 4243204172..41e1767565 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -202,6 +202,10 @@ html { color: #fff !important; } +.detailSticky { + background-color: #081b3b; +} + .detailTableBodyRow-shaded:nth-child(even) { background: #1c1c1c; background: rgba(0, 0, 0, 0.3); From a8c979ceafc6715c3e05c6728a50f95a49f01e82 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 4 Feb 2020 15:40:32 -0500 Subject: [PATCH 071/260] Fix custom css precedence --- src/scripts/site.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 3a10dc85a1..f5ad942d6e 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -623,8 +623,25 @@ var AppInfo = {}; require(["playerSelectionMenu", "fullscreenManager"]); - if (!AppInfo.isNativeApp && window.ApiClient) { - require(["css!" + ApiClient.getUrl("Branding/Css")]); + var apiClient = window.ConnectionManager && window.ConnectionManager.currentApiClient(); + if (apiClient) { + fetch(apiClient.getUrl("Branding/Css")) + .then(function(response) { + if (!response.ok) { + throw new Error(response.status + ' ' + response.statusText); + } + return response.text(); + }) + .then(function(css) { + // Inject the branding css as a dom element in body so it will take + // precedence over other stylesheets + var style = document.createElement('style'); + style.appendChild(document.createTextNode(css)); + document.body.appendChild(style); + }) + .catch(function(err) { + console.warn('Error applying custom css', err); + }); } }); }); From db1cf86219f509a26b430b5699215d0e0edc9c86 Mon Sep 17 00:00:00 2001 From: ariqfadlan Date: Tue, 4 Feb 2020 03:14:12 +0000 Subject: [PATCH 072/260] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 155 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index f8b8b676f3..81d82159fd 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -47,5 +47,158 @@ "HeaderAlbumArtists": "Album Artis", "HeaderContinueWatching": "Masih Melihat", "Artists": "Artis", - "HeaderLiveTV": "TV Live" + "HeaderLiveTV": "TV Live", + "AllowMediaConversion": "Izinkan konversi media", + "AllEpisodes": "Semua episode", + "AllChannels": "Semua saluran", + "All": "Semua", + "Add": "Tambah", + "Actor": "Aktor", + "Delete": "Hapus", + "DefaultMetadataLangaugeDescription": "Berikut ini adalah standar Anda dan dapat dikustomisasi pada tiap pustakanya.", + "DefaultErrorMessage": "Terdapat galat dalam memproses permintaan. Silakan coba kembali nanti.", + "Default": "Standar", + "DeathDateValue": "Meninggal: {0}", + "DatePlayed": "Tanggal dimainkan", + "DateAdded": "Tanggal ditambahkan", + "CriticRating": "Kritik peringkat", + "CopyStreamURLError": "Terdapat galat dalam penyalinan pranala.", + "CopyStreamURLSuccess": "Pranala berhasil disalin.", + "CopyStreamURL": "Salin Pranala Stream", + "Continuing": "Melanjutkan", + "ContinueWatching": "Lanjutkan menonton", + "Connect": "Sambung", + "ConfirmEndPlayerSession": "Apakah Anda ingin mematikan Jellyfin pada {0}?", + "ConfirmDeletion": "Konfirmasi Penghapusan", + "ConfirmDeleteItems": "Penghapusan item-item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", + "ConfirmDeleteItem": "Penghapusan item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", + "ConfirmDeleteImage": "Hapus gambar?", + "ConfigureDateAdded": "Atur cara penentuan penambahan tanggal dalam dasbor Peladen Jellyfin lewat pengaturan Pustaka", + "Composer": "Komposer", + "CommunityRating": "Peringkat komunitas", + "ChannelNumber": "Nomor saluran", + "ChannelNameOnly": "Hanya saluran {0}", + "ChannelAccessHelp": "Pilih saluran untuk dibagikan ke pengguna ini. Admin akan dapat mengubah seluruh saluran menggunakan pengelola metadata.", + "Categories": "Kategori", + "CancelRecording": "Batalkan perekaman", + "ButtonWebsite": "Situs web", + "ButtonViewWebsite": "Tampilkan situs web", + "ButtonUp": "Atas", + "ButtonTrailer": "Cuplikan", + "ButtonSubmit": "Kirim", + "ButtonStop": "Berhenti", + "ButtonStart": "Mulai", + "ButtonSort": "Urutkan", + "ButtonSignIn": "Masuk", + "ButtonShutdown": "Matikan", + "ButtonShuffle": "Acak", + "ButtonSettings": "Pengaturan", + "ButtonSend": "Kirim", + "ButtonSelectView": "Pilih tampilan", + "ButtonSelectServer": "Pilih Peladen", + "ButtonSelectDirectory": "Pilih Direktori", + "ButtonSearch": "Cari", + "ButtonScanAllLibraries": "Pindai Semua Pustaka", + "ButtonSave": "Simpan", + "ButtonResume": "Lanjutkan", + "ButtonResetPassword": "Atur ulang Kata sandi", + "ButtonResetEasyPassword": "Atur ulang kode pin mudah", + "ButtonRepeat": "Ulangi", + "ButtonRename": "Ubah nama", + "ButtonRemove": "Hapus", + "ButtonRefreshGuideData": "Muat ulang Data Panduan", + "ButtonRefresh": "Muat ulang", + "ButtonProfile": "Profil", + "ButtonPlay": "Mainkan", + "ButtonPause": "Jeda", + "ButtonParentalControl": "Kendali orang tua", + "ButtonOpen": "Buka", + "ButtonOk": "Baik", + "ButtonOff": "Matikan", + "ButtonNew": "Baru", + "ButtonNetwork": "Jaringan", + "ButtonMore": "Lebih banyak", + "ButtonLibraryAccess": "Akses pustaka", + "ButtonLearnMore": "Pelajari lebih lanjut", + "ButtonInfo": "Info", + "ButtonHome": "Beranda", + "ButtonHelp": "Bantuan", + "ButtonGuide": "Panduan", + "ButtonGotIt": "Paham", + "ButtonFullscreen": "Layar penuh", + "ButtonForgotPassword": "Lupa Kata Sandi", + "ButtonFilter": "Penyaring", + "ButtonEditOtherUserPreferences": "Ubah profil, gambar, dan preferensi pribadi pengguna ini.", + "ButtonEditImages": "Ubah gambar", + "ButtonEdit": "Ubah", + "ButtonDownload": "Unduh", + "ButtonDown": "Bawah", + "ButtonDeleteImage": "Hapus Gambar", + "ButtonDelete": "Hapus", + "ButtonConnect": "Sambung", + "ButtonChangeServer": "Ubah Peladen", + "ButtonCancel": "Batalkan", + "ButtonBack": "Kembali", + "ButtonAudioTracks": "Trek Audio", + "ButtonArrowUp": "Atas", + "ButtonArrowRight": "Kanan", + "ButtonArrowLeft": "Kiri", + "ButtonArrowDown": "Turun", + "ButtonAddUser": "Tambah Pengguna", + "ButtonAddServer": "Tambah Peladen", + "ButtonAddScheduledTaskTrigger": "Tambah Pemicu", + "ButtonAddMediaLibrary": "Tambah Pustaka Media", + "ButtonAddImage": "Tamba gambar", + "ButtonAdd": "Tambah", + "BrowsePluginCatalogMessage": "Jelajahi katalog plugin kamu untuk melihat plugin yang tersedia.", + "Browse": "Jelajah", + "BoxRear": "Kotak (belakang)", + "Box": "Kotak", + "BookLibraryHelp": "Buku audio dan teks didukung. Perhatikan {0}panduan penamaan buku{1}.", + "Blacklist": "Daftar hitam", + "BirthPlaceValue": "Tempat lahir: {0}", + "BirthLocation": "Tempat lahir", + "BirthDateValue": "Lahir: {0}", + "Banner": "Spanduk", + "Backdrops": "Latar belakang", + "Backdrop": "Latar belakang", + "AutoBasedOnLanguageSetting": "Auto (berdasarkan pengaturan bahasa)", + "Auto": "Auto", + "AuthProviderHelp": "Pilih Penyedia Autentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", + "Audio": "Audio", + "AttributeNew": "Baru", + "AspectRatio": "Rasio perbandingan", + "Ascending": "Urutan naik", + "AsManyAsPossible": "Sebanyak mungkin", + "Art": "Seni", + "AroundTime": "Sekitar {0}", + "Anytime": "Kapanpun", + "AnyLanguage": "Bahasa apapun", + "AlwaysPlaySubtitlesHelp": "Talop yang cocok dengan preferensi bahasa akan dimuat tanpa memperhatikan bahasa suaranya.", + "AlwaysPlaySubtitles": "Selalu putar talop", + "AllowedRemoteAddressesHelp": "Daftar yang dipisahkan dengan koma dari alamat IP atau catatan netmask untuk jaringan yang akan diperbolehkan untuk tersambuh dari jarak jauh. Jika dibiarkan kosong, seluruh alamat jarak jauh akan diperbolehkan.", + "AllowRemoteAccessHelp": "Jika centang dihapus, semua koneksi jarak jauh akan diblokir.", + "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke Peladen Jellyfin ini.", + "AllowOnTheFlySubtitleExtraction": "Izinkan ekstraksi talop dengan cepat", + "AllowMediaConversionHelp": "Izinkan atau tolak akses ke fitur konversi media.", + "AllLibraries": "Semua pustaka", + "AllLanguages": "Semua bahasa", + "AllComplexFormats": "Semua format kompleks (ASS, SSA, VOBSUB, PGS, SUB/IDK, dll.)", + "Channels": "Saluran", + "Aired": "Disiarkan", + "AirDate": "Tanggal siaran", + "AdditionalNotificationServices": "Jelajahi katalog plugin untuk memasang layanan pemberitahuan tambahan.", + "AddToPlaylist": "Tambah ke dalam daftar putar", + "AddToPlayQueue": "Tambah ke dalam antrean putar", + "AddToCollection": "Tambah ke dalam koleksi", + "AddItemToCollectionHelp": "Tambahkan item ke dalam koleksi melalui pencarian dan gunakan klik kanan atau ketuk menu untuk menambahkannya ke dalam koleksi.", + "AccessRestrictedTryAgainLater": "Akses sedang dibatas. Silakan coba kembali nanti.", + "Absolute": "Mutlak", + "Songs": "Lagu", + "Playlists": "Daftar putar", + "ValueSpecialEpisodeName": "Spesial - {0}", + "Sync": "Sinkron", + "Shows": "Tayangan", + "Photos": "Foto", + "Movies": "Film" } From f84411a5b8083e654c01bfbcd21ef32342de12eb Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 4 Feb 2020 09:11:11 +0000 Subject: [PATCH 073/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index e3d0142bc6..d719c4fd6c 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1455,5 +1455,14 @@ "HeaderDirectPlayProfileHelp": "Pridať direct play profil pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", "LabelInNetworkSignInWithEasyPasswordHelp": "Použite jednoduchý PIN kód na prihlásenie v klientoch vo vnútri lokálnej siete. Vaše bežné heslo bude potrebné len pokiaľ ste mimo domova. Pokiaľ je PIN kód ponechaný prázdny, tak nebude potrebovať heslo vo vašej domácej sieti.", "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti.", - "HeaderNavigation": "Navigácia" + "HeaderNavigation": "Navigácia", + "MessageConfirmAppExit": "Chceli by ste odísiť?", + "LabelVideoResolution": "Rozlíšenie videa:", + "LabelStreamType": "Typ streamu:", + "EnableFastImageFadeInHelp": "Povoliť animáciu rýchleho rozjasnenia pre nahrané obrázky", + "EnableFastImageFadeIn": "Rýchle rozjasnenie obrázku", + "LabelPlayerDimensions": "Rozmery prehrávača:", + "LabelDroppedFrames": "Vynechané snímky:", + "LabelCorruptedFrames": "Poškodené snímky:", + "CopyStreamURLError": "Pri kopírovaní URL nastala chyba." } From 8d02d05441ad630ac4feebe734d2b0b23033dc9c Mon Sep 17 00:00:00 2001 From: HaneRo Date: Tue, 4 Feb 2020 08:27:21 +0000 Subject: [PATCH 074/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 54f93e19b7..c4c5776d67 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1465,5 +1465,8 @@ "ButtonSplit": "拆分", "SelectAdminUsername": "请为管理员账户选择一个用户名。", "HeaderNavigation": "导航", - "CopyStreamURLError": "复制URL地址时发生错误。" + "CopyStreamURLError": "复制URL地址时发生错误。", + "MessageConfirmAppExit": "你要退出吗?", + "EnableFastImageFadeIn": "快速图片淡入", + "EnableFastImageFadeInHelp": "为加载图片启用更快的图片淡入" } From efbfbb822e978981902fc94e84fbc6bd88e72285 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 4 Feb 2020 17:24:44 -0500 Subject: [PATCH 075/260] Fix device images on main dashboard page --- src/scripts/imagehelper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js index 96961eb0cc..2edc130165 100644 --- a/src/scripts/imagehelper.js +++ b/src/scripts/imagehelper.js @@ -3,7 +3,7 @@ define(["browser"], function (browser) { function getDeviceIcon(device) { var baseUrl = "assets/img/devices/"; - switch (device.AppName) { + switch (device.AppName || device.Client) { case "Samsung Smart TV": return baseUrl + "samsung.svg"; case "Xbox One": @@ -15,7 +15,7 @@ define(["browser"], function (browser) { case "Jellyfin Android": return baseUrl + "android.svg"; case "Jellyfin Web": - switch (device.Name) { + switch (device.Name || device.DeviceName) { case "Opera": case "Opera TV": return baseUrl + "opera.svg"; From 58579c3b2736737b74fac3715ece0f34ce12cf49 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Wed, 5 Feb 2020 17:10:25 +0800 Subject: [PATCH 076/260] fix encoder preset option not working --- src/controllers/encodingsettings.js | 4 ++-- src/encodingsettings.html | 4 ++-- src/strings/ar.json | 4 ++-- src/strings/cs.json | 4 ++-- src/strings/da.json | 4 ++-- src/strings/de.json | 4 ++-- src/strings/el.json | 2 +- src/strings/en-gb.json | 4 ++-- src/strings/en-us.json | 4 ++-- src/strings/es-mx.json | 4 ++-- src/strings/es.json | 4 ++-- src/strings/fr.json | 4 ++-- src/strings/hr.json | 4 ++-- src/strings/hu.json | 4 ++-- src/strings/it.json | 4 ++-- src/strings/ja.json | 4 ++-- src/strings/kk.json | 4 ++-- src/strings/ko.json | 4 ++-- src/strings/lt-lt.json | 2 +- src/strings/nb.json | 4 ++-- src/strings/nl.json | 4 ++-- src/strings/pl.json | 4 ++-- src/strings/pt-br.json | 4 ++-- src/strings/pt-pt.json | 4 ++-- src/strings/pt.json | 4 ++-- src/strings/ro.json | 4 ++-- src/strings/ru.json | 4 ++-- src/strings/sk.json | 4 ++-- src/strings/sl-si.json | 4 ++-- src/strings/sv.json | 4 ++-- src/strings/tr.json | 2 +- src/strings/zh-cn.json | 4 ++-- src/strings/zh-tw.json | 4 ++-- 33 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/controllers/encodingsettings.js b/src/controllers/encodingsettings.js index f3dfd2706e..24cf656d62 100644 --- a/src/controllers/encodingsettings.js +++ b/src/controllers/encodingsettings.js @@ -12,7 +12,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo page.querySelector(".txtEncoderPath").value = config.EncoderAppPathDisplay || ""; $("#txtTranscodingTempPath", page).val(systemInfo.TranscodingTempPath || ""); $("#txtVaapiDevice", page).val(config.VaapiDevice || ""); - page.querySelector("#selectH264Preset").value = config.H264Preset || ""; + page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || ""; page.querySelector("#txtH264Crf").value = config.H264Crf || ""; page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false; page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", { @@ -55,7 +55,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EncodingThreadCount = $("#selectThreadCount", form).val(); config.HardwareAccelerationType = $("#selectVideoDecoder", form).val(); config.VaapiDevice = $("#txtVaapiDevice", form).val(); - config.H264Preset = form.querySelector("#selectH264Preset").value; + config.EncoderPreset = form.querySelector("#selectEncoderPreset").value; config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0"); config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked; config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) { diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 6e074936f1..757d08f845 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -115,7 +115,7 @@
- @@ -127,7 +127,7 @@ -
${H264EncodingPresetHelp}
+
${EncoderPresetHelp}
diff --git a/src/strings/ar.json b/src/strings/ar.json index 6fef90c404..e2d30ffce1 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -131,7 +131,7 @@ "GuideProviderLogin": "تسجيل الدخول", "GuideProviderSelectListings": "إختر المبوبات", "H264CrfHelp": "معامل المعدل الثابت CRF هو الجودة الافتراضية لإعدادات مشفر x264. بإمكانك إعطاء قيمة تتراوح بين 0 و 51، وكلما قلت القيمة فسينتج عن ذلك جودة أفضل (على حساب حجم تخزين أعلى). القيم المعقول تتراوح بين 18 و 28. الافتراضي لـ x264 هي 23، لذا فبإمكانك استخدام هذه القيمة كنقطة بداية.", - "H264EncodingPresetHelp": "اختر قيمة أعلى لتحسين السرة والأداء وقيمة أقل لتحسين الجودة.", + "EncoderPresetHelp": "اختر قيمة أعلى لتحسين السرة والأداء وقيمة أقل لتحسين الجودة.", "HardwareAccelerationWarning": "تمكين التسريع بعتاد الحاسوب قد يتسبب في عدم استقرار بعض أنواع الأنظمة. تأكد من أن نظام التشغيل الخاص بك محدث إلى آخر نسخة وأن سواقات الفيديو محدثة أيضاً. إذا واجهت أية صعوبات في تسغيل الفيديو بعد تمكين هذه الخاصية، فعليك إرجاع الإعداد إلى وضعية آلي.", "HeaderAccessSchedule": "جدول الدخولات", "HeaderAccessScheduleHelp": "إنشئ جدول دخولات لكي تتمكن من تحديد ساعات للدخول.", @@ -390,7 +390,7 @@ "LabelGroupMoviesIntoCollections": "تجميع الأفلام إلى مجاميع", "LabelGroupMoviesIntoCollectionsHelp": "عند استعراض قوائم الأفلام، فإن الأفلام التي تنتمي إلى مجموعة واحدة ستظهر كعنصر جامع.", "LabelH264Crf": "قيمة CRF لتشفير H264:", - "LabelH264EncodingPreset": "إعدادات تشفير H264:", + "LabelEncoderPreset": "إعدادات تشفير H264:", "LabelHardwareAccelerationType": "التسريع بعتاد الحاسب", "LabelHardwareAccelerationTypeHelp": "متاح في الأنظمة المدعومة فقط.", "LabelHttpsPort": "رقم منفذ https المحتلي:", diff --git a/src/strings/cs.json b/src/strings/cs.json index 5f0c1e60b3..9bb889d97f 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -227,7 +227,7 @@ "GuideProviderLogin": "Přihlášení", "GuideProviderSelectListings": "Výběr zobrazení", "H264CrfHelp": "Constant Rate faktor (CRF) je výchozím nastavení kvality pro kodér x264. Můžete nastavit hodnoty mezi 0 a 51, kde nižší hodnoty vedou lepší kvalitě (na úkor větší velikosti souborů). Rozumné hodnoty jsou mezi 18 a 28. Výchozí hodnota pro x264 je 23, který můžete použít jako výchozí bod.", - "H264EncodingPresetHelp": "Vyber hodnotu faster ke zvýšení výkonu, nebo slower ke zvýšení kvality.", + "EncoderPresetHelp": "Vyber hodnotu faster ke zvýšení výkonu, nebo slower ke zvýšení kvality.", "HDPrograms": "HD programy", "HardwareAccelerationWarning": "Zapnutí hardwarové akcelerace může způsobit nestabilitu v některých prostředích. Ujistěte se, že vaše ovladače operačního systému a videa jsou plně aktuální. Máte-li potíže s přehráváním videa po zapnutí, budete muset změnit nastavení zpět na Auto.", "HeaderAccessSchedule": "Přístup k naplánované úloze", @@ -552,7 +552,7 @@ "LabelGroupMoviesIntoCollections": "Seskupit filmy do kolekcí", "LabelGroupMoviesIntoCollectionsHelp": "Při zobrazení seznamů filmu, budou filmy patřící do kolekce, zobrazeny jako jedna položka.", "LabelH264Crf": "H264 kódování CRF:", - "LabelH264EncodingPreset": "Přednastavení H264 kódování:", + "LabelEncoderPreset": "Přednastavení H264 kódování:", "LabelHardwareAccelerationType": "Hardwarová akcelerace:", "LabelHardwareAccelerationTypeHelp": "Toto je experimentální funkce dostupná pouze v podporovaných systémech.", "LabelHomeScreenSectionValue": "Sekce domovské obrazovky {0}:", diff --git a/src/strings/da.json b/src/strings/da.json index cd8d9472ca..9ddba4c8f0 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -181,7 +181,7 @@ "GuestStar": "Gæsteskuespiller", "GuideProviderSelectListings": "Vælg Udbyder", "H264CrfHelp": "Den Konstante Ratefaktor (CRF) er standardindstillingen for X264-koderen. Du kan sætte værdien i mellem 0 og 51, hvor de lavere værdier resulterer i bedre kvalitet (på bekostning af større filstørrelser). Fornuftige værdier er i mellem 18 og 28. Standarden for X264 er 23, så du kan bruge dette som udgangspunkt.", - "H264EncodingPresetHelp": "Vælg en hurtigere værdi for at forbedre ydeevne, eller en langsommere værdi for at forbedre kvalitet.", + "EncoderPresetHelp": "Vælg en hurtigere værdi for at forbedre ydeevne, eller en langsommere værdi for at forbedre kvalitet.", "HDPrograms": "HD-programmer", "HardwareAccelerationWarning": "Aktivering af hardwareacceleration kan forårsage ustabilitet i nogle miljøer. Kontroller at dit operativsystem og videodriver er ajourført. Hvis du har problemer med at afspille video efter aktivering af dette, bliver du nød til at skifte tilbage til Auto.", "HeaderAccessSchedule": "Adgangsskema", @@ -481,7 +481,7 @@ "LabelGroupMoviesIntoCollections": "Grupper film i samlinger", "LabelGroupMoviesIntoCollectionsHelp": "Film i samlinger vil blive vist som en samlet enhed i filmlister.", "LabelH264Crf": "H264-kodning CRF:", - "LabelH264EncodingPreset": "Forudindstillet H264-kodning:", + "LabelEncoderPreset": "Forudindstillet H264-kodning:", "LabelHardwareAccelerationType": "Hardwareacceleration:", "LabelHardwareAccelerationTypeHelp": "Kun tilgængelig for understøttede systemer.", "LabelHttpsPort": "Lokalt HTTPS portnummer:", diff --git a/src/strings/de.json b/src/strings/de.json index 0a6c95ef25..d9d32e94b2 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -257,7 +257,7 @@ "GuideProviderLogin": "Anmelden", "GuideProviderSelectListings": "Wähle Listen", "H264CrfHelp": "Der Constant Rate Factor (CRF) bezeichnet die Einstellung für die Standardqualität des x264 Encoders. Setze einen Wert zwischen 0 und 51. Ein niedriger Wert resultiert in besserer Qualität (auf Kosten einer größeren Datei). Gängige Werte sind 18-28. Der Standard für x264 ist 23 und empfohlen als Startpunkt.", - "H264EncodingPresetHelp": "Wähle einen schnelleren Wert um die Performance zu verbessern oder einen langsameren Wert um die Qualität zu verbessern.", + "EncoderPresetHelp": "Wähle einen schnelleren Wert um die Performance zu verbessern oder einen langsameren Wert um die Qualität zu verbessern.", "HDPrograms": "HD Programme", "HandledByProxy": "Verwaltet vom Reverse Proxy", "HardwareAccelerationWarning": "Das Aktivieren der Hardwarebeschleunigung kann auf einigen Systemen zu Instabilität führen. Stellen Sie sicher, dass Ihr Betriebssystem sowie Ihre Grafikkarten-Treiber auf dem aktuellsten Stand sind. Wenn Sie nach der Aktivierung Probleme mit der Wiedergabe von Videos haben, müssen Sie diese Einstellung zurück auf \"Auto\" stellen.", @@ -591,7 +591,7 @@ "LabelServerNameHelp": "Dieser Name wird benutzt um den Server zu identifizieren, normalerweise wird der Server-/Computername verwendet.", "LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections", "LabelGroupMoviesIntoCollectionsHelp": "Wenn Filmlisten angezeigt werden, dann werden Filme, die zu einer Collection gehören, als ein gruppiertes Element angezeigt.", - "LabelH264EncodingPreset": "H264 Encoding Voreinstellung:", + "LabelEncoderPreset": "H264 Encoding Voreinstellung:", "LabelHardwareAccelerationType": "Hardware Beschleunigung:", "LabelHardwareAccelerationTypeHelp": "Dies ist eine experimentelle Funktion und nur auf unterstützten Systemen verfügbar.", "LabelHomeNetworkQuality": "Heimnetzwerkqualität:", diff --git a/src/strings/el.json b/src/strings/el.json index c718fa609f..fb02479421 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -1195,7 +1195,7 @@ "HeaderFavoriteEpisodes": "Αγαπημένα Επεισόδια", "HeaderFavoriteShows": "Αγαπημένες Σειρές", "AllowMediaConversion": "Να επιτρέπονται οι μετατροπές μέσων", - "H264EncodingPresetHelp": "Επιλέξτε γρηγορότερη επιλογή για να βελτιώσετε την επίδοση, ή πιο αργή για να βελτιώσετε την ποιότητα.", + "EncoderPresetHelp": "Επιλέξτε γρηγορότερη επιλογή για να βελτιώσετε την επίδοση, ή πιο αργή για να βελτιώσετε την ποιότητα.", "ErrorAddingXmlTvFile": "Υπήρξε σφάλμα κατά την πρόσβαση του αρχείου XmlTV. Βεβαιωθείτε ότι το αρχείο υπάρχει και ξαναπροσπαθήστε.", "ErrorAddingTunerDevice": "Υπήρξε σφάλμα κατά την προσθήκη του δέκτη. Βεβαιωθείτε ότι είναι προσβάσιμη και ξαναπροσπαθήστε.", "EnableStreamLoopingHelp": "Ενεργοποιήστε το αν τα live stream περιέχουν μόνο λίγα δευτερόλεπτα δεδομένων και πρέπει να ζητούνται συνεχώς. Η ενεργοποίηση αυτής της επιλογής όταν δεν είναι απαραίτητη μπορεί να προκαλέσει προβλήματα.", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index a258145849..6e6a19bfe6 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -308,7 +308,7 @@ "GuideProviderLogin": "Login", "GuideProviderSelectListings": "Select Listings", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", - "H264EncodingPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", + "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "HandledByProxy": "Handled by reverse proxy", "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to Auto.", "HeaderAccessSchedule": "Access Schedule", @@ -1107,7 +1107,7 @@ "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHomeNetworkQuality": "Home network quality:", "LabelHardwareAccelerationType": "Hardware acceleration:", - "LabelH264EncodingPreset": "H264 encoding preset:", + "LabelEncoderPreset": "H264 and H265 encoding preset:", "LabelH264Crf": "H264 encoding CRF:", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", "LabelGroupMoviesIntoCollections": "Group movies into collections", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 364cd71e87..c8df7b69db 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -278,7 +278,7 @@ "GuideProviderLogin": "Login", "GuideProviderSelectListings": "Select Listings", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", - "H264EncodingPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", + "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "HDPrograms": "HD programs", "HandledByProxy": "Handled by reverse proxy", "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to Auto.", @@ -653,7 +653,7 @@ "LabelGroupMoviesIntoCollections": "Group movies into collections", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", "LabelH264Crf": "H264 encoding CRF:", - "LabelH264EncodingPreset": "H264 encoding preset:", + "LabelEncoderPreset": "H264 and H265 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.", "LabelHomeNetworkQuality": "Home network quality:", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index f1f73c5d9e..57a1c9aa25 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -265,7 +265,7 @@ "GuideProviderLogin": "Iniciar Sesión", "GuideProviderSelectListings": "Elegir Listados", "H264CrfHelp": "El \"Factor de Transferencia Constante\" o \"Constant Rate Factor\" (CFR) es la configuración por defecto para el codificador x264. Puede poner valores entre 0 y 51, donde los valores mas bajos dan como resultado mejor calidad (a expensas de archivos mas grandes). Los valores comunes son entre 18 y 28. El valor por defecto para x264 es 23, puede usar este valor como punto de referencia.", - "H264EncodingPresetHelp": "Elija un valor mas rápido para mejorar el rendimiento, o uno mas lento para mejorar la calidad.", + "EncoderPresetHelp": "Elija un valor mas rápido para mejorar el rendimiento, o uno mas lento para mejorar la calidad.", "HDPrograms": "Programas en HD", "HandledByProxy": "Manejado por un proxy inverso", "HardwareAccelerationWarning": "Habilitar la aceleración por hardware podría causar inestabilidad en algunos entornos, Asegúrese de que su sistema operativo y controladores de video están actualizados. Si tiene dificultades reproduciendo vides después de habilitar esto, necesita cambiar las configuraciones de nuevo a Auto.", @@ -609,7 +609,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran listados de películas, las películas que pertenecen a una colección serán mostradas agrupadas en un solo ítem.", "LabelH264Crf": "CRF de codificación H264:", - "LabelH264EncodingPreset": "Codificación H264 predefinido:", + "LabelEncoderPreset": "Codificación H264 predefinido:", "LabelHardwareAccelerationType": "Aceleración por Hardware:", "LabelHardwareAccelerationTypeHelp": "Esta es una característica experimental que solo está disponible en los sistemas soportados.", "LabelHomeNetworkQuality": "Calidad en Red Local:", diff --git a/src/strings/es.json b/src/strings/es.json index 426aacb86e..36fe872ed6 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -215,7 +215,7 @@ "Guide": "Guía", "GuideProviderSelectListings": "Seleccionar listados", "H264CrfHelp": "El factor de velocidad constante (CRF) es el ajuste de calidad predeterminado para el codificador x264. Puede establecer los valores entre 0 y 51, donde valores más bajos resultarían en una mejor calidad (a expensas de tamaños de archivo más altos). Los valores sanos están entre 18 y 28. El valor predeterminado para x264 es 23, por lo que puede utilizar esto como punto de partida.", - "H264EncodingPresetHelp": "Elija un valor más rápido para mejorar el rendimiento o un valor más lento para mejorar la calidad.", + "EncoderPresetHelp": "Elija un valor más rápido para mejorar el rendimiento o un valor más lento para mejorar la calidad.", "HDPrograms": "Programas en HD", "HandledByProxy": "Gestionado por proxy inverso", "HardwareAccelerationWarning": "Activar la aceleración por hardware puede producir inestabilidades en algunos ambientes. Asegúrate de que tu sistema operativo y tus controladores de vídeo están actualizados. Si tienes dificultades para reproducir los vídeos después de activar esto, tendrás que volver a poner este ajuste en Auto.", @@ -544,7 +544,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran las listas de películas, las películas pertenecientes a una colección se mostrarán como un elemento agrupado.", "LabelH264Crf": "H264 que codifica CRF:", - "LabelH264EncodingPreset": "Configuración de codificación H264:", + "LabelEncoderPreset": "Configuración de codificación H264:", "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelHardwareAccelerationTypeHelp": "Esto es una función experimental disponible sólo en los sistemas soportados.", "LabelHomeScreenSectionValue": "Sección de la pantalla de inicio {0}:", diff --git a/src/strings/fr.json b/src/strings/fr.json index c4dfa80534..a489d053f6 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -259,7 +259,7 @@ "GuideProviderLogin": "Connexion", "GuideProviderSelectListings": "Sélectionner les listings", "H264CrfHelp": "Le facteur de débit constant (CRF) est le paramètre de qualité par défaut pour l'encodeur x264. Vous pouvez régler les valeurs entre 0 et 51, où des valeurs plus faibles se traduiraient par une meilleure qualité (en augmentant le taille des fichiers). De bonne valeurs se situent entre 18 et 28. La valeur par défaut pour le x264 est 23, vous pouvez l'utiliser comme point de départ.", - "H264EncodingPresetHelp": "Choisissez une valeur plus rapide pour améliorer la performance, ou plus lente pour améliorer la qualité.", + "EncoderPresetHelp": "Choisissez une valeur plus rapide pour améliorer la performance, ou plus lente pour améliorer la qualité.", "HDPrograms": "Programmes HD", "HandledByProxy": "Gérée par un proxy inverse", "HardwareAccelerationWarning": "L'activation de l'accélération matérielle peut provoquer une instabilité dans certains environnements. Assurez-vous que votre système d'exploitation et vos pilotes vidéo sont complètement à jour. Si vous avez des difficultés pour lire des vidéos après l'activation, vous devrez remettre ce paramètre sur Auto.", @@ -603,7 +603,7 @@ "LabelGroupMoviesIntoCollections": "Grouper les films en collections", "LabelGroupMoviesIntoCollectionsHelp": "Dans l'affichage des listes de films, les films faisant partie d'une collection seront affichés comme un élément groupé.", "LabelH264Crf": "CRF d'encodage H264 :", - "LabelH264EncodingPreset": "Profil d'encodage H264 :", + "LabelEncoderPreset": "Profil d'encodage H264 :", "LabelHardwareAccelerationType": "Accélération matérielle :", "LabelHardwareAccelerationTypeHelp": "Fonctionnalité expérimentale disponible sur les systèmes supportés.", "LabelHomeNetworkQuality": "Qualité du réseau local :", diff --git a/src/strings/hr.json b/src/strings/hr.json index 1cdccf69b3..9710c13454 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -156,7 +156,7 @@ "GuideProviderLogin": "Prijava", "GuideProviderSelectListings": "Odaberi ispis", "H264CrfHelp": "Konstante brzine faktora (CRF) je postavka zadane kvalitete za x264 enkodera. Možete postaviti vrijednosti između 0 i 51, gdje će niže vrijednosti rezultirati boljom kvalitetom (na račun veće veličine datoteka). Razumne vrijednosti su između 18 i 28. Zadana za x264 je 23, tako da to možete koristiti kao početnu točku.", - "H264EncodingPresetHelp": "Odaberite bržu vrijednost za poboljšanje performansi ili sporiju za poboljšanje kvalitete.", + "EncoderPresetHelp": "Odaberite bržu vrijednost za poboljšanje performansi ili sporiju za poboljšanje kvalitete.", "HDPrograms": "HD programi", "HardwareAccelerationWarning": "Omogućavanje hardverskog ubrzanja može uzrokovati nestabilnostima u nekim sredinama. Pobrinite se da Vaš operativni sustav i video drajveri su u potpunosti ažurni. Ako imate poteškoća s reprodukcijom videa nakon omogućavanja ovoga, morat ćete promijeniti postavku natrag na Automatski.", "HeaderAccessSchedule": "Raspored pristupa", @@ -426,7 +426,7 @@ "LabelGroupMoviesIntoCollections": "Grupiraj filmove u kolekciju", "LabelGroupMoviesIntoCollectionsHelp": "Kada se prikazuje lista filmova, filmovi koji pripadaju kolekciji biti će prikazani kao jedna stavka.", "LabelH264Crf": "H264 kodiranje CRF:", - "LabelH264EncodingPreset": "H264 unaprijed kodiranje:", + "LabelEncoderPreset": "H264 unaprijed kodiranje:", "LabelHardwareAccelerationType": "Hardversko ubrzanje:", "LabelHardwareAccelerationTypeHelp": "Dostupno samo na podržanim sustavima.", "LabelHttpsPort": "Lokalni broj https porta:", diff --git a/src/strings/hu.json b/src/strings/hu.json index 7ea57e5156..811c21cff0 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -265,7 +265,7 @@ "LabelFinish": "Befejez", "LabelForgotPasswordUsernameHelp": "Add meg a felhasználóneved, ha emlékszel rá.", "LabelGroupMoviesIntoCollections": "Filmek csoportosítása gyűjteményekbe", - "LabelH264EncodingPreset": "H264 enkóder beállítások:", + "LabelEncoderPreset": "H264 enkóder beállítások:", "LabelHardwareAccelerationType": "Hardveres gyorsítás:", "LabelHardwareAccelerationTypeHelp": "Ez egy kísérleti szolgáltatás, amely csak a támogatott rendszereken érhető el.", "LabelHomeScreenSectionValue": "Kezdőképernyő blokk {0}:", @@ -699,7 +699,7 @@ "GuestStar": "Vendég sztár", "GuideProviderLogin": "Bejelentkezés", "GuideProviderSelectListings": "Válassz listát", - "H264EncodingPresetHelp": "Válassz egy gyorsabb értéket a teljesítmény javítása érdekében, vagy egy lassabb értéket a minőség javítása érdekében.", + "EncoderPresetHelp": "Válassz egy gyorsabb értéket a teljesítmény javítása érdekében, vagy egy lassabb értéket a minőség javítása érdekében.", "HDPrograms": "HD programok", "HandledByProxy": "Reverse proxy segítségével kezelhető", "HardwareAccelerationWarning": "A hardveres gyorsítás engedélyezése bizonyos környezetekben instabilitást okozhat. Győződj meg róla, hogy az operációs rendszer és a videó-illesztőprogramok teljesen naprakészek. Ha a beállítás után problémába ütközik a videólejátszás, akkor vissza kell állítani a beállítást Auto-ra.", diff --git a/src/strings/it.json b/src/strings/it.json index 18b08f8853..b4f84b0c10 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -250,7 +250,7 @@ "GuideProviderLogin": "Accedi", "GuideProviderSelectListings": "selezionare Annunci", "H264CrfHelp": "Il fattore di frequenza costante (CRF) è l'impostazione di qualità predefinita per l'encoder x264. È possibile impostare i valori compresi tra 0 e 51, in cui valori inferiori potrebbero determinare una migliore qualità (a discapito delle dimensioni superiori dei file). I valori normali sono compresi tra 18 e 28. L'impostazione predefinita per x264 è 23, quindi è possibile utilizzare questo come punto di partenza.", - "H264EncodingPresetHelp": "Scegli una velocità maggiore per migliorare le performance, o minore per incrementare la qualità.", + "EncoderPresetHelp": "Scegli una velocità maggiore per migliorare le performance, o minore per incrementare la qualità.", "HDPrograms": "Programmi HD", "HandledByProxy": "Gestito dal reverse proxy", "HardwareAccelerationWarning": "L'attivazione dell'accelerazione hardware potrebbe causare instabilità in qualche sistema. Assicurarsi che il sistema operativo e i driver video siano completamente aggiornati. Se hai difficoltà a riprodurre video dopo aver abilitato questa operazione, dovrai cambiare l'impostazione in Auto.", @@ -585,7 +585,7 @@ "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", - "LabelH264EncodingPreset": "Preset di codifica H264:", + "LabelEncoderPreset": "Preset di codifica H264:", "LabelHardwareAccelerationType": "Accelerazione Hardware:", "LabelHardwareAccelerationTypeHelp": "Questa è una componente sperimentale disponibile solo su sistemi supportati.", "LabelHomeNetworkQuality": "Qualità della rete domestica:", diff --git a/src/strings/ja.json b/src/strings/ja.json index 0dd7737459..a276c7df07 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -276,7 +276,7 @@ "GuideProviderLogin": "ログイン", "GuideProviderSelectListings": "リストを選択", "H264CrfHelp": "固定レートファクタ(CRF)は、x264エンコーダのデフォルトの品質設定です。 0から51までの値を設定できます。値が小さいほど品質が高くなります(ファイルサイズが大きくなりますが)。 正しい値は18から28の間です。x264のデフォルトは23なので、これを出発点として使用できます。", - "H264EncodingPresetHelp": "パフォーマンスを向上させるには小さい値を、品質を向上させるには大きい値を選択してください。", + "EncoderPresetHelp": "パフォーマンスを向上させるには小さい値を、品質を向上させるには大きい値を選択してください。", "HDPrograms": "HD番組", "HandledByProxy": "リバースプロキシで処理", "HardwareAccelerationWarning": "ハードウェアアクセラレーションを有効にすると、環境によっては不安定になる可能性があります。 オペレーティングシステムとビデオドライバが完全に最新であることを確認してください。 これを有効にした後でビデオの再生が困難な場合は、設定を[自動]に戻す必要があります。", @@ -541,7 +541,7 @@ "LabelDidlMode": "DIDLモード:", "LabelEmbedAlbumArtDidl": "DIDLのアルバムアートを埋め込む", "LabelFailed": "失敗", - "LabelH264EncodingPreset": "H264エンコーディングプリセット:", + "LabelEncoderPreset": "H264エンコーディングプリセット:", "LabelHardwareAccelerationType": "ハードウェアアクセラレーション:", "LabelH264Crf": "H264エンコーディングCRF:", "LabelHttpsPortHelp": "JellyfinのHTTPSサーバーがバインドするTCPポート番号。", diff --git a/src/strings/kk.json b/src/strings/kk.json index 3bf88ed5e1..05651f0c0d 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -277,7 +277,7 @@ "GuideProviderLogin": "Kirý", "GuideProviderSelectListings": "Tizbelerdi tańdaý", "H264CrfHelp": "Baǵalaýdyń turaqty máni (Constant Rate Factor, CRF) x264 kodtaýyshy úshin ádepki sapa parametri bolyp tabylady. Siz 0 jáne 51 arasyndaǵy mánderin belgileı alasyz, onda tómen mánder (joǵary faıl ólshemderi esebinen) nátıjesinde jaqsy sapaǵa keltiredi. Taǵylyp mánder 18 jáne 28 arasynda bolady. x264 úshin ádepkisi 23 bolyp tabylady, sondyqtan bastaý núktesi retinde osyny paıdalanýyńyzǵa bolady.", - "H264EncodingPresetHelp": "Ónimdilikti jaqsartý úshin jyldam mánin, nemese sapasyn jaqsartý úshin baıaý mánin tańdańyz.", + "EncoderPresetHelp": "Ónimdilikti jaqsartý úshin jyldam mánin, nemese sapasyn jaqsartý úshin baıaý mánin tańdańyz.", "HDPrograms": "HD-kórsetimder", "HandledByProxy": "Keri proksı arqyly óńdeldi", "HardwareAccelerationWarning": "Apparattyq jedeldetýdi qosý keıbir ortalarda turaqsyzdyq týdyrýy múmkin. Amaldyq júıeńiz ben beıne draıverlerińiz tolyq jańartylǵanyna kóz jetkizińiz. Eger osyny qosqannan keıin beıne oınatýda qıyndyq bolsa, parametrdi qaıta Avto úshin ózgertýińiz qajet.", @@ -635,7 +635,7 @@ "LabelGroupMoviesIntoCollections": "Jıyntyqtar ishindegi fılmderdi toptastyrý", "LabelGroupMoviesIntoCollectionsHelp": "Fılm tizimderin beınelegen kezde jıyntyqqa kiretin fılmder toptalǵan biryńǵaı tarmaq bolyp kórsetiledi.", "LabelH264Crf": "H264 kodtaý CRF máni:", - "LabelH264EncodingPreset": "H264 kodtaý daıyndamasy:", + "LabelEncoderPreset": "H264 kodtaý daıyndamasy:", "LabelHardwareAccelerationType": "Apparatyq jedeldetý:", "LabelHardwareAccelerationTypeHelp": "Bul tájirıbelik múmkindik tek qoldaý kórsetiletin júıelerde qoljetimdi.", "LabelHomeNetworkQuality": "Úılik jeli sapasy:", diff --git a/src/strings/ko.json b/src/strings/ko.json index a0276b700c..8e2e438d89 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -858,7 +858,7 @@ "Blacklist": "블랙리스트", "HeaderConfirmPluginInstallation": "플러그인 설치 확인", "HeaderChapterImages": "챕터 이미지", - "H264EncodingPresetHelp": "성능을 높이려면 더 빠른 값을 선택하고, 품질을 높이려면 더 느린 값을 선택하십시오.", + "EncoderPresetHelp": "성능을 높이려면 더 빠른 값을 선택하고, 품질을 높이려면 더 느린 값을 선택하십시오.", "HDPrograms": "HD 프로그램", "Guide": "가이드", "GroupVersions": "그룹 버전", @@ -1068,7 +1068,7 @@ "LabelLanNetworks": "LAN 네트워크:", "LabelInternetQuality": "인터넷 퀄리티:", "LabelHomeNetworkQuality": "홈 네트워크 퀄리티:", - "LabelH264EncodingPreset": "H264 인코딩 프리셋:", + "LabelEncoderPreset": "H264 인코딩 프리셋:", "LabelFont": "폰트:", "LabelFolder": "폴더:", "LabelFileOrUrl": "파일 또는 URL:", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 169ecdb035..fa97fe2d8b 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -912,7 +912,7 @@ "Filters": "Filtrai", "FormatValue": "Formatas: {0}", "GuideProviderSelectListings": "Sąrašų pasirinkimas", - "H264EncodingPresetHelp": "Pasirinkite greitesnę reikšmę, kad pagerintumėte našumą, arba mažesnę, norėdami pagerinti kokybę.", + "EncoderPresetHelp": "Pasirinkite greitesnę reikšmę, kad pagerintumėte našumą, arba mažesnę, norėdami pagerinti kokybę.", "HeaderRestart": "Perkrauti", "LabelDateTimeLocale": "Data ir laikas:", "LabelEnableSingleImageInDidlLimit": "Apriboti iki vieno įterpto vaizdo", diff --git a/src/strings/nb.json b/src/strings/nb.json index 1f801f8fa7..8f8f32998f 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -189,7 +189,7 @@ "GuestStar": "Gjesteskuespiller", "GuideProviderSelectListings": "Velg oppføringer", "H264CrfHelp": "Constant Rate Factor (CRF) er standard kvalitetsinnstilling for x264-koderen. Du kan stille inn verdier mellom 0 og 51, hvor lavere verdier vil resultere i bedre kvalitet (på bekostning av høyere fil-størrelse). Fornuftige verdier ligger mellom 18 og 28. Standard for x264 er 23, så du kan bruke det som et utgangspunkt.", - "H264EncodingPresetHelp": "Velg en raskere verdi for å forbedre ytelsen, eller en lavere verdi for å forbedre kvaliteten.", + "EncoderPresetHelp": "Velg en raskere verdi for å forbedre ytelsen, eller en lavere verdi for å forbedre kvaliteten.", "HDPrograms": "HD-programmer", "HardwareAccelerationWarning": "Aktivering av maskinvareakselerasjon kan føre til ustabilitet i enkelte miljøer. Sørg for at operativsystemet og skjermdriverne dine er fullt oppdatert. Hvis du har problemer med å spille videoer etter å ha aktivert dette, må du endre innstillingen tilbake til Auto.", "HeaderAccessSchedule": "Tidsplan for tilgang", @@ -487,7 +487,7 @@ "LabelGroupMoviesIntoCollections": "Gruppér filmer i samlinger", "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister vil filmer som tilhører en samling bli vist som ett gruppeelement.", "LabelH264Crf": "CRF-verdi for H264-koding:", - "LabelH264EncodingPreset": "Forhåndsinnstilling for H264-koding:", + "LabelEncoderPreset": "Forhåndsinnstilling for H264-koding:", "LabelHardwareAccelerationType": "Maskinvareakselerasjon:", "LabelHardwareAccelerationTypeHelp": "Dette er en eksperimentell funksjon som bare er tilgjengelig på støttede systemer.", "LabelHomeScreenSectionValue": "Hjemskjermseksjon {0}:", diff --git a/src/strings/nl.json b/src/strings/nl.json index 40d449cb9c..9ac84a7396 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -252,7 +252,7 @@ "GuideProviderLogin": "Log in", "GuideProviderSelectListings": "Selecteer lijst", "H264CrfHelp": "De Constant Rate Factor (CRF) is de standaard kwaliteit instelling voor de x264-encoder. U kunt de waarden tussen 0 en 51, in voorkomend lagere waarden zou resulteren in een betere kwaliteit (ten koste van hogere bestandsgrootte). aanbevolen zijn waarden tussen de 18 en 28. De standaard voor de x264 is 23, zodat u deze kunt gebruiken als uitgangspunt.", - "H264EncodingPresetHelp": "Kies een hogere waarde om de prestaties, of een tragere waarde om de kwaliteit te verbeteren.", + "EncoderPresetHelp": "Kies een hogere waarde om de prestaties, of een tragere waarde om de kwaliteit te verbeteren.", "HDPrograms": "HD Programma's", "HandledByProxy": "Behandeld door reverse proxy", "HardwareAccelerationWarning": "Hardwareversnelling inschakelen kan instabiliteit veroorzaken in sommige omgevingen. Zorg ervoor dat uw besturingssysteem en videostuurprogramma's volledig up-to-date zijn. Als u problemen ondervindt bij het afspelen van video, nadat u dit hebt ingeschakeld, moet u de instelling terugzetten naar Auto.", @@ -580,7 +580,7 @@ "LabelServerNameHelp": "Deze naam wordt gebruikt om de server te identificeren, standaard is deze de server zijn computer naam.", "LabelGroupMoviesIntoCollections": "Groepeer films in collecties", "LabelGroupMoviesIntoCollectionsHelp": "Bij de weergave van film lijsten, zullen films die tot een collectie behoren worden weergegeven als een gegroepeerd object.", - "LabelH264EncodingPreset": "H264 codering preset:", + "LabelEncoderPreset": "H264 codering preset:", "LabelHardwareAccelerationType": "Hardware acceleratie:", "LabelHardwareAccelerationTypeHelp": "Dit is een experimentele functie die alleen beschikbaar is op ondersteunde systemen.", "LabelHomeNetworkQuality": "Thuisnetwerk kwaliteit:", diff --git a/src/strings/pl.json b/src/strings/pl.json index 92f1e54363..fcaea7a709 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -268,7 +268,7 @@ "GuideProviderLogin": "Logowanie", "GuideProviderSelectListings": "Pokazuj oferty", "H264CrfHelp": "Constant Rate Factor (CRF) to domyślna jakość kodowania x264. Możesz ją ustawić w zakresie 0-51, gdzie niższe wartości zwiększają jakość (kosztem większego rozmiaru pliku). Rozsądne wartości to zakres 18-28. Domyślnie jest to wartość 23 - możesz jej użyć jako wartości początkowej.", - "H264EncodingPresetHelp": "Wybierz wartość faster, żeby zwiększyć wydajność, albo slower, żeby zwiększyć jakość.", + "EncoderPresetHelp": "Wybierz wartość faster, żeby zwiększyć wydajność, albo slower, żeby zwiększyć jakość.", "HDPrograms": "Programy w jakości HD", "HandledByProxy": "Obsługiwane przez usługę pośredniczącą", "HardwareAccelerationWarning": "Aktywacja akceleracji sprzętowej może powodować niestabilność na niektórych środowiskach. Upewnij się, że system operacyjny i sterowniki karty graficznej są aktualne. Jeżeli masz problemy z odtwarzaniem wideo po aktywacji, przywróć to ustawienie do wartości Automatycznie.", @@ -617,7 +617,7 @@ "LabelGroupMoviesIntoCollections": "Grupuj filmy w kolekcje", "LabelGroupMoviesIntoCollectionsHelp": "Podczas wyświetlania listy filmów, filmy należące do kolekcji będą wyświetlone jako jedna zgrupowana pozycja.", "LabelH264Crf": "CRF kodowania H264:", - "LabelH264EncodingPreset": "Szablon kodowania H264:", + "LabelEncoderPreset": "Szablon kodowania H264:", "LabelHardwareAccelerationType": "Akceleracja sprzętowa:", "LabelHardwareAccelerationTypeHelp": "Jest to funkcja eksperymentalna dostępna tylko w obsługiwanych systemach.", "LabelHomeNetworkQuality": "Jakość dla sieci lokalnej:", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 06ad3fb9e5..8f9a9b022b 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -257,7 +257,7 @@ "Guide": "Guia", "GuideProviderSelectListings": "Selecionar Listas", "H264CrfHelp": "O CRF (Constant Rate Factor) é a configuração padrão de qualidade para o codificador x264. Você pode definir valores entre 0 e 51, onde valores menores resultarão em melhor qualidade (ao custo de arquivos maiores). Valores saudáveis estão entre 18 e 28. O padrão para o x264 é 23, então você pode usar isso como um ponto de partida.", - "H264EncodingPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho ou um valor mais lento para melhorar a qualidade.", + "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho ou um valor mais lento para melhorar a qualidade.", "HDPrograms": "Programas em HD", "HandledByProxy": "Tratado pelo proxy reverso", "HardwareAccelerationWarning": "Ativar a aceleração de hardware pode causar instabilidade em alguns sistemas. Verifique se seu sistema operacional e drivers de vídeo estão atualizados. Se tiver dificuldades em reproduzir vídeo depois de ativar, retorne a configuração para automático.", @@ -601,7 +601,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar filmes em coletâneas", "LabelGroupMoviesIntoCollectionsHelp": "Ao exibir listas de filmes, filmes que pertençam a uma coletânea serão exibidos como um único item agrupado.", "LabelH264Crf": "CRF de codificação H264:", - "LabelH264EncodingPreset": "Preset de codificação H264:", + "LabelEncoderPreset": "Preset de codificação H264:", "LabelHardwareAccelerationType": "Aceleração de hardware:", "LabelHardwareAccelerationTypeHelp": "Esta é uma função experimental disponível apenas em sistemas suportados.", "LabelHomeNetworkQuality": "Qualidade da rede local:", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 89df6ba163..2cf5193bd7 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -868,7 +868,7 @@ "HeaderAddToPlaylist": "Adicionar à Lista de Reprodução", "HandledByProxy": "Gerido pelo proxy inverso", "HDPrograms": "Programas HD", - "H264EncodingPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", + "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", "Guide": "Programação", "GuestStar": "Estrela convidada", "GroupVersions": "Agrupar versões", @@ -933,7 +933,7 @@ "OptionProtocolHls": "Emissão HTTP em direto", "LabelHomeScreenSectionValue": "Secção {0} do Painel Principal:", "LabelHomeNetworkQuality": "Qualidade da rede interna:", - "LabelH264EncodingPreset": "Preset para codificação H264:", + "LabelEncoderPreset": "Preset para codificação H264:", "LabelH264Crf": "CRF para codificação H264:", "LabelFont": "Tipo de Letra:", "LabelFileOrUrl": "Ficheiro ou URL:", diff --git a/src/strings/pt.json b/src/strings/pt.json index 200077568d..bece117113 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -342,7 +342,7 @@ "LabelHomeNetworkQuality": "Qualidade da rede interna:", "LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.", "LabelHardwareAccelerationType": "Aceleração por hardware:", - "LabelH264EncodingPreset": "Predefinição para codificação H264:", + "LabelEncoderPreset": "Predefinição para codificação H264:", "LabelH264Crf": "CRF para codificação H264:", "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, filmes que pertençam a uma colecção serão mostrados como um único item agrupado.", "LabelGroupMoviesIntoCollections": "Agrupar filmes em colecções", @@ -1179,7 +1179,7 @@ "HardwareAccelerationWarning": "Activar a aceleração por hardware pode causar instabilidade em alguns ambientes. Garanta que o sistema operativo e os controladores da placa gráfica estão completamente actualizados. Se tiver dificuldades em reproduzir vídeo depois de alterar esta opção, pode ser necessário repôr \\\"Auto\\\".", "HandledByProxy": "Gerido pelo proxy inverso", "HDPrograms": "Programas HD", - "H264EncodingPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", + "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", "H264CrfHelp": "O parâmetro \\\"Constant Rate Factor (CRF)\\\" define o nível de qualidade usadoi por omissão pelo codificador x264. Os valores variam entre 0 e 51, em que valores mais baixos resultam em maior qualidade (com o custo de ficheiros maiores). Valores entre 18 e 28 são habitualmente considerados aceitáveis. O valor por omissão é 23, sendo um bom ponto de partida para ajustes.", "GuideProviderSelectListings": "Seleccionar Listas", "Guide": "Programação", diff --git a/src/strings/ro.json b/src/strings/ro.json index a983d98c7a..fe0194d0e5 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -511,7 +511,7 @@ "GroupVersions": "Grup versiuni", "GuestStar": "Vedeta invitata", "GuideProviderSelectListings": "Selectați Listări", - "H264EncodingPresetHelp": "Alegeți o valoare mai rapidă pentru a îmbunătăți performanța sau o valoare mai lentă pentru a îmbunătăți calitatea.", + "EncoderPresetHelp": "Alegeți o valoare mai rapidă pentru a îmbunătăți performanța sau o valoare mai lentă pentru a îmbunătăți calitatea.", "HardwareAccelerationWarning": "Activarea accelerării hardware poate provoca instabilitate în anumite medii. Asigurați-vă că sistemul de operare și driverele video sunt complet actualizate. Dacă întâmpinați dificultăți pentru a reda video după activarea acestei opțiuni, va trebui să schimbați setarea la Auto.", "HeaderAccessSchedule": "Program de Acces", "HeaderAccessScheduleHelp": "Creați un program de acces pentru a limita accesul la anumite ore.", @@ -811,7 +811,7 @@ "LabelHomeNetworkQuality": "Calitatea pe rețeaua de domiciliu:", "LabelHardwareAccelerationTypeHelp": "Aceasta este o caracteristică experimentală disponibilă doar pe sistemele acceptate.", "LabelHardwareAccelerationType": "Accelerare hardware:", - "LabelH264EncodingPreset": "H264 encoding presetat:", + "LabelEncoderPreset": "H264 encoding presetat:", "LabelH264Crf": "CRF codare H264:", "LabelGroupMoviesIntoCollectionsHelp": "La afișarea listelor de filme, filmele aparținând unei colecții vor fi afișate ca un articol grupat.", "LabelGroupMoviesIntoCollections": "Grupează filmele în colecții", diff --git a/src/strings/ru.json b/src/strings/ru.json index f8ede4ea8a..7615a26cda 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -270,7 +270,7 @@ "GuideProviderLogin": "Вход", "GuideProviderSelectListings": "Выбор перечней", "H264CrfHelp": "Постоянное значение оценки (Constant Rate Factor, CRF) - параметр качества по умолчанию для кодёра x264. Возможно задавать значения от 0 до 51, где меньшие значения привели бы к улучшению качества (за счёт бо́льших размеров файлов). Разумными являются значения от 18 до 28. Стандартно для x264 - 23, так что вы можете использовать это в качестве отправной точки.", - "H264EncodingPresetHelp": "Выберите значение быстрее для улучшения производительности, или значение медленнее для улучшения качества.", + "EncoderPresetHelp": "Выберите значение быстрее для улучшения производительности, или значение медленнее для улучшения качества.", "HDPrograms": "HD-передачи", "HandledByProxy": "Обрабатывается обратным прокси", "HardwareAccelerationWarning": "Включение аппаратного ускорения может привести к нестабильности в некоторых средах. Убедитесь в том, что ваша операционная система и видеодрайверы полностью актуализированы. Если имеются проблемы с воспроизведением видео после включения этого, необходимо сменить параметр назад на Авто.", @@ -620,7 +620,7 @@ "LabelGroupMoviesIntoCollections": "Группировать фильмы внутрь коллекций", "LabelGroupMoviesIntoCollectionsHelp": "При отображении списка фильмов, элементы, принадлежащие к одной коллекции будут отображаться как единый сгруппированный элемент.", "LabelH264Crf": "Значение CRF H264-кодирования:", - "LabelH264EncodingPreset": "Предустановка H264-кодирования:", + "LabelEncoderPreset": "Предустановка H264-кодирования:", "LabelHardwareAccelerationType": "Аппаратное ускорение:", "LabelHardwareAccelerationTypeHelp": "Это экспериментальная функция, имеющаяся только на поддерживаемых системах.", "LabelHomeNetworkQuality": "Качество в домашней сети:", diff --git a/src/strings/sk.json b/src/strings/sk.json index d719c4fd6c..19cf3e3615 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1146,7 +1146,7 @@ "HardwareAccelerationWarning": "Povolenie hardvérovej akcelerácie môže spôsobiť nestabilitu v niektorých podmienkach. Uistite sa, že váš operačný systém a grafické ovládače sú plne aktualizované. Pokiaľ máte po zapnutí problémy s prehrávaním videa, budete musieť zmeniť nastavenie späť na Auto.", "AddItemToCollectionHelp": "Pridať položku do kolekcie jej vyhľadaním a použitím pravého tlačítka myši alebo kliknutím na tlačidlo ponuky a pridať do kolekcie.", "HandledByProxy": "Spracované pomocou reverznej proxy", - "H264EncodingPresetHelp": "Vyberte hodnotu faster pre zlepšenie výkonu alebo hodnotu slower pre zlepšenie kvality.", + "EncoderPresetHelp": "Vyberte hodnotu faster pre zlepšenie výkonu alebo hodnotu slower pre zlepšenie kvality.", "H264CrfHelp": "Constant Rate Factor (CRF) je východzím nastavením kvality pre x264 enkodér. Môžete mu nadstaviť hodnotu medzi 0 a 51, kde nižšia hodnota vedie k vyššej kvalite (za cenu väčšieho súboru). Rozumné hodnoty sú medzi 18 a 28. Východzia hodnota pre x264 je 23, ktorú môžete použiť ako začiatočný bod.", "GuideProviderSelectListings": "Výber zobrazenia", "GroupVersions": "Skupinové verzie", @@ -1430,7 +1430,7 @@ "LabelIconMaxHeightHelp": "Maximálne rozlíšenie ikon pomocou prostredníctvom upnp:icon.", "LabelHttpsPortHelp": "Číslo TCP portu, na ktoré by sa mal naviazať Jellyfin HTTPS server.", "LabelHomeNetworkQuality": "Kvalita na domácej sieti:", - "LabelH264EncodingPreset": "Prednastavené H264 enkódovanie:", + "LabelEncoderPreset": "Prednastavené H264 enkódovanie:", "LabelH264Crf": "H264 enkódovanie CRF:", "LabelFriendlyName": "Priateľský názov:", "LabelFolder": "Priečinok:", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 05db2ee3e9..9ea6a72c88 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -454,7 +454,7 @@ "HardwareAccelerationWarning": "Omogočanje strojnega pospeševanja lahko povzroči nestabilnost v določenih okoljih. Zagotovite, da so vaš operacijski sistem in gonilniki posodobljeni. Če imate po omogočanju te nastavitve težave s predvajanjem videa, jo nastavite nazaj na samodejno.", "HandledByProxy": "Upravlja reverse proxy", "HDPrograms": "HD programi", - "H264EncodingPresetHelp": "Izberite hitrejšo vrednost za boljšo zmogljivost ali počasnejšo vrednost za boljšo kakovost.", + "EncoderPresetHelp": "Izberite hitrejšo vrednost za boljšo zmogljivost ali počasnejšo vrednost za boljšo kakovost.", "H264CrfHelp": "Faktor stalne hitrosti (CRF) je privzeta nastavitev kakovosti za kodirnik x264. Vrednosti lahko nastavite med 0 in 51, pri čemer nižje vrednosti dosežejo boljšo kakovost (na račun večjih velikosti datotek). Razumne vrednosti so med 18 in 28. Privzeta vrednost za x264 je 23, zato lahko to uporabite kot izhodišče.", "GuideProviderSelectListings": "Izberi sezname", "GuideProviderLogin": "Prijava", @@ -687,7 +687,7 @@ "LabelFileOrUrl": "Datoteka ali URL:", "LabelFont": "Pisava:", "LabelGroupMoviesIntoCollections": "Združi filme v zbirke", - "LabelH264EncodingPreset": "Predloga kodiranja H264:", + "LabelEncoderPreset": "Predloga kodiranja H264:", "LabelHardwareAccelerationType": "Strojno pospeševanje:", "LabelHardwareAccelerationTypeHelp": "To je eksperimentalna funkcija, ki je na voljo zgolj na podprtih sistemih.", "LabelHomeNetworkQuality": "Kvaliteta v domačem omrežju:", diff --git a/src/strings/sv.json b/src/strings/sv.json index c7d1931201..17556a0f6d 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -242,7 +242,7 @@ "GuideProviderLogin": "Logga in", "GuideProviderSelectListings": "Välj listor", "H264CrfHelp": "Constant Rate Factor (CRF) är kvalitetsinställningen för x264-kodeken. Du kan använda värden mellan 0 och 51, där lägre värden resulterar i bättre kvalitet (på bekostnad av större filstorlekar). Rimliga värden ligger mellan 18 och 28. Det förvalda värdet är 23, som du kan använda som utgångspunkt.", - "H264EncodingPresetHelp": "Välj ett snabbare värde för öka prestandan, eller ett långsammare värde för att utöka kvaliten.", + "EncoderPresetHelp": "Välj ett snabbare värde för öka prestandan, eller ett långsammare värde för att utöka kvaliten.", "HDPrograms": "HD-program", "HandledByProxy": "Hanteras av reverse proxy", "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem att spela upp videor när detta är på behöver du ändra tillbaka inställningen till Auto.", @@ -574,7 +574,7 @@ "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", "LabelH264Crf": "H264-omkodning CRF:", - "LabelH264EncodingPreset": "H264-omkodningsförval:", + "LabelEncoderPreset": "H264-omkodningsförval:", "LabelHardwareAccelerationType": "Hårdvaruacceleration:", "LabelHardwareAccelerationTypeHelp": "Endast tillgängligt på hårdvara med stöd.", "LabelHomeNetworkQuality": "Hemnätverkskvalitet:", diff --git a/src/strings/tr.json b/src/strings/tr.json index d6df5a73a2..c9b5f8014d 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -513,7 +513,7 @@ "HardwareAccelerationWarning": "Donanım ivmesini etkinleştirmek bazı ortamlarda dengesizliğe neden olabilir. İşletim sisteminizin ve video sürücülerinizin tamamen güncel olduğundan emin olun. Bunu etkinleştirdikten sonra video oynatmakta zorluk çekiyorsanız, ayarı tekrar Auto (Otomatik) olarak değiştirmeniz gerekecektir.", "HandledByProxy": "Ters proxy tarafından kullanılır", "HDPrograms": "HD programlar", - "H264EncodingPresetHelp": "Performansı artırmak için daha hızlı bir değer veya kaliteyi artırmak için daha yavaş bir değer seçin.", + "EncoderPresetHelp": "Performansı artırmak için daha hızlı bir değer veya kaliteyi artırmak için daha yavaş bir değer seçin.", "H264CrfHelp": "Sabit Hız Faktörü (CRF), x264 kodlayıcı için varsayılan kalite ayarıdır. Değerleri 0 ile 51 arasında ayarlayabilirsiniz, burada daha düşük değerler daha iyi kaliteyle sonuçlanır (daha yüksek dosya boyutları pahasına). Aklı başında değerleri 18 ila 28 arasındadır. X264 için varsayılan 23, bu nedenle bunu başlangıç noktası olarak kullanabilirsiniz.", "GuideProviderSelectListings": "İlan Seç", "GuideProviderLogin": "Oturum aç", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index c4c5776d67..df64ead346 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -244,7 +244,7 @@ "GuideProviderLogin": "登入", "GuideProviderSelectListings": "选择列表", "H264CrfHelp": "The Constant Rate Factor (CRF) 是 x264 编码器的默认质量设置。您可以设置介于0和51之间的值, 其中较低的值将导致更好的质量 (以更高的文件大小为代价)。正常值介于18和28之间。x264 的默认值为 23, 因此可以将其用作起始点。", - "H264EncodingPresetHelp": "选择一个更快的值以提升性能,或者选择一个更慢的值以提升质量。", + "EncoderPresetHelp": "选择一个更快的值以提升性能,或者选择一个更慢的值以提升质量。", "HDPrograms": "高清节目", "HandledByProxy": "由反向代理处理", "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和视频驱动程序是最新的。如果你在开启此项后播放视频产生困难,那么你需要将此选项设置回”自动“。", @@ -581,7 +581,7 @@ "LabelGroupMoviesIntoCollections": "批量添加电影到收藏", "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,属于一个收藏的电影将显示为一个分组。", "LabelH264Crf": "H264 CRF 编码质量等级:", - "LabelH264EncodingPreset": "H264 编码预设:", + "LabelEncoderPreset": "H264 和 H265 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", "LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。", "LabelHomeNetworkQuality": "家庭网络质量:", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index ceb4af38f6..b0ef42c743 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -549,7 +549,7 @@ "Guide": "指南", "GuideProviderSelectListings": "選擇列表", "H264CrfHelp": "The Constant Rate Factor (CRF) 是 x264 編碼器的默認畫質設置。此方法允許編碼器自動分配位元速率來試著達到一定輸出品質。讓每個畫格得到它需要的位元數來保持所需的品質等級。CRF 會得到最佳的位元速率分配結果。", - "H264EncodingPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", + "EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", "HDPrograms": "HD節目", "HandledByProxy": "由反向代理處理", "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”自動“。", @@ -1195,7 +1195,7 @@ "LabelKodiMetadataDateFormat": "釋出日期格式:", "LabelIconMaxWidth": "Icon 最寬寬度:", "LabelGroupMoviesIntoCollectionsHelp": "顯示電影列表時,屬於相同集合的電影將作為分組項目顯示。", - "LabelH264EncodingPreset": "H264 解碼品質:", + "LabelEncoderPreset": "H264 解碼品質:", "LabelHardwareAccelerationType": "硬體加速:", "LabelIconMaxWidthHelp": "通過 upnp:icon 的圖標最大解析度。", "LabelImportOnlyFavoriteChannels": "僅限收藏的頻道", From 17f948018815946cbcbf8540397046e4ed1e3a28 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 5 Feb 2020 15:20:48 +0300 Subject: [PATCH 077/260] Disable keyboard navigation for non-TV --- src/components/keyboardnavigation.js | 27 +++++++++++++++++++++++++-- src/controllers/playback/videoosd.js | 7 +------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index d1ed03138c..4f3ed873d9 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -36,6 +36,11 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) 10252: "MediaPlayPause" }; + /** + * Keys used for keyboard navigation. + */ + var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; + var hasFieldKey = false; try { hasFieldKey = "key" in new KeyboardEvent("keydown"); @@ -60,11 +65,28 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) return KeyNames[event.keyCode] || event.key; } + /** + * Returns _true_ if key is used for navigation. + * + * @param {string} key name + * @return {boolean} _true_ if key is used for navigation + */ + function isNavigationKey(key) { + return NavigationKeys.indexOf(key) != -1; + } + function enable() { document.addEventListener("keydown", function (e) { + var key = getKeyName(e); + + // Ignore navigation keys for non-TV + if (!layoutManager.tv && isNavigationKey(key)) { + return; + } + var capture = true; - switch (getKeyName(e)) { + switch (key) { case "ArrowLeft": inputManager.handle("left"); break; @@ -128,6 +150,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) return { enable: enable, - getKeyName: getKeyName + getKeyName: getKeyName, + isNavigationKey: isNavigationKey }; }); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 122b2c8080..fd42f68498 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1087,11 +1087,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } } - /** - * Keys used for keyboard navigation. - */ - var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; - /** * Clicked element. * To skip 'click' handling on Firefox/Edge. @@ -1109,7 +1104,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return; } - if (layoutManager.tv && NavigationKeys.indexOf(key) != -1) { + if (layoutManager.tv && keyboardnavigation.isNavigationKey(key)) { showOsd(); return; } From 8ac0cde29ec0f1c2e1c14ba1910a235cd7d19954 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 5 Feb 2020 17:58:11 +0300 Subject: [PATCH 078/260] Fix logoscreensaver image path --- src/components/logoscreensaver/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/logoscreensaver/plugin.js b/src/components/logoscreensaver/plugin.js index 0eb5e85d31..7716bbf6e5 100644 --- a/src/components/logoscreensaver/plugin.js +++ b/src/components/logoscreensaver/plugin.js @@ -160,7 +160,7 @@ define(["pluginManager"], function (pluginManager) { elem.classList.add("logoScreenSaver"); document.body.appendChild(elem); - elem.innerHTML = ''; + elem.innerHTML = ''; } stopInterval(); From c706a09c5320e46bd18499d1a5a6826d08806654 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Wed, 5 Feb 2020 07:15:41 +0000 Subject: [PATCH 079/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 19cf3e3615..974f02f648 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -5,7 +5,7 @@ "Albums": "Albumy", "All": "Všetko", "AllChannels": "Všetky kanály", - "AllComplexFormats": "Všetky komplexné formáty (ASS, SSA, VOBSUB, PGS, SUB/IDX, atď)", + "AllComplexFormats": "Všetky komplexné formáty (ASS, SSA, VOBSUB, PGS, SUB/IDX, atď.)", "AllEpisodes": "Všetky epizódy", "AllLanguages": "Všetky jazyky", "AllLibraries": "Všetky knižnice", @@ -21,15 +21,15 @@ "AspectRatio": "Pomer strán", "AttributeNew": "Nové", "AutoBasedOnLanguageSetting": "Automaticky (na základe nastavenia jazyka)", - "Backdrops": "Pozadie", - "BirthDateValue": "Narodil sa: {0}", + "Backdrops": "Pozadia", + "BirthDateValue": "Narodený/á: {0}", "BirthLocation": "Miesto narodenia", "BirthPlaceValue": "Miesto narodenia: {0}", "BookLibraryHelp": "Audioknihy a učebnice sú podporované. Prečítajte si {0}pravidlá pre názvy kníh v Jellyfine{1}.", "Books": "Knihy", "ButtonAdd": "Pridať", "ButtonAddMediaLibrary": "Pridať knižnicu médií", - "ButtonAddScheduledTaskTrigger": "Pridať spúštač", + "ButtonAddScheduledTaskTrigger": "Pridať spúšťač", "ButtonAddServer": "Pridať server", "ButtonAddUser": "Pridať používateľa", "ButtonArrowDown": "Dole", @@ -61,7 +61,7 @@ "ButtonNextTrack": "Nasledujúca stopa", "ButtonOpen": "Otvoriť", "ButtonParentalControl": "Rodičovská kontrola", - "ButtonPause": "Pauza", + "ButtonPause": "Pozastaviť", "ButtonPlay": "Prehrať", "ButtonPreviousTrack": "Predchádzajúca stopa", "ButtonProfile": "Profil", @@ -92,7 +92,7 @@ "ButtonTrailer": "Trailer", "ButtonUninstall": "Odinštalovať", "ButtonUp": "Hore", - "ButtonViewWebsite": "Zobraziť web stránku", + "ButtonViewWebsite": "Zobraziť webovú stránku", "ButtonWebsite": "Webové stránky", "Categories": "Kategórie", "ChannelAccessHelp": "Zvoľte kanály zdieľané s týmto používateľom. Administrátori budú schopní upraviť všetky kanály použitím správcu metadát.", @@ -109,8 +109,8 @@ "CriticRating": "Hodnotenie kritikov", "DateAdded": "Dátum pridania", "DatePlayed": "Dátum prehrania", - "DeathDateValue": "Zomrel: {0}", - "DefaultErrorMessage": "Pri spracúvaní požiadavky došlo k chybe. Skúste prosím neskôr znova.", + "DeathDateValue": "Zomrel/a: {0}", + "DefaultErrorMessage": "Pri spracovaní požiadavky došlo k chybe. Prosím, skúste to neskôr znova.", "Delete": "Zmazať", "DeleteDeviceConfirmation": "Ste si istý, že chcete odstrániť toto zariadenie? Objaví sa znovu, keď sa ním používateľ nabudúce prihlási.", "DeleteImage": "Zmazať obrázok", @@ -120,7 +120,7 @@ "DeleteUserConfirmation": "Ste si istý, že chcete zmazať tohto používateľa?", "Descending": "Zostupne", "Desktop": "Stolný počítač", - "DetectingDevices": "Detegujem zariadenia", + "DetectingDevices": "Hľadám zariadenia", "DeviceAccessHelp": "Táto možnosť sa vzťahuje iba na zariadenia, ktoré môžu byť jedinečne identifikované a nezabráni prístup cez prehliadač. Filtrovaním prístupu používateľských zariadení zabraňuje užívateľom použiť nové zariadenie, pokiaľ neboli tu schválené.", "Director": "Režisér", "DirectorValue": "Réžia: {0}", @@ -152,18 +152,18 @@ "Favorite": "Obľúbené", "Favorites": "Obľúbené", "File": "Súbor", - "FileNotFound": "Súbor nenájdený.", + "FileNotFound": "Súbor nebol nájdený.", "FileReadError": "Pri čítaní súboru nastala chyba.", "Filters": "Filtre", "FolderTypeBooks": "Knihy", "FolderTypeMovies": "Filmy", "FolderTypeMusic": "Hudba", "FolderTypeMusicVideos": "Hudobné videá", - "FolderTypeTvShows": "TV", + "FolderTypeTvShows": "Seriály", "FolderTypeUnset": "Zmiešaný obsah", "FormatValue": "Formát: {0}", "Friday": "Piatok", - "Fullscreen": "Na celú obrazovku", + "Fullscreen": "Celá obrazovka", "General": "Všeobecné", "GenreValue": "Žáner: {0}", "Genres": "Žánre", @@ -178,7 +178,7 @@ "HeaderActiveRecordings": "Aktívne nahrávky", "HeaderActivity": "Aktivita", "HeaderAddToCollection": "Pridať do kolekcie", - "HeaderAddUpdateImage": "Pridať/nahrať obrázok", + "HeaderAddUpdateImage": "Pridať/aktualizovať obrázok", "HeaderAddUser": "Pridať používateľa", "HeaderAlbums": "Albumy", "HeaderApiKey": "Kľúč API", @@ -187,7 +187,7 @@ "HeaderAudioSettings": "Nastavenia zvuku", "HeaderAutomaticUpdates": "Automatické aktualizácie", "HeaderBooks": "Knihy", - "HeaderCastAndCrew": "Obsadenie", + "HeaderCastAndCrew": "Obsadenie a štáb", "HeaderChannels": "Kanály", "HeaderChapterImages": "Obrázky kapitol", "HeaderConfigureRemoteAccess": "Nastaviť vzdialený prístup", @@ -225,7 +225,7 @@ "HeaderItems": "Položky", "HeaderLatestEpisodes": "Najnovšie epizódy", "HeaderLatestMedia": "Najnovšie médiá", - "HeaderLatestMovies": "Posledne pridané Filmy", + "HeaderLatestMovies": "Najnovšie filmy", "HeaderLatestMusic": "Najnovšia hudba", "HeaderLatestRecordings": "Najnovšie nahrávky", "HeaderLibraries": "Knižnice", @@ -238,7 +238,7 @@ "HeaderMedia": "Médiá", "HeaderMediaInfo": "Informácie o médiu", "HeaderMetadataSettings": "Nastavenia metadát", - "HeaderMoreLikeThis": "Podobné", + "HeaderMoreLikeThis": "Podobné ako toto", "HeaderMovies": "Filmy", "HeaderMusicQuality": "Kvalita hudby", "HeaderMusicVideos": "Hudobné videá", @@ -870,7 +870,7 @@ "ButtonSelectView": "Výber zobrazenia", "CancelRecording": "Zrušiť nahrávanie", "AirDate": "Dátum vysielania", - "Aired": "Vysielané", + "Aired": "Odvysielané", "Alerts": "Upozornenia", "AllowOnTheFlySubtitleExtraction": "Povoliť extrahovanie titulkov za behu", "ButtonFilter": "Filter", @@ -886,7 +886,7 @@ "Display": "Zobrazenie", "EnableBackdrops": "Pozadia", "EnableDisplayMirroring": "Zrkadlenie obrazu", - "Ended": "Ukončené", + "Ended": "Ukončený", "FileReadCancelled": "Čítanie súboru bolo zrušené.", "Folders": "Priečinky", "GuideProviderLogin": "Prihlásenie", @@ -926,12 +926,12 @@ "MessageImageFileTypeAllowed": "Sú podporované iba súbory JPEG a PNG.", "Playlists": "Playlisty", "Sync": "Synchronizácia", - "Box": "Puzdro", - "BoxRear": "Zadnýá časť puzdra", + "Box": "Obal", + "BoxRear": "Obal (zadná časť)", "ButtonLibraryAccess": "Prístup ku knižnici", "ConfirmDeleteItem": "Zmazaním tejto položky odstránite súbor zo súborového systému aj z knižnice médií. Ste si istý/á, že chcete pokračovať?", "ConfirmDeleteItems": "Zmazaním týchto položiek odstránite súbory zo súborového systému aj z knižnice médií. Ste si istý/á, že chcete pokračovať?", - "Continuing": "Pokračovanie", + "Continuing": "Pokračujúci", "Default": "Predvolené", "DirectStreamHelp2": "Priame streamovanie súboru používa veľmi málo procesorového výkonu bez straty kvality videa.", "DirectStreaming": "Priame streamovanie", @@ -944,7 +944,7 @@ "HeaderAddScheduledTaskTrigger": "Pridať spúšťač", "HeaderAddToPlaylist": "Pridať do playlistu", "HeaderAlert": "Upozornenie", - "HeaderCastCrew": "Herci a obsadenie", + "HeaderCastCrew": "Obsadenie a štáb", "HeaderDownloadSync": "Sťahovanie a synchronizácia", "HeaderExternalIds": "Externé ID:", "HeaderFeatureAccess": "Prístup k funkciám", @@ -1049,11 +1049,11 @@ "HeaderSeriesOptions": "Nastavenia seriálov", "HeaderRestartingServer": "Server sa reštartuje", "HeaderParentalRatings": "Rodičovské hodnotenia", - "HeaderEnabledFields": "Povolenie polia", + "HeaderEnabledFields": "Povolené polia", "HeaderAudioLanguages": "Jazyk zvuku", "HeaderAllowMediaDeletionFrom": "Povoliť zmazanie médií z", "HeaderAdmin": "Admin", - "EnableThemeVideos": "Videá uvodných zvučiek", + "EnableThemeVideos": "Videá úvodných zvučiek", "EnableThemeSongs": "Úvodné zvučky", "EnablePhotosHelp": "Obrázky budú detekované a zobrazené spolu s ostatnými multimediálnymi súbormi.", "EnableColorCodedBackgrounds": "Farebne označené pozadia", @@ -1126,10 +1126,10 @@ "HeaderFavoriteBooks": "Obľúbené knihy", "HeaderEnabledFieldsHelp": "Zrušte zaškrtnutie, aby ste zabránili zmenám dát.", "HeaderDisplay": "Zobrazenie", - "HeaderDirectPlayProfile": "Profil Direct Play", - "HeaderDeveloperInfo": "Vývojárske informácie", + "HeaderDirectPlayProfile": "Profil Priameho prehrávania", + "HeaderDeveloperInfo": "Informácie pre vývojára", "HeaderDeleteTaskTrigger": "Vymazať spúšťač úlohy", - "HeaderDefaultRecordingSettings": "Východzie nastavenia nahrávania", + "HeaderDefaultRecordingSettings": "Predvolené nastavenia nahrávania", "HeaderCodecProfileHelp": "Profily kodekov označujú obmedzenia zariadenia pri prehrávaní pomocou špecifických kodekov. Pokiaľ je obmedzenie aplikované, médium bude transkódované aj pokiaľ je kodek nakonfigurovaný na priame prehrávanie.", "HeaderContainerProfileHelp": "Profily kontajnerov označujú obmedzenia zariadenia pri prehrávaní pomocou špecifických formátov. Pokiaľ je obmedzenie aplikované, médium bude transkódované aj pokiaľ je formát nakonfigurovaný na priame prehrávanie.", "HeaderContainerProfile": "Profily kontajnerov", @@ -1140,8 +1140,8 @@ "HeaderBranding": "Značka", "HeaderBlockItemsWithNoRating": "Blokované položky so žiadnymi alebo nerozpoznanými informáciami o hodnotení:", "HeaderAppearsOn": "Objaví sa", - "HeaderApp": "Aplikácia", - "HeaderApiKeysHelp": "Externé aplikácie musia mať vlastný API kľúč, aby mohli komunikovať s Jellyfin Serverom. Kľúče sú vydávané pomocou prihlásenia sa cez Jellyfin účet alebo manuálnym priradením kľúča aplikacií.", + "HeaderApp": "Appka", + "HeaderApiKeysHelp": "Externé aplikácie musia mať vlastný API kľúč, aby mohli komunikovať s Jellyfin Serverom. Kľúče sú vydávané pomocou prihlásenia sa cez Jellyfin účet alebo manuálnym priradením kľúča aplikácií.", "HeaderAdditionalParts": "Dodatočné časti", "HardwareAccelerationWarning": "Povolenie hardvérovej akcelerácie môže spôsobiť nestabilitu v niektorých podmienkach. Uistite sa, že váš operačný systém a grafické ovládače sú plne aktualizované. Pokiaľ máte po zapnutí problémy s prehrávaním videa, budete musieť zmeniť nastavenie späť na Auto.", "AddItemToCollectionHelp": "Pridať položku do kolekcie jej vyhľadaním a použitím pravého tlačítka myši alebo kliknutím na tlačidlo ponuky a pridať do kolekcie.", @@ -1163,26 +1163,26 @@ "EnableThemeVideosHelp": "Prehrať videá úvodných zvučiek na pozadí počas prechádzania knižnice.", "EnableThemeSongsHelp": "Prehrať úvodnú zvučku na pozadí pri prechádzaní knižnice.", "EnableStreamLoopingHelp": "Povolte, pokiaľ živé vysielanie obsahuje len pár sekúnd dát a nemusí byť nepretržite požadované. Pokiaľ bude táto funkcia povolená v prípade, že nebude potrebná, môže spôsobiť problémy.", - "EnableStreamLooping": "Auto. cyklenie živých streamov", + "EnableStreamLooping": "Auto cyklenie živých vysielaní", "EnableExternalVideoPlayersHelp": "Ponuka externého prehrávača sa zobrazí pri spustení prehrávania videa.", "EnableBackdropsHelp": "Zobraziť pozadia na pozadí pre niektoré stránky pri prechádzaní knižnice.", "DisplayInOtherHomeScreenSections": "Zobrazenie v sekciách domovskej obrazovky, ako sú najnovšie médiá a pokračovať v pozeraní", - "DirectStreamHelp1": "Médium je kompatibilné zo zariadením nezávisle na rozlíšení alebo type média (H.264, AC3, atď), je však v nekompatibilnom kontajneri (mkv, avi, wmv, atď). Video bude za behu prebalené do kompatibilného kontajnera ešte pred streamovaním do zariadenia.", + "DirectStreamHelp1": "Médium je kompatibilné zo zariadením nezávisle na rozlíšení alebo type média (H.264, AC3, atď.), je však v nekompatibilnom kontajneri (mkv, avi, wmv, atď.). Video bude za behu prebalené do kompatibilného kontajnera ešte pred streamovaním do zariadenia.", "Depressed": "Stlačený", - "DefaultSubtitlesHelp": "Titulky sú načítané v závislosti od východzích a vynútených nastavení v zabudovaných metadátach. Jazykové predvoľby sú zobrané do úvahy až vtedy, keď je k dispozícií viacero možností.", - "DefaultMetadataLangaugeDescription": "Toto sú vaše východzie hodnoty ktoré môžu byť prispôsobené na základe jednotlivých knižníc.", + "DefaultSubtitlesHelp": "Titulky sú načítané v závislosti od predvolených a vynútených nastavení v zabudovaných metadátach. Jazykové predvoľby sú zobrané do úvahy až vtedy, keď je k dispozícií viacero možností.", + "DefaultMetadataLangaugeDescription": "Toto sú vaše predvolené hodnoty ktoré môžu byť prispôsobené na základe jednotlivých knižníc.", "CustomDlnaProfilesHelp": "Vytvorte si vlastný profil pre nové zariadenie alebo pre prepísanie systémového profilu.", "CopyStreamURLSuccess": "URL úspešne skopírovaná.", "CopyStreamURL": "Kopírovať URL adresu streamu", "ConfigureDateAdded": "Konfigurácia, ako sa pridáva dátum, je definovaná v dashboarde Jellyfin Servera pod nastavením Knižnice", "ColorTransfer": "Farba prenosu", "ColorPrimaries": "Primárna farba", - "CinemaModeConfigurationHelp": "Kino režim prináša zážitok ako z kina priamo do vašej obývačky s možnosťou prehrať ukážky a vlastné intrá pred hlavným programom.", + "CinemaModeConfigurationHelp": "Kino režim prináša zážitok ako z kina priamo do vašej obývačky s možnosťou prehrať trailery a vlastné intrá pred hlavným programom.", "ChangingMetadataImageSettingsNewContent": "Zmeny v nastavení metadát alebo v sťahovaní artworkov sa budú vzťahovať len na nový obsah pridaný do vašej knižnice. Pokiaľ chcete aplikovať zmeny na existujúce položky, musíte ich aktualizovať manuálne.", "CancelSeries": "Ukončiť seriál", "ButtonSplit": "Rozdeliť", "ButtonAddImage": "Pridať obrázok", - "BurnSubtitlesHelp": "Určuje, či má server vypaľovať titulky počas prevodu videa v závislosti na formáte tituliek. Vynechanie tejto možnosti výrazne zvýši výkon serveru. Vyberte možnosť Auto, pokiaľ chcete vypálovať do obrazu titulky v grafickom formáte (VOBSUB, PGS, SUB/IDX, atď) a niektoré ASS/SSA titulky.", + "BurnSubtitlesHelp": "Určuje, či má server vypaľovať titulky počas prevodu videa v závislosti na formáte tituliek. Vynechanie tejto možnosti výrazne zvýši výkon serveru. Vyberte možnosť Auto, pokiaľ chcete vypalovať do obrazu titulky v grafickom formáte (VOBSUB, PGS, SUB/IDX, atď.) a niektoré ASS/SSA titulky.", "BrowsePluginCatalogMessage": "Prehliadnite si náš katalóg dostupných zásuvných modulov.", "Browse": "Prechádzať", "Blacklist": "Blacklist", @@ -1196,7 +1196,7 @@ "TvLibraryHelp": "Pozrite sa na {0}sprievodcu pomenovania TV programov{1}.", "LabelLineup": "Lineup:", "ErrorAddingListingsToSchedulesDirect": "Nastala chyba pri pridávaní lineupu do účtu vášho Direct plánovača. Direct plánovač umožňuje len obmedzený počet lineupov na účet. Možno sa budete musieť prihlásiť na web Direct plánovača a odstrániť ostatné záznamy z vášho účtu pred pokračovaním.", - "Features": "Fukcie", + "Features": "Funkcie", "XmlTvPathHelp": "Cesta k XMLTV súboru. Jellyfin tento súbor načíta a pravidelne ho skontroluje, či neobsahuje aktualizácie. Ste zodpovedný za vytvorenie a aktualizovanie tohoto súboru.", "XmlTvNewsCategoriesHelp": "Programy s týmito kategóriami budú zobrazené ako spravodajské programy. Viacej kategórií oddelte \"|\".", "XmlTvMovieCategoriesHelp": "Programy s týmito kategóriami budú zobrazené ako filmy. Viacej kategórií oddelte \"|\".", @@ -1452,7 +1452,7 @@ "LabelAlbumArtMaxWidthHelp": "Maximálne rozlíšenie obrázku albumu prostredníctvom upnp:albumArtURI.", "LabelAlbumArtMaxHeightHelp": "Maximálne rozlíšenie obrázku albumu prostredníctvom upnp:albumArtURI.", "LabelAlbumArtHelp": "PN používa obrázok albumu, vrámci dlna:profileID atribútu upnp:albumArtURI. Niektoré zariadenia vyžadujú špecifickú hodnotu, bez ohľadu na veľkosť obrázku.", - "HeaderDirectPlayProfileHelp": "Pridať direct play profil pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", + "HeaderDirectPlayProfileHelp": "Pridať profil priameho prehrávania pre definovanie, ktorý formát môže zariadenie natívne zvládnuť.", "LabelInNetworkSignInWithEasyPasswordHelp": "Použite jednoduchý PIN kód na prihlásenie v klientoch vo vnútri lokálnej siete. Vaše bežné heslo bude potrebné len pokiaľ ste mimo domova. Pokiaľ je PIN kód ponechaný prázdny, tak nebude potrebovať heslo vo vašej domácej sieti.", "EasyPasswordHelp": "Váš jednoduchý PIN kód sa dá používať v režime offline na podporovaných zariadeniach a taktiež môže byť použitý ako jednoduché prihlásenie v lokálnej sieti.", "HeaderNavigation": "Navigácia", From 532d73a80b8fe541d865d41ab6667ef4780f61f1 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 6 Feb 2020 00:13:11 +0900 Subject: [PATCH 080/260] minor theme changes --- src/components/appfooter/appfooter.js | 6 ------ src/controllers/dashboard/dashboard.js | 13 ++++++++++--- src/elements/emby-button/emby-button.css | 4 ---- src/themes/blueradiance/theme.css | 7 +++++-- src/themes/dark/theme.css | 13 ++++++++++--- src/themes/purplehaze/theme.css | 7 +++++-- src/themes/wmc/theme.css | 5 ++++- 7 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/components/appfooter/appfooter.js b/src/components/appfooter/appfooter.js index 61bb62ec29..07d7701ff2 100644 --- a/src/components/appfooter/appfooter.js +++ b/src/components/appfooter/appfooter.js @@ -2,24 +2,18 @@ define(['browser', 'css!./appfooter'], function (browser) { 'use strict'; function render(options) { - var elem = document.createElement('div'); - elem.classList.add('appfooter'); - elem.classList.add('appfooter-blurred'); - document.body.appendChild(elem); return elem; } function appFooter(options) { - var self = this; self.element = render(options); - self.add = function (elem) { self.element.appendChild(elem); }; diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 36cf80fb14..9746b58afe 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -301,23 +301,30 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa html += "
"; html += '
'; html += '
'; - var btnCssClass; - btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; - html += ''; + + var btnCssClass = session.ServerId && session.NowPlayingItem && session.SupportsRemoteControl ? "" : " hide"; + var playIcon = session.PlayState.IsPaused ? 'pause' : 'play'; + + html += ''; html += ''; + btnCssClass = session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length ? "" : " hide"; html += ''; + btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf("DisplayMessage") && session.DeviceId !== connectionManager.deviceId() ? "" : " hide"; html += ''; html += "
"; + html += '
'; html += DashboardPage.getSessionNowPlayingStreamInfo(session); html += "
"; + html += '
'; var userImage = DashboardPage.getUserImage(session); html += userImage ? '
" : '
'; html += '
'; html += DashboardPage.getUsersHtml(session); + html += "
"; html += "
"; html += "
"; diff --git a/src/elements/emby-button/emby-button.css b/src/elements/emby-button/emby-button.css index 2776dec65d..a19ce571e2 100644 --- a/src/elements/emby-button/emby-button.css +++ b/src/elements/emby-button/emby-button.css @@ -47,10 +47,6 @@ background: transparent; } -.button-flat:hover { - opacity: 0.5; -} - .button-link { background: transparent; margin: 0; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index b1979e4901..f1faea2ffc 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -182,7 +182,7 @@ html { } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { - .appfooter-blurred { + .appfooter { background: rgba(1, 2, 50, 0.7); backdrop-filter: blur(20px); } @@ -233,7 +233,10 @@ html { border-color: #00a4dc; } -.button-flat-accent, +.button-flat:hover { + color: #00a4dc; +} + .button-link { color: #00a4dc; } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 58e9ab1856..2df689a84c 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -16,7 +16,7 @@ html { } .skinHeader-withBackground { - background-color: #101010; + background-color: #202020; } .skinHeader.semiTransparent { @@ -157,7 +157,7 @@ html { } .appfooter { - background: #101010; + background: #202020; color: #ccc; color: rgba(255, 255, 255, 0.78); } @@ -195,6 +195,10 @@ html { background: rgba(30, 30, 30, 0.9); } +.detailSticky { + background: #202020; +} + .listItem-border { border-color: rgba(34, 34, 34, 0.9) !important; } @@ -207,7 +211,10 @@ html { border-color: #00a4dc; } -.button-flat-accent, +.button-flat:hover { + color: #00a4dc; +} + .button-link { color: #00a4dc; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 7f10c9265b..ab21a30321 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -276,7 +276,7 @@ a[data-role=button] { } @supports (backdrop-filter:blur(10px)) or (-webkit-backdrop-filter:blur(10px)) { - .appfooter-blurred { + .appfooter { background: rgba(6, 37, 111, 0.7); backdrop-filter: blur(20px); } @@ -321,7 +321,10 @@ a[data-role=button] { border-color: #48c3c8; } -.button-flat-accent, +.button-flat:hover { + color: #48c3c8; +} + .button-link { color: #48c3c8; } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 4243204172..8235cf283b 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -219,7 +219,10 @@ html { border-color: #00a4dc; } -.button-flat-accent, +.button-flat:hover { + color: #00a4dc; +} + .button-link { color: #00a4dc; } From 1b23895e81f135ae4b4e914cabfe07405d19ba91 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 6 Feb 2020 03:14:17 +0900 Subject: [PATCH 081/260] fix placeholder message style --- src/assets/css/librarybrowser.css | 6 ++++++ src/components/tabbedview/itemstab.js | 7 ------- src/tv.html | 8 +++----- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8475b72b2f..9c6e532583 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -220,6 +220,12 @@ left: 0; } +.centerMessage { + margin: auto; + width: 30%; + text-align: center; +} + .layout-desktop .searchTabButton, .layout-mobile .searchTabButton, .layout-tv .headerSearchButton { diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index 33eddb6ec5..d430102f2a 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -104,24 +104,17 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts } function showSortMenu() { - var instance = this; - require(['sortMenu'], function (SortMenu) { - new SortMenu().show({ - settingsKey: instance.getSettingsKey(), settings: instance.getSortValues(), onChange: instance.itemsContainer.refreshItems.bind(instance.itemsContainer), serverId: instance.params.serverId, sortOptions: instance.getSortMenuOptions() - }).then(function () { - updateSortText(instance); updateAlphaPickerState(instance); - instance.itemsContainer.refreshItems(); }); }); diff --git a/src/tv.html b/src/tv.html index 3c15b61b8b..0840652c77 100644 --- a/src/tv.html +++ b/src/tv.html @@ -45,11 +45,9 @@
-
From 1619646f0a49ef7f11accab4c4faf9e35937bfdb Mon Sep 17 00:00:00 2001 From: ferferga Date: Mon, 3 Feb 2020 17:18:15 +0100 Subject: [PATCH 082/260] Default font family now is Noto Sans. Linked to jellyfin-noto package --- package.json | 1 + src/assets/css/fonts.css | 13 +- src/assets/css/fonts.sized.css | 6 +- src/bundle.js | 5 + src/scripts/site.js | 4 +- yarn.lock | 316 +++++++++++++++++++++++++++++---- 6 files changed, 304 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 4392f12153..b75968aa8a 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "flv.js": "^1.5.0", "hls.js": "^0.12.4", "howler": "^2.1.2", + "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.4.1", "jstree": "^3.3.7", "libass-wasm": "^2.1.1", diff --git a/src/assets/css/fonts.css b/src/assets/css/fonts.css index 30fd1e2eb6..f125bc6a03 100644 --- a/src/assets/css/fonts.css +++ b/src/assets/css/fonts.css @@ -1,29 +1,30 @@ html { - font-family: -apple-system, "Helvetica", system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; + font-family: "Noto Sans", sans-serif; font-size: 93%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; } h1, h2, h3 { - /* For better bolding, since Helvetica does not support 500 weight, and 600 is too thick */ - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", 'Open Sans', sans-serif; + font-family: "Noto Sans", sans-serif; } h1 { - font-weight: 500; + font-weight: 400; font-size: 1.8em; } h2 { - font-weight: 500; + font-weight: 400; font-size: 1.5em; } h3 { - font-weight: 500; + font-weight: 400; font-size: 1.17em; } diff --git a/src/assets/css/fonts.sized.css b/src/assets/css/fonts.sized.css index 9cdd666109..f60a94f236 100644 --- a/src/assets/css/fonts.sized.css +++ b/src/assets/css/fonts.sized.css @@ -1,5 +1,5 @@ h1 { - font-weight: 500; + font-weight: 400; font-size: 1.8em; } @@ -8,12 +8,12 @@ h1 { } h2 { - font-weight: 500; + font-weight: 400; font-size: 1.5em; } h3 { - font-weight: 500; + font-weight: 400; font-size: 1.17em; } diff --git a/src/bundle.js b/src/bundle.js index 9e3bc4f237..47e8f890e2 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -102,3 +102,8 @@ var material_icons = require("material-design-icons-iconfont/dist/material-desig _define("material-icons", function() { return material_icons; }); + +var jellyfin_noto = require("jellyfin-noto"); +_define("jellyfin-noto", function () { + return jellyfin_noto; +}); diff --git a/src/scripts/site.js b/src/scripts/site.js index f5ad942d6e..f26e6b68ba 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -732,7 +732,8 @@ var AppInfo = {}; "sortable", "libjass", "webcomponents", - "material-icons" + "material-icons", + "jellyfin-noto" ] }, urlArgs: urlArgs, @@ -747,6 +748,7 @@ var AppInfo = {}; }); require(["css!assets/css/site"]); + require(["jellyfin-noto"]); // define styles // TODO determine which of these files can be moved to the components themselves diff --git a/yarn.lock b/yarn.lock index cc0fe93261..33323c9d71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -675,6 +675,24 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^9.0.0, autoprefixer@^9.7.3: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -856,6 +874,23 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" +browserslist@^1.1.3: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^4.8.3: + version "4.8.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" + integrity sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg== + dependencies: + caniuse-lite "^1.0.30001023" + electron-to-chromium "^1.3.341" + node-releases "^1.1.47" + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -895,27 +930,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^12.0.3: +cacache@^12.0.2, cacache@^12.0.3: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== @@ -956,6 +971,25 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -997,7 +1031,22 @@ camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +caniuse-db@^1.0.30000639: + version "1.0.30001024" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001024.tgz#64045c5d0d57b00c30e09323b578b2305c4737ad" + integrity sha512-dmwZ7u58E68UCexHf92QERFL8kwwCv0TVS1LCNluhZo+565AXU5uNtnPF+J5E2MExwWJeNnhTD63BH8ncMV09g== + +caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023: + version "1.0.30001023" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz#b82155827f3f5009077bdd2df3d8968bcbcc6fc4" + integrity sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA== + +ccount@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1383,6 +1432,27 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1783,6 +1853,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.341: + version "1.3.344" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz#f1397a633c35e726730c24be1084cd25c3ee8148" + integrity sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw== + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -1849,6 +1924,13 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es-abstract@^1.5.1: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" @@ -2944,6 +3026,19 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.4, ignore@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-fresh@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" @@ -2952,6 +3047,24 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -3117,6 +3230,11 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -3181,6 +3299,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3368,6 +3491,10 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +"jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": + version "1.0.0" + resolved "https://github.com/jellyfin/jellyfin-noto#251448082fdeeb6db4563001de18192842498df7" + jquery@>=1.9.1, jquery@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" @@ -3681,11 +3808,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -material-design-icons-iconfont@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" - integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== - markdown-escapes@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5" @@ -3696,6 +3818,11 @@ markdown-table@^1.1.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== +material-design-icons-iconfont@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" + integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== + mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" @@ -4115,6 +4242,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.47: + version "1.1.47" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.47.tgz#c59ef739a1fd7ecbd9f0b7cf5b7871e8a8b591e4" + integrity sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA== + dependencies: + semver "^6.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4145,6 +4279,16 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= + npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -4182,6 +4326,11 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -4342,6 +4491,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" @@ -4349,6 +4505,20 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -4425,6 +4595,36 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^1.0.2, parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -4568,6 +4768,40 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-html@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" + integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== + dependencies: + htmlparser2 "^3.10.0" + +postcss-jsx@^0.36.0, postcss-jsx@^0.36.3: + version "0.36.4" + resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" + integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== + dependencies: + "@babel/core" ">=7.2.2" + +postcss-less@^3.1.0, postcss-less@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" + integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== + dependencies: + postcss "^7.0.14" + +postcss-markdown@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" + integrity sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== + dependencies: + remark "^10.0.1" + unist-util-find-all-after "^1.0.2" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -4708,10 +4942,25 @@ postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" - integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ== +postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + +postcss@^5.0.0, postcss@^5.0.18: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.7: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -5326,6 +5575,11 @@ serialize-javascript@^1.7.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" From 3a9de3f7094df7b032025cd900225f888710edc4 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Fri, 7 Feb 2020 00:26:46 -0500 Subject: [PATCH 083/260] Alter hardware acceleration message Don't say this is "experimental" since it's not. Mention the documentation on configuring hardware acceleration and that it requires additional configuration. --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index c9c00f0da4..755f890737 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -652,7 +652,7 @@ "LabelH264Crf": "H264 encoding CRF:", "LabelH264EncodingPreset": "H264 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", - "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.", + "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration - please see the documentation at https://docs.jellyfin.org/general/administration/hardware-acceleration.html", "LabelHomeNetworkQuality": "Home network quality:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", From bf55c427a55032d16cbc3a6bdddf7e4b2c3e0abe Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 7 Feb 2020 09:03:49 +0300 Subject: [PATCH 084/260] Remove unused logo image --- src/components/logoscreensaver/logowhite.png | Bin 39729 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/components/logoscreensaver/logowhite.png diff --git a/src/components/logoscreensaver/logowhite.png b/src/components/logoscreensaver/logowhite.png deleted file mode 100644 index 560d910d74f696d9f4a5a8ff2e08aa32cbd2fa2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39729 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 OWvHjCpUXO@geCwqo=^S& From 90bd682334c7e119bc7c2240fed53faef84b0100 Mon Sep 17 00:00:00 2001 From: The Iiseppi Date: Fri, 7 Feb 2020 06:10:45 +0000 Subject: [PATCH 085/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 10e1a95a72..d5ffc9c2d7 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -276,7 +276,7 @@ "HeaderFavoriteAlbums": "Lempialbumit", "HeaderContinueWatching": "Jatka Katsomista", "HeaderAlbumArtists": "Albumiartistit", - "Genres": "Genret", + "Genres": "Lajipiiri", "Folders": "Kansiot", "Favorites": "Suosikit", "Display": "Näytä" From 8689e4965f913c7001ea552206bec0509cbfa0ef Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 7 Feb 2020 21:09:05 +0000 Subject: [PATCH 086/260] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 05651f0c0d..ebb3d22b95 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -235,7 +235,7 @@ "ErrorAddingListingsToSchedulesDirect": "Schedules Direct tirkelgińizge tizbek ústeý kezinde qate oryn aldy. Schedules Direct tirkelgisinde tizbekterdiń tek qana shekteýli sany rýqsat etiledi. Oryndamas buryn Schedules Direct saıtyna kirip jáne tirkelgiden basqa tizbelerdi alastaý qajet bolýy múmkin.", "ErrorAddingMediaPathToVirtualFolder": "Tasyǵyshderekter jolyn ústegen kezinde qate oryn aldy. Jol durys ekenine jáne Jellyfin Server prosesi osy jaıǵasymǵa qatynaıtyna kóz jetkizińiz.", "ErrorAddingTunerDevice": "Túner qurylǵysyn ústeý kezinde qate oryn aldy. Bul qatynaýly ekenine kóz jetkizińiz de áreketti qaıtalańyz.", - "ErrorAddingXmlTvFile": "XmlTV faılyna qatynaý kezinde qate oryn aldy. Faıl bar bolýyna kóz jetkizińiz de áreketti qaıtalańyz.", + "ErrorAddingXmlTvFile": "XMLTV-faılyna qatynaý kezinde qate oryn aldy. Faıl bar bolýyna kóz jetkizińiz de áreketti qaıtalańyz.", "ErrorDeletingItem": "Jellyfin Server elementin joıý kezinde qate oryn aldy. Jellyfin Server tasyǵysh qaltasyna jazýǵa ruqsaty bar ekenin tekserip, qaıtalap kórińiz.", "ErrorGettingTvLineups": "TD kezekterin júktep alý kezinde qate oryn aldy. Málimetterińiz durys ekenine kóz jetkizińiz de áreketti qaıtalańyz.", "ErrorMessageStartHourGreaterThanEnd": "Aıaqtalý ýaqyty bastaý ýaqytynan keıinrek bolýy qajet etedi.", @@ -674,7 +674,7 @@ "LabelLoginDisclaimer": "Kirgendegi eskertý:", "LabelLoginDisclaimerHelp": "Kirý beti tómengi jaǵynda beınelenetin habar.", "LabelLogs": "Jurnaldar:", - "LabelManufacturer": "Óndirýshi", + "LabelManufacturer": "Óndirýshi:", "LabelManufacturerUrl": "Óndirýshi URL mekenjaıy", "LabelMatchType": "Sáıkes túri:", "LabelMaxBackdropsPerItem": "Tarmaq boıynsha artqy sýretterdiń eń kóp sany:", @@ -713,7 +713,7 @@ "LabelMoviePrefixHelp": "Eger fılmderdiń ataýynda prefıks qoldanylsa, server durys óńdeı alý úshin buny munda engizińiz.", "LabelMovieRecordingPath": "Fılm jazbalardyń joly (mindetti emes):", "LabelMusicStreamingTranscodingBitrate": "Mýzykany qaıta kodtaý qarqyny:", - "LabelMusicStreamingTranscodingBitrateHelp": "Mýzyka tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz", + "LabelMusicStreamingTranscodingBitrateHelp": "Mýzyka tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz.", "LabelName": "Aty:", "LabelNewName": "Jańa aty:", "LabelNewPassword": "Jańa paról:", @@ -1401,7 +1401,7 @@ "XmlTvKidsCategoriesHelp": "Osy sanattaǵy baǵdarlamalar balalyq baǵdarlamary retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", "XmlTvMovieCategoriesHelp": "Osy sanattaǵy baǵdarlamalar fılmder retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", "XmlTvNewsCategoriesHelp": "Osy sanattaǵy baǵdarlamalar jańalyq baǵdarlamary retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", - "XmlTvPathHelp": "XML TV faılynyń joly. Jellyfin osy faıldy oqıdy jáne ony jańartýlar úshin mezgilinde tekserip shyǵady. Faıldy jasaý jáne jańartý úshin ózińiz jaýapty bolyp tabylasyz.", + "XmlTvPathHelp": "XMLTV-faılynyń joly. Jellyfin osy faıldy oqıdy jáne ony jańartýlar úshin mezgilinde tekserip shyǵady. Faıldy jasaý jáne jańartý úshin ózińiz jaýapty bolyp tabylasyz.", "XmlTvSportsCategoriesHelp": "Osy sanattaǵy baǵdarlamalar sporttyq baǵdarlamary retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", "Yes": "Iá", "Yesterday": "Keshe", @@ -1431,7 +1431,7 @@ "DashboardServerName": "Server: {0}", "DashboardOperatingSystem": "Operasıalyq júıe: {0}", "DashboardArchitecture": "Arhıtektýrasy: {0}", - "LabelWeb": "Ýeb: ", + "LabelWeb": "Ýeb:", "LaunchWebAppOnStartup": "Serverdi iske qosqan kezde ýeb-ınterfeısti iske qosý", "LaunchWebAppOnStartupHelp": "Server bastapqyda iske qosylǵan kezde, ýeb-klıent ádepki sholǵyshta ashylady. Bul serverdi qaıta iske qosý fýnksıasyn qoldanǵanda oryn almaıdy.", "MediaInfoSoftware": "Baǵdarlamalyq jasaqtama", From 6902ec9b4c36c7fd4451d5e0f1a7c9836be260ca Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 7 Feb 2020 21:05:19 +0000 Subject: [PATCH 087/260] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 7615a26cda..b90aaa90b4 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1455,5 +1455,13 @@ "OptionRandom": "Случайный", "ButtonSplit": "Разделить", "SelectAdminUsername": "Выберите имя пользователя для учётной записи администратора.", - "HeaderNavigation": "Навигация" + "HeaderNavigation": "Навигация", + "LabelVideoResolution": "Разрешение видео:", + "LabelStreamType": "Тип потока:", + "EnableFastImageFadeInHelp": "Включить быстрое гашение анимации для загруженных рисунков", + "EnableFastImageFadeIn": "Быстрое гашение рисунка", + "LabelPlayerDimensions": "Размерности проигрывателя:", + "LabelDroppedFrames": "Пропущенные кадры:", + "LabelCorruptedFrames": "Испорченные кадры:", + "CopyStreamURLError": "Произошла ошибка при копировании URL." } From 3b82d9f4389642f3641591e4a85048c90a039d60 Mon Sep 17 00:00:00 2001 From: diegoalrey Date: Fri, 7 Feb 2020 14:57:13 +0000 Subject: [PATCH 088/260] Translated using Weblate (Galician) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gl/ --- src/strings/gl.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/strings/gl.json b/src/strings/gl.json index 0967ef424b..5341462de7 100644 --- a/src/strings/gl.json +++ b/src/strings/gl.json @@ -1 +1,15 @@ -{} +{ + "AllowMediaConversion": "Permitir a conversión dos medios", + "AllComplexFormats": "Todos os formatos complexos (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc.)", + "AllLibraries": "Todas as librarías", + "AllLanguages": "Todas as linguas", + "AllEpisodes": "Todos os episodios", + "All": "Todo", + "Albums": "Álbumes", + "Alerts": "Avisos", + "AllChannels": "Todos os canais", + "AirDate": "Data de emisión", + "Aired": "Emitido", + "AddToPlaylist": "Engadir á lista de reprodución", + "Add": "Engadir" +} From 1448ce1199b112f0373952951b66bb7fe9758908 Mon Sep 17 00:00:00 2001 From: Thibault Nocchi <1619359+ThibaultNocchi@users.noreply.github.com> Date: Sat, 8 Feb 2020 11:14:24 +0100 Subject: [PATCH 089/260] No success toast when copying URL from prompt --- src/components/itemcontextmenu.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index b6dce6b2e6..77ba2a6f49 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -362,9 +362,6 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", }); } else { prompt(globalize.translate("CopyStreamURL"), downloadHref); - require(["toast"], function (toast) { - toast(globalize.translate("CopyStreamURLSuccess")); - }); } document.body.removeChild(textArea); }); From 8b8f84bd429151b76599b0f663543a6ff8598333 Mon Sep 17 00:00:00 2001 From: Danny Michel Date: Sat, 1 Feb 2020 21:41:30 -0500 Subject: [PATCH 090/260] Fix logo page margin --- src/assets/css/librarybrowser.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index e5f45f7ab1..2ce6af8340 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -124,6 +124,11 @@ flex-shrink: 1; } + +.pageTitleWithDefaultLogo { + margin-top: 0; +} + .headerLeft, .skinHeader { display: -webkit-box; From 07d3e16ff556409e7453e54885b9c773691ff735 Mon Sep 17 00:00:00 2001 From: Danny Michel Date: Sat, 1 Feb 2020 21:13:56 -0500 Subject: [PATCH 091/260] Fix padding in header --- src/assets/css/librarybrowser.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index e5f45f7ab1..85c6b3ab0d 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -264,7 +264,7 @@ @media all and (max-width: 84em) { .withSectionTabs .headerTop { - padding-bottom: 0.2em; + padding-bottom: 0.55em; } .sectionTabs { From 9580732c9fa8753b72fd08cf28bd5e83ba62fc1e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 8 Feb 2020 21:51:58 +0100 Subject: [PATCH 092/260] Fix linting issue --- src/assets/css/librarybrowser.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 2ce6af8340..948f336dca 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -124,7 +124,6 @@ flex-shrink: 1; } - .pageTitleWithDefaultLogo { margin-top: 0; } From 5e47ca1a17121cc0b39dc8efaba9f6c5dea19aa1 Mon Sep 17 00:00:00 2001 From: Danny Michel Date: Wed, 5 Feb 2020 04:55:56 -0500 Subject: [PATCH 093/260] Change details page ribbon margin to em --- src/assets/css/librarybrowser.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8475b72b2f..aecf59d371 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -499,7 +499,7 @@ align-items: center; align-content: center; position: sticky; - top: 8%; + top: 3.85em; z-index: 2; } From 55d902b71ad0212846c75bb7a5c2b41be0292ec7 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 8 Feb 2020 23:37:49 +0100 Subject: [PATCH 094/260] Force ratings to 1 decimal place --- src/components/mediainfo/mediainfo.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 8aaad95056..e4375b742a 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -385,16 +385,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } function getStarIconsHtml(item) { - var html = ''; - var rating = item.CommunityRating; - - if (rating) { + if (item.CommunityRating) { html += '
'; html += 'star'; - html += rating; + html += item.CommunityRating.toFixed(1); html += '
'; } From 4965e317370033afb94f9837935bf527b9a6c4a4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 8 Feb 2020 23:54:20 +0100 Subject: [PATCH 095/260] Fix action icons in lists wrapping to multiple lines --- src/assets/css/librarybrowser.css | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 276af71f86..8aaa8323ef 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -875,12 +875,9 @@ } } -@media all and (max-width: 75em) { - .listViewUserDataButtons { - display: flex; - align-items: center; - font-size: 65%; - } +.listViewUserDataButtons { + display: flex; + align-items: center; } .bulletSeparator { From 68ddf19605846c3de771f0d89444e84c9c2cc353 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Feb 2020 01:59:52 +0100 Subject: [PATCH 096/260] Tweak poster size on home screen --- src/components/cardbuilder/card.css | 2 +- src/themes/blueradiance/theme.css | 4 ++++ src/themes/dark/theme.css | 8 ++++++-- src/themes/wmc/theme.css | 4 ++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 96bd28e8d1..8759fd519a 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -725,7 +725,7 @@ button::-moz-focus-inner { @media (min-width: 120em) { .overflowSquareCard, .overflowPortraitCard { - width: 10.3vw; + width: 10.41vw; } } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 63c765e4e6..4eaec3f73b 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -1,3 +1,7 @@ +* { + scrollbar-color: #3b3b3b #202020; +} + .skinHeader, html { color: #ddd; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 58e9ab1856..6196275e32 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -1,3 +1,8 @@ +* { + scrollbar-width: thin; + scrollbar-color: #3b3b3b #202020; +} + .skinHeader, html { color: #ddd; @@ -425,8 +430,7 @@ html { } .layout-desktop ::-webkit-scrollbar { - width: 1em; - height: 1em; + width: 0.4em; } ::-webkit-scrollbar-thumb:horizontal, diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 41e1767565..d453889a49 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -1,3 +1,7 @@ +* { + scrollbar-color: #3b3b3b #202020; +} + html { color: #eee; color: rgba(255, 255, 255, 0.9); From 446f10a9891dae0b4498aacc5d62e6de78ba062c Mon Sep 17 00:00:00 2001 From: Pooka Mustard Date: Sat, 8 Feb 2020 18:37:04 +0000 Subject: [PATCH 097/260] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index e2d30ffce1..38a8d51203 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -1039,5 +1039,6 @@ "EnableNextVideoInfoOverlay": "عرض معلومات الفيديو القادم اثناء التشغيل", "DatePlayed": "تاريخ التشغيل", "DateAdded": "تاريخ الاضافة", - "CriticRating": "تقييم النقاد" + "CriticRating": "تقييم النقاد", + "ResumeAt": "اكمل من {0}" } From 6c68d37e9930b8282f093dac7e0b37be8bc6ec29 Mon Sep 17 00:00:00 2001 From: Tommy Vange Date: Sat, 8 Feb 2020 15:45:10 +0000 Subject: [PATCH 098/260] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 8f8f32998f..f654132e92 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1458,5 +1458,8 @@ "MessageConfirmAppExit": "Vil du avslutte?", "EnableFastImageFadeInHelp": "Bruk rask inntoning av animasjon for lastede bilder", "EnableFastImageFadeIn": "Rask bilde inntoning", - "CopyStreamURLError": "Det var en feil under kopiering av URL'en." + "CopyStreamURLError": "Det var en feil under kopiering av URL'en.", + "LabelVideoResolution": "Video oppløsning:", + "LabelPlayerDimensions": "Spiller dimensjoner:", + "LabelCorruptedFrames": "Korrupte rammer:" } From 1250c04c383942ac6ccce69d6f54e602bc5fcae6 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Feb 2020 13:39:19 +0100 Subject: [PATCH 099/260] Update dependencies --- package.json | 32 +- src/bundle.js | 2 +- src/components/slideshow/slideshow.js | 10 +- yarn.lock | 574 +++++++++++++++----------- 4 files changed, 347 insertions(+), 271 deletions(-) diff --git a/package.json b/package.json index b75968aa8a..87050382c5 100644 --- a/package.json +++ b/package.json @@ -7,27 +7,27 @@ "devDependencies": { "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^2.1.0", - "eslint": "^5.16.0", - "file-loader": "^3.0.1", + "css-loader": "^3.4.2", + "eslint": "^6.8.0", + "file-loader": "^5.0.2", "html-webpack-plugin": "^3.2.0", - "style-loader": "^0.23.1", - "stylelint": "^13.0.0", + "style-loader": "^1.1.3", + "stylelint": "^13.1.0", "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.0.0", - "webpack": "^4.41.0", - "webpack-cli": "^3.3.9", + "webpack": "^4.41.5", + "webpack-cli": "^3.3.10", "webpack-concat-plugin": "^3.0.0", - "webpack-dev-server": "^3.8.1", + "webpack-dev-server": "^3.10.3", "webpack-merge": "^4.2.2" }, "dependencies": { - "alameda": "^1.3.0", - "document-register-element": "^0.5.4", + "alameda": "^1.4.0", + "document-register-element": "^1.14.3", "flv.js": "^1.5.0", - "hls.js": "^0.12.4", - "howler": "^2.1.2", + "hls.js": "^0.13.1", + "howler": "^2.1.3", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.4.1", "jstree": "^3.3.7", @@ -37,11 +37,11 @@ "native-promise-only": "^0.8.0-a", "requirejs": "^2.3.5", "resize-observer-polyfill": "^1.5.1", - "shaka-player": "^2.5.5", - "sortablejs": "^1.9.0", - "swiper": "^3.4.2", + "shaka-player": "^2.5.9", + "sortablejs": "^1.10.2", + "swiper": "^5.3.1", "webcomponents.js": "^0.7.24", - "whatwg-fetch": "^1.1.1" + "whatwg-fetch": "^3.0.0" }, "browserslist": [ "last 2 Firefox versions", diff --git a/src/bundle.js b/src/bundle.js index 47e8f890e2..308687513a 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -67,7 +67,7 @@ _define("shaka", function() { // swiper var swiper = require("swiper"); -require("swiper/dist/css/swiper.min.css"); +require("swiper/css/swiper.min.css"); _define("swiper", function() { return swiper; }); diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 70404cdd68..b6c896f623 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -212,13 +212,15 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f // Optional parameters direction: 'horizontal', loop: options.loop !== false, - autoplay: options.interval || 8000, + autoplay: { + delay: options.interval || 8000 + }, // Disable preloading of all images preloadImages: false, // Enable lazy loading - lazyLoading: true, - lazyLoadingInPrevNext: true, - autoplayDisableOnInteraction: false, + lazy: true, + loadPrevNext: true, + disableOnInteraction: false, initialSlide: options.startIndex || 0, speed: 240 }); diff --git a/yarn.lock b/yarn.lock index 33323c9d71..8f3ba7b2c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -453,16 +453,21 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== -acorn@^6.0.7, acorn@^6.2.1: +acorn@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -473,7 +478,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.10.2: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -483,20 +488,32 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -alameda@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.3.0.tgz#6f5a633940440f7adfa7ab4490326c508f7f360e" - integrity sha512-DRhAXboxtfpHTawg5XRH9mJ3soyd5QocfD47BwgvbI5ryxCs+ga6yju2K0bvFRxINzRBnoJVlUIq/ndVBk6w1Q== +ajv@^6.10.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" + integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alameda@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" + integrity sha512-d6nIRyg4SD/zBupcfZ3lUis58l4H/3U7c1RBtFkcz/7u1dDIQwx26KUvKJ35esOVP6WsAjmRoP2VQ39kQZT/Gg== ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" ansi-html@0.0.7: version "0.0.7" @@ -665,17 +682,19 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.0.0, autoprefixer@^9.7.3: +autoprefixer@^9.0.0, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== @@ -1026,7 +1045,7 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -1182,12 +1201,12 @@ clean-webpack-plugin@^3.0.0: "@types/webpack" "^4.4.31" del "^4.1.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - restore-cursor "^2.0.0" + restore-cursor "^3.1.0" cli-width@^2.0.0: version "2.2.0" @@ -1512,22 +1531,23 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-loader@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-loader@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" css-select@^1.1.0: version "1.2.0" @@ -1573,7 +1593,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -1773,10 +1793,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -document-register-element@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-0.5.4.tgz#df6b57fbb8e141123e5f61acf382d6bb78c02bce" - integrity sha1-32tX+7jhQRI+X2Gs84LWu3jAK84= +document-register-element@^1.14.3: + version "1.14.3" + resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.14.3.tgz#3335d4578df6a1536a34595b91cca36dd5db61d7" + integrity sha512-SbJTzoQXLTcYxnpdDNRZXu/gwsGSShemXpvj6Pa6ujRwJFpJ41siil4tk4y+cQXnqylS6mc2Rtxp/PkMzfkqyQ== + dependencies: + lightercollective "^0.3.0" dom-converter@^0.2: version "0.2.0" @@ -1793,6 +1815,13 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom7@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/dom7/-/dom7-2.1.3.tgz#a736f9c3bfbc4ca039a81cd095f97d1d7f3de19c" + integrity sha512-QTxHHDox+M6ZFz1zHPAHZKI3JOHY5iY4i9BK2uctlggxKQwRhO3q3HHFq1BKsT25Bm/ySSj70K6Wk/G4bs9rMQ== + dependencies: + ssr-window "^1.0.1" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -1871,6 +1900,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +eme-encryption-scheme-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eme-encryption-scheme-polyfill/-/eme-encryption-scheme-polyfill-2.0.0.tgz#b44a8fb7d5c7c0be869897be9d77a8cb9c0ba795" + integrity sha512-/zoXuACHLGQ8w5nkJrVr3YI0IGe05ZS8HR1x5uTqiAoHuj5hPzdnoyW9Zom8iPv93arPzwpde93GrKCFKLFK4g== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1979,68 +2013,77 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: - eslint-visitor-keys "^1.0.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" -eslint-visitor-keys@^1.0.0: +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" + ajv "^6.10.0" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" esprima@^4.0.0: version "4.0.1" @@ -2237,6 +2280,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -2265,7 +2313,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -2296,10 +2344,10 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== dependencies: escape-string-regexp "^1.0.5" @@ -2317,13 +2365,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-5.0.2.tgz#7f3d8b4ac85a5e8df61338cfec95d7405f971caa" + integrity sha512-QMiQ+WBkGLejKe81HU8SZ9PovsU/5uaLo0JdTCEXOYv7i7jfAjHZi1tcwp9tSASJPOmmHZtbdCervFmXMH/Dcg== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" fill-range@^4.0.0: version "4.0.0" @@ -2572,7 +2620,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -2632,11 +2680,18 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + globby@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" @@ -2817,10 +2872,10 @@ he@1.2.x: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hls.js@^0.12.4: - version "0.12.4" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.12.4.tgz#c155b7b2825a11117c111b781973c0ffa759006b" - integrity sha512-e8OPxQ60dBVsdkv4atdxR21KzC1mgwspM41qpozpj3Uv1Fz4CaeQy3FWoaV2O+QKKbNRvV5hW+/LipCWdrwnMQ== +hls.js@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.13.1.tgz#371ae0754fea2ca9bc2c0b3279e4ca631c7a595a" + integrity sha512-AWlQRkjv3WzXXnxQ6i/xNq/dyhswyg589yRSiqwzCg3cAl9cxoiicSsBrgVeDaVyN7coeFv9zJRD9IlzGfh8Aw== dependencies: eventemitter3 "3.1.0" url-toolkit "^2.1.6" @@ -2846,10 +2901,10 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== -howler@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.2.tgz#8433a09d8fe84132a3e726e05cb2bd352ef8bd49" - integrity sha512-oKrTFaVXsDRoB/jik7cEpWKTj7VieoiuzMYJ7E/EU5ayvmpRhumCv3YQ3823zi9VTJkSWAhbryHnlZAionGAJg== +howler@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.3.tgz#07c88618f8767e879407a4d647fe2d6d5f15f121" + integrity sha512-PSGbOi1EYgw80C5UQbxtJM7TmzD+giJunIMBYyH3RVzHZx2fZLYBoes0SpVVHi/SFa1GoNtgXj/j6I7NOKYBxQ== hpack.js@^2.1.6: version "2.1.6" @@ -2987,12 +3042,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -3126,22 +3176,22 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.2.2: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +inquirer@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" @@ -3492,8 +3542,8 @@ isobject@^3.0.0, isobject@^3.0.1: integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= "jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": - version "1.0.0" - resolved "https://github.com/jellyfin/jellyfin-noto#251448082fdeeb6db4563001de18192842498df7" + version "1.0.2" + resolved "https://github.com/jellyfin/jellyfin-noto#a441b179c833288fc372cadb408d32a76c5479f1" jquery@>=1.9.1, jquery@^3.4.1: version "3.4.1" @@ -3510,7 +3560,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -3603,10 +3653,10 @@ known-css-properties@^0.11.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== -known-css-properties@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.17.0.tgz#1c535f530ee8e9e3e27bb6a718285780e1d07326" - integrity sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w== +known-css-properties@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f" + integrity sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw== lcid@^2.0.0: version "2.0.0" @@ -3643,6 +3693,11 @@ libjass@^0.11.0: resolved "https://registry.yarnpkg.com/libjass/-/libjass-0.11.0.tgz#bff1f464a2428c3bddfb68e4503b2d52afe3d6e6" integrity sha1-v/H0ZKJCjDvd+2jkUDstUq/j1uY= +lightercollective@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/lightercollective/-/lightercollective-0.3.0.tgz#1f07638642ec645d70bdb69ab2777676f35a28f0" + integrity sha512-RFOLSUVvwdK3xA0P8o6G7QGXLIyy1L2qv5caEI7zXN5ciaEjbAriRF182kbsoJ1S1TgvpyGcN485fMky6qxOPw== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -3663,7 +3718,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -3705,7 +3760,7 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4: +lodash@^4.1.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3731,10 +3786,10 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -loglevel@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" - integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +loglevel@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== longest-streak@^2.0.1: version "2.0.3" @@ -3823,11 +3878,16 @@ material-design-icons-iconfont@^5.0.1: resolved "https://registry.yarnpkg.com/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz#371875ed7fe9c8c520bc7123c3231feeab731c31" integrity sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA== -mathml-tag-names@^2.0.1, mathml-tag-names@^2.1.1: +mathml-tag-names@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc" integrity sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw== +mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -3975,12 +4035,7 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -4077,7 +4132,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -4124,10 +4179,10 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: version "2.14.0" @@ -4411,12 +4466,12 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" opn@^5.5.0: version "5.5.0" @@ -4425,17 +4480,17 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" original@^1.0.0: version "1.0.2" @@ -4754,14 +4809,14 @@ plur@^2.1.2: dependencies: irregular-plurals "^1.0.0" -portfinder@^1.0.24: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -4775,7 +4830,7 @@ postcss-html@^0.36.0: dependencies: htmlparser2 "^3.10.0" -postcss-jsx@^0.36.0, postcss-jsx@^0.36.3: +postcss-jsx@^0.36.0, postcss-jsx@^0.36.4: version "0.36.4" resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== @@ -4809,29 +4864,30 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== +postcss-modules-scope@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" + integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - icss-replace-symbols "^1.1.0" + icss-utils "^4.0.0" postcss "^7.0.6" postcss-reporter@^1.3.3: @@ -4907,7 +4963,7 @@ postcss-selector-parser@^3.1.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -4937,12 +4993,12 @@ postcss-syntax@^0.36.2: resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== @@ -4957,7 +5013,7 @@ postcss@^5.0.0, postcss@^5.0.18: source-map "^0.5.6" supports-color "^3.2.3" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.7: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.7: version "7.0.26" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== @@ -5416,12 +5472,12 @@ resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -5473,10 +5529,10 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" @@ -5524,6 +5580,14 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" + integrity sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5541,12 +5605,12 @@ selfsigned@^1.10.7: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@^6.3.0: +semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5570,11 +5634,6 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" @@ -5641,10 +5700,12 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shaka-player@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.5.tgz#81e7265f28f631afd3837c06ec6637824bda71e4" - integrity sha512-YEWBFapWKjwy2+wIgH9NqoFW9A14LIYNAoJ9cQr3c9BGS7qjqxeiYM/H1BJ8so1FQexpsWUdyjwHvcspdc7/nw== +shaka-player@^2.5.9: + version "2.5.9" + resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.9.tgz#007dc19df2bb5d3d959d278b2d894af05adffe38" + integrity sha512-XavLBqxvIbvLOPfk7VKZu5fbMJyVko9bBfzxmMWdX5bvQwUSjU7ZhV8v2tHqXQYafpHml1hlGHzKkLs7idouNQ== + dependencies: + eme-encryption-scheme-polyfill "^2.0.0" shebang-command@^1.2.0: version "1.2.0" @@ -5737,10 +5798,10 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -sortablejs@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.0.tgz#0ebc054acff2486569194a2f975b2b145dd5e7d6" - integrity sha512-+e0YakK1BxgEZpf9l9UiFaiQ8ZOBn1p/4qkkXr8QDVmYyCrUDTyDRRGm0AgW4E4cD0wtgxJ6yzIRkSPUwqhuhg== +sortablejs@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" + integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== source-list-map@^2.0.0: version "2.0.1" @@ -5847,6 +5908,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +ssr-window@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-1.0.1.tgz#30752a6a4666e7767f0b7e6aa6fc2fdbd0d9b369" + integrity sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg== + ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" @@ -5913,7 +5979,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -5930,7 +5996,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -6036,18 +6102,23 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +style-loader@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.6.4" style-search@^0.1.0: version "0.1.0" @@ -6105,12 +6176,12 @@ stylelint-order@^4.0.0: postcss "^7.0.26" postcss-sorting "^5.0.1" -stylelint@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.0.0.tgz#532007f7154c1a5ed14245d857a5884316f5111f" - integrity sha512-6sjgOJbM3iLhnUtmRO0J1vvxie9VnhIZX/2fCehjylv9Gl9u0ytehGCTm9Lhw2p1F8yaNZn5UprvhCB8C3g/Tg== +stylelint@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.1.0.tgz#693fca947873ff34c92bf08cdaa6f3db1cac91e2" + integrity sha512-Ei+nCSQTyZYrsLSUIxq48/QfzCQD9r9sQiBqy7Z4IpIMcj+E0R6b0CHrSFeE7jNgREpBfJKJd6DpstuDrwUiew== dependencies: - autoprefixer "^9.7.3" + autoprefixer "^9.7.4" balanced-match "^1.0.0" chalk "^3.0.0" cosmiconfig "^6.0.0" @@ -6125,17 +6196,17 @@ stylelint@^13.0.0: ignore "^5.1.4" import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.17.0" + known-css-properties "^0.18.0" leven "^3.1.0" lodash "^4.17.15" log-symbols "^3.0.0" - mathml-tag-names "^2.1.1" + mathml-tag-names "^2.1.3" meow "^6.0.0" micromatch "^4.0.2" normalize-selector "^0.2.0" postcss "^7.0.26" postcss-html "^0.36.0" - postcss-jsx "^0.36.3" + postcss-jsx "^0.36.4" postcss-less "^3.1.4" postcss-markdown "^0.36.0" postcss-media-query-parser "^0.2.3" @@ -6257,10 +6328,13 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= -swiper@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/swiper/-/swiper-3.4.2.tgz#39d6b410b1a39833e1f72d3b72999df5f5e38392" - integrity sha1-Oda0ELGjmDPh9y07cpmd9fXjg5I= +swiper@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/swiper/-/swiper-5.3.1.tgz#05a8e989daec0bf2841779f4f0d6fce9db259b9e" + integrity sha512-H44Wf9hu1o1xtexSqjP+toGwAapUyQMt1hy/77ZRFURdWI1oOwGUCUdZCc8a1Zuh1Ud16u3Th+NdFJI3HIRNrw== + dependencies: + dom7 "^2.1.3" + ssr-window "^1.0.1" table@^5.0.0, table@^5.4.6: version "5.4.6" @@ -6300,16 +6374,16 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" @@ -6715,7 +6789,7 @@ v8-compile-cache@2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== -v8-compile-cache@^2.1.0: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== @@ -6789,10 +6863,10 @@ webcomponents.js@^0.7.24: resolved "https://registry.yarnpkg.com/webcomponents.js/-/webcomponents.js-0.7.24.tgz#2116fbfa1468ec416a7befdaa333e1d118f69c04" integrity sha1-IRb7+hRo7EFqe+/aozPh0Rj2nAQ= -webpack-cli@^3.3.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.9.tgz#79c27e71f94b7fe324d594ab64a8e396b9daa91a" - integrity sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A== +webpack-cli@^3.3.10: + version "3.3.10" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" + integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== dependencies: chalk "2.4.2" cross-spawn "6.0.5" @@ -6828,10 +6902,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.8.1: - version "3.8.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.8.2.tgz#3292427bf6510da9a3ac2d500b924a4197667ff9" - integrity sha512-0xxogS7n5jHDQWy0WST0q6Ykp7UGj4YvWh+HVN71JoE7BwPxMZrwgraBvmdEMbDVMBzF0u+mEzn8TQzBm5NYJQ== +webpack-dev-server@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -6848,10 +6922,10 @@ webpack-dev-server@^3.8.1: ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" - portfinder "^1.0.24" + portfinder "^1.0.25" schema-utils "^1.0.0" selfsigned "^1.10.7" semver "^6.3.0" @@ -6890,10 +6964,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" - integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== +webpack@^4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -6915,7 +6989,7 @@ webpack@^4.41.0: node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" + terser-webpack-plugin "^1.4.3" watchpack "^1.6.0" webpack-sources "^1.4.1" @@ -6938,10 +7012,10 @@ webworkify@^1.5.0: resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== -whatwg-fetch@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" - integrity sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk= +whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== which-module@^2.0.0: version "2.0.0" @@ -6962,10 +7036,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== worker-farm@^1.7.0: version "1.7.0" From 726a9495143f672d0a80b7e973116f8c23062dc4 Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Sun, 9 Feb 2020 21:36:42 +0800 Subject: [PATCH 100/260] fix device icons for Safari and Android --- src/components/apphost.js | 2 +- src/scripts/imagehelper.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index 0c4d2a6dca..2a0b7b19e9 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -104,7 +104,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function getDeviceName() { var deviceName; - deviceName = browser.tizen ? "Samsung Smart TV" : browser.web0s ? "LG Smart TV" : browser.operaTv ? "Opera TV" : browser.xboxOne ? "Xbox One" : browser.ps4 ? "Sony PS4" : browser.chrome ? "Chrome" : browser.edge ? "Edge" : browser.firefox ? "Firefox" : browser.msie ? "Internet Explorer" : browser.opera ? "Opera" : "Web Browser"; + deviceName = browser.tizen ? "Samsung Smart TV" : browser.web0s ? "LG Smart TV" : browser.operaTv ? "Opera TV" : browser.xboxOne ? "Xbox One" : browser.ps4 ? "Sony PS4" : browser.chrome ? "Chrome" : browser.edge ? "Edge" : browser.firefox ? "Firefox" : browser.msie ? "Internet Explorer" : browser.opera ? "Opera" : browser.safari ? "Safari" : "Web Browser"; if (browser.ipad) { deviceName += " iPad"; diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js index 2edc130165..a8c4702698 100644 --- a/src/scripts/imagehelper.js +++ b/src/scripts/imagehelper.js @@ -18,11 +18,18 @@ define(["browser"], function (browser) { switch (device.Name || device.DeviceName) { case "Opera": case "Opera TV": + case "Opera Android": return baseUrl + "opera.svg"; case "Chrome": + case "Chrome Android": return baseUrl + "chrome.svg"; case "Firefox": + case "Firefox Android": return baseUrl + "firefox.svg"; + case "Safari": + case "Safari iPad": + case "Safari iPhone": + return baseUrl + "safari.svg"; case "Edge": return baseUrl + "edge.svg"; case "Internet Explorer": From a9833ba3981425515a426d0692ae41d1c57bbf00 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 9 Feb 2020 15:17:30 +0100 Subject: [PATCH 101/260] Update Rotten Tomatoes icons --- src/assets/img/fresh.svg | 20 ++++++++++++++++++++ src/assets/img/rotten.svg | 1 + src/components/mediainfo/fresh.png | Bin 13458 -> 0 bytes src/components/mediainfo/mediainfo.css | 4 ++-- src/components/mediainfo/rotten.png | Bin 9991 -> 0 bytes 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/assets/img/fresh.svg create mode 100644 src/assets/img/rotten.svg delete mode 100644 src/components/mediainfo/fresh.png delete mode 100644 src/components/mediainfo/rotten.png diff --git a/src/assets/img/fresh.svg b/src/assets/img/fresh.svg new file mode 100644 index 0000000000..0602ab2481 --- /dev/null +++ b/src/assets/img/fresh.svg @@ -0,0 +1,20 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/img/rotten.svg b/src/assets/img/rotten.svg new file mode 100644 index 0000000000..04bef05bc1 --- /dev/null +++ b/src/assets/img/rotten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/mediainfo/fresh.png b/src/components/mediainfo/fresh.png deleted file mode 100644 index 701ef6a8c05e025f55cc600c1f36c81e90f09022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13458 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%0DN*0`v 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 Date: Sun, 9 Feb 2020 16:26:55 +0100 Subject: [PATCH 102/260] Add delay on play/pause to prevent hiccup when entering fullscreen Resolves: #589 --- src/controllers/playback/videoosd.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..d07cc1da8c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,6 +1230,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); + if(playerPauseClickTimeout) { + clearTimeout(playerPauseClickTimeout); + } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); @@ -1369,6 +1372,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; + let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1388,8 +1392,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - playbackManager.playPause(currentPlayer); - showOsd(); + if(playerPauseClickTimeout){ + clearTimeout(playerPauseClickTimeout); + playerPauseClickTimeout = 0; + } else { + playerPauseClickTimeout = setTimeout(() => { + playbackManager.playPause(currentPlayer); + showOsd(); + playerPauseClickTimeout = 0; + }, 300); + } } break; From 58cb50a2d64dc4d4bdde8fcad73a4a96b2140223 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Mon, 10 Feb 2020 01:05:45 +0800 Subject: [PATCH 103/260] fix detail page title on mobile devices --- src/assets/css/librarybrowser.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 413da9436d..8010d05fa9 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -509,13 +509,14 @@ align-items: center; align-content: center; position: sticky; - top: 6.6%; + top: 3.85em; z-index: 2; } .layout-mobile .detailPagePrimaryContainer { display: block; position: relative; + top: 0; } .layout-tv .detailPagePrimaryContainer { From fbb6e673a8bda5b12ce457b194e4e6b1f9e6153a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Libor=20Fil=C3=ADpek?= Date: Sun, 9 Feb 2020 19:12:29 +0000 Subject: [PATCH 104/260] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 9bb889d97f..346215407f 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1560,5 +1560,12 @@ "HeaderNavigation": "Navigace", "ButtonSplit": "Rozdělit", "MessageConfirmAppExit": "Přejete si odejít?", - "CopyStreamURLError": "Při kopírování URL došlo k chybě." + "CopyStreamURLError": "Při kopírování URL došlo k chybě.", + "LabelVideoResolution": "Rozlišení videa:", + "LabelStreamType": "Typ streamu:", + "EnableFastImageFadeInHelp": "Povolte rychlejší animaci pro načtené obrázky", + "EnableFastImageFadeIn": "Rychlé zmizení obrazu", + "LabelPlayerDimensions": "Zobrazené rozlišení:", + "LabelDroppedFrames": "Vynechané snímky:", + "LabelCorruptedFrames": "Poškozené snímky:" } From 99dcafa45f6559e2fd98325db61aae2fedb012ba Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 9 Feb 2020 14:23:52 +0000 Subject: [PATCH 105/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index df64ead346..db33230cf7 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -695,10 +695,10 @@ "LabelProfileAudioCodecs": "音频编解码器:", "LabelProfileCodecs": "编解码器:", "LabelProfileCodecsHelp": "以逗号分隔。留空则适用于所有编解码器。", - "LabelProfileContainer": "媒体载体:", + "LabelProfileContainer": "媒体载体:", "LabelProfileContainersHelp": "以逗号分隔。留空则适用于所有媒体载体。", "LabelProfileVideoCodecs": "视频编解码器:", - "LabelProtocol": "协议:", + "LabelProtocol": "协议:", "LabelProtocolInfo": "协议信息:", "LabelProtocolInfoHelp": "当响应来自设备的 GetProtocolInfo(获取协议信息)请求时,该值将被使用。", "LabelPublicHttpPort": "公开 HTTP 端口号:", From 0a4eec4110594bd0e20aac5c6a7bac3c07d87f27 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Sun, 9 Feb 2020 14:27:23 +0000 Subject: [PATCH 106/260] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index b0ef42c743..d2d5998ee3 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1276,7 +1276,7 @@ "LabelKodiMetadataEnableExtraThumbs": "複製 extrafanart 到 extrathumbs 欄位", "LabelMovieCategories": "電影分類:", "LabelMoviePrefix": "電影前綴:", - "LabelProfileContainer": "影片容器:", + "LabelProfileContainer": "影片容器:", "LabelDropShadow": "陰影:", "LabelSecureConnectionsMode": "安全連接模式:", "LabelTVHomeScreen": "電視模式主畫面:", @@ -1579,7 +1579,7 @@ "LabelPreferredDisplayLanguage": "首選語言:", "LabelPreferredDisplayLanguageHelp": "翻譯 Jellyfin 是一個進行中的項目。", "LabelPreferredSubtitleLanguage": "字幕語言偏好:", - "LabelProtocol": "協議:", + "LabelProtocol": "協議:", "LabelProtocolInfo": "協議資訊:", "LabelPublicHttpPort": "公開 HTTP 端口:", "LabelPublicHttpsPort": "公開 HTTPS 端口:", From 0a6de37929427d5a4adfc9b1e6a0a2c59ea0e1ce Mon Sep 17 00:00:00 2001 From: David Date: Mon, 10 Feb 2020 11:08:09 +0000 Subject: [PATCH 107/260] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index d9d32e94b2..2e338cce62 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -636,7 +636,7 @@ "LabelMaxChromecastBitrate": "Max Chromcast Datenrate:", "LabelMaxParentalRating": "Höchste erlaubte elterlich Bewertung:", "LabelMaxResumePercentage": "Maximale Prozent für Wiederaufnahme:", - "LabelMaxResumePercentageHelp": "Titel werden als \"vollständig gesehen\" markiert, wenn sie nach dieser Zeitmarke gestoppt werden", + "LabelMaxResumePercentageHelp": "Titel werden als \"vollständig gesehen\" markiert, wenn sie nach dieser Zeitmarke gestoppt werden.", "LabelMaxScreenshotsPerItem": "Maximale Anzahl von Screenshots pro Element:", "LabelMaxStreamingBitrate": "Maximale Streaming-Qualität:", "LabelMaxStreamingBitrateHelp": "Wähle die maximale Bitrate während des streamens.", @@ -654,7 +654,7 @@ "LabelMethod": "Methode:", "LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:", "LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme:", - "LabelMinResumeDurationHelp": "Die Videolänge in Sekunden, ab der die Wiedergabeposition gespeichert wird und dich fortsetzen lässt", + "LabelMinResumeDurationHelp": "Die Videolänge in Sekunden, ab der die Wiedergabeposition gespeichert wird und dich fortsetzen lässt.", "LabelMinResumePercentage": "Minimale Prozent für Wiederaufnahme:", "LabelMinResumePercentageHelp": "Titel werden als \"Ungesehen\" eingetragen, wenn sie vor dieser Zeit gestoppt werden.", "LabelMinScreenshotDownloadWidth": "Minimale Breite für zu herunterladende Screenshot:", @@ -1325,7 +1325,7 @@ "LabelVersion": "Version:", "LabelVersionNumber": "Version {0}", "LabelVideo": "Video:", - "LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen", + "LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen.", "LinksValue": "Links: {0}", "MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.", "MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.", @@ -1476,5 +1476,14 @@ "VideoRange": "Videobereich", "ButtonSplit": "Teilen", "SelectAdminUsername": "Bitte einen Benutzernamen für das Administrator-Konto auswählen.", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "CopyStreamURLError": "Beim Kopieren der URL ist ein Fehler aufgetreten.", + "MessageConfirmAppExit": "Wirklich verlassen?", + "LabelVideoResolution": "Videoauflösung:", + "LabelStreamType": "Streamtyp:", + "EnableFastImageFadeInHelp": "Aktiviere schnellere Einblendeanimation für geladene Bilder", + "EnableFastImageFadeIn": "Schnelle Bildeinblendung", + "LabelPlayerDimensions": "Playerabmessungen:", + "LabelDroppedFrames": "Verlorene Frames:", + "LabelCorruptedFrames": "Fehlerhafte Frames:" } From b04b52d599f1b92eae7ab0897cdee48d0392cbae Mon Sep 17 00:00:00 2001 From: Johan Date: Mon, 10 Feb 2020 19:52:09 +0000 Subject: [PATCH 108/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index d5ffc9c2d7..5045d4d0b8 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -268,16 +268,22 @@ "ButtonAddImage": "Lisää kuva", "Movies": "Elokuvat", "HeaderNextUp": "Seuraavaksi", - "HeaderLiveTV": "Netti-TV", + "HeaderLiveTV": "TV-lähetykset", "HeaderFavoriteSongs": "Lempikappaleet", "HeaderFavoriteShows": "Lempisarjat", "HeaderFavoriteEpisodes": "Lempijaksot", "HeaderFavoriteArtists": "Lempiartistit", "HeaderFavoriteAlbums": "Lempialbumit", - "HeaderContinueWatching": "Jatka Katsomista", - "HeaderAlbumArtists": "Albumiartistit", - "Genres": "Lajipiiri", + "HeaderContinueWatching": "Jatka katsomista", + "HeaderAlbumArtists": "Albumin artistit", + "Genres": "Tyylilaji", "Folders": "Kansiot", "Favorites": "Suosikit", - "Display": "Näytä" + "Display": "Näytä", + "Photos": "Kuvat", + "Playlists": "Soittolistat", + "ValueSpecialEpisodeName": "Erikois - {0}", + "Sync": "Synkronoi", + "Songs": "Kappaleet", + "Shows": "Ohjelmat" } From 8c81ce4a421a09ff11a96a8288eaffb99892d739 Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Mon, 10 Feb 2020 17:41:06 +0000 Subject: [PATCH 109/260] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index f654132e92..0635b5ee25 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1459,7 +1459,9 @@ "EnableFastImageFadeInHelp": "Bruk rask inntoning av animasjon for lastede bilder", "EnableFastImageFadeIn": "Rask bilde inntoning", "CopyStreamURLError": "Det var en feil under kopiering av URL'en.", - "LabelVideoResolution": "Video oppløsning:", - "LabelPlayerDimensions": "Spiller dimensjoner:", - "LabelCorruptedFrames": "Korrupte rammer:" + "LabelVideoResolution": "Oppløsning på video:", + "LabelPlayerDimensions": "Dimensjoner på avspiller:", + "LabelCorruptedFrames": "Korrupte bilder:", + "LabelStreamType": "Type strøm:", + "LabelDroppedFrames": "Fortapte bilder:" } From be23d14f48d725fa67a1e2a0f2ad3d8802201ea0 Mon Sep 17 00:00:00 2001 From: j7johnny Date: Tue, 11 Feb 2020 04:53:04 +0000 Subject: [PATCH 110/260] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index d2d5998ee3..6d18c646b9 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -308,7 +308,7 @@ "AddToPlayQueue": "加入播放清單", "AddToPlaylist": "加入播放列表", "Absolute": "絕對", - "AccessRestrictedTryAgainLater": "您的存取目前受限,請稍後再試。", + "AccessRestrictedTryAgainLater": "目前存取受限,請稍後再試。", "AddedOnValue": "已加入 {0}", "AdditionalNotificationServices": "請瀏覽附加元件目錄以安裝額外的通知服務。", "Albums": "專輯", From 220bbb50a8f70179d905931c98be4abe759f6dc6 Mon Sep 17 00:00:00 2001 From: ido1990 Date: Tue, 11 Feb 2020 19:35:51 +0000 Subject: [PATCH 111/260] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index 7a8aa6d9f3..e94a916b02 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -546,5 +546,9 @@ "HeaderFavoriteSongs": "שירים שאהבתי", "Collections": "קולקציות", "Channels": "ערוצים", - "HeaderContinueWatching": "המשך לצפות" + "HeaderContinueWatching": "המשך לצפות", + "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", + "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", + "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB\\IDX וכדומה)", + "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף." } From 0b779d2fb50be8fe2d0742b5c1d39e133d19811b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 12 Feb 2020 09:37:39 +0100 Subject: [PATCH 112/260] Fix linting --- src/assets/css/librarybrowser.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index af5b865a10..cbbd2f198e 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -617,6 +617,11 @@ div.itemDetailGalleryLink.defaultCardBackground { height: 23vw; /* Dirty hack to get it to look somewhat square. Less than ideal. */ } +.btnSyncComplete i { + -webkit-border-radius: 100em; + border-radius: 100em; +} + .itemDetailGalleryLink.defaultCardBackground > i { font-size: 15vw; margin-top: 50%; @@ -643,11 +648,6 @@ div.itemDetailGalleryLink.defaultCardBackground { background: #673ab7 !important; } -.btnSyncComplete i { - -webkit-border-radius: 100em; - border-radius: 100em; -} - .emby-button.detailFloatingButton { position: absolute; background-color: rgba(0, 0, 0, 0.5) !important; From fe23ede57b39a574140ab4cd668697e8b9003155 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 19:51:14 +0300 Subject: [PATCH 113/260] Pass pointer events bypassing the slider thumb --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 30d4ccb6d8..7f7db46f1e 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -79,6 +79,7 @@ background: #00a4dc; border: none; transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + pointer-events: none; } .mdl-slider-hoverthumb::-webkit-slider-thumb { From c44b94a7b70efadc6f60b8f1c0b82493c7127f35 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 02:29:36 +0300 Subject: [PATCH 114/260] Fix font size --- src/elements/emby-slider/emby-slider.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 7f7db46f1e..b640f4d327 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -29,6 +29,8 @@ /* Disable webkit tap highlighting */ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); display: block; + + font-size: inherit; /* Chrome and Firefox override font size for 'input' */ } .mdl-slider::-moz-focus-outer { @@ -72,8 +74,8 @@ .mdl-slider::-webkit-slider-thumb { -webkit-appearance: none; - width: 1.2em; - height: 1.2em; + width: 1.08em; + height: 1.08em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; @@ -100,8 +102,8 @@ .mdl-slider::-moz-range-thumb { -moz-appearance: none; - width: 0.9em; - height: 0.9em; + width: 0.81em; + height: 0.81em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; From 20a20ff9d18bf1c4efb6965a7faed445cbccf225 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 20:04:39 +0300 Subject: [PATCH 115/260] Fix slider bubble position --- src/elements/emby-slider/emby-slider.css | 7 +++++++ src/elements/emby-slider/emby-slider.js | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index b640f4d327..f1f6b72ad5 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -220,6 +220,13 @@ bottom: 0; } +.sliderBubbleTrack { + position: absolute; + left: 0; + right: 0; + margin: 0 0.54em; /* half of slider thumb size */ +} + .sliderBubble { position: absolute; top: 0; diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 24592f4515..00c35b4e2a 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -115,10 +115,11 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli htmlToInsert += '
'; } - htmlToInsert += '
'; + htmlToInsert += '
'; containerElement.insertAdjacentHTML('beforeend', htmlToInsert); + this.sliderBubbleTrack = containerElement.querySelector('.sliderBubbleTrack'); this.backgroundLower = containerElement.querySelector('.mdl-slider-background-lower'); this.backgroundUpper = containerElement.querySelector('.mdl-slider-background-upper'); var sliderBubble = containerElement.querySelector('.sliderBubble'); @@ -152,10 +153,16 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, (window.PointerEvent ? 'pointermove' : 'mousemove'), function (e) { if (!this.dragging) { - var rect = this.getBoundingClientRect(); + var rect = this.sliderBubbleTrack.getBoundingClientRect(); var clientX = e.clientX; + var bubbleValue = (clientX - rect.left) / rect.width; bubbleValue *= 100; + if (this.step !== 0) { + bubbleValue = Math.round(bubbleValue / this.step) * this.step; + } + bubbleValue = Math.min(Math.max(bubbleValue, 0), 100); + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { From 40c7dad2411483ad26d981e1798c35e1210f0221 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 8 Feb 2020 21:21:07 +0300 Subject: [PATCH 116/260] Resize progress bar to slider range --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index f1f6b72ad5..180d728a44 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -167,6 +167,7 @@ margin-top: -0.05em; top: 50%; position: absolute; + padding: 0 0.54em; /* half of slider thumb size */ } .mdl-slider-background-flex { From cc84fce75b3ffd4dec32c903dd6564837b111210 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 01:45:46 +0300 Subject: [PATCH 117/260] Make slider in Edge same as in Chrome --- src/elements/emby-slider/emby-slider.css | 19 ++++++++++++------- src/elements/emby-slider/emby-slider.js | 3 +++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 180d728a44..18c09f61bf 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -72,6 +72,12 @@ display: none; } +.slider-browser-edge { + margin-left: -0.16em; + margin-right: -0.16em; + width: 150%; /* need to occupy space */ +} + .mdl-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 1.08em; @@ -114,22 +120,21 @@ .mdl-slider::-ms-thumb { -webkit-appearance: none; - width: 1.8em; - height: 1.8em; + width: 1.4em; + height: 1.4em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; border: none; - transform: scale(0.9, 0.9); + transform: scale(0.771429); transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); } -.mdl-slider-hoverthumb::-ms-thumb { - margin-left: -0.4em; - transform: scale(0.5, 0.5); +.mdl-slider:hover::-ms-thumb { + transform: none; } -.mdl-slider:hover::-ms-thumb { +.mdl-slider.show-focus:focus::-ms-thumb { transform: none; } diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 00c35b4e2a..f07e6433dc 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -84,6 +84,9 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (browser.noFlex) { this.classList.add('slider-no-webkit-thumb'); } + if (browser.edge || browser.msie) { + this.classList.add('slider-browser-edge'); + } if (!layoutManager.mobile) { this.classList.add('mdl-slider-hoverthumb'); } From c6835f9c41180fad07b9a159e7c35b47e90a8167 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 13:14:12 +0300 Subject: [PATCH 118/260] Make slider in Firefox same as in Chrome --- src/elements/emby-slider/emby-slider.css | 24 ++++++++++-------------- src/elements/emby-slider/emby-slider.js | 2 +- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 18c09f61bf..64f83d7cf8 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -45,17 +45,6 @@ background: transparent; } -.mdl-slider::-moz-range-track { - background: #444; - border: none; - width: calc(100% - 20px); -} - -.mdl-slider::-moz-range-progress { - background: #00a4dc; - width: calc(100% - 20px); -} - .mdl-slider::-ms-track { background: none; color: transparent; @@ -108,14 +97,21 @@ .mdl-slider::-moz-range-thumb { -moz-appearance: none; - width: 0.81em; - height: 0.81em; + width: 1.08em; + height: 1.08em; box-sizing: border-box; border-radius: 50%; background: #00a4dc; background-image: none; border: none; - transform: scale(1.4, 1.4); +} + +.mdl-slider:hover::-moz-range-thumb { + transform: scale(1.3); +} + +.mdl-slider.show-focus:focus::-moz-range-thumb { + transform: scale(1.3); } .mdl-slider::-ms-thumb { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index f07e6433dc..8f93799e67 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -3,7 +3,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); - var supportsNativeProgressStyle = browser.firefox; + var supportsNativeProgressStyle = false; var supportsValueSetOverride = false; var enableWidthWithTransform; From 91631f266d8dd98e40407511e1575080472bde56 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 9 Feb 2020 17:07:13 +0300 Subject: [PATCH 119/260] Fix progress bar position on WebOS 3 --- src/elements/emby-slider/emby-slider.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 64f83d7cf8..ec1dc806d8 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -167,6 +167,7 @@ box-sizing: border-box; margin-top: -0.05em; top: 50%; + left: 0; position: absolute; padding: 0 0.54em; /* half of slider thumb size */ } From 637480230959217fade1c90542357bf0939f5b61 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 12 Feb 2020 13:37:40 +0100 Subject: [PATCH 120/260] Fix linting errors in videoosd --- src/controllers/playback/videoosd.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index d07cc1da8c..eccf065487 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1230,7 +1230,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if(playerPauseClickTimeout) { + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); } var player = currentPlayer; @@ -1392,9 +1392,9 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if(playerPauseClickTimeout){ + if (playerPauseClickTimeout) { clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + playerPauseClickTimeout = 0; } else { playerPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); From 417e4bd12ebe6a3ae00c5780ad7ca4c3ed2ed3b0 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Wed, 12 Feb 2020 15:57:59 +0000 Subject: [PATCH 121/260] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 811c21cff0..7c2d9b1e42 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -172,7 +172,7 @@ "HeaderMediaFolders": "Média Könyvtárak", "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", - "HeaderMoreLikeThis": "További ehhez hasonló", + "HeaderMoreLikeThis": "Több ehhez hasonló", "HeaderMovies": "Filmek", "HeaderMusicVideos": "Zenei videók", "HeaderMyDevice": "Jelenlegi eszköz", @@ -1128,7 +1128,7 @@ "ShowAdvancedSettings": "Speciális beállítások megjelenítése", "ValueSeconds": "{0} másodperc", "AddToPlayQueue": "Lejátszási listához adni", - "AllowHWTranscodingHelp": "Ha engedélyezve van akkor lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Jellyfin Szerver által igényelt átkódolást.", + "AllowHWTranscodingHelp": "Lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Szerver által igényelt átkódolást.", "AllowOnTheFlySubtitleExtraction": "Felirat kinyerésének engedélyezése valós időben", "MessageNoTrailersFound": "Nincsenek előzetesek. Telepítsd a Trailer csatornát, hogy javítsd a filmélményt az internetes előzetesek könyvtárának hozzáadásával.", "OptionEnableM2tsMode": "M2ts mód engedélyezése", @@ -1375,5 +1375,21 @@ "LabelPasswordResetProvider": "Jelszó Visszaállítási Szolgáltató:", "FetchingData": "További adatok lekérése", "LabelBaseUrl": "Alap URL:", - "Depressed": "Nyomott" + "Depressed": "Nyomott", + "Desktop": "Asztal", + "LabelTrackNumber": "Sáv száma:", + "LabelSize": "Méret:", + "LabelSimultaneousConnectionLimit": "Egyidejű streamek maximális száma:", + "LabelServerName": "Szerver neve:", + "LabelPleaseRestart": "A változtatások a weboldal manuális újratöltése után lépnek életbe.", + "LabelPlayMethod": "Lejátszási mód:", + "LabelPlayer": "Lejátszó:", + "LabelPersonRole": "Szerep:", + "LabelNumberOfGuideDays": "Előre letöltött műsorújságbeli napok száma:", + "LabelFolder": "Mappa:", + "HeaderNavigation": "Navigáció", + "HeaderFavoritePeople": "Kedvenc emberek", + "HeaderApp": "Alkalmazás", + "GroupVersions": "Verziók csoportosítása", + "CopyStreamURLError": "Hiba történt az URL másolása közben." } From 7faa4dab2bc8745c72374de9e6b4ca3863c0ddd5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 09:11:05 +0300 Subject: [PATCH 122/260] Remove unused CSS --- src/elements/emby-slider/emby-slider.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index ec1dc806d8..4284d7d81b 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -146,14 +146,6 @@ display: none; } -.mdl-slider-ie-container { - height: 1.25em; - overflow: visible; - border: none; - margin: 0; - padding: 0; -} - .mdl-slider-container { height: 1.25em; position: relative; From c4824abfb08664822480b4662c5c24fa4d1f9193 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 09:15:28 +0300 Subject: [PATCH 123/260] Make a style transition like a button --- src/elements/emby-slider/emby-slider.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 4284d7d81b..9ef577a19e 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -75,7 +75,7 @@ border-radius: 50%; background: #00a4dc; border: none; - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + transition: 0.2s; pointer-events: none; } @@ -104,6 +104,7 @@ background: #00a4dc; background-image: none; border: none; + transition: 0.2s; } .mdl-slider:hover::-moz-range-thumb { @@ -123,7 +124,7 @@ background: #00a4dc; border: none; transform: scale(0.771429); - transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + transition: 0.2s; } .mdl-slider:hover::-ms-thumb { From e13e6f38d53244f2243d4dcee57446c64a9fa7e9 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 11:50:22 +0300 Subject: [PATCH 124/260] Limit slider bubble position to its track --- src/elements/emby-slider/emby-slider.css | 2 +- src/elements/emby-slider/emby-slider.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 9ef577a19e..833fd3e796 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -227,7 +227,7 @@ position: absolute; top: 0; left: 0; - transform: translate3d(-48%, -120%, 0); + transform: translate3d(-50%, -120%, 0); background: #282828; color: #fff; display: flex; diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 8f93799e67..44e9c63106 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -48,8 +48,13 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli function updateBubble(range, value, bubble, bubbleText) { requestAnimationFrame(function () { + var bubbleTrackRect = range.sliderBubbleTrack.getBoundingClientRect(); + var bubbleRect = bubble.getBoundingClientRect(); - bubble.style.left = value + '%'; + var bubblePos = bubbleTrackRect.width * value / 100; + bubblePos = Math.min(Math.max(bubblePos, bubbleRect.width / 2), bubbleTrackRect.width - bubbleRect.width / 2); + + bubble.style.left = bubblePos + 'px'; if (range.getBubbleHtml) { value = range.getBubbleHtml(value); From f68f3634c0af4a83f105b169656339d6cac689c3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 12:21:01 +0300 Subject: [PATCH 125/260] Remove 'supportsNativeProgressStyle' in favor of buffer progress --- src/elements/emby-slider/emby-slider.js | 40 +++++++++++-------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 44e9c63106..e613318814 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -3,7 +3,6 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var EmbySliderPrototype = Object.create(HTMLInputElement.prototype); - var supportsNativeProgressStyle = false; var supportsValueSetOverride = false; var enableWidthWithTransform; @@ -104,25 +103,23 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var htmlToInsert = ''; - if (!supportsNativeProgressStyle) { - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; - // the more of these, the more ranges we can display - htmlToInsert += '
'; + // the more of these, the more ranges we can display + htmlToInsert += '
'; - if (enableWidthWithTransform) { - htmlToInsert += '
'; - } else { - htmlToInsert += '
'; - } - - htmlToInsert += '
'; - htmlToInsert += '
'; - htmlToInsert += '
'; + if (enableWidthWithTransform) { + htmlToInsert += '
'; + } else { + htmlToInsert += '
'; } + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; + htmlToInsert += '
'; containerElement.insertAdjacentHTML('beforeend', htmlToInsert); @@ -190,13 +187,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli passive: true }); - if (!supportsNativeProgressStyle) { - - if (supportsValueSetOverride) { - this.addEventListener('valueset', updateValues); - } else { - startInterval(this); - } + if (supportsValueSetOverride) { + this.addEventListener('valueset', updateValues); + } else { + startInterval(this); } }; From dc95a76e104d491e9dbf5b5a99b6dc86cf3076b0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 12:23:42 +0300 Subject: [PATCH 126/260] Fix vertical position of slider progress bar --- src/elements/emby-slider/emby-slider.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 833fd3e796..5dc57c49c3 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -158,7 +158,6 @@ .mdl-slider-background-flex-container { width: 100%; box-sizing: border-box; - margin-top: -0.05em; top: 50%; left: 0; position: absolute; @@ -168,7 +167,7 @@ .mdl-slider-background-flex { background: #333; height: 0.2em; - margin-top: -0.08em; + margin-top: -0.1em; width: 100%; top: 50%; left: 0; From 4c4f8ff800ed5bdd6c55d3aaae21b860cb4b06a2 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 14 Feb 2020 03:17:39 +0900 Subject: [PATCH 127/260] fix some minor style issues --- src/assets/css/librarybrowser.css | 1 + src/assets/img/devices/android.svg | 2 +- src/components/cardbuilder/card.css | 4 ++-- src/controllers/dashboard/plugins/installed.js | 10 ++++++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 8010d05fa9..60904dadb8 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -227,6 +227,7 @@ .centerMessage { margin: auto; width: 30%; + padding: 5em 0; text-align: center; } diff --git a/src/assets/img/devices/android.svg b/src/assets/img/devices/android.svg index c0d377bb72..24edc8bbf9 100644 --- a/src/assets/img/devices/android.svg +++ b/src/assets/img/devices/android.svg @@ -1,4 +1,4 @@ - + diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 96bd28e8d1..3d0faa53b3 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -371,12 +371,12 @@ button::-moz-focus-inner { } .cardImageIcon { - font-size: 5em; + font-size: 5em !important; color: inherit; } .cardImageIcon-small { - font-size: 3em; + font-size: 3em !important; margin-bottom: 0.1em; } diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index 9c4a631c38..a88d018e9a 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -82,9 +82,11 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" return -1; }); + var html = plugins.map(function (p) { return getPluginCardHtml(p, pluginConfigurationPages); }).join(""); + var installedPluginsElement = page.querySelector(".installedPlugins"); installedPluginsElement.removeEventListener("click", onInstalledPluginsClick); installedPluginsElement.addEventListener("click", onInstalledPluginsClick); @@ -93,8 +95,8 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" installedPluginsElement.classList.add("itemsContainer"); installedPluginsElement.classList.add("vertical-wrap"); } else { - html += '
'; - html += "

" + globalize.translate("MessageNoPluginsInstalled") + "

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

" + globalize.translate("MessageNoPluginsInstalled") + "

"; html += '

'; html += globalize.translate("BrowsePluginCatalogMessage"); html += "

"; @@ -135,9 +137,9 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" case "open": Dashboard.navigate(configHref); break; - case "delete": deletePlugin(page, id, name); + break; } } }); @@ -168,7 +170,6 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" showConnectMessage(); } else { var btnCardMenu = dom.parentWithClass(e.target, "btnCardMenu"); - if (btnCardMenu) { showPluginMenu(dom.parentWithClass(btnCardMenu, "page"), btnCardMenu); } @@ -179,6 +180,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" libraryMenu.setTabs("plugins", 0, getTabs); reloadList(this); }); + window.PluginsPage = { renderPlugins: renderPlugins }; From 5e84544c16c750f89546220dc241655fbadbb68b Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Thu, 13 Feb 2020 19:48:04 +0000 Subject: [PATCH 128/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 70 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index db33230cf7..cdc96cf6ef 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -40,9 +40,9 @@ "Backdrop": "背景", "Backdrops": "背景", "Banner": "横幅", - "BirthDateValue": "出生: {0}", + "BirthDateValue": "出生:{0}", "BirthLocation": "出生地", - "BirthPlaceValue": "出生地: {0}", + "BirthPlaceValue": "出生地:{0}", "Blacklist": "黑名单", "BookLibraryHelp": "现已支持音频和文本书籍。浏览{0}有声读物命名指南{1}。", "Books": "书籍", @@ -146,7 +146,7 @@ "CustomDlnaProfilesHelp": "为新的设备创建自定义配置文件或覆盖原有系统配置文件。", "DateAdded": "加入日期", "DatePlayed": "播放日期", - "DeathDateValue": "去世: {0}", + "DeathDateValue": "去世:{0}", "Default": "默认", "DefaultErrorMessage": "处理请求时发生错误。请稍后尝试。", "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义。", @@ -474,7 +474,7 @@ "LabelAlbumArtMaxHeightHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", "LabelAlbumArtMaxWidth": "专辑封面最大宽度:", "LabelAlbumArtMaxWidthHelp": "通过UPnP显示的专辑封面超链接的最大分辨率。", - "LabelAlbumArtPN": "专辑封面PN :", + "LabelAlbumArtPN": "专辑封面PN:", "LabelAlbumArtists": "专辑作家:", "LabelAll": "所有", "LabelAllowHWTranscoding": "允许硬件转码", @@ -483,7 +483,7 @@ "LabelAllowedRemoteAddresses": "远程IP地址过滤器:", "LabelAllowedRemoteAddressesMode": "远程IP地址过滤器模式:", "LabelAppName": "APP名称", - "LabelAppNameExample": "例如: Sickbeard, Sonarr", + "LabelAppNameExample": "例如:Sickbeard, Sonarr", "LabelArtists": "艺术家:", "LabelArtistsHelp": "独立多功能 ;", "LabelAudioLanguagePreference": "首选音频语言:", @@ -506,7 +506,7 @@ "LabelCollection": "收藏:", "LabelCommunityRating": "公众评分:", "LabelContentType": "内容类型:", - "LabelCorruptedFrames": "损坏的帧:", + "LabelCorruptedFrames": "损坏的帧:", "LabelCountry": "国家:", "LabelCriticRating": "影评人评分:", "LabelCurrentPassword": "当前密码:", @@ -541,7 +541,7 @@ "LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。", "LabelDownloadLanguages": "下载语言:", "LabelDropImageHere": "拖拽或点击选择图像于此处。", - "LabelDroppedFrames": "丢弃的帧:", + "LabelDroppedFrames": "丢弃的帧:", "LabelDropShadow": "阴影:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "简易PIN码:", @@ -585,7 +585,7 @@ "LabelHardwareAccelerationType": "硬件加速:", "LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。", "LabelHomeNetworkQuality": "家庭网络质量:", - "LabelHomeScreenSectionValue": "主屏幕模块{0}:", + "LabelHomeScreenSectionValue": "主屏幕模块{0}:", "LabelHttpsPort": "本地 HTTPS 端口号:", "LabelHttpsPortHelp": "Jellyfin HTTPS 服务器监听端口。", "LabelIconMaxHeight": "图标最大高度:", @@ -628,7 +628,7 @@ "LabelMaxResumePercentage": "恢复播放最大百分比:", "LabelMaxResumePercentageHelp": "如果在此时间之后停止播放,媒体会标记为“已播放”。", "LabelMaxScreenshotsPerItem": "每个项目最大截图数目:", - "LabelMaxStreamingBitrate": "最大串流质量:", + "LabelMaxStreamingBitrate": "最大串流质量:", "LabelMaxStreamingBitrateHelp": "请指定一个流媒体串流时的最大比特率。", "LabelMessageText": "消息文本:", "LabelMessageTitle": "消息标题:", @@ -683,10 +683,10 @@ "LabelPersonRole": "角色:", "LabelPlaceOfBirth": "出生地:", "LabelPlayDefaultAudioTrack": "播放默认音轨无论是什么语言", - "LabelPlayerDimensions": "播放器尺寸:", + "LabelPlayerDimensions": "播放器尺寸:", "LabelPlaylist": "播放列表:", - "LabelPostProcessor": "后处理应用程序:", - "LabelPostProcessorArguments": "处理器后命令行参数:", + "LabelPostProcessor": "后处理应用程序:", + "LabelPostProcessorArguments": "处理器后命令行参数:", "LabelPostProcessorArgumentsHelp": "使用 {path} 作为录制文件的路径。", "LabelPreferredDisplayLanguage": "首选显示语言:", "LabelPreferredDisplayLanguageHelp": "Jellyfin的翻译工作是一个不断推进的工程项目。", @@ -695,10 +695,10 @@ "LabelProfileAudioCodecs": "音频编解码器:", "LabelProfileCodecs": "编解码器:", "LabelProfileCodecsHelp": "以逗号分隔。留空则适用于所有编解码器。", - "LabelProfileContainer": "媒体载体:", + "LabelProfileContainer": "媒体载体:", "LabelProfileContainersHelp": "以逗号分隔。留空则适用于所有媒体载体。", "LabelProfileVideoCodecs": "视频编解码器:", - "LabelProtocol": "协议:", + "LabelProtocol": "协议:", "LabelProtocolInfo": "协议信息:", "LabelProtocolInfoHelp": "当响应来自设备的 GetProtocolInfo(获取协议信息)请求时,该值将被使用。", "LabelPublicHttpPort": "公开 HTTP 端口号:", @@ -749,7 +749,7 @@ "LabelStatus": "状态:", "LabelStopWhenPossible": "当可能时自动停止:", "LabelStopping": "停止", - "LabelStreamType": "串流类型:", + "LabelStreamType": "串流类型:", "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", @@ -780,7 +780,7 @@ "LabelTypeText": "文本", "LabelUseNotificationServices": "使用以下服务:", "LabelUser": "用户:", - "LabelUserAgent": "用户代理:", + "LabelUserAgent": "用户代理:", "LabelUserLibrary": "用户程序库:", "LabelUserLibraryHelp": "选择一个在设备上显示的用户媒体库。留空则使用默认设置。", "LabelUserRemoteClientBitrateLimitHelp": "覆盖服务器“播放”设置的全局默认值。", @@ -791,7 +791,7 @@ "LabelVersion": "版本:", "LabelVersionInstalled": "{0} 已安装", "LabelVersionNumber": "版本 {0}", - "LabelVideoResolution": "视频分辨率:", + "LabelVideoResolution": "视频分辨率:", "LabelXDlnaCap": "X-DLNA CAP:", "LabelXDlnaCapHelp": "决定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的内容。", "LabelXDlnaDoc": "X-DLNA DOC:", @@ -860,7 +860,7 @@ "MessageDownloadQueued": "下载已列队。", "MessageEnablingOptionLongerScans": "启用此选项可能会大大延长媒体库扫描时间。", "MessageFileReadError": "读取文件发生错误。", - "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明:", + "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明:", "MessageForgotPasswordInNetworkRequired": "请连接你的家庭网络后再试一次以开始密码重置流程。", "MessageInstallPluginFromApp": "这个插件必须从你打算使用的应用程序中安装。", "MessageInvalidForgotPasswordPin": "无效的或过期的 pin 码。请再试一次。", @@ -1318,8 +1318,8 @@ "ConfirmEndPlayerSession": "确认要关闭位于{0}的Jellyfin吗?", "ValueSeconds": "{0}秒", "Features": "功能", - "GenreValue": "风格 : {0}", - "GenresValue": "风格 : {0}", + "GenreValue": "风格:{0}", + "GenresValue": "风格:{0}", "Guide": "指南", "HeaderCancelRecording": "取消录制", "HeaderFavoriteMovies": "最爱的电影", @@ -1438,26 +1438,26 @@ "MessageNoServersAvailable": "未能自动发现服务器。", "TabNetworking": "联网", "HeaderFavoriteBooks": "最爱的书籍", - "LabelVideoCodec": "视频编码:", - "LabelVideoBitrate": "视频码率:", - "LabelTranscodingProgress": "转码进度:", - "LabelTranscodingFramerate": "转码帧率:", - "LabelSize": "大小:", + "LabelVideoCodec": "视频编码:", + "LabelVideoBitrate": "视频码率:", + "LabelTranscodingProgress": "转码进度:", + "LabelTranscodingFramerate": "转码帧率:", + "LabelSize": "大小:", "LabelPleaseRestart": "改动将在手动重启客户端后生效。", - "LabelPlayMethod": "播放方式:", - "LabelFolder": "文件夹:", - "LabelBitrate": "比特率:", - "LabelAudioSampleRate": "采样率:", - "LabelAudioCodec": "编码:", - "LabelAudioChannels": "声道:", - "LabelAudioBitrate": "比特率:", - "LabelAudioBitDepth": "采样位宽:", + "LabelPlayMethod": "播放方式:", + "LabelFolder": "文件夹:", + "LabelBitrate": "比特率:", + "LabelAudioSampleRate": "采样率:", + "LabelAudioCodec": "编码:", + "LabelAudioChannels": "声道:", + "LabelAudioBitrate": "比特率:", + "LabelAudioBitDepth": "采样位宽:", "FetchingData": "提取其他数据", "CopyStreamURLSuccess": "已成功复制URL地址。", "CopyStreamURL": "复制串流URL地址", "ButtonAddImage": "添加图片", - "LabelPlayer": "播放器:", - "LabelBaseUrl": "基础 URL:", + "LabelPlayer": "播放器:", + "LabelBaseUrl": "基础 URL:", "LabelBaseUrlHelp": "您可以在此处添加自定义子目录,以便从更唯一的 URL 访问服务器。", "MusicLibraryHelp": "重播 {0}音乐命名指南{1}。", "HeaderFavoritePeople": "最喜欢的人物", From 91c8776fbdd9c4fad02210851f8129af24c0c08d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 23:11:59 +0300 Subject: [PATCH 129/260] Scale on hover with 'hoverthumb' style only --- src/elements/emby-slider/emby-slider.css | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.css b/src/elements/emby-slider/emby-slider.css index 5dc57c49c3..f59c2a3cd0 100644 --- a/src/elements/emby-slider/emby-slider.css +++ b/src/elements/emby-slider/emby-slider.css @@ -79,11 +79,7 @@ pointer-events: none; } -.mdl-slider-hoverthumb::-webkit-slider-thumb { - transform: none; -} - -.mdl-slider:hover::-webkit-slider-thumb { +.mdl-slider-hoverthumb:hover::-webkit-slider-thumb { transform: scale(1.3); } @@ -107,7 +103,7 @@ transition: 0.2s; } -.mdl-slider:hover::-moz-range-thumb { +.mdl-slider-hoverthumb:hover::-moz-range-thumb { transform: scale(1.3); } @@ -127,7 +123,7 @@ transition: 0.2s; } -.mdl-slider:hover::-ms-thumb { +.mdl-slider-hoverthumb:hover::-ms-thumb { transform: none; } From a0fa065667de0a5aa11d413b66f9d4fdb35fc125 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 13 Feb 2020 23:32:04 +0300 Subject: [PATCH 130/260] Fix slider calculations for common case --- src/elements/emby-slider/emby-slider.js | 71 +++++++++++++++++++++---- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index e613318814..8026f001ec 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -16,6 +16,62 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli } } + /** + * Returns slider fraction corresponding to client position. + * + * @param {Object} range slider itself + * @param {number} clientX client X-coordinate + * @return {number} slider fraction + */ + function mapClientToFraction(range, clientX) { + var rect = range.sliderBubbleTrack.getBoundingClientRect(); + + var fraction = (clientX - rect.left) / rect.width; + + // Snap to step + var valueRange = range.max - range.min; + if (range.step !== 'any' && valueRange !== 0) { + var step = (range.step || 1) / valueRange; + fraction = Math.round(fraction / step) * step; + } + + return Math.min(Math.max(fraction, 0), 1); + } + + /** + * Returns slider value corresponding to slider fraction. + * + * @param {Object} range slider itself + * @param {number} fraction slider fraction + * @return {number} slider value + */ + function mapFractionToValue(range, fraction) { + var value = (range.max - range.min) * fraction; + + // Snap to step + if (range.step !== 'any') { + var step = range.step || 1; + value = Math.round(value / step) * step; + } + + value += parseFloat(range.min); + + return Math.min(Math.max(value, range.min), range.max); + } + + /** + * Returns slider fraction corresponding to slider value. + * + * @param {Object} range slider itself + * @param {number} value slider value (snapped to step) + * @return {number} slider fraction + */ + function mapValueToFraction(range, value) { + var valueRange = range.max - range.min; + var fraction = valueRange !== 0 ? (value - range.min) / valueRange : 0; + return Math.min(Math.max(fraction, 0), 1); + } + function updateValues() { // Do not update values when dragging with keyboard to keep current progress for reference @@ -61,7 +117,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (range.getBubbleText) { value = range.getBubbleText(value); } else { - value = Math.round(value); + value = mapFractionToValue(range, value / 100).toLocaleString(); } value = '

' + value + '

'; } @@ -134,7 +190,8 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'input', function (e) { this.dragging = true; - updateBubble(this, this.value, sliderBubble); + var bubbleValue = mapValueToFraction(this, this.value) * 100; + updateBubble(this, bubbleValue, sliderBubble); if (hasHideClass) { sliderBubble.classList.remove('hide'); @@ -158,15 +215,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, (window.PointerEvent ? 'pointermove' : 'mousemove'), function (e) { if (!this.dragging) { - var rect = this.sliderBubbleTrack.getBoundingClientRect(); - var clientX = e.clientX; - - var bubbleValue = (clientX - rect.left) / rect.width; - bubbleValue *= 100; - if (this.step !== 0) { - bubbleValue = Math.round(bubbleValue / this.step) * this.step; - } - bubbleValue = Math.min(Math.max(bubbleValue, 0), 100); + var bubbleValue = mapClientToFraction(this, e.clientX) * 100; updateBubble(this, bubbleValue, sliderBubble); From 798a6798427a6b40348284245dfd8ca505773959 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 14 Feb 2020 00:31:08 +0300 Subject: [PATCH 131/260] Fix slider update by touch on iPhone/iPad --- src/elements/emby-slider/emby-slider.js | 43 ++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 8026f001ec..13472b4d5d 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -75,7 +75,8 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli function updateValues() { // Do not update values when dragging with keyboard to keep current progress for reference - if (!!this.keyboardDragging) { + // Do not update values when touched to keep current progress for reference + if (!!this.keyboardDragging || !!this.touched) { return; } @@ -236,6 +237,46 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli passive: true }); + // HACK: iPhone/iPad do not change input by touch + if (browser.iOS) { + dom.addEventListener(this, 'touchstart', function (e) { + if (e.targetTouches.length !== 1) { + return; + } + + this.touched = true; + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); + + // Reset dragging (from 'input' event) so that real dragging can be detected + var range = this; + setTimeout(function () { + range.dragging = false; + }, 0); + }, { + passive: true + }); + + dom.addEventListener(this, 'touchend', function (e) { + if (!this.dragging) { + this.dispatchEvent(new Event('change', { + bubbles: true, + cancelable: false + })); + } + + this.touched = false; + }, { + passive: true + }); + } + if (supportsValueSetOverride) { this.addEventListener('valueset', updateValues); } else { From fe228a867e24fa42ee0bd80d15414b40e752481e Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 13 Feb 2020 10:02:58 +0000 Subject: [PATCH 132/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 974f02f648..1967ed310c 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -320,7 +320,7 @@ "LabelAllowServerAutoRestart": "Povoliť automatický reštart servera pre aplikovanie aktualizácií", "LabelAllowServerAutoRestartHelp": "Server sa reštartuje iba počas obdobia bez aktivity, keď nie je žiadny používateľ aktívny.", "LabelAllowedRemoteAddresses": "Filter vzdialených IP adries:", - "LabelAppName": "Názov apky", + "LabelAppName": "Názov aplikácie", "LabelAppNameExample": "Príklad: Sickbeard, Sonarr", "LabelArtists": "Umelci:", "LabelArtistsHelp": "Oddeľte pomocou ;", @@ -376,7 +376,7 @@ "LabelFont": "Písmo:", "LabelForgotPasswordUsernameHelp": "Zadajte svoje používateľské meno, ak si ho pamätáte.", "LabelFormat": "Formát:", - "LabelServerNameHelp": "Toto meno bude použité na identifikáciu servera. Ak ostane prázdne, bude použitý názov počítača.", + "LabelServerNameHelp": "Tento názov bude použitý na identifikáciu servera. Ak ostane prázdny, bude použitý názov počítača.", "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií", "LabelGroupMoviesIntoCollectionsHelp": "Pri zobrazení zoznamu filmov budú filmy patriace do kolekcie zobrazené ako jedna zoskupená položka.", "LabelHardwareAccelerationType": "Hardvérová akcelerácia:", @@ -649,7 +649,7 @@ "OptionLikes": "Páči sa", "OptionMissingEpisode": "Chýbajúce epizódy", "OptionMonday": "Pondelok", - "OptionNameSort": "Meno", + "OptionNameSort": "Názov", "OptionNew": "Nové...", "OptionNone": "Žiadne", "OptionOnAppStartup": "Pri spustení aplikácie", @@ -954,9 +954,9 @@ "HeaderMediaFolders": "Priečinky médií", "HeaderRemoveMediaFolder": "Odstrániť priečinok médií", "HeaderSelectCertificatePath": "Vybrať cestu k certifikátu", - "HeaderSortOrder": "Poradie zoradzovania", + "HeaderSortOrder": "Poradie zoraďovania", "HeaderSpecialEpisodeInfo": "Informácie o špeciálnej epizóde", - "HeaderSpecialFeatures": "Špeciálne funkcie", + "HeaderSpecialFeatures": "Bonusové materiály", "HeaderSubtitleDownloads": "Sťahovanie titulkov", "HeaderTags": "Tagy", "HeaderVideoType": "Typ videa", @@ -975,7 +975,7 @@ "OptionDownloadPrimaryImage": "Primárne", "OptionDvd": "DVD", "OptionExtractChapterImage": "Povoliť extrakciu obrázkov z videa", - "OptionHasSpecialFeatures": "Špeciálne fukncie", + "OptionHasSpecialFeatures": "Bonusové materiály", "OptionHasTrailer": "Trailer", "OptionIsHD": "HD", "OptionIsSD": "SD", @@ -1016,7 +1016,7 @@ "ValueOneAlbum": "1 album", "Absolute": "Absolútne", "LabelDidlMode": "DIDL režim:", - "LabelDateTimeLocale": "Miestne nastavenia dátumu:", + "LabelDateTimeLocale": "Lokálne nastavenia dátumu:", "LabelBlastMessageInterval": "Doba zobrazenie správy (sekundy)", "LabelAlbumArtMaxWidth": "Maximálna šírka obrázku albumu:", "LabelAlbumArtMaxHeight": "Maximálna výška obrázku albumu:", @@ -1070,13 +1070,13 @@ "LabelDropShadow": "Vrhať tieň:", "LabelDownMixAudioScaleHelp": "Zosilnenie zvuku pri downmixe. Nastavenie hodnoty na 1 zachová pôvodnú hlasitosť.", "LabelDownMixAudioScale": "Zosilnenie zvuku pri downmixe:", - "LabelDisplayName": "Zobrazované meno:", + "LabelDisplayName": "Zobrazovaný názov:", "LabelDisplayLanguageHelp": "Preklad Jellyfinu je v neustálom vývoji.", "LabelDefaultUserHelp": "Určuje, ktorá používateľská knižnica by mala byť zobrazená na pripojenom zariadení. Toto nastavenie môže byť prepísané pomocou profilov pre každé zariadenie.", "LabelDateAddedBehaviorHelp": "Pokiaľ majú metadáta hodnotu, bude vždy použitá pred niektorou z týchto možností.", "LabelDashboardTheme": "Téma dashboardu servera:", "LabelCustomDeviceDisplayNameHelp": "Nahradte vlastným názvom alebo ponechajte prázdne, aby názov určilo zariadenie.", - "LabelCustomDeviceDisplayName": "Zobrazené meno:", + "LabelCustomDeviceDisplayName": "Zobrazený názov:", "LabelCache": "Cache:", "LabelBurnSubtitles": "Vypáliť titulky:", "LabelBitrate": "Dátový tok:", From dec26f6c0ea56f0b3066553d88057a7f9cfea509 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 15 Feb 2020 03:47:07 +0300 Subject: [PATCH 133/260] Fix nowplaying for tv mode --- src/components/appRouter.js | 3 +++ src/scripts/librarymenu.js | 28 ++++++++++++++++++++++++++++ src/scripts/site.js | 4 ---- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 7b36d01bdd..b08d46d82c 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -14,6 +14,9 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM }, showSettings: function () { show('/settings/settings.html'); + }, + showNowPlaying: function () { + show("/nowplaying.html"); } }; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 406edbff5e..7d86dec42e 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -12,6 +12,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += "
"; html += '
'; html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -27,6 +28,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerHomeButton = skinHeader.querySelector(".headerHomeButton"); headerUserButton = skinHeader.querySelector(".headerUserButton"); headerCastButton = skinHeader.querySelector(".headerCastButton"); + headerAudioPlayerButton = skinHeader.querySelector(".headerAudioPlayerButton"); headerSearchButton = skinHeader.querySelector(".headerSearchButton"); lazyLoadViewMenuBarImages(); @@ -82,6 +84,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (!layoutManager.tv) { headerCastButton.classList.remove("hide"); } + } else { headerHomeButton.classList.add("hide"); headerCastButton.classList.add("hide"); @@ -116,6 +119,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " Dashboard.navigate("home.html"); } + function showAudioPlayer() { + return appRouter.showNowPlaying(); + } + function bindMenuEvents() { mainDrawerButton = document.querySelector(".mainDrawerButton"); @@ -140,9 +147,29 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " headerCastButton.addEventListener("click", onCastButtonClicked); } + headerAudioPlayerButton.addEventListener("click", showAudioPlayer); + if (layoutManager.mobile) { initHeadRoom(skinHeader); } + events.on(playbackManager, 'playbackstart', onPlaybackStart); + events.on(playbackManager, 'playbackstop', onPlaybackStop); + } + + function onPlaybackStart(e) { + + if (playbackManager.isPlayingAudio() && layoutManager.tv) { + headerAudioPlayerButton.classList.remove("hide"); + } else { + headerAudioPlayerButton.classList.add("hide"); + } + } + + function onPlaybackStop(e, stopInfo) { + + if (stopInfo.nextMediaType != 'Audio') { + headerAudioPlayerButton.classList.add("hide"); + } } function onCastButtonClicked() { @@ -763,6 +790,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var currentUser; var headerCastButton; var headerSearchButton; + var headerAudioPlayerButton; var enableLibraryNavDrawer = !layoutManager.tv; var skinHeader = document.querySelector(".skinHeader"); var requiresUserRefresh = true; diff --git a/src/scripts/site.js b/src/scripts/site.js index 0cf65158d5..eb6a0ba566 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -989,10 +989,6 @@ var AppInfo = {}; Dashboard.navigate("mypreferencesmenu.html"); }; - appRouter.showNowPlaying = function () { - Dashboard.navigate("nowplaying.html"); - }; - appRouter.setTitle = function (title) { LibraryMenu.setTitle(title); }; From c9685d66141bf44aa01ac6b53fc12526870b03f7 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Fri, 14 Feb 2020 20:15:35 +0000 Subject: [PATCH 134/260] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 80 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 7c2d9b1e42..f4218fadee 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -217,7 +217,7 @@ "HeaderUploadImage": "Kép feltöltés", "HeaderUser": "Felhasználó", "HeaderUsers": "Felhasználók", - "HeaderVideoType": "Videó típusa:", + "HeaderVideoType": "Videó típusa", "HeaderVideos": "Videók", "HeaderYears": "Év", "HeadersFolders": "Könyvtárak", @@ -342,7 +342,7 @@ "LabelYear": "Év:", "LabelYourFirstName": "Keresztneved:", "LabelYoureDone": "Készen vagy!", - "LatestFromLibrary": "Nemrég hozzáadva: {0}", + "LatestFromLibrary": "Nemrég hozzáadott {0}", "Like": "Tettszik", "Live": "Élő", "ManageLibrary": "Könyvtár kezelése", @@ -457,7 +457,7 @@ "PleaseRestartServerName": "Kérlek indítsd újra a Jellyfin Szerver-t - {0}.", "Quality": "Minőség", "RecommendationBecauseYouLike": "Mert tetszett a(z) {0}", - "RecommendationBecauseYouWatched": "Ha már megnézted a(z) {0}", + "RecommendationBecauseYouWatched": "Amiért megnézted ezt: {0}", "RecommendationDirectedBy": "Rendezte: {0}", "RecommendationStarring": "Főszerepben: {0}", "Record": "Felvétel", @@ -467,9 +467,9 @@ "ReleaseDate": "Megjelenés dátuma", "RememberMe": "Emlékezz rám", "Repeat": "Ismétlés", - "RepeatAll": "Folyamatos ismétlés", - "RepeatMode": "Ismétlő mód", - "RepeatOne": "Ismétlés egyszer", + "RepeatAll": "Összes ismétlése", + "RepeatMode": "Ismétlés módja", + "RepeatOne": "Aktuális ismétlése", "ReplaceAllMetadata": "Összes metaadat cseréje", "ReplaceExistingImages": "Cserélje ki a meglévő képeket", "Rewind": "Ugrás vissza", @@ -493,7 +493,7 @@ "ShowTitle": "Név megjelenítése", "Shuffle": "Keverés", "SkipEpisodesAlreadyInMyLibraryHelp": "Az epizódokat összehasonlítjuk az évad és az epizód számával, ha rendelkezésre állnak.", - "Sort": "Rendezés:", + "Sort": "Rendezés", "SortByValue": "Rendezés {0}", "Studios": "Stúdiók", "Subtitles": "Feliratok", @@ -583,7 +583,7 @@ "AccessRestrictedTryAgainLater": "A hozzáférés jelenleg korlátozott. Kérlek próbáld újra később.", "Actor": "Színész", "AirDate": "Vetítés dátuma", - "Aired": "Vetítve:", + "Aired": "Vetítve", "Albums": "Albumok", "AllChannels": "Minden csatorna", "AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB/IDX, stb.)", @@ -642,7 +642,7 @@ "ConfirmDeleteItems": "Az elem törlése mind a fájlrendszerből, mind a médiakönyvtárból törlődik. Biztosan folytatni akarod?", "ConfirmDeletion": "Törlés megerősítése", "ConfirmEndPlayerSession": "Szeretnéd leállítani a Jellyfin-t {0}?", - "ContinueWatching": "Folyamatban lévő filmek", + "ContinueWatching": "Megtekintés folytatása", "Continuing": "Folyamatos", "CriticRating": "Kritikus értékelés", "CustomDlnaProfilesHelp": "Hozz létre egyéni profilt az új eszközhöz, vagy módosítsd a rendszerprofilt.", @@ -683,7 +683,7 @@ "Ended": "Befejeződött", "ErrorAddingMediaPathToVirtualFolder": "Hiba történt a média elérésekor. Kérlek győződjön meg róla, hogy az elérési út érvényes és a Jellyfin szerver hozzáfér az adott helyhez.", "ErrorAddingTunerDevice": "Hiba történt a tuner eszköz hozzáadásakor. Kérlek győződj meg róla, hogy az eszköz elérhető és próbáld meg újra.", - "ErrorAddingXmlTvFile": "Hiba történt az XmlTV fájl elérésekor. Győződj meg róla, hogy a fájl létezik és próbáld meg újra.", + "ErrorAddingXmlTvFile": "Hiba történt az XMLTV fájl elérésekor. Győződj meg róla, hogy a fájl létezik és próbáld meg újra.", "ErrorDeletingItem": "Hiba történt az elem törlése során a Jellyfin Szerverről. Ellenőrizd, hogy a Jellyfin Szerver rendelkezik-e írási jogosultsággal a média mappához és próbálja újra.", "ErrorMessageStartHourGreaterThanEnd": "A befejezési időnek nagyobbnak kell lennie mint a kezdési idő.", "ErrorSavingTvProvider": "Hiba történt a TV szolgáltató mentésekor. Kérlek győződj meg róla, hogy elérhető és próbálkozz meg újra.", @@ -760,7 +760,7 @@ "HeaderMusicQuality": "Zene minősége", "HeaderNewApiKey": "Új API kulcs", "HeaderNewDevices": "Új eszközök", - "HeaderNextEpisodePlayingInValue": "Következő epizód lejátszása {0}", + "HeaderNextEpisodePlayingInValue": "Következő epizód lejátszása {0} múlva", "HeaderNextVideoPlayingInValue": "Következő videó lejátszása {0}", "HeaderOtherItems": "Egyéb elemek", "HeaderPasswordReset": "Jelszó visszaállítása", @@ -914,7 +914,7 @@ "LabelLockItemToPreventChanges": "Az elem zárolása a jövőbeni változások elkerülése érdekében", "LabelLoginDisclaimer": "Bejelentkezési nyilatkozat:", "LabelLoginDisclaimerHelp": "Ez az üzenet a bejelentkezési oldal alján jelenik meg.", - "LabelManufacturer": "Gyártó", + "LabelManufacturer": "Gyártó:", "LabelManufacturerUrl": "Gyártó URL címe", "LabelMatchType": "Egyezés típusa:", "LabelMaxBackdropsPerItem": "A hátterek maximális száma elemenként:", @@ -1055,7 +1055,7 @@ "LiveBroadcasts": "Élő adások", "MessageConfirmRevokeApiKey": "Biztosan visszavonod ezt az API kulcsot? Az alkalmazás csatlakozása a Jellyfin Szerverhez hirtelen megszűnik.", "MessageDirectoryPickerInstruction": "A hálózati útvonalak manuálisan megadhatók abban az esetben, ha a Hálózati gomb nem találja meg a készülékeket. Például: {0} vagy {1}.", - "MessageDirectoryPickerLinuxInstruction": "Az Arch Linux, CentOS, Debian, Fedora, OpenSuse vagy Ubuntu Linux operációs rendszereken a Jellyfin rendszer felhasználójának legalább olvasási hozzáférést kell biztosítania a tárolóhelyekhez.", + "MessageDirectoryPickerLinuxInstruction": "Az Arch Linux, CentOS, Debian, Fedora, openSUSE vagy Ubuntu Linux operációs rendszereken a Jellyfin szolgáltatás felhasználójának legalább olvasási hozzáférést kell biztosítania a tárolóhelyekhez.", "MessageForgotPasswordInNetworkRequired": "Kérlek próbáld meg újra a jelszó visszaállítási folyamatot az otthoni hálózatban.", "MessageNoMovieSuggestionsAvailable": "Jelenleg nincsenek filmajánlatok. Kezdj el nézni és értékelni a filmeket, majd térj vissza, hogy megtekinthesd az ajánlásokat.", "MessagePasswordResetForUsers": "A következő felhasználók jelszavai visszaálltak. Most már bejelentkezhetnek a visszaállításhoz használt PIN kódokkal.", @@ -1282,10 +1282,10 @@ "LabelMaxResumePercentageHelp": "A címeket teljesen lejátszottnak tekintjük, ha ezen idő után fejezed be.", "LabelMaxStreamingBitrateHelp": "Adj meg egy maximum bitrátát a streameléshez.", "LabelMinResumePercentageHelp": "A címeket nem lejátszottnak tekintjük, ha ez alatt az idő alatt fejezed be.", - "LabelMusicStreamingTranscodingBitrateHelp": "Határozz meg egy streamelési max bitrátát a zenékhez", + "LabelMusicStreamingTranscodingBitrateHelp": "Határozz meg egy streamelési max bitrátát a zenékhez.", "DashboardVersionNumber": "Verzió: {0}", "DashboardServerName": "Szerver: {0}", - "LabelWeb": "Web: ", + "LabelWeb": "Web:", "MediaInfoSoftware": "Szoftver", "MediaInfoStreamTypeAudio": "Audió", "MediaInfoStreamTypeSubtitle": "Felirat", @@ -1391,5 +1391,53 @@ "HeaderFavoritePeople": "Kedvenc emberek", "HeaderApp": "Alkalmazás", "GroupVersions": "Verziók csoportosítása", - "CopyStreamURLError": "Hiba történt az URL másolása közben." + "CopyStreamURLError": "Hiba történt az URL másolása közben.", + "OptionSubstring": "Szövegrészlet", + "ButtonSplit": "Szétvág", + "Absolute": "Abszolút", + "LabelSkipIfAudioTrackPresentHelp": "Vedd ki a pipát, ha minden videóhoz szeretnél feliratot az audio nyelvétől függetlenül.", + "EnableFastImageFadeInHelp": "Gyorsabb előtűnés animáció a betöltött képekhez", + "EnableFastImageFadeIn": "Gyors kép-előtűnés", + "SubtitleOffset": "Felirat eltolása", + "SeriesDisplayOrderHelp": "Rakd sorba az epizódokat az adásba kerülésük dátuma, a DVD sorszám, vagy az abszolút számozás szerint.", + "SelectAdminUsername": "Kérjük válassz felhasználónevet az adminisztrátor fiók számára.", + "QueueAllFromHere": "Az összes sorba állítása innen", + "OptionThumbCard": "Miniatűr kártya", + "OptionThumb": "Miniatűr", + "OptionSpecialEpisode": "Különkiadások", + "OptionRandom": "Véletlenszerű", + "OptionPosterCard": "Poszter kártya", + "OptionPoster": "Poszter", + "OptionLoginAttemptsBeforeLockoutHelp": "A 0 érték beállítással az alapértelmezett beállítások lesznek bekapcsolva. A sima felhasználóknak 3, az adminisztrátoroknak 5 lehetőségük lesz. A -1 érték kikapcsolja ezt a funkciót.", + "OptionList": "Lista", + "OptionDownloadThumbImage": "Miniatűr", + "OptionDownloadBannerImage": "Banner", + "OptionDownloadArtImage": "Grafika", + "OptionCustomUsers": "Egyéni", + "OptionBlockChannelContent": "Internetes csatornatartalmak", + "OptionBanner": "Banner", + "OnlyForcedSubtitlesHelp": "Csak a kényszerítettnek jelölt feliratok fognak megjelenni.", + "OnlyForcedSubtitles": "Csak kényszerített feliratok", + "Normal": "Normális", + "MusicVideo": "Videoklip", + "MusicLibraryHelp": "Nézd meg a {0}zenék elnevezési útmutatóját{1}.", + "MusicArtist": "Zenei előadó", + "MusicAlbum": "Zenealbum", + "MoreMediaInfo": "Média információ", + "MetadataSettingChangeHelp": "A metaadat beállítások módosítása az ezután újonnan hozzáadott médiát fogja befolyásolni. A már meglévő tartalom frissítéséhez nyisd meg a részletek képernyőt, és kattints a frissítésre, vagy végezz tömeges frissítést a Metaadat Managerben.", + "MessageConfirmDeleteGuideProvider": "Biztosan törölni szeretnéd ezt a műsorújság szolgáltatót?", + "MessageConfirmAppExit": "Ki szeretnél lépni?", + "LaunchWebAppOnStartupHelp": "A web kliens indítása az alapértelmezett böngészőben a szerver indítása után. A kliens nem fog elindulni a szerver újraindítása után.", + "LabelVideoResolution": "Videó felbontás:", + "LabelVideoCodec": "Videó kodek:", + "LabelVideoBitrate": "Videó bitráta:", + "LabelStreamType": "Stream típusa:", + "LabelSkipIfGraphicalSubsPresentHelp": "A feliratok szöveges verziójának megtartása hatékonyabb kézbesítést eredményez és csökkenti az átkódolás valószínűségét.", + "LabelNumberOfGuideDaysHelp": "Több napnyi műsorújság letöltése hosszabb távú időzítést tesz lehetővé, valamint több napra előre tekinthető meg a műsorújság, azonban hosszabb ideig fog tartani a letöltés. Az automatikus lehetőség a csatornák számától függően állítja be az értéket.", + "LabelMonitorUsers": "Tevékenység követése tőle:", + "LabelDroppedFrames": "Eldobott képkockák:", + "LabelDisplaySpecialsWithinSeasons": "Speciális epizódok megjelenítése abban az évadban, amiben adásban voltak", + "LabelCorruptedFrames": "Sérült képkockák:", + "HeaderKeepSeries": "Sorozat megtartása", + "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra." } From 990e0de950a07717f92f86d4b0b70aee1957d882 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Fri, 14 Feb 2020 12:17:15 +0000 Subject: [PATCH 135/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index fe0194d0e5..96f10feef5 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1457,5 +1457,10 @@ "MessageConfirmAppExit": "Vrei să ieși?", "CopyStreamURLError": "A apărut o eroare la copierea adresei URL.", "EnableFastImageFadeInHelp": "Activați animația mai rapidă de tranziție pentru imaginile încărcate", - "EnableFastImageFadeIn": "Tranziție a imaginii rapidă" + "EnableFastImageFadeIn": "Tranziție a imaginii rapidă", + "LabelVideoResolution": "Rezoluția video:", + "LabelStreamType": "Tipul streamului:", + "LabelPlayerDimensions": "Dimensiunile soft redare:", + "LabelDroppedFrames": "Cadre abandonate:", + "LabelCorruptedFrames": "Cadre corupte:" } From bb1ba5a29ed28222ef49b4d314b830a9289bc45c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Feb 2020 16:18:24 +0300 Subject: [PATCH 136/260] Make configurable slider progress bar update --- src/components/nowplayingbar/nowplayingbar.js | 7 +---- src/components/remotecontrol/remotecontrol.js | 6 ---- src/controllers/playback/videoosd.js | 6 ---- src/elements/emby-slider/emby-slider.js | 29 ++++++++++++++----- src/nowplaying.html | 2 +- src/videoosd.html | 2 +- 6 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..56fa2eaa15 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -31,7 +31,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += '
'; @@ -393,7 +393,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', var showMuteButton = true; var showVolumeSlider = true; - var progressElement = volumeSliderContainer.querySelector('.mdl-slider-background-lower'); if (supportedCommands.indexOf('ToggleMute') === -1) { showMuteButton = false; @@ -405,10 +404,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', muteButton.querySelector('i').innerHTML = 'volume_up'; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..be1fcd2754 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -279,8 +279,6 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.nowPlayingVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -303,10 +301,6 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL view.querySelector(".buttonMute i").innerHTML = "volume_up"; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (showMuteButton) { view.querySelector(".buttonMute").classList.remove("hide"); } else { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..6c7dcce788 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -862,8 +862,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var supportedCommands = currentPlayerSupportedCommands; var showMuteButton = true; var showVolumeSlider = true; - var volumeSlider = view.querySelector('.osdVolumeSliderContainer'); - var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); if (-1 === supportedCommands.indexOf("Mute")) { showMuteButton = false; @@ -886,10 +884,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med view.querySelector(".buttonMute i").innerHTML = "volume_up"; } - if (progressElement) { - progressElement.style.width = (volumeLevel || 0) + '%'; - } - if (showMuteButton) { view.querySelector(".buttonMute").classList.remove("hide"); } else { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 13472b4d5d..5465ccc5b6 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -72,11 +72,15 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli return Math.min(Math.max(fraction, 0), 1); } - function updateValues() { + /** + * Updates progress bar. + * + * @param {boolean} [isValueSet] update by 'valueset' event or by timer + */ + function updateValues(isValueSet) { - // Do not update values when dragging with keyboard to keep current progress for reference - // Do not update values when touched to keep current progress for reference - if (!!this.keyboardDragging || !!this.touched) { + // Do not update values by 'valueset' in case of soft-implemented dragging + if (!!isValueSet && (!!this.keyboardDragging || !!this.touched)) { return; } @@ -84,7 +88,9 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli var value = range.value; // put this on a callback. Doing it within the event sometimes causes the slider to get hung up and not respond - requestAnimationFrame(function () { + // Keep only one per slider frame request + cancelAnimationFrame(range.updateValuesFrame); + range.updateValuesFrame = requestAnimationFrame(function () { var backgroundLower = range.backgroundLower; @@ -191,6 +197,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'input', function (e) { this.dragging = true; + if (this.dataset.sliderKeepProgress !== 'true') { + updateValues.call(this); + } + var bubbleValue = mapValueToFraction(this, this.value) * 100; updateBubble(this, bubbleValue, sliderBubble); @@ -204,7 +214,10 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli dom.addEventListener(this, 'change', function () { this.dragging = false; - updateValues.call(this); + + if (this.dataset.sliderKeepProgress === 'true') { + updateValues.call(this); + } sliderBubble.classList.add('hide'); hasHideClass = true; @@ -278,7 +291,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli } if (supportsValueSetOverride) { - this.addEventListener('valueset', updateValues); + this.addEventListener('valueset', updateValues.bind(this, true)); } else { startInterval(this); } @@ -457,7 +470,7 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli if (interval) { clearInterval(interval); } - range.interval = setInterval(updateValues.bind(range), 100); + range.interval = setInterval(updateValues.bind(range, true), 100); } EmbySliderPrototype.detachedCallback = function () { diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..68486a2e72 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -9,7 +9,7 @@

- +
diff --git a/src/videoosd.html b/src/videoosd.html index a099605d0d..a2bfb7988e 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -18,7 +18,7 @@
- +
From ad0b67d2f6725ece3b1083b243c1974e54311a8e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Feb 2020 16:51:37 +0300 Subject: [PATCH 137/260] Make delayed volume update --- src/components/nowplayingbar/nowplayingbar.js | 19 +++++++++++-- src/components/remotecontrol/remotecontrol.js | 28 +++++++++++++------ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 56fa2eaa15..fcbbc54f1a 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -187,14 +187,29 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', volumeSliderContainer.classList.remove('hide'); } + var volumeSliderTimer; + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + if (currentPlayer) { currentPlayer.setVolume(this.value); } } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + volumeSlider.addEventListener('change', setVolume); - volumeSlider.addEventListener('mousemove', setVolume); - volumeSlider.addEventListener('touchmove', setVolume); + volumeSlider.addEventListener('mousemove', setVolumeDelayed); + volumeSlider.addEventListener('touchmove', setVolumeDelayed); positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider.addEventListener('change', function () { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index be1fcd2754..df1b01367d 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -609,15 +609,27 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL return datetime.getDisplayRunningTime(ticks); }; - context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", function () { + var volumeSliderTimer; + + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); - context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", function () { - playbackManager.setVolume(this.value, currentPlayer); - }); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + + context.querySelector(".nowPlayingVolumeSlider").addEventListener("change", setVolume); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("mousemove", setVolumeDelayed); + context.querySelector(".nowPlayingVolumeSlider").addEventListener("touchmove", setVolumeDelayed); context.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); From 0e506a24b1911dae66cc84b5d13e581fb2bdcc8c Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 15 Feb 2020 19:24:36 +0300 Subject: [PATCH 138/260] fix padding for tv mode --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 1b5b9ded6d..7a3e0ada68 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -522,6 +522,7 @@ .layout-tv .detailPagePrimaryContainer { position: relative; + top: 0; } .detailSticky { From a47214bbb92a243c635df30cbed64aa79d22f7a7 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 15 Feb 2020 22:15:17 +0100 Subject: [PATCH 139/260] Add book and folder icons to cards --- src/components/cardbuilder/cardBuilder.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 23ac93676e..e2751b647d 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1486,6 +1486,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } function getDefaultText(item, options) { + console.debug("Getting icon for " + item.Type); + if (item.CollectionType) { return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } @@ -1500,6 +1502,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana return 'movie' case 'Series': return 'tv' + case 'Book': + return 'book' + case 'Folder': + return 'folder' } if (options && options.defaultCardImageIcon) { From 52ad0febe0eb665ff1ae5340810798c021d830eb Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 15 Feb 2020 22:23:40 +0100 Subject: [PATCH 140/260] Fix details page ribbon position in TV layout --- CONTRIBUTORS.md | 1 + src/assets/css/librarybrowser.css | 1 + src/components/cardbuilder/cardBuilder.js | 2 -- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 5a43208068..aa3ec707e3 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -33,6 +33,7 @@ - [Daniel Hartung](https://github.com/dhartung) - [Ryan Hartzell](https://github.com/ryan-hartzell) - [Thibault Nocchi](https://github.com/ThibaultNocchi) + - [MrTimscampi](https://github.com/MrTimscampi) # Emby Contributors diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 1b5b9ded6d..7a3e0ada68 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -522,6 +522,7 @@ .layout-tv .detailPagePrimaryContainer { position: relative; + top: 0; } .detailSticky { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index e2751b647d..29d7455bc9 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1486,8 +1486,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } function getDefaultText(item, options) { - console.debug("Getting icon for " + item.Type); - if (item.CollectionType) { return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } From 23b4dfc8fa146d72f737197e6a99db4ed5e55edd Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 15 Feb 2020 09:20:13 +0000 Subject: [PATCH 141/260] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index f4218fadee..64f455b7a8 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1,7 +1,7 @@ { - "Add": "Hozzáad", + "Add": "Hozzáadás", "AddToCollection": "Hozzáadás gyűjteményhez", - "AddToPlaylist": "Lejátszási listához adni", + "AddToPlaylist": "Hozzáadás lejátszási listához", "AddedOnValue": "Hozzáadva: {0}", "AdditionalNotificationServices": "Keresd meg a Bővítmények katalógust további értesítési szolgáltatások telepítéséhez.", "Alerts": "Riasztások", @@ -17,8 +17,8 @@ "BirthPlaceValue": "Születési hely: {0}", "Books": "Könyvek", "Browse": "Tallózás", - "ButtonAdd": "Hozzáad", - "ButtonAddMediaLibrary": "Új Média Könyvtár felvétele", + "ButtonAdd": "Hozzáadás", + "ButtonAddMediaLibrary": "Médiakönyvtár hozzáadása", "ButtonAddServer": "Szerver Hozzáadása", "ButtonAddUser": "Új felhasználó", "ButtonArrowDown": "Le", @@ -74,7 +74,7 @@ "ButtonStop": "Leállít", "ButtonSubmit": "Elküld", "ButtonSubtitles": "Feliratok", - "ButtonTrailer": "Filmelőzetes", + "ButtonTrailer": "Előzetes", "ButtonUninstall": "Eltávolítás", "ButtonWebsite": "Weboldal", "Channels": "Csatornák", @@ -84,7 +84,7 @@ "DateAdded": "Hozzáadva", "DatePlayed": "Lejátszás dátuma", "Delete": "Törlés", - "DeleteMedia": "Média törlés", + "DeleteMedia": "Média törlése", "Descending": "Csökkenő", "Director": "Rendező", "DirectorValue": "Rendező: {0}", @@ -97,7 +97,7 @@ "Download": "Letöltés", "Edit": "Szerkesztés", "EditImages": "Képek szerkesztése", - "EditMetadata": "Metaadat szerkesztés", + "EditMetadata": "Metaadat szerkesztése", "EditSubtitles": "Feliratok szerkesztése", "EnableBackdrops": "Háttérképek", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", @@ -127,7 +127,7 @@ "GenresValue": "Műfajok: {0}", "HeaderActiveDevices": "Aktív eszközök", "HeaderAddToCollection": "Hozzáadás gyűjteményhez", - "HeaderAddToPlaylist": "Lejátszási listához adni", + "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", "HeaderAddUpdateImage": "Kép hozzáadása / frissítése", "HeaderAddUser": "Új felhasználó", "HeaderAlbums": "Albumok", @@ -138,7 +138,7 @@ "HeaderCastCrew": "Szereplők és Stáb", "HeaderChannels": "Csatornák", "HeaderConnectToServer": "Kapcsolódás a Szerverhez", - "HeaderContinueWatching": "Folyamatban lévő filmek", + "HeaderContinueWatching": "Megtekintés folytatása", "HeaderCustomDlnaProfiles": "Egyedi profilok", "HeaderDetectMyDevices": "Eszközök érzékelése", "HeaderDeveloperInfo": "Fejlesztői információk", @@ -165,7 +165,7 @@ "HeaderLibraries": "Könyvtárak", "HeaderLibraryAccess": "Könyvtár Hozzáférés", "HeaderLibraryFolders": "Médiatár mappák", - "HeaderLibraryOrder": "Médiatár rendezés", + "HeaderLibraryOrder": "Médiatár elrendezése", "HeaderLibrarySettings": "Médiatár beállítások", "HeaderLiveTvTunerSetup": "Élő TV tuner beállítása", "HeaderMedia": "Média", @@ -198,7 +198,7 @@ "HeaderRevisionHistory": "Módosítási előzmények", "HeaderRunningTasks": "Futó folyamatok", "HeaderScenes": "Jelenetek", - "HeaderSeasons": "Évad", + "HeaderSeasons": "Évadok", "HeaderSelectMetadataPath": "Válaszd ki a metaadat útvonalat", "HeaderSelectServer": "Szerver Kiválasztás", "HeaderSendMessage": "Üzenet küldése", @@ -268,7 +268,7 @@ "LabelEncoderPreset": "H264 enkóder beállítások:", "LabelHardwareAccelerationType": "Hardveres gyorsítás:", "LabelHardwareAccelerationTypeHelp": "Ez egy kísérleti szolgáltatás, amely csak a támogatott rendszereken érhető el.", - "LabelHomeScreenSectionValue": "Kezdőképernyő blokk {0}:", + "LabelHomeScreenSectionValue": "{0}. kezdőképernyő blokk:", "LabelImageType": "Kép típusa:", "LabelKodiMetadataDateFormat": "Megjelenési dátum formátuma:", "LabelLanguage": "Nyelv:", @@ -297,7 +297,7 @@ "LabelPlayDefaultAudioTrack": "Az alapértelmezett hangsáv lejátszása a nyelvtől függetlenül", "LabelPlaylist": "Lejátszási lista:", "LabelPreferredDisplayLanguage": "Elsődleges megjelenítendő nyelv:", - "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatban lévő project.", + "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatos projekt.", "LabelPrevious": "Előző", "LabelProfileAudioCodecs": "Audió kódekek:", "LabelProfileCodecs": "Kódek:", @@ -418,7 +418,7 @@ "OptionHasSubtitles": "Feliratok", "OptionHasThemeSong": "Főcímdal", "OptionHasThemeVideo": "Filmzene", - "OptionHasTrailer": "Filmelőzetes", + "OptionHasTrailer": "Előzetes", "OptionHideUser": "Felhasználó elrejtése a bejelentkezési képernyőn", "OptionHomeVideos": "Fényképek", "OptionImdbRating": "IMDb értékelés", @@ -463,7 +463,7 @@ "Record": "Felvétel", "Refresh": "Frissítés", "RefreshDialogHelp": "A metaadatok frissítése a Jellyfin Server vezérlőpultjában engedélyezett beállítások és internetszolgáltatások alapján történik.", - "RefreshMetadata": "Metaadat frissítés", + "RefreshMetadata": "Metaadat frissítése", "ReleaseDate": "Megjelenés dátuma", "RememberMe": "Emlékezz rám", "Repeat": "Ismétlés", @@ -476,7 +476,7 @@ "Runtime": "Játékidő", "Saturday": "Szombat", "Save": "Mentés", - "ScanForNewAndUpdatedFiles": "Keresés az új és frissített fileokra", + "ScanForNewAndUpdatedFiles": "Keresés az új és frissített fájlokra", "ScanLibrary": "Könyvtár beolvasása", "Search": "Keresés", "SearchForMissingMetadata": "Keresés a hiányzó metaadatokra", @@ -494,7 +494,7 @@ "Shuffle": "Keverés", "SkipEpisodesAlreadyInMyLibraryHelp": "Az epizódokat összehasonlítjuk az évad és az epizód számával, ha rendelkezésre állnak.", "Sort": "Rendezés", - "SortByValue": "Rendezés {0}", + "SortByValue": "Rendezés {0} szerint", "Studios": "Stúdiók", "Subtitles": "Feliratok", "Suggestions": "Javaslatok", @@ -583,7 +583,7 @@ "AccessRestrictedTryAgainLater": "A hozzáférés jelenleg korlátozott. Kérlek próbáld újra később.", "Actor": "Színész", "AirDate": "Vetítés dátuma", - "Aired": "Vetítve", + "Aired": "Adásban", "Albums": "Albumok", "AllChannels": "Minden csatorna", "AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB/IDX, stb.)", @@ -1100,7 +1100,7 @@ "OptionAllowSyncTranscoding": "Engedélyezze a média letöltését és szinkronizálását, amely átkódolást igényel", "OptionAllowVideoPlaybackRemuxing": "Olyan videólejátszás engedélyezése, amely átalakítást igényel újrakódolás nélkül", "OptionAllowVideoPlaybackTranscoding": "Engedélyezze az átkódolást igénylő videó lejátszást", - "OptionArtist": "Művész", + "OptionArtist": "Előadó", "OptionAuto": "Auto", "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "A több mappában elosztott sorozat automatikus összevonása", @@ -1127,7 +1127,7 @@ "PlayNextEpisodeAutomatically": "A következő epizód automatikus lejátszása", "ShowAdvancedSettings": "Speciális beállítások megjelenítése", "ValueSeconds": "{0} másodperc", - "AddToPlayQueue": "Lejátszási listához adni", + "AddToPlayQueue": "Hozzáadás a lejátszási sorhoz", "AllowHWTranscodingHelp": "Lehetővé teszi a tuner számára, hogy át tudja kódolni a streameket valós időben. Ez segíthet csökkenteni a Szerver által igényelt átkódolást.", "AllowOnTheFlySubtitleExtraction": "Felirat kinyerésének engedélyezése valós időben", "MessageNoTrailersFound": "Nincsenek előzetesek. Telepítsd a Trailer csatornát, hogy javítsd a filmélményt az internetes előzetesek könyvtárának hozzáadásával.", @@ -1269,7 +1269,7 @@ "Vertical": "Függőleges", "VideoRange": "Videó tartomány", "ViewAlbum": "Album megtekintése", - "ViewArtist": "Művész megtekintése", + "ViewArtist": "Előadó megtekintése", "Whitelist": "Fehérlista", "WizardCompleted": "Ez most minden amire szükség volt. A Jellyfin megkezdte a médiakönyvtáraddal kapcsolatos információk gyűjtését. Nézz meg néhány alkalmazásunkat, majd kattints a Befejezés gombra a Vezérlőpult megtekintéséhez.", "XmlTvKidsCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok gyerekeknek szóló programokként jelennek meg. Válaszd el őket a '|' elválasztóval.", @@ -1358,7 +1358,7 @@ "LabelLocalHttpServerPortNumberHelp": "A TCP port száma, melyen a Jellyfin HTTP szerver figyel.", "UserAgentHelp": "Adj meg egy egyedi HTTP user-agent fejlécet.", "XmlDocumentAttributeListHelp": "Ezek a tulajdonságok minden XML válaszüzenet gyökér elemére alkalmazásra kerülnek.", - "Thumb": "Thumb", + "Thumb": "Miniatűr", "MediaInfoStreamTypeData": "Adat", "MediaInfoStreamTypeEmbeddedImage": "Beágyazott kép", "LabelBitrate": "Bitráta:", From a98b961b948f86400f28bc3101f0a1f4942519a2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Feb 2020 01:31:14 +0100 Subject: [PATCH 142/260] Fix icons on WebOS WebOS 4 apparently has a ligature bug that prevents icons with an underscore from working as intended. This replaces them with either the corresponding CSS class or unicode escape code, depending on context. Refactoring is needed in order to be able to use CSS classes everywhere, so in the interest of time, this does the best available currently. Fixes #678 --- .../accessschedule.template.html | 2 +- src/components/actionsheet/actionsheet.js | 2 +- src/components/alphapicker/alphapicker.js | 2 +- src/components/cardbuilder/cardBuilder.js | 14 ++++++------- src/components/channelmapper/channelmapper.js | 2 +- .../collectioneditor/collectioneditor.js | 2 +- .../directorybrowser/directorybrowser.js | 2 +- .../emby-scrollbuttons/emby-scrollbuttons.js | 2 +- src/components/favoriteitems.js | 2 +- src/components/filtermenu/filtermenu.js | 2 +- .../guide/guide-settings.template.html | 2 +- src/components/guide/guide.js | 12 +++++------ src/components/guide/tvguide.template.html | 4 ++-- .../homescreensettings/homescreensettings.js | 6 +++--- src/components/homesections/homesections.js | 6 +++--- .../imagedownloader/imagedownloader.js | 2 +- .../imagedownloader.template.html | 2 +- src/components/imageeditor/imageeditor.js | 8 ++++---- .../imageeditor/imageeditor.template.html | 2 +- .../imageoptionseditor.template.html | 2 +- .../imageuploader/imageuploader.template.html | 2 +- src/components/indicators/indicators.js | 12 +++++------ .../itemMediaInfo/itemMediaInfo.template.html | 2 +- src/components/itemcontextmenu.js | 4 ++-- .../itemidentifier.template.html | 2 +- .../libraryoptionseditor.js | 14 ++++++------- src/components/listview/listview.js | 12 +++++------ src/components/mediainfo/mediainfo.js | 8 ++++---- .../medialibrarycreator.template.html | 2 +- .../medialibraryeditor.template.html | 2 +- .../metadataeditor.template.html | 4 ++-- .../metadataeditor/personeditor.template.html | 2 +- src/components/multiselect/multiselect.js | 2 +- src/components/nowplayingbar/nowplayingbar.js | 12 +++++------ src/components/playback/brightnessosd.js | 2 +- src/components/playback/volumeosd.js | 4 ++-- .../playlisteditor/playlisteditor.js | 2 +- src/components/prompt/prompt.template.html | 2 +- .../recordingcreator.template.html | 2 +- .../recordingeditor.template.html | 2 +- .../recordingfields.template.html | 4 ++-- .../seriesrecordingeditor.template.html | 2 +- src/components/refreshdialog/refreshdialog.js | 2 +- src/components/remotecontrol/remotecontrol.js | 8 ++++---- src/components/slideshow/slideshow.js | 2 +- src/components/sortmenu/sortmenu.js | 2 +- .../subtitleeditor/subtitleeditor.js | 6 +++--- .../subtitleeditor.template.html | 2 +- src/components/tabbedview/itemstab.js | 2 +- src/components/tunerpicker.js | 2 +- src/components/viewsettings/viewsettings.js | 2 +- src/controllers/dashboard/dashboard.js | 2 +- .../dashboard/plugins/installed.js | 2 +- .../scheduledtasks/scheduledtasks.js | 4 ++-- src/controllers/devices.js | 2 +- src/controllers/favorites.js | 2 +- src/controllers/itemdetailpage.js | 2 +- src/controllers/list.js | 2 +- src/controllers/livetvstatus.js | 4 ++-- src/controllers/medialibrarypage.js | 2 +- src/controllers/movies/moviegenres.js | 2 +- src/controllers/playback/videoosd.js | 8 ++++---- src/controllers/shows/tvgenres.js | 2 +- src/controllers/userprofilespage.js | 4 ++-- src/dashboard.html | 10 +++++----- src/elements/emby-select/emby-select.js | 2 +- src/itemdetails.html | 8 ++++---- src/list.html | 12 +++++------ src/livetv.html | 16 +++++++-------- src/movies.html | 16 +++++++-------- src/music.html | 20 +++++++++---------- src/mypreferencesmenu.html | 2 +- src/nowplaying.html | 20 +++++++++---------- src/scripts/librarybrowser.js | 8 ++++---- src/scripts/librarymenu.js | 6 +++--- src/tv.html | 12 +++++------ src/videoosd.html | 16 +++++++-------- src/wizardfinish.html | 2 +- src/wizardlibrary.html | 2 +- src/wizardremoteaccess.html | 2 +- src/wizardsettings.html | 2 +- src/wizarduser.html | 2 +- 82 files changed, 201 insertions(+), 201 deletions(-) diff --git a/src/components/accessschedule/accessschedule.template.html b/src/components/accessschedule/accessschedule.template.html index a0d05537c4..02f11942ed 100644 --- a/src/components/accessschedule/accessschedule.template.html +++ b/src/components/accessschedule/accessschedule.template.html @@ -1,6 +1,6 @@

${HeaderAccessSchedule} diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index 9be09c4d25..926d63b637 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -158,7 +158,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu } if (layoutManager.tv) { - html += ''; + html += ''; } // If any items have an icon, give them all an icon just to make sure they're all lined up evenly diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index a23a7dfff3..9ac39e55be 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -67,7 +67,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b html += '
'; if (options.mode === 'keyboard') { - html += ''; + html += ''; } else { letters = ['#']; html += mapLetters(letters, vertical).join(''); diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 23ac93676e..5a40d0ec0c 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -758,7 +758,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (isOuterFooter && options.cardLayout && layoutManager.mobile) { if (options.cardFooterAside !== 'none') { - html += ''; + html += ''; } } @@ -1316,15 +1316,15 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-br itemAction'; if (options.centerPlayButton) { - overlayButtons += ''; + overlayButtons += ''; } if (overlayPlayButton && !item.IsPlaceHolder && (item.LocationType !== 'Virtual' || !item.MediaType || item.Type === 'Program') && item.Type !== 'Person') { - overlayButtons += ''; + overlayButtons += ''; } if (options.overlayMoreButton) { - overlayButtons += ''; + overlayButtons += ''; } } @@ -1457,7 +1457,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var btnCssClass = 'cardOverlayButton cardOverlayButton-hover itemAction paper-icon-button-light'; if (playbackManager.canPlay(item)) { - html += ''; + html += ''; } html += '
'; @@ -1477,7 +1477,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana html += ''; } - html += ''; + html += ''; html += '
'; html += '
'; @@ -1673,7 +1673,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana var icon = cell.querySelector('.timerIndicator'); if (!icon) { var indicatorsElem = ensureIndicators(cell); - indicatorsElem.insertAdjacentHTML('beforeend', 'fiber_manual_record'); + indicatorsElem.insertAdjacentHTML('beforeend', ''); } cell.setAttribute('data-timerid', newTimerId); } diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index ee89b1799d..2b2de1870c 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -127,7 +127,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee var html = ""; var title = globalize.translate("MapChannels"); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += "

"; diff --git a/src/components/collectioneditor/collectioneditor.js b/src/components/collectioneditor/collectioneditor.js index 864e03ab52..79220ac335 100644 --- a/src/components/collectioneditor/collectioneditor.js +++ b/src/components/collectioneditor/collectioneditor.js @@ -243,7 +243,7 @@ define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManage var title = items.length ? globalize.translate('HeaderAddToCollection') : globalize.translate('NewCollection'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index d4d25fa905..06f7773cf6 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -265,7 +265,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += options.header || Globalize.translate("HeaderSelectPath"); html += "

"; diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.js b/src/components/emby-scrollbuttons/emby-scrollbuttons.js index 0b769a9821..af8261a632 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.js @@ -7,7 +7,7 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' function getScrollButtonHtml(direction) { var html = ''; - var icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; + var icon = direction === 'left' ? '' : ''; html += ''; + html += ''; html += '

${Filters}

'; html += '
'; diff --git a/src/components/guide/guide-settings.template.html b/src/components/guide/guide-settings.template.html index f5a52a7475..02701db3d2 100644 --- a/src/components/guide/guide-settings.template.html +++ b/src/components/guide/guide-settings.template.html @@ -1,5 +1,5 @@
- +

${Settings}

diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 9144886945..fd6931177a 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -416,7 +416,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -430,13 +430,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { @@ -550,7 +550,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; - html += '
keyboard_arrow_left
'; + html += '
'; html += '
' + program.Name; @@ -1106,7 +1106,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var icon = cell.querySelector('.timerIcon'); if (!icon) { - cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', 'fiber_manual_record'); + cell.querySelector('.guideProgramName').insertAdjacentHTML('beforeend', ''); } if (newTimerId) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 3f95448523..5dc16dba3b 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -10,7 +10,7 @@
@@ -30,7 +30,7 @@
'; - currentHtml += ''; + currentHtml += ''; + currentHtml += ''; currentHtml += '
'; diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index af574200f3..4ecff8bef5 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -260,7 +260,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; @@ -608,7 +608,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderOnNow'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { @@ -683,7 +683,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; - html += 'chevron_right'; + html += ''; html += ''; } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index 019875f35c..f984ce22a5 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -116,7 +116,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (showControls) { html += '
'; - html += ''; + html += ''; html += ''; html += '
'; } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index 0dc3cc0661..dec796fb05 100644 --- a/src/components/imagedownloader/imagedownloader.template.html +++ b/src/components/imagedownloader/imagedownloader.template.html @@ -1,5 +1,5 @@
- +

${Search}

diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index da3d673aa7..20aebf4305 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -155,15 +155,15 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', if (image.ImageType === "Backdrop" || image.ImageType === "Screenshot") { if (index > 0) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } if (index < numImages - 1) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } } else { if (imageProviders.length) { diff --git a/src/components/imageeditor/imageeditor.template.html b/src/components/imageeditor/imageeditor.template.html index 57b63550fd..37dce874c0 100644 --- a/src/components/imageeditor/imageeditor.template.html +++ b/src/components/imageeditor/imageeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderEditImages}

diff --git a/src/components/imageoptionseditor/imageoptionseditor.template.html b/src/components/imageoptionseditor/imageoptionseditor.template.html index 3e9a2ae8ce..910d8fdd6e 100644 --- a/src/components/imageoptionseditor/imageoptionseditor.template.html +++ b/src/components/imageoptionseditor/imageoptionseditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderImageOptions}

diff --git a/src/components/imageuploader/imageuploader.template.html b/src/components/imageuploader/imageuploader.template.html index b27168075a..1b83b50955 100644 --- a/src/components/imageuploader/imageuploader.template.html +++ b/src/components/imageuploader/imageuploader.template.html @@ -1,5 +1,5 @@
- +

${HeaderUploadImage}

diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index a8bd4c6200..5b9c1e6787 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -118,7 +118,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -129,20 +129,20 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getSyncIndicator(item) { if (item.SyncPercent === 100) { - return '
file_download
'; + return '
'; } else if (item.SyncPercent != null) { - return '
file_download
'; + return '
'; } return ''; diff --git a/src/components/itemMediaInfo/itemMediaInfo.template.html b/src/components/itemMediaInfo/itemMediaInfo.template.html index afe0023cdd..d5f583dcab 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.template.html +++ b/src/components/itemMediaInfo/itemMediaInfo.template.html @@ -1,6 +1,6 @@

${HeaderMediaInfo}

diff --git a/src/components/itemcontextmenu.js b/src/components/itemcontextmenu.js index 77ba2a6f49..62048345ea 100644 --- a/src/components/itemcontextmenu.js +++ b/src/components/itemcontextmenu.js @@ -15,7 +15,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("Play"), id: "resume", - icon: "play_arrow" + icon: "" }); } @@ -23,7 +23,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", commands.push({ name: globalize.translate("PlayAllFromHere"), id: "playallfromhere", - icon: "play_arrow" + icon: "" }); } } diff --git a/src/components/itemidentifier/itemidentifier.template.html b/src/components/itemidentifier/itemidentifier.template.html index 229c047553..9b3e58a864 100644 --- a/src/components/itemidentifier/itemidentifier.template.html +++ b/src/components/itemidentifier/itemidentifier.template.html @@ -1,6 +1,6 @@

${Identify}

diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 261d20745b..f9f63c9b51 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -65,9 +65,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += "

"; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -120,7 +120,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += plugin.Name; html += ""; html += "
"; - i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" } html += "
"; html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; @@ -181,9 +181,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } @@ -220,9 +220,9 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct html += ""; html += "
"; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += "
"; } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index dbe47b562f..4ab317155d 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -262,9 +262,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (!clickEntireItem && options.dragHandle) { - //html += ''; + //html += ''; // Firefox and Edge are not allowing the button to be draggable - html += 'drag_handle'; + html += ''; } if (options.image !== false) { @@ -298,7 +298,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (playOnImageClick) { - html += ''; + html += ''; } var progressHtml = indicators.getProgressBarHtml(item, { @@ -427,7 +427,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - var moreIcon = 'more_horiz'; + var moreIcon = ''; html += getTextLinesHtml(textlines, isLargeStyle); @@ -476,7 +476,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.moreButton !== false) { @@ -484,7 +484,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index e4375b742a..3b25b58ffa 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -6,7 +6,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater var status; if (item.Type === 'SeriesTimer') { - return 'fiber_smart_record'; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; @@ -20,13 +20,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return 'fiber_smart_record'; + return ''; } - return 'fiber_smart_record'; + return ''; } - return 'fiber_manual_record'; + return ''; } function getProgramInfoHtml(item, options) { diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index 4dcb7812d4..32c6b254b7 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index 07e26b777b..172c535fa1 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/metadataeditor/metadataeditor.template.html b/src/components/metadataeditor/metadataeditor.template.html index a09c2dd57b..8e36a824b7 100644 --- a/src/components/metadataeditor/metadataeditor.template.html +++ b/src/components/metadataeditor/metadataeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

@@ -9,7 +9,7 @@ ${Save}
diff --git a/src/components/metadataeditor/personeditor.template.html b/src/components/metadataeditor/personeditor.template.html index 57a46a0413..ec76f58c70 100644 --- a/src/components/metadataeditor/personeditor.template.html +++ b/src/components/metadataeditor/personeditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multiselect/multiselect.js b/src/components/multiselect/multiselect.js index b1367ef66b..b4fa87c8a0 100644 --- a/src/components/multiselect/multiselect.js +++ b/src/components/multiselect/multiselect.js @@ -129,7 +129,7 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo html += ''; html += '

'; - var moreIcon = "more_horiz"; + var moreIcon = ""; html += ''; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..87cc83e388 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -42,19 +42,19 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; html += ''; html += ''; - html += ''; + html += ''; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; @@ -66,7 +66,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; html += ''; - html += ''; + html += ''; html += '
'; html += '
'; @@ -289,7 +289,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (isPaused) { for (i = 0, length = playPauseButtons.length; i < length; i++) { - playPauseButtons[i].querySelector('i').innerHTML = 'play_arrow'; + playPauseButtons[i].querySelector('i').innerHTML = ''; } } else { @@ -400,7 +400,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } if (isMuted) { - muteButton.querySelector('i').innerHTML = 'volume_off'; + muteButton.querySelector('i').innerHTML = ''; } else { muteButton.querySelector('i').innerHTML = 'volume_up'; } diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 1a064ed39d..f50e281c99 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'brightness_high'; + html += ''; html += '
'; diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index d1cd64c656..de20aaab15 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += 'volume_up'; + html += ''; html += '
'; @@ -101,7 +101,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function updatePlayerVolumeState(isMuted, volume) { if (iconElement) { - iconElement.innerHTML = isMuted ? 'volume_off' : 'volume_up'; + iconElement.innerHTML = isMuted ? '' : ''; } if (progressElement) { progressElement.style.width = (volume || 0) + '%'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index b70bdc1442..c274b40799 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -258,7 +258,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', var title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index 8e78a64cbc..23b918a1f2 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index e8cb850338..b99ead300a 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index b5f38dbba4..48256da0a2 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 35f5d4412d..ce35960716 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index 0aaa687b60..fa9f16561b 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 07ad8e2e59..b5730e592a 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -123,7 +123,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager' var title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..14866e05a1 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -297,10 +297,10 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute")); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute")); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; + view.querySelector(".buttonMute i").innerHTML = ""; } if (progressElement) { @@ -332,7 +332,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL function updatePlayPauseState(isPaused, isActive) { var context = dlg; var btnPlayPause = context.querySelector(".btnPlayPause"); - btnPlayPause.querySelector("i").innerHTML = isPaused ? "play_arrow" : "pause"; + btnPlayPause.querySelector("i").innerHTML = isPaused ? "" : "pause"; buttonVisible(btnPlayPause, isActive); } @@ -367,7 +367,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL action: "setplaylistindex", enableUserDataButtons: false, rightButtons: [{ - icon: "remove_circle_outline", + icon: "", title: globalize.translate("ButtonRemove"), id: "remove" }], diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index b6c896f623..115de54b25 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -349,7 +349,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "play_arrow"; + btnSlideshowPause.innerHTML = ""; } swiperInstance.stopAutoplay(); diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index 6820b24d23..a0b40acaf6 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -66,7 +66,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Sort}

'; html += '
'; diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 59ca98ff32..1ff30712f6 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -132,7 +132,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">'; - itemHtml += 'closed_caption'; + itemHtml += ''; itemHtml += '
'; @@ -248,7 +248,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">'; - html += 'closed_caption'; + html += ''; var bodyClass = result.Comment || result.IsHashMatch ? 'three-line' : 'two-line'; @@ -281,7 +281,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', html += '
'; if (!layoutManager.tv) { - html += ''; + html += ''; } html += ''; diff --git a/src/components/subtitleeditor/subtitleeditor.template.html b/src/components/subtitleeditor/subtitleeditor.template.html index 4d1d737b41..8719cc9305 100644 --- a/src/components/subtitleeditor/subtitleeditor.template.html +++ b/src/components/subtitleeditor/subtitleeditor.template.html @@ -1,5 +1,5 @@
- +

${Subtitles}

info${Help} diff --git a/src/components/tabbedview/itemstab.js b/src/components/tabbedview/itemstab.js index d430102f2a..6cfd408424 100644 --- a/src/components/tabbedview/itemstab.js +++ b/src/components/tabbedview/itemstab.js @@ -181,7 +181,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts return; } - btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'; + btnSortIcon.innerHTML = values.sortOrder === 'Descending' ? '' : ''; } function bindAll(elems, eventName, fn) { diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index fb6760dec4..ec6087b890 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -128,7 +128,7 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" dlg.classList.add("formDialog"); var html = ""; html += '
'; - html += ''; + html += ''; html += '

'; html += globalize.translate("HeaderLiveTvTunerSetup"); html += "

"; diff --git a/src/components/viewsettings/viewsettings.js b/src/components/viewsettings/viewsettings.js index 82bafb084f..d40c4d9618 100644 --- a/src/components/viewsettings/viewsettings.js +++ b/src/components/viewsettings/viewsettings.js @@ -77,7 +77,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne var html = ''; html += '
'; - html += ''; + html += ''; html += '

${Settings}

'; html += '
'; diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 9746b58afe..1b7d123931 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -571,7 +571,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } if (session.PlayState && session.PlayState.IsPaused) { - btnSessionPlayPause.querySelector("i").innerHTML = "play_arrow"; + btnSessionPlayPause.querySelector("i").innerHTML = ""; } else { btnSessionPlayPause.querySelector("i").innerHTML = "pause"; } diff --git a/src/controllers/dashboard/plugins/installed.js b/src/controllers/dashboard/plugins/installed.js index a88d018e9a..026b58ce67 100644 --- a/src/controllers/dashboard/plugins/installed.js +++ b/src/controllers/dashboard/plugins/installed.js @@ -54,7 +54,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button" html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += "
"; html += configPage ? configPage.DisplayName || plugin.Name : plugin.Name; diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index cc8be8216e..2c665a4403 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -51,7 +51,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma if (task.State === "Running") { html += ''; } else if (task.State === "Idle") { - html += ''; + html += ''; } html += "
"; } @@ -99,7 +99,7 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma } else if (state === "Idle") { elem.classList.add("btnStartTask"); elem.classList.remove("btnStopTask"); - elem.querySelector("i").innerHTML = "play_arrow"; + elem.querySelector("i").innerHTML = ""; elem.title = globalize.translate("ButtonStart"); } $(elem).parents(".listItem")[0].setAttribute("data-status", state); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 2013607d70..4ddb4d4d20 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -89,7 +89,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu if (canEdit || canDelete(device.Id)) { deviceHtml += '
'; - deviceHtml += ''; + deviceHtml += ''; deviceHtml += "
"; } diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 522ddd4712..a4f2af64dd 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -248,7 +248,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap html += '

'; html += globalize.translate(section.name); html += "

"; - html += 'chevron_right'; + html += ''; html += ""; } diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 432ad0ff2d..990de87b60 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -2070,7 +2070,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick); bindAll(view, ".btnDeleteItem", "click", onDeleteClick); bindAll(view, ".btnDownload", "click", onDownloadClick); - view.querySelector(".btnMoreCommands i").innerHTML = "more_horiz"; + view.querySelector(".btnMoreCommands i").innerHTML = ""; view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit); view.querySelector(".btnSplitVersions").addEventListener("click", function () { splitVersions(self, view, apiClient, params); diff --git a/src/controllers/list.js b/src/controllers/list.js index f5d601345d..6e25242a01 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -175,7 +175,7 @@ define(["globalize", "listView", "layoutManager", "userSettings", "focusManager" var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "arrow_downward" : "arrow_upward"; + btnSortIcon.innerHTML = "Descending" === values.sortOrder ? "" : ""; } } } diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 1c6386ba9f..aee5876a45 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -30,7 +30,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += "
"; html += "
"; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + "
"; html += '
'; html += device.Url || " "; @@ -112,7 +112,7 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo html += "
"; html += ""; html += "
"; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index b4291e41a6..03c84f2ca3 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -297,7 +297,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl if (virtualFolder.showMenu !== false) { html += '
'; - html += ''; + html += ''; html += "
"; } diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 0067f64228..31b09aceb8 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -145,7 +145,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..50ae615b82 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -539,7 +539,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updateFullscreenIcon() { if (playbackManager.isFullscreen(currentPlayer)) { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("ExitFullscreen")); - view.querySelector(".btnFullscreen i").innerHTML = "fullscreen_exit"; + view.querySelector(".btnFullscreen i").innerHTML = ""; } else { view.querySelector(".btnFullscreen").setAttribute("title", globalize.translate("Fullscreen") + " (f)"); view.querySelector(".btnFullscreen i").innerHTML = "fullscreen"; @@ -741,7 +741,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function updatePlayPauseState(isPaused) { var button = view.querySelector(".btnPause i"); if (isPaused) { - button.innerHTML = "play_arrow"; + button.innerHTML = ""; button.setAttribute("title", globalize.translate("ButtonPlay") + " (k)"); } else { button.innerHTML = "pause"; @@ -880,10 +880,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med if (isMuted) { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Unmute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_off"; + view.querySelector(".buttonMute i").innerHTML = ""; } else { view.querySelector(".buttonMute").setAttribute("title", globalize.translate("Mute") + " (m)"); - view.querySelector(".buttonMute i").innerHTML = "volume_up"; + view.querySelector(".buttonMute i").innerHTML = ""; } if (progressElement) { diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 23397fd73e..d3034d8b5c 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -141,7 +141,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader html += '

'; html += item.Name; html += "

"; - html += 'chevron_right'; + html += ''; html += ""; html += "
"; if (enableScrollX()) { diff --git a/src/controllers/userprofilespage.js b/src/controllers/userprofilespage.js index a3c247cd35..2a2387ab60 100644 --- a/src/controllers/userprofilespage.js +++ b/src/controllers/userprofilespage.js @@ -115,7 +115,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += '
'; html += user.Name; html += "
"; - html += ''; + html += ''; html += "
"; html += '
'; var lastSeen = getLastSeenText(user.LastActivityDate); @@ -188,7 +188,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light", html += "
"; html += '
'; html += '
'; - html += ''; + html += ''; html += "
"; html += '
'; html += user.UserName; diff --git a/src/dashboard.html b/src/dashboard.html index 4888c1110f..5417cae9a5 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -5,7 +5,7 @@

${TabServer}

- chevron_right +
@@ -34,7 +34,7 @@

${HeaderActiveDevices}

- chevron_right +
@@ -45,7 +45,7 @@

${HeaderActivity}

- chevron_right +
@@ -62,7 +62,7 @@

${Alerts}

- chevron_right +
@@ -71,7 +71,7 @@

${HeaderPaths}

- chevron_right +
diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index e26d1921aa..02818c6630 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe this.parentNode.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode.insertAdjacentHTML('beforeend', '
0
keyboard_arrow_down
'); + this.parentNode.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/itemdetails.html b/src/itemdetails.html index ef41bc4b16..100e3f968a 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,7 +1,7 @@
@@ -17,21 +17,21 @@
diff --git a/src/list.html b/src/list.html index 643d3a1baa..375653c12d 100644 --- a/src/list.html +++ b/src/list.html @@ -7,13 +7,13 @@ ${HeaderPlayAll}
diff --git a/src/livetv.html b/src/livetv.html index 752b7c827b..9986529b7f 100644 --- a/src/livetv.html +++ b/src/livetv.html @@ -7,7 +7,7 @@
@@ -16,7 +16,7 @@
@@ -25,7 +25,7 @@
@@ -34,7 +34,7 @@
@@ -43,7 +43,7 @@
@@ -52,7 +52,7 @@
@@ -63,7 +63,7 @@
- +
@@ -72,7 +72,7 @@
diff --git a/src/movies.html b/src/movies.html index 702f1e1f40..e552ca392f 100644 --- a/src/movies.html +++ b/src/movies.html @@ -3,9 +3,9 @@
- - - + + +
@@ -46,8 +46,8 @@
- - + +
@@ -62,7 +62,7 @@
- +
@@ -74,8 +74,8 @@
- - + +
diff --git a/src/music.html b/src/music.html index d4d0acd8bb..9a284a5f8f 100644 --- a/src/music.html +++ b/src/music.html @@ -37,11 +37,11 @@
- + - - - + + +
@@ -56,8 +56,8 @@
- - + +
@@ -72,8 +72,8 @@
- - + +
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index cb63322f31..f7948a0789 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -41,7 +41,7 @@
- closed_caption +
${Subtitles}
diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..b609fab164 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -14,11 +14,11 @@
@@ -63,7 +63,7 @@
@@ -78,13 +78,13 @@

'; + html += ''; html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } html += "
"; diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 406edbff5e..0abcf697b1 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -5,7 +5,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var html = ""; html += '
'; html += '
'; - html += '"; + html += ''; html += ''; html += ''; html += '

'; @@ -306,7 +306,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " icon: "folder" }, { name: globalize.translate("TabPlayback"), - icon: "play_arrow", + icon: "", href: "encodingsettings.html", pageIds: ["encodingSettingsPage", "playbackConfigurationPage", "streamingSettingsPage"] }]; @@ -584,7 +584,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " var icon = headerCastButton.querySelector("i"); if (info && !info.isLocalPlayer) { - icon.innerHTML = "cast_connected"; + icon.innerHTML = ""; headerCastButton.classList.add("castButton-active"); context.querySelector(".headerSelectedPlayer").innerHTML = info.deviceName || info.name; } else { diff --git a/src/tv.html b/src/tv.html index 0840652c77..9a47c6fa8b 100644 --- a/src/tv.html +++ b/src/tv.html @@ -3,9 +3,9 @@
- - - + + +
@@ -59,9 +59,9 @@
- - - + + +
diff --git a/src/videoosd.html b/src/videoosd.html index a099605d0d..de14f9c1ca 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -25,15 +25,15 @@
diff --git a/src/wizardfinish.html b/src/wizardfinish.html index 84b559ee82..d3a0c4a831 100644 --- a/src/wizardfinish.html +++ b/src/wizardfinish.html @@ -5,7 +5,7 @@

${WizardCompleted}

${OptionAllowMediaPlaybackTranscodingHelp}
From 2557ec8fd3d3e07fd833c7901dc5630b6749888d Mon Sep 17 00:00:00 2001 From: tokiedokie Date: Sun, 16 Feb 2020 01:29:56 +0000 Subject: [PATCH 148/260] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index a276c7df07..88cfc5b689 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1115,5 +1115,8 @@ "LabelPreferredDisplayLanguage": "優先する表示言語:", "ImportMissingEpisodesHelp": "有効にすると、所有してないエピソードの情報がJellyfinデータベースにインポートされ、シーズンとシリーズに表示されます。これは、ライブラリスキャンに莫大な時間が掛かる可能性があります。", "LabelBindToLocalNetworkAddress": "ローカルネットワークアドレスにバインド:", - "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:" + "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:", + "HeaderNavigation": "ナビゲーション", + "CopyStreamURLError": "URLのコピー中にエラーが発生しました。", + "ButtonSplit": "分ける" } From e5343cada8a909ca6a7c27bbab8517da0e0ba7f6 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Sun, 16 Feb 2020 02:52:30 +0100 Subject: [PATCH 149/260] Fix Swiper on WebOS by importing ES5 version (#806) --- src/bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bundle.js b/src/bundle.js index 308687513a..b7bde65f80 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -66,7 +66,7 @@ _define("shaka", function() { }); // swiper -var swiper = require("swiper"); +var swiper = require("swiper/js/swiper"); require("swiper/css/swiper.min.css"); _define("swiper", function() { return swiper; From e12e6731b261c195ce70e9fbbe23d8ad7b048532 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Feb 2020 03:44:43 +0100 Subject: [PATCH 150/260] Make the console quieter by default --- src/components/alphapicker/alphapicker.js | 2 +- src/components/appRouter.js | 12 +-- src/components/apphost.js | 8 +- src/components/autoFocuser.js | 2 +- src/components/cardbuilder/cardBuilder.js | 4 +- .../chromecast/chromecasthelpers.js | 4 +- src/components/chromecast/chromecastplayer.js | 48 +++++----- src/components/dialogHelper/dialogHelper.js | 2 +- src/components/dom.js | 2 +- .../emby-itemscontainer.js | 2 +- src/components/fetchhelper.js | 18 ++-- src/components/focusManager.js | 2 +- src/components/guide/guide.js | 6 +- src/components/htmlMediaHelper.js | 26 +++--- src/components/htmlaudioplayer/plugin.js | 6 +- src/components/htmlvideoplayer/plugin.js | 47 +++++----- src/components/imageuploader/imageuploader.js | 2 +- src/components/indicators/indicators.js | 4 +- src/components/keyboardnavigation.js | 6 +- src/components/listview/listview.js | 1 - src/components/mediainfo/mediainfo.js | 12 +-- src/components/nowplayingbar/nowplayingbar.js | 6 +- src/components/playback/playbackmanager.js | 12 +-- .../playback/playbackorientation.js | 4 +- .../playback/remotecontrolautoplay.js | 4 +- src/components/pluginManager.js | 2 +- .../polyfills/focusPreventScroll.js | 2 +- src/components/remotecontrol/remotecontrol.js | 6 +- src/components/screensavermanager.js | 4 +- src/components/scrollManager.js | 2 +- src/components/scroller.js | 2 +- .../serverNotifications.js | 4 +- src/components/skinManager.js | 4 +- src/components/slideshow/slideshow.js | 2 +- src/components/upnextdialog/upnextdialog.js | 2 +- src/controllers/dashboard/plugins/add.js | 2 +- src/controllers/movies/moviesrecommended.js | 2 +- src/controllers/music/musicrecommended.js | 2 +- src/controllers/playback/videoosd.js | 8 +- src/controllers/shows/tvupcoming.js | 2 +- src/controllers/wizard/user.js | 2 +- src/libraries/apiclient/apiclientcore.js | 57 ++++++++---- src/libraries/apiclient/appStorage.js | 4 +- src/libraries/apiclient/connectionmanager.js | 46 +++++----- src/libraries/apiclient/credentialprovider.js | 2 +- src/libraries/apiclient/localassetmanager.js | 4 +- src/libraries/apiclient/sync/localsync.js | 2 +- src/libraries/apiclient/sync/mediasync.js | 92 +++++++++---------- .../apiclient/sync/multiserversync.js | 10 +- src/libraries/apiclient/sync/serversync.js | 12 +-- src/scripts/autobackdrops.js | 2 +- src/scripts/browserdeviceprofile.js | 4 +- src/scripts/globalize.js | 4 +- src/scripts/livetvcomponents.js | 2 +- src/scripts/routes.js | 4 +- src/scripts/site.js | 24 ++--- 56 files changed, 286 insertions(+), 273 deletions(-) diff --git a/src/components/alphapicker/alphapicker.js b/src/components/alphapicker/alphapicker.js index a23a7dfff3..9a51c310c3 100644 --- a/src/components/alphapicker/alphapicker.js +++ b/src/components/alphapicker/alphapicker.js @@ -241,7 +241,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b try { btn = element.querySelector('.alphaPickerButton[data-value=\'' + value + '\']'); } catch (err) { - console.log('Error in querySelector: ' + err); + console.error('error in querySelector: ' + err); } if (btn && btn !== selected) { diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 7b36d01bdd..f201e1239f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -387,13 +387,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM var apiClient = connectionManager.currentApiClient(); var pathname = ctx.pathname.toLowerCase(); - console.log('appRouter - processing path request ' + pathname); + console.debug('appRouter - processing path request ' + pathname); var isCurrentRouteStartup = currentRouteInfo ? currentRouteInfo.route.startup : true; var shouldExitApp = ctx.isBack && route.isDefaultRoute && isCurrentRouteStartup; if (!shouldExitApp && (!apiClient || !apiClient.isLoggedIn()) && !route.anonymous) { - console.log('appRouter - route does not allow anonymous access, redirecting to login'); + console.debug('appRouter - route does not allow anonymous access, redirecting to login'); beginConnectionWizard(); return; } @@ -408,10 +408,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM if (apiClient && apiClient.isLoggedIn()) { - console.log('appRouter - user is authenticated'); + console.debug('appRouter - user is authenticated'); if (route.isDefaultRoute) { - console.log('appRouter - loading skin home page'); + console.debug('appRouter - loading skin home page'); loadUserSkinWithOptions(ctx); return; } else if (route.roles) { @@ -425,7 +425,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM } } - console.log('appRouter - proceeding to ' + pathname); + console.debug('appRouter - proceeding to ' + pathname); callback(); } @@ -672,7 +672,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM baseRoute = baseRoute.substring(0, baseRoute.length - 1); } - console.log('Setting page base to ' + baseRoute); + console.debug('setting page base to ' + baseRoute); page.base(baseRoute); } diff --git a/src/components/apphost.js b/src/components/apphost.js index 2a0b7b19e9..291f531eb1 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -186,7 +186,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return !!cue.length; } catch (err) { - console.log("error detecting cue support: " + err); + console.error("error detecting cue support: " + err); return false; } } @@ -194,7 +194,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppVisible() { if (isHidden) { isHidden = false; - console.log("triggering app resume event"); + console.debug("triggering app resume event"); events.trigger(appHost, "resume"); } } @@ -202,7 +202,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet function onAppHidden() { if (!isHidden) { isHidden = true; - console.log("app is hidden"); + console.debug("app is hidden"); } } @@ -314,7 +314,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet window.close(); } } catch (err) { - console.log("error closing application: " + err); + console.error("error closing application: " + err); } } diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index 09ded814f2..6d99009e67 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -25,7 +25,7 @@ define(["focusManager", "layoutManager"], function (focusManager, layoutManager) activeElement = e.target; }); - console.log("AutoFocuser enabled"); + console.debug("AutoFocuser enabled"); } /** diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 29d7455bc9..e9e58780af 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -342,7 +342,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana try { newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); } catch (err) { - console.log('error parsing timestamp for premiere date'); + console.error('error parsing timestamp for premiere date'); } } } else if (options.indexBy === 'ProductionYear') { @@ -738,7 +738,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana airTimeText += ' - ' + datetime.getDisplayTime(date); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9d6f811cb1..21dbec6ff0 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -132,7 +132,7 @@ define(['events'], function (events) { var match; while (match = linkRegExp.exec(text)) { - // console.log(matches); + // console.debug(matches); var txt = match[0]; var pos = match.index; var len = txt.length; @@ -189,7 +189,7 @@ define(['events'], function (events) { return apiClient.getPublicSystemInfo().then(function (info) { var localAddress = info.LocalAddress if (!localAddress) { - console.log("No valid local address returned, defaulting to external one") + console.debug("No valid local address returned, defaulting to external one") localAddress = serverAddress; } addToCache(serverAddress, localAddress); diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 112d2980ab..4bb9b4daa1 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -105,7 +105,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' this.sessionListener.bind(this), this.receiverListener.bind(this)); - console.log('chromecast.initialize'); + console.debug('chromecast.initialize'); chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler); }; @@ -114,14 +114,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onInitSuccess = function () { this.isInitialized = true; - console.log("chromecast init success"); + console.debug("chromecast init success"); }; /** * Generic error callback function */ CastPlayer.prototype.onError = function () { - console.log("chromecast error"); + console.debug("chromecast error"); }; /** @@ -177,10 +177,10 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.receiverListener = function (e) { if (e === 'available') { - console.log("chromecast receiver found"); + console.debug("chromecast receiver found"); this.hasReceivers = true; } else { - console.log("chromecast receiver list empty"); + console.debug("chromecast receiver list empty"); this.hasReceivers = false; } }; @@ -190,7 +190,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.sessionUpdateListener = function (isAlive) { if (isAlive) { - console.log('sessionUpdateListener: already alive'); + console.debug('sessionUpdateListener: already alive'); } else { this.session = null; this.deviceState = DEVICE_STATE.IDLE; @@ -198,7 +198,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); - console.log('sessionUpdateListener: setting currentMediaSession to null'); + console.debug('sessionUpdateListener: setting currentMediaSession to null'); this.currentMediaSession = null; sendConnectionResult(false); @@ -211,7 +211,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session request in opt_sessionRequest. */ CastPlayer.prototype.launchApp = function () { - console.log("chromecast launching app..."); + console.debug("chromecast launching app..."); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); }; @@ -220,7 +220,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {Object} e A chrome.cast.Session object */ CastPlayer.prototype.onRequestSessionSuccess = function (e) { - console.log("chromecast session success: " + e.sessionId); + console.debug("chromecast session success: " + e.sessionId); this.onSessionConnected(e); }; @@ -262,7 +262,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for launch error */ CastPlayer.prototype.onLaunchError = function () { - console.log("chromecast launch error"); + console.debug("chromecast launch error"); this.deviceState = DEVICE_STATE.ERROR; sendConnectionResult(false); }; @@ -280,7 +280,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for stop app success */ CastPlayer.prototype.onStopAppSuccess = function (message) { - console.log(message); + console.debug(message); this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; @@ -296,7 +296,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.loadMedia = function (options, command) { if (!this.session) { - console.log("no session"); + console.debug("no session"); return Promise.reject(); } @@ -377,7 +377,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; CastPlayer.prototype.onPlayCommandSuccess = function () { - //console.log('Message was sent to receiver ok.'); + //console.debug('Message was sent to receiver ok.'); }; /** @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - //console.log("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + //console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -405,7 +405,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {!Boolean} e true/false */ CastPlayer.prototype.onMediaStatusUpdate = function (e) { - //console.log("chromecast updating media: " + e); + console.debug("chromecast updating media: " + e); if (e === false) { this.castPlayerState = PLAYER_STATE.IDLE; } @@ -417,7 +417,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { if (!this.currentMediaSession) { - //console.log('this.currentMediaSession is null'); + //console.debug('this.currentMediaSession is null'); return; } @@ -443,7 +443,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { - //console.log(info); + //console.debug(info); }; function normalizeImages(state) { @@ -493,7 +493,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, eventName, function (e, data) { - //console.log('cc: ' + eventName); + //console.debug('cc: ' + eventName); var state = instance.getPlayerStateInternal(data); events.trigger(instance, eventName, [state]); @@ -520,14 +520,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' playbackManager.setActivePlayer(PlayerName, instance.getCurrentTargetInfo()); } - console.log('cc: connect'); + console.debug('cc: connect'); // Reset this so that statechange will fire instance.lastPlayerData = null; }); events.on(instance._castPlayer, "playbackstart", function (e, data) { - console.log('cc: playbackstart'); + console.debug('cc: playbackstart'); instance._castPlayer.initializeCastPlayer(); @@ -537,7 +537,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackstop", function (e, data) { - console.log('cc: playbackstop'); + console.debug('cc: playbackstop'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "playbackstop", [state]); @@ -555,7 +555,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackprogress", function (e, data) { - //console.log('cc: positionchange'); + //console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "timeupdate", [state]); @@ -569,7 +569,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playstatechange", function (e, data) { - //console.log('cc: playstatechange'); + //console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "pause", [state]); @@ -664,7 +664,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' normalizeImages(data); - //console.log(JSON.stringify(data)); + //console.debug(JSON.stringify(data)); if (triggerStateChange) { events.trigger(this, "statechange", [data]); diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..2372fb584c 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -32,7 +32,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } diff --git a/src/components/dom.js b/src/components/dom.js index da03b87428..828b086897 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -69,7 +69,7 @@ define([], function () { }); window.addEventListener("test", null, opts); } catch (e) { - console.log('error checking capture support'); + console.debug('error checking capture support'); } function addEventListenerWithOptions(target, type, handler, options) { diff --git a/src/components/emby-itemscontainer/emby-itemscontainer.js b/src/components/emby-itemscontainer/emby-itemscontainer.js index 7cfb3e4a4a..bd2caa476e 100644 --- a/src/components/emby-itemscontainer/emby-itemscontainer.js +++ b/src/components/emby-itemscontainer/emby-itemscontainer.js @@ -467,7 +467,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', focusManager.focus(newElement); return; } catch (err) { - console.log(err); + console.error(err); } } } diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index bb7f21e75e..beb23efba1 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -51,7 +51,7 @@ define([], function () { function fetchWithTimeout(url, options, timeoutMs) { - console.log('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url); + console.debug('fetchWithTimeout: timeoutMs: ' + timeoutMs + ', url: ' + url); return new Promise(function (resolve, reject) { @@ -63,14 +63,14 @@ define([], function () { fetch(url, options).then(function (response) { clearTimeout(timeout); - console.log('fetchWithTimeout: succeeded connecting to url: ' + url); + console.debug('fetchWithTimeout: succeeded connecting to url: ' + url); resolve(response); }, function (error) { clearTimeout(timeout); - console.log('fetchWithTimeout: timed out connecting to url: ' + url); + console.debug('fetchWithTimeout: timed out connecting to url: ' + url); reject(); }); @@ -93,21 +93,17 @@ define([], function () { } function ajax(request) { - if (!request) { throw new Error("Request cannot be null"); } request.headers = request.headers || {}; - console.log('requesting url: ' + request.url); + console.debug('requesting url: ' + request.url); return getFetchPromise(request).then(function (response) { - - console.log('response status: ' + response.status + ', url: ' + request.url); - + console.debug('response status: ' + response.status + ', url: ' + request.url); if (response.status < 400) { - if (request.dataType === 'json' || request.headers.accept === 'application/json') { return response.json(); } else if (request.dataType === 'text' || (response.headers.get('Content-Type') || '').toLowerCase().indexOf('text/') === 0) { @@ -118,10 +114,8 @@ define([], function () { } else { return Promise.reject(response); } - }, function (err) { - - console.log('request failed to url: ' + request.url); + console.error('request failed to url: ' + request.url); throw err; }); } diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 56ff324e23..1da58d75c8 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -43,7 +43,7 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { preventScroll: scrollManager.isEnabled() }); } catch (err) { - console.log('Error in focusManager.autoFocus: ' + err); + console.error('Error in focusManager.autoFocus: ' + err); } } diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 9144886945..c3203ed8df 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -29,7 +29,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var offset = newPct - left; var pctOfWidth = (offset / width) * 100; - //console.log(pctOfWidth); + //console.debug(pctOfWidth); var guideProgramName = cell.guideProgramName; if (!guideProgramName) { guideProgramName = cell.querySelector('.guideProgramName'); @@ -396,7 +396,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for start date'); + console.error('error parsing timestamp for start date'); } } @@ -404,7 +404,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', try { program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true }); } catch (err) { - console.log('error parsing timestamp for end date'); + console.error('error parsing timestamp for end date'); } } diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 86f05dabfa..b900dd3719 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -114,12 +114,12 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve if (!recoverDecodingErrorDate || (now - recoverDecodingErrorDate) > 3000) { recoverDecodingErrorDate = now; - console.log('try to recover media Error ...'); + console.debug('try to recover media Error ...'); hlsPlayer.recoverMediaError(); } else { if (!recoverSwapAudioCodecDate || (now - recoverSwapAudioCodecDate) > 3000) { recoverSwapAudioCodecDate = now; - console.log('try to swap Audio Codec and recover media Error ...'); + console.debug('try to swap Audio Codec and recover media Error ...'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { @@ -233,7 +233,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve return Promise.resolve(); } } catch (err) { - console.log('error calling video.play: ' + err); + console.error('error calling video.play: ' + err); return Promise.reject(); } } @@ -245,7 +245,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.unload(); } catch (err) { - console.log(err); + console.error(err); } instance._castPlayer = null; @@ -258,7 +258,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._shakaPlayer = null; @@ -271,7 +271,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve try { player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._hlsPlayer = null; @@ -286,7 +286,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve player.detachMediaElement(); player.destroy(); } catch (err) { - console.log(err); + console.error(err); } instance._flvPlayer = null; @@ -307,14 +307,14 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve hls.on(Hls.Events.ERROR, function (event, data) { - console.log('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); + console.error('HLS Error: Type: ' + data.type + ' Details: ' + (data.details || '') + ' Fatal: ' + (data.fatal || false)); switch (data.type) { case Hls.ErrorTypes.NETWORK_ERROR: // try to recover network error if (data.response && data.response.code && data.response.code >= 400) { - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -343,7 +343,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve // This could be a CORS error related to access control response headers - console.log('hls.js response error code: ' + data.response.code); + console.debug('hls.js response error code: ' + data.response.code); // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); @@ -355,20 +355,20 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve onErrorInternal(instance, 'network'); } } else { - console.log("fatal network error encountered, try to recover"); + console.debug("fatal network error encountered, try to recover"); hls.startLoad(); } break; case Hls.ErrorTypes.MEDIA_ERROR: - console.log("fatal media error encountered, try to recover"); + console.debug("fatal media error encountered, try to recover"); var currentReject = reject; reject = null; handleHlsJsMediaError(instance, currentReject); break; default: - console.log('Cannot recover from hls error - destroy and trigger error'); + console.debug('Cannot recover from hls error - destroy and trigger error'); // cannot recover // Trigger failure differently depending on whether this is prior to start of playback, or after hls.destroy(); diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index ef64bad046..aeccaa9a12 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -16,7 +16,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp // Need to record the starting volume on each pass rather than querying elem.volume // This is due to iOS safari not allowing volume changes and always returning the system volume value var newVolume = Math.max(0, startingVolume - 0.15); - console.log('fading volume to ' + newVolume); + console.debug('fading volume to ' + newVolume); elem.volume = newVolume; if (newVolume <= 0) { @@ -113,7 +113,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp bindEvents(elem); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -298,7 +298,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 45eff41dbe..5ffed8c999 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -11,7 +11,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { parentNode.removeChild(elem); } catch (err) { - console.log('Error removing dialog element: ' + err); + console.error('error removing dialog element: ' + err); } } } @@ -242,7 +242,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa loading.show(); - console.log('prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('prefetching hls playlist: ' + hlsPlaylistUrl); return connectionManager.getApiClient(item.ServerId).ajax({ @@ -251,7 +251,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }).then(function () { - console.log('completed prefetching hls playlist: ' + hlsPlaylistUrl); + console.debug('completed prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); streamInfo.url = hlsPlaylistUrl; @@ -260,7 +260,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }, function () { - console.log('error prefetching hls playlist: ' + hlsPlaylistUrl); + console.error('error prefetching hls playlist: ' + hlsPlaylistUrl); loading.hide(); return Promise.resolve(); @@ -408,7 +408,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lrd.media.streamType = cast.receiver.media.StreamType.OTHER; lrd.media.customData = options; - console.log('loading media url into mediaManager'); + console.debug('loading media url into mediaManager'); try { mediaManager.load(lrd); @@ -418,7 +418,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return Promise.resolve(); } catch (err) { - console.log('mediaManager error: ' + err); + console.debug('mediaManager error: ' + err); return Promise.reject(); } } @@ -460,11 +460,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa protocol = cast.player.api.CreateSmoothStreamingProtocol(host); } - console.log('loading playback url: ' + url); - console.log('contentType: ' + contentType); + console.debug('loading playback url: ' + url); + console.debug('contentType: ' + contentType); host.onError = function (errorCode) { - console.log("Fatal Error - " + errorCode); + console.error("Fatal Error - " + errorCode); }; mediaElement.autoplay = false; @@ -499,7 +499,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elem.removeEventListener('error', onError); var val = options.url; - console.log('playing url: ' + val); + console.debug('playing url: ' + val); // Convert to seconds var seconds = (options.playerStartPositionTicks || 0) / 10000000; @@ -608,7 +608,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } else if (currentTrackEvents) { setTrackEventsSubtitleOffset(currentTrackEvents, offsetValue); } else { - console.log("No available track, cannot apply offset: ", offsetValue); + console.debug("No available track, cannot apply offset: ", offsetValue); } } }; @@ -727,15 +727,15 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa // https://msdn.microsoft.com/en-us/library/hh772507(v=vs.85).aspx var elemAudioTracks = elem.audioTracks || []; - console.log('found ' + elemAudioTracks.length + ' audio tracks'); + console.debug('found ' + elemAudioTracks.length + ' audio tracks'); for (i = 0, length = elemAudioTracks.length; i < length; i++) { if (audioIndex === i) { - console.log('setting audio track ' + i + ' to enabled'); + console.debug('setting audio track ' + i + ' to enabled'); elemAudioTracks[i].enabled = true; } else { - console.log('setting audio track ' + i + ' to disabled'); + console.debug('setting audio track ' + i + ' to disabled'); elemAudioTracks[i].enabled = false; } } @@ -911,7 +911,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function onError() { var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; @@ -1115,9 +1115,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function renderSsaAss(videoElement, track, item) { if (supportsCanvas() && supportsWebWorkers()) { + console.debug('rendering subtitles with SubtitlesOctopus'); renderWithSubtitlesOctopus(videoElement, track, item); } else { - console.log('rendering subtitles with libjass'); + console.debug('rendering subtitles with libjass'); renderWithLibjass(videoElement, track, item); } } @@ -1137,7 +1138,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var videoElement = self._mediaElement; var width = videoElement.offsetWidth; var height = videoElement.offsetHeight; - console.log('videoElement resized: ' + width + 'x' + height); + console.debug('videoElement resized: ' + width + 'x' + height); renderer.resize(width, height, 0, 0); } } @@ -1254,7 +1255,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa trackElement.removeCue(trackElement.cues[0]); } } catch (e) { - console.log('Error removing cue from textTrack'); + console.error('error removing cue from textTrack'); } trackElement.mode = 'disabled'; @@ -1268,7 +1269,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa fetchSubtitles(track, item).then(function (data) { // show in ui - console.log('downloaded ' + data.TrackEvents.length + ' track events'); + console.debug('downloaded ' + data.TrackEvents.length + ' track events'); // add some cues to show the text // in safari, the cues need to be added before setting the track mode to showing data.TrackEvents.forEach(function (trackEvent) { @@ -1294,7 +1295,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa try { clock.seek(timeMs / 1000); } catch (err) { - console.log('Error in libjass: ' + err); + console.error('error in libjass: ' + err); } return; } @@ -1327,7 +1328,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function setCurrentTrackElement(streamIndex) { - console.log('Setting new text track index to: ' + streamIndex); + console.debug('Setting new text track index to: ' + streamIndex); var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource); @@ -1369,7 +1370,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa track.removeCue(track.cues[0]); } } catch (e) { - console.log('Error removing cue from textTrack'); + console.error('error removing cue from textTrack'); } } @@ -1590,7 +1591,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; function onPictureInPictureError(err) { - console.log('Picture in picture error: ' + err.toString()); + console.error('Picture in picture error: ' + err.toString()); } HtmlVideoPlayer.prototype.setPictureInPictureEnabled = function (isEnabled) { diff --git a/src/components/imageuploader/imageuploader.js b/src/components/imageuploader/imageuploader.js index 198f540802..400646f669 100644 --- a/src/components/imageuploader/imageuploader.js +++ b/src/components/imageuploader/imageuploader.js @@ -47,7 +47,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', ' }; reader.onabort = function () { loading.hide(); - console.log('File read cancelled'); + console.debug('File read cancelled'); }; // Closure to capture the file information. diff --git a/src/components/indicators/indicators.js b/src/components/indicators/indicators.js index c81ac6bf18..b909c8c68c 100644 --- a/src/components/indicators/indicators.js +++ b/src/components/indicators/indicators.js @@ -62,7 +62,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun startDate = datetime.parseISO8601Date(item.StartDate).getTime(); endDate = datetime.parseISO8601Date(item.EndDate).getTime(); } catch (err) { - console.log(err); + console.error(err); } var now = new Date().getTime(); @@ -174,7 +174,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun return '
Unaired
'; } } catch (err) { - console.log(err); + console.error(err); } } return '
Missing
'; diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 4f3ed873d9..6fbec937d2 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -1,7 +1,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { "use strict"; - console.log("keyboardnavigation"); + console.debug("keyboardnavigation"); /** * Key name mapping. @@ -45,7 +45,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) try { hasFieldKey = "key" in new KeyboardEvent("keydown"); } catch (e) { - console.log("error checking 'key' field"); + console.error("error checking 'key' field"); } if (!hasFieldKey) { @@ -142,7 +142,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } if (capture) { - console.log("Disabling default event handling"); + console.debug("Disabling default event handling"); e.preventDefault(); } }); diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index dbe47b562f..5dcf3303a2 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -269,7 +269,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan if (options.image !== false) { var imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); - console.log(imgUrl); var imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; if (isLargeStyle && layoutManager.tv) { diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index e4375b742a..fc5e99dddb 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -57,7 +57,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -143,7 +143,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.toLocaleDateString(date); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } @@ -176,7 +176,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater miscInfo.push(text); } } catch (e) { - console.log("Error parsing date: " + item.StartDate); + console.error("error parsing date: " + item.StartDate); } } @@ -200,7 +200,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater } } catch (e) { - console.log("Error parsing date: " + item.EndDate); + console.error("error parsing date: " + item.EndDate); } } @@ -248,7 +248,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } else if (item.ProductionYear) { miscInfo.push(item.ProductionYear); @@ -267,7 +267,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); miscInfo.push(text); } catch (e) { - console.log("Error parsing date: " + item.PremiereDate); + console.error("error parsing date: " + item.PremiereDate); } } } diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index d8191e9ef1..876e42e5e4 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -582,7 +582,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStart(e, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; @@ -627,7 +627,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; if (player.isLocalPlayer) { @@ -653,7 +653,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - //console.log('nowplaying event: ' + e.type); + //console.debug('nowplaying event: ' + e.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index da04a2e13e..f9af97803b 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -57,7 +57,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - //console.log(method + '-' + JSON.stringify(info)); + //console.debug(method + '-' + JSON.stringify(info)); var apiClient = connectionManager.getApiClient(serverId); apiClient[method](info); } @@ -1024,7 +1024,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla currentTargetInfo = targetInfo; if (targetInfo) { - console.log('Active player: ' + JSON.stringify(targetInfo)); + console.debug('Active player: ' + JSON.stringify(targetInfo)); } if (player && player.isLocalPlayer) { @@ -2828,7 +2828,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (newItemInfo) { - console.log('playing next track'); + console.debug('playing next track'); var newItemPlayOptions = newItemInfo.item.playOptions || getDefaultPlayOptions(); @@ -3118,7 +3118,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla // medianotsupported var errorType = error.type; - console.log('playbackmanager playback error type: ' + (errorType || '')); + console.debug('playbackmanager playback error type: ' + (errorType || '')); var streamInfo = error.streamInfo || getPlayerData(player).streamInfo; @@ -3401,7 +3401,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function getLiveStreamMediaInfo(player, streamInfo, mediaSource, liveStreamId, serverId) { - console.log('getLiveStreamMediaInfo'); + console.debug('getLiveStreamMediaInfo'); streamInfo.lastMediaInfoQuery = new Date().getTime(); @@ -3961,7 +3961,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; PlaybackManager.prototype.sendCommand = function (cmd, player) { - console.log('MediaController received command: ' + cmd.Name); + console.debug('MediaController received command: ' + cmd.Name); switch (cmd.Name) { case 'SetRepeatMode': this.setRepeatMode(cmd.Arguments.RepeatMode, player); diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 3253d8acdf..90f7b9f5fa 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -9,7 +9,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager function onOrientationChangeError(err) { orientationLocked = false; - console.log('error locking orientation: ' + err); + console.error('error locking orientation: ' + err); } events.on(playbackManager, 'playbackstart', function (e, player, state) { @@ -46,7 +46,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager try { unlockOrientation(); } catch (err) { - console.log('error unlocking orientation: ' + err); + console.error('error unlocking orientation: ' + err); } orientationLocked = false; } diff --git a/src/components/playback/remotecontrolautoplay.js b/src/components/playback/remotecontrolautoplay.js index d8316b87ef..0d7b7afce3 100644 --- a/src/components/playback/remotecontrolautoplay.js +++ b/src/components/playback/remotecontrolautoplay.js @@ -32,12 +32,12 @@ define(['events', 'playbackManager'], function (events, playbackManager) { } if (!oldPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because oldPlayer is not a local player'); + console.debug('Skipping remote control autoplay because oldPlayer is not a local player'); return; } if (newPlayer.isLocalPlayer) { - console.log('Skipping remote control autoplay because newPlayer is a local player'); + console.debug('Skipping remote control autoplay because newPlayer is a local player'); return; } diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index ec65e63e65..f43a10ba05 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -27,7 +27,7 @@ define(['events'], function (events) { PluginManager.prototype.loadPlugin = function (url) { - console.log('Loading plugin: ' + url); + console.debug('Loading plugin: ' + url); var instance = this; return new Promise(function (resolve, reject) { diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 6511c0426c..8c8da94244 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -19,7 +19,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { focusElem.focus(opts); } catch (e) { - console.log("error checking preventScroll support"); + console.error("error checking preventScroll support"); } if (!supportsPreventScrollOption) { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..43a112fa58 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -127,7 +127,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL maxHeight: 300 }) : null; - console.log("updateNowPlayingInfo"); + console.debug("updateNowPlayingInfo"); setImageUrl(context, url); if (item) { backdrop.setBackdrops([item]); @@ -398,7 +398,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStart(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; onStateChanged.call(player, e, state); } @@ -426,7 +426,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL } function onPlaybackStopped(e, state) { - console.log("remotecontrol event: " + e.type); + console.debug("remotecontrol event: " + e.type); var player = this; if (!state.NextMediaType) { diff --git a/src/components/screensavermanager.js b/src/components/screensavermanager.js index 5b7613c98d..b9d7082850 100644 --- a/src/components/screensavermanager.js +++ b/src/components/screensavermanager.js @@ -53,7 +53,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio throw new Error("An existing screensaver is already active."); } - console.log("Showing screensaver " + screensaver.name); + console.debug("Showing screensaver " + screensaver.name); screensaver.show(); activeScreenSaver = screensaver; @@ -71,7 +71,7 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectio function hide() { if (activeScreenSaver) { - console.log("Hiding screensaver"); + console.debug("Hiding screensaver"); activeScreenSaver.hide(); activeScreenSaver = null; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 57107ed185..559fbaf524 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -40,7 +40,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage elem.scrollTo(opts); } catch (e) { - console.log("error checking ScrollToOptions support"); + console.error("error checking ScrollToOptions support"); } /** diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..45a0c08982 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -392,7 +392,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var currentStart = self._pos.cur; var currentEnd = currentStart + frameSize; - //console.log('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); + //console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); var isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { diff --git a/src/components/serverNotifications/serverNotifications.js b/src/components/serverNotifications/serverNotifications.js index 1941881b7a..1087e46675 100644 --- a/src/components/serverNotifications/serverNotifications.js +++ b/src/components/serverNotifications/serverNotifications.js @@ -33,7 +33,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus } function processGeneralCommand(cmd, apiClient) { - console.log('Received command: ' + cmd.Name); + console.debug('Received command: ' + cmd.Name); switch (cmd.Name) { case 'Select': inputManager.trigger('select'); @@ -133,7 +133,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus focusManager.sendText(cmd.Arguments.String); break; default: - console.log('processGeneralCommand does not recognize: ' + cmd.Name); + console.debug('processGeneralCommand does not recognize: ' + cmd.Name); break; } diff --git a/src/components/skinManager.js b/src/components/skinManager.js index b757aab3d6..b38ff25791 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -96,7 +96,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr appHost.setThemeColor(color); } } catch (err) { - console.log('Error setting theme color: ' + err); + console.error('error setting theme color: ' + err); } } @@ -170,7 +170,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr sound.play(); currentSound = sound; } catch (err) { - console.log('Error playing sound: ' + err); + console.error('error playing sound: ' + err); } }); } diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index b6c896f623..fab328bb21 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -78,7 +78,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f try { appHost.setUserScalable(scalable); } catch (err) { - console.log('error in appHost.setUserScalable: ' + err); + console.error('error in appHost.setUserScalable: ' + err); } } diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 80e7d807bd..ddcbbdf820 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -131,7 +131,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l var secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0); - console.log('up next seconds remaining: ' + secondsRemaining); + console.debug('up next seconds remaining: ' + secondsRemaining); var timeText = '' + globalize.translate('HeaderSecondsValue', secondsRemaining) + ''; diff --git a/src/controllers/dashboard/plugins/add.js b/src/controllers/dashboard/plugins/add.js index 7930d6927b..72a7134fac 100644 --- a/src/controllers/dashboard/plugins/add.js +++ b/src/controllers/dashboard/plugins/add.js @@ -122,7 +122,7 @@ define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "e confirm(msg, globalize.translate("HeaderConfirmPluginInstallation")).then(function () { alertCallback(); }, function () { - console.log('plugin not installed'); + console.debug('plugin not installed'); }); }); } else { diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 31ded5c594..7d3251e589 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -201,7 +201,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" function loadSuggestionsTab(view, params, tabContent) { var parentId = params.topParentId; var userId = ApiClient.getCurrentUserId(); - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadResume(tabContent, userId, parentId); loadLatest(tabContent, userId, parentId); loadSuggestions(tabContent, userId, parentId); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 556877aa1b..8b87dff265 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -155,7 +155,7 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", " } function loadSuggestionsTab(page, tabContent, parentId) { - console.log("loadSuggestionsTab"); + console.debug("loadSuggestionsTab"); loadLatest(tabContent, parentId); loadRecentlyPlayed(tabContent, parentId); loadFrequentlyPlayed(tabContent, parentId); diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index fd42f68498..ae6dfa7f8c 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -575,7 +575,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med } function onPlaybackStart(e, state) { - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); var player = this; onStateChanged.call(player, e, state); resetUpNextDialog(); @@ -594,7 +594,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med function onPlaybackStopped(e, state) { currentRuntimeTicks = null; resetUpNextDialog(); - console.log("nowplaying event: " + e.type); + console.debug("nowplaying event: " + e.type); if ("Video" !== state.NextMediaType) { view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -725,14 +725,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med var endDate = datetime.parseISO8601Date(program.EndDate); if (new Date().getTime() >= endDate.getTime()) { - console.log("program info needs to be refreshed"); + console.debug("program info needs to be refreshed"); var state = playbackManager.getPlayerState(player); onStateChanged.call(player, { type: "init" }, state); } } catch (e) { - console.log("Error parsing date: " + program.EndDate); + console.error("error parsing date: " + program.EndDate); } } } diff --git a/src/controllers/shows/tvupcoming.js b/src/controllers/shows/tvupcoming.js index f85278195f..249d932d39 100644 --- a/src/controllers/shows/tvupcoming.js +++ b/src/controllers/shows/tvupcoming.js @@ -58,7 +58,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", day: "numeric" }); } catch (err) { - console.log('error parsing timestamp for upcoming tv shows'); + console.error('error parsing timestamp for upcoming tv shows'); } } diff --git a/src/controllers/wizard/user.js b/src/controllers/wizard/user.js index d29be37c13..c2560ba06a 100644 --- a/src/controllers/wizard/user.js +++ b/src/controllers/wizard/user.js @@ -10,7 +10,7 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em } function onUpdateUserComplete(result) { - console.log(result); + console.debug(result); loading.hide(); nextWizardPage(); } diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index b6c98ebbd9..0b17c7c3cb 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -59,8 +59,22 @@ define(["events", "appStorage"], function(events, appStorage) { } function ApiClient(serverAddress, appName, appVersion, deviceName, deviceId, devicePixelRatio) { - if (!serverAddress) throw new Error("Must supply a serverAddress"); - console.log("ApiClient serverAddress: " + serverAddress), console.log("ApiClient appName: " + appName), console.log("ApiClient appVersion: " + appVersion), console.log("ApiClient deviceName: " + deviceName), console.log("ApiClient deviceId: " + deviceId), this._serverInfo = {}, this._serverAddress = serverAddress, this._deviceId = deviceId, this._deviceName = deviceName, this._appName = appName, this._appVersion = appVersion, this._devicePixelRatio = devicePixelRatio + if (!serverAddress) { + throw new Error("Must supply a serverAddress"); + } + + console.debug("ApiClient serverAddress: " + serverAddress); + console.debug("ApiClient appName: " + appName); + console.debug("ApiClient appVersion: " + appVersion); + console.debug("ApiClient deviceName: " + deviceName); + console.debug("ApiClient deviceId: " + deviceId); + this._serverInfo = {}; + this._serverAddress = serverAddress; + this._deviceId = deviceId; + this._deviceName = deviceName; + this._appName = appName; + this._appVersion = appVersion; + this._devicePixelRatio = devicePixelRatio; } function setSavedEndpointInfo(instance, info) { @@ -68,13 +82,14 @@ define(["events", "appStorage"], function(events, appStorage) { } function getTryConnectPromise(instance, url, state, resolve, reject) { - console.log("getTryConnectPromise " + url), fetchWithTimeout(instance.getUrl("system/info/public", null, url), { + console.debug("getTryConnectPromise " + url); + fetchWithTimeout(instance.getUrl("system/info/public", null, url), { method: "GET", accept: "application/json" }, 15e3).then(function() { - state.resolved || (state.resolved = !0, console.log("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) + state.resolved || (state.resolved = !0, console.debug("Reconnect succeeded to " + url), instance.serverAddress(url), resolve()) }, function() { - state.resolved || (console.log("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) + state.resolved || (console.error("Reconnect failed to " + url), ++state.rejects >= state.numAddresses && reject()) }) } @@ -91,7 +106,7 @@ define(["events", "appStorage"], function(events, appStorage) { }), addressesStrings.push(addresses[addresses.length - 1].url)), serverInfo.RemoteAddress && -1 === addressesStrings.indexOf(serverInfo.RemoteAddress) && (addresses.push({ url: serverInfo.RemoteAddress, timeout: 200 - }), addressesStrings.push(addresses[addresses.length - 1].url)), console.log("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { + }), addressesStrings.push(addresses[addresses.length - 1].url)), console.debug("tryReconnect: " + addressesStrings.join("|")), new Promise(function(resolve, reject) { var state = {}; state.numAddresses = addresses.length, state.rejects = 0, addresses.map(function(url) { setTimeout(function() { @@ -103,7 +118,7 @@ define(["events", "appStorage"], function(events, appStorage) { function tryReconnect(instance, retryCount) { return retryCount = retryCount || 0, retryCount >= 20 ? Promise.reject() : tryReconnectInternal(instance).catch(function(err) { - return console.log("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { + return console.error("error in tryReconnectInternal: " + (err || "")), new Promise(function(resolve, reject) { setTimeout(function() { tryReconnect(instance, retryCount + 1).then(resolve, reject) }, 500) @@ -139,7 +154,7 @@ define(["events", "appStorage"], function(events, appStorage) { function onWebSocketOpen() { var instance = this; - console.log("web socket connection opened"), events.trigger(instance, "websocketopen") + console.debug("web socket connection opened"), events.trigger(instance, "websocketopen") } function onWebSocketError() { @@ -149,7 +164,11 @@ define(["events", "appStorage"], function(events, appStorage) { function setSocketOnClose(apiClient, socket) { socket.onclose = function() { - console.log("web socket closed"), apiClient._webSocket === socket && (console.log("nulling out web socket"), apiClient._webSocket = null), setTimeout(function() { + console.debug("web socket closed"); + apiClient._webSocket === socket; + console.debug("nulling out web socket"); + apiClient._webSocket = null; + setTimeout(function() { events.trigger(apiClient, "websocketclose") }, 0) } @@ -244,24 +263,24 @@ define(["events", "appStorage"], function(events, appStorage) { var lowered = url.toLowerCase(); return "/" !== name.charAt(0) && (url += "/"), url += name, params && (params = paramsToString(params)) && (url += "?" + params), url }, ApiClient.prototype.fetchWithFailover = function(request, enableReconnection) { - console.log("Requesting " + request.url), request.timeout = 3e4; + console.debug("Requesting " + request.url), request.timeout = 3e4; var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) }, function(error) { - if (error ? console.log("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.log("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.log("Reporting request failure"), onFetchFail(instance, request.url, {}), error; - console.log("Attempting reconnection"); + if (error ? console.error("Request failed to " + request.url + " " + (error.status || "") + " " + error.toString()) : console.error("Request timed out to " + request.url), error && error.status || !enableReconnection) throw console.error("Reporting request failure"), onFetchFail(instance, request.url, {}), error; + console.debug("Attempting reconnection"); var previousServerAddress = instance.serverAddress(); return tryReconnect(instance).then(function() { - return console.log("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) + return console.debug("Reconnect succeesed"), request.url = request.url.replace(previousServerAddress, instance.serverAddress()), instance.fetchWithFailover(request, !1) }, function(innerError) { - throw console.log("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError + throw console.error("Reconnect failed"), onFetchFail(instance, request.url, {}), innerError }) }) }, ApiClient.prototype.fetch = function(request, includeAuthorization) { if (!request) throw new Error("Request cannot be null"); if (request.headers = request.headers || {}, !1 !== includeAuthorization && this.setRequestHeaders(request.headers), !1 === this.enableAutomaticNetworking || "GET" !== request.type) { - console.log("Requesting url without automatic networking: " + request.url); + console.debug("Requesting url without automatic networking: " + request.url); var instance = this; return getFetchPromise(request).then(function(response) { return instance.lastFetch = (new Date).getTime(), response.status < 400 ? "json" === request.dataType || "application/json" === request.headers.accept ? response.json() : "text" === request.dataType || 0 === (response.headers.get("Content-Type") || "").toLowerCase().indexOf("text/") ? response.text() : response : (onFetchFail(instance, request.url, response), Promise.reject(response)) @@ -340,7 +359,7 @@ define(["events", "appStorage"], function(events, appStorage) { if (!this.isWebSocketOpenOrConnecting() && this.isWebSocketSupported()) try { this.openWebSocket() } catch (err) { - console.log("Error opening web socket: " + err) + console.error("error opening web socket: " + err) } }; var messageIdsReceived = {}; @@ -348,14 +367,14 @@ define(["events", "appStorage"], function(events, appStorage) { var accessToken = this.accessToken(); if (!accessToken) throw new Error("Cannot open web socket without access token."); var url = this.getUrl("socket"); - url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.log("opening web socket with url: " + url); + url = replaceAll(url, "emby/socket", "embywebsocket"), url = replaceAll(url, "https:", "wss:"), url = replaceAll(url, "http:", "ws:"), url += "?api_key=" + accessToken, url += "&deviceId=" + this.deviceId(), console.debug("opening web socket with url: " + url); var webSocket = new WebSocket(url); webSocket.onmessage = onWebSocketMessage.bind(this), webSocket.onopen = onWebSocketOpen.bind(this), webSocket.onerror = onWebSocketError.bind(this), setSocketOnClose(this, webSocket), this._webSocket = webSocket }, ApiClient.prototype.closeWebSocket = function() { var socket = this._webSocket; socket && socket.readyState === WebSocket.OPEN && socket.close() }, ApiClient.prototype.sendWebSocketMessage = function(name, data) { - console.log("Sending web socket message: " + name); + console.debug("Sending web socket message: " + name); var msg = { MessageType: name }; @@ -387,7 +406,7 @@ define(["events", "appStorage"], function(events, appStorage) { }, ApiClient.prototype.updateServerInfo = function(server, serverUrl) { if (null == server) throw new Error("server cannot be null"); if (this.serverInfo(server), !serverUrl) throw new Error("serverUrl cannot be null. serverInfo: " + JSON.stringify(server)); - console.log("Setting server address to " + serverUrl), this.serverAddress(serverUrl) + console.debug("Setting server address to " + serverUrl), this.serverAddress(serverUrl) }, ApiClient.prototype.isWebSocketSupported = function() { try { return null != WebSocket diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 6083bb4953..97229f8558 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -2,7 +2,7 @@ define([], function() { "use strict"; function onCachePutFail(e) { - console.log(e); + console.error(e); } function updateCache(instance) { @@ -45,7 +45,7 @@ define([], function() { self.caches.open("embydata").then(onCacheOpened.bind(this)); } } catch (err) { - console.log("Error opening cache: " + err); + console.error("error opening cache: " + err); } } diff --git a/src/libraries/apiclient/connectionmanager.js b/src/libraries/apiclient/connectionmanager.js index 7e7d578cba..a8e389bd03 100644 --- a/src/libraries/apiclient/connectionmanager.js +++ b/src/libraries/apiclient/connectionmanager.js @@ -95,18 +95,18 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function fetchWithTimeout(url, options, timeoutMs) { - console.log("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); + console.debug("fetchWithTimeout: timeoutMs: " + timeoutMs + ", url: " + url); return new Promise(function (resolve, reject) { var timeout = setTimeout(reject, timeoutMs); options = options || {}; options.credentials = "same-origin"; fetch(url, options).then(function (response) { clearTimeout(timeout); - console.log("fetchWithTimeout: succeeded connecting to url: " + url); + console.debug("fetchWithTimeout: succeeded connecting to url: " + url); resolve(response); }, function (error) { clearTimeout(timeout); - console.log("fetchWithTimeout: timed out connecting to url: " + url); + console.error("fetchWithTimeout: timed out connecting to url: " + url); reject(); }); }); @@ -118,9 +118,9 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } request.headers = request.headers || {}; - console.log("ConnectionManager requesting url: " + request.url); + console.debug("ConnectionManager requesting url: " + request.url); return getFetchPromise(request).then(function (response) { - console.log("ConnectionManager response status: " + response.status + ", url: " + request.url); + console.debug("ConnectionManager response status: " + response.status + ", url: " + request.url); if (response.status < 400) { if ("json" === request.dataType || "application/json" === request.headers.accept) { @@ -132,7 +132,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory return Promise.reject(response); }, function (err) { - console.log("ConnectionManager request failed to url: " + request.url); + console.error("ConnectionManager request failed to url: " + request.url); throw err; }); } @@ -227,7 +227,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory apiClient.enableAutomaticBitrateDetection = options.enableAutomaticBitrateDetection; if (false !== options.enableWebSocket) { - console.log("calling apiClient.ensureWebSocket"); + console.debug("calling apiClient.ensureWebSocket"); apiClient.ensureWebSocket(); } } @@ -333,7 +333,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } function getTryConnectPromise(url, connectionMode, state, resolve, reject) { - console.log("getTryConnectPromise " + url); + console.debug("getTryConnectPromise " + url); ajax({ url: getEmbyServerUrl(url, "system/info/public"), timeout: defaultTimeout, @@ -342,7 +342,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }).then(function (result) { if (!state.resolved) { state.resolved = true; - console.log("Reconnect succeeded to " + url); + console.debug("Reconnect succeeded to " + url); resolve({ url: url, connectionMode: connectionMode, @@ -351,7 +351,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } }, function () { if (!state.resolved) { - console.log("Reconnect failed to " + url); + console.error("Reconnect failed to " + url); if (++state.rejects >= state.numAddresses) { reject(); @@ -391,7 +391,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory addressesStrings.push(addresses[addresses.length - 1].url); } - console.log("tryReconnect: " + addressesStrings.join("|")); + console.debug("tryReconnect: " + addressesStrings.join("|")); return new Promise(function (resolve, reject) { var state = {}; state.numAddresses = addresses.length; @@ -458,7 +458,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory } } - console.log("Begin ConnectionManager constructor"); + console.debug("Begin ConnectionManager constructor"); var self = this; this._apiClients = []; self._minServerVersion = "3.2.33"; @@ -530,7 +530,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.clearData = function () { - console.log("connection manager clearing data"); + console.debug("connection manager clearing data"); var credentials = credentialProvider.credentials(); credentials.Servers = []; credentialProvider.credentials(credentials); @@ -550,7 +550,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory events.trigger(self, "apiclientcreated", [apiClient]); } - console.log("returning instance from getOrAddApiClient"); + console.debug("returning instance from getOrAddApiClient"); return apiClient; }; @@ -592,7 +592,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.logout = function () { - console.log("begin connectionManager loguot"); + console.debug("begin connectionManager loguot"); var promises = []; for (var i = 0, length = self._apiClients.length; i < length; i++) { @@ -628,7 +628,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.getAvailableServers = function () { - console.log("Begin getAvailableServers"); + console.debug("begin getAvailableServers"); var credentials = credentialProvider.credentials(); return Promise.all([findServers()]).then(function (responses) { var foundServers = responses[0]; @@ -644,7 +644,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServers = function (servers, options) { - console.log("Begin connectToServers, with " + servers.length + " servers"); + console.debug("begin connectToServers, with " + servers.length + " servers"); var firstServer = servers.length ? servers[0] : null; if (firstServer) { @@ -653,7 +653,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result.State = "ServerSelection"; } - console.log("resolving connectToServers with result.State: " + result.State); + console.debug("resolving connectToServers with result.State: " + result.State); return result; }); } @@ -665,7 +665,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; self.connectToServer = function (server, options) { - console.log("begin connectToServer"); + console.debug("begin connectToServer"); return new Promise(function (resolve, reject) { options = options || {}; tryReconnect(server).then(function (result) { @@ -674,14 +674,14 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory result = result.data; if (1 === compareVersions(self.minServerVersion(), result.Version)) { - console.log("minServerVersion requirement not met. Server version: " + result.Version); + console.debug("minServerVersion requirement not met. Server version: " + result.Version); resolve({ State: "ServerUpdateNeeded", Servers: [server] }); } else { if (server.Id && result.Id !== server.Id) { - console.log("http request succeeded, but found a different server Id than what was expected"); + console.debug("http request succeeded, but found a different server Id than what was expected"); resolveFailure(self, resolve); } else { onSuccessfulConnection(server, result, connectionMode, serverUrl, options, resolve); @@ -695,7 +695,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory self.connectToAddress = function (address, options) { function onFail() { - console.log("connectToAddress " + address + " failed"); + console.error("connectToAddress " + address + " failed"); return Promise.resolve({ State: "Unavailable", }); @@ -741,7 +741,7 @@ define(["events", "apiclient", "appStorage"], function (events, apiClientFactory }; ConnectionManager.prototype.connect = function (options) { - console.log("Begin connect"); + console.debug("begin connect"); var instance = this; return instance.getAvailableServers().then(function (servers) { return instance.connectToServers(servers, options); diff --git a/src/libraries/apiclient/credentialprovider.js b/src/libraries/apiclient/credentialprovider.js index 471f2b5ef1..cd27a1fe69 100644 --- a/src/libraries/apiclient/credentialprovider.js +++ b/src/libraries/apiclient/credentialprovider.js @@ -4,7 +4,7 @@ define(["events", "appStorage"], function(events, appStorage) { function ensure(instance, data) { if (!instance._credentials) { var json = appStorage.getItem(instance.key) || "{}"; - console.log("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] + console.debug("credentials initialized with: " + json), instance._credentials = JSON.parse(json), instance._credentials.Servers = instance._credentials.Servers || [] } } diff --git a/src/libraries/apiclient/localassetmanager.js b/src/libraries/apiclient/localassetmanager.js index fbe74aae51..190fe4cd7d 100644 --- a/src/libraries/apiclient/localassetmanager.js +++ b/src/libraries/apiclient/localassetmanager.js @@ -2,7 +2,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman "use strict"; function getLocalItem(serverId, itemId) { - return console.log("[lcoalassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) + return console.debug("[localassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) } function recordUserAction(action) { @@ -25,7 +25,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman } function getServerItems(serverId) { - return console.log("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) + return console.debug("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) } function getItemsFromIds(serverId, ids) { diff --git a/src/libraries/apiclient/sync/localsync.js b/src/libraries/apiclient/sync/localsync.js index cea244de08..150fa1f5b2 100644 --- a/src/libraries/apiclient/sync/localsync.js +++ b/src/libraries/apiclient/sync/localsync.js @@ -3,7 +3,7 @@ define(["connectionManager"], function(connectionManager) { var isSyncing; return { sync: function(options) { - return console.log("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { + return console.debug("localSync.sync starting..."), isSyncing ? Promise.resolve() : (isSyncing = !0, new Promise(function(resolve, reject) { require(["multiserversync", "appSettings"], function(MultiServerSync, appSettings) { options = options || {}, options.cameraUploadServers = appSettings.cameraUploadServers(), (new MultiServerSync).sync(connectionManager, options).then(function() { isSyncing = null, resolve() diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 24220561ad..9ca101b540 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -2,9 +2,9 @@ define(["localassetmanager"], function(localassetmanager) { "use strict"; function processDownloadStatus(apiClient, serverInfo, options) { - return console.log("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { + return console.debug("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { return localassetmanager.getServerItems(serverInfo.Id).then(function(items) { - console.log("[mediasync] Begin processDownloadStatus getServerItems completed"); + console.debug("[mediasync] Begin processDownloadStatus getServerItems completed"); var p = Promise.resolve(), cnt = 0; return items.filter(function(item) { @@ -14,7 +14,7 @@ define(["localassetmanager"], function(localassetmanager) { return reportTransfer(apiClient, item) }), cnt++ }), p.then(function() { - return console.log("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() + return console.debug("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() }) }) }) @@ -23,39 +23,39 @@ define(["localassetmanager"], function(localassetmanager) { function reportTransfer(apiClient, item) { return localassetmanager.getItemFileSize(item.LocalPath).then(function(size) { return size > 0 ? apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function() { - return item.SyncStatus = "synced", console.log("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) + return item.SyncStatus = "synced", console.debug("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) }, function(error) { return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) }) : localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result) { - return result ? Promise.resolve() : (console.log("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return result ? Promise.resolve() : (console.debug("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.debug("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() })) }) }, function(error) { return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { - return console.log("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.log("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.error("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() }) }) } function reportOfflineActions(apiClient, serverInfo) { - return console.log("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { + return console.debug("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { return actions.length ? apiClient.reportOfflineActions(actions).then(function() { return localassetmanager.deleteUserActions(actions).then(function() { - return console.log("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() + return console.debug("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() }) }, function(err) { return console.error("[mediasync] error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) - }) : (console.log("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) + }) : (console.debug("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) }) } function syncData(apiClient, serverInfo) { - return console.log("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return console.debug("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -67,7 +67,7 @@ define(["localassetmanager"], function(localassetmanager) { }; return apiClient.syncData(request).then(function(result) { return afterSyncData(apiClient, serverInfo, result).then(function() { - return console.log("[mediasync] Exit syncData"), Promise.resolve() + return console.debug("[mediasync] Exit syncData"), Promise.resolve() }, function(err) { return console.error("[mediasync] Error in syncData: " + err.toString()), Promise.resolve() }) @@ -76,7 +76,7 @@ define(["localassetmanager"], function(localassetmanager) { } function afterSyncData(apiClient, serverInfo, syncDataResult) { - console.log("[mediasync] Begin afterSyncData"); + console.debug("[mediasync] Begin afterSyncData"); var p = Promise.resolve(); return syncDataResult.ItemIdsToRemove && syncDataResult.ItemIdsToRemove.length > 0 && syncDataResult.ItemIdsToRemove.forEach(function(itemId) { p = p.then(function() { @@ -85,16 +85,16 @@ define(["localassetmanager"], function(localassetmanager) { }), p = p.then(function() { return removeObsoleteContainerItems(serverInfo.Id) }), p.then(function() { - return console.log("[mediasync] Exit afterSyncData"), Promise.resolve() + return console.debug("[mediasync] Exit afterSyncData"), Promise.resolve() }) } function removeObsoleteContainerItems(serverId) { - return console.log("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) + return console.debug("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) } function removeLocalItem(itemId, serverId) { - return console.log("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { + return console.debug("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { return item ? localassetmanager.removeLocalItem(item) : Promise.resolve() }, function(err2) { return console.error("[mediasync] removeLocalItem: Failed: ", err2), Promise.resolve() @@ -102,8 +102,8 @@ define(["localassetmanager"], function(localassetmanager) { } function getNewMedia(apiClient, downloadCount) { - return console.log("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { - console.log("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); + return console.debug("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { + console.debug("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); var p = Promise.resolve(), currentCount = downloadCount; return jobItems.forEach(function(jobItem) { @@ -111,7 +111,7 @@ define(["localassetmanager"], function(localassetmanager) { return getNewItem(jobItem, apiClient) })) }), p.then(function() { - return console.log("[mediasync] Exit getNewMedia"), Promise.resolve() + return console.debug("[mediasync] Exit getNewMedia"), Promise.resolve() }) }, function(err) { return console.error("[mediasync] getReadySyncItems: Failed: ", err), Promise.resolve() @@ -119,7 +119,7 @@ define(["localassetmanager"], function(localassetmanager) { } function afterMediaDownloaded(apiClient, jobItem, localItem) { - return console.log("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { + return console.debug("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { var libraryItem = jobItem.Item; return downloadParentItems(apiClient, jobItem, libraryItem).then(function() { return getSubtitles(apiClient, jobItem, localItem) @@ -128,21 +128,21 @@ define(["localassetmanager"], function(localassetmanager) { } function createLocalItem(libraryItem, jobItem) { - console.log("[localassetmanager] Begin createLocalItem"); + console.debug("[localassetmanager] Begin createLocalItem"); var item = { Item: libraryItem, ItemId: libraryItem.Id, ServerId: libraryItem.ServerId, Id: libraryItem.Id }; - return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.log("[localassetmanager] End createLocalItem"), item + return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.debug("[localassetmanager] End createLocalItem"), item } function getNewItem(jobItem, apiClient) { - console.log("[mediasync] Begin getNewItem"); + console.debug("[mediasync] Begin getNewItem"); var libraryItem = jobItem.Item; return localassetmanager.getLocalItem(libraryItem.ServerId, libraryItem.Id).then(function(existingItem) { - if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.log("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); + if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.debug("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); libraryItem.CanDelete = !1, libraryItem.CanDownload = !1, libraryItem.SupportsSync = !1, libraryItem.People = [], libraryItem.Chapters = [], libraryItem.Studios = [], libraryItem.SpecialFeatureCount = null, libraryItem.LocalTrailerCount = null, libraryItem.RemoteTrailers = []; var localItem = createLocalItem(libraryItem, jobItem); return localItem.SyncStatus = "queued", downloadMedia(apiClient, jobItem, localItem) @@ -183,12 +183,12 @@ define(["localassetmanager"], function(localassetmanager) { } function downloadMedia(apiClient, jobItem, localItem) { - console.log("[mediasync] downloadMedia: start."); + console.debug("[mediasync] downloadMedia: start."); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", { api_key: apiClient.accessToken() }); return ensureLocalPathParts(localItem, jobItem), localassetmanager.downloadFile(url, localItem).then(function(result) { - console.log("[mediasync] downloadMedia-downloadFile returned path: " + result.path); + console.debug("[mediasync] downloadMedia-downloadFile returned path: " + result.path); var localPath = result.path, libraryItem = localItem.Item; if (localPath && libraryItem.MediaSources) @@ -200,18 +200,18 @@ define(["localassetmanager"], function(localassetmanager) { return afterMediaDownloaded(apiClient, jobItem, localItem).then(function() { return result.isComplete ? (localItem.SyncStatus = "synced", reportTransfer(apiClient, localItem)) : Promise.resolve() }, function(err) { - return console.log("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) }) }, function(err) { - return console.log("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) + return console.debug("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) }) } function getImages(apiClient, jobItem, localItem) { - console.log("[mediasync] Begin getImages"); + console.debug("[mediasync] Begin getImages"); var p = Promise.resolve(), libraryItem = localItem.Item, serverId = libraryItem.ServerId, @@ -249,15 +249,15 @@ define(["localassetmanager"], function(localassetmanager) { })), libraryItem.ParentPrimaryImageItemId && libraryItem.ParentPrimaryImageTag && (p = p.then(function() { return downloadImage(localItem, apiClient, serverId, libraryItem.ParentPrimaryImageItemId, libraryItem.ParentPrimaryImageTag, "Primary") })), p.then(function() { - return console.log("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) + return console.debug("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) }, function(err) { - return console.log("[mediasync] Error getImages: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error getImages: " + err.toString()), Promise.resolve() }) } function downloadImage(localItem, apiClient, serverId, itemId, imageTag, imageType, index) { return index = index || 0, localassetmanager.hasImage(serverId, itemId, imageType, index).then(function(hasImage) { - if (hasImage) return console.log("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); + if (hasImage) return console.debug("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); var maxWidth = 400; "backdrop" === imageType && (maxWidth = null); var imageUrl = apiClient.getScaledImageUrl(itemId, { @@ -266,18 +266,18 @@ define(["localassetmanager"], function(localassetmanager) { maxWidth: maxWidth, api_key: apiClient.accessToken() }); - return console.log("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { + return console.debug("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { return Promise.resolve(result) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() }) }, function(err) { - return console.log("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() }) } function getSubtitles(apiClient, jobItem, localItem) { - if (console.log("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.log("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); + if (console.debug("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.debug("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); var files = jobItem.AdditionalFiles.filter(function(f) { return "Subtitles" === f.Type }), @@ -288,16 +288,16 @@ define(["localassetmanager"], function(localassetmanager) { return getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) }) }), p.then(function() { - return console.log("[mediasync] Exit getSubtitles"), Promise.resolve() + return console.debug("[mediasync] Exit getSubtitles"), Promise.resolve() }) } function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) { - console.log("[mediasync] Begin getItemSubtitle"); + console.debug("[mediasync] Begin getItemSubtitle"); var subtitleStream = mediaSource.MediaStreams.filter(function(m) { return "Subtitle" === m.Type && m.Index === file.Index })[0]; - if (!subtitleStream) return console.log("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); + if (!subtitleStream) return console.debug("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/AdditionalFiles", { Name: file.Name, api_key: apiClient.accessToken() @@ -311,7 +311,7 @@ define(["localassetmanager"], function(localassetmanager) { } function checkLocalFileExistence(apiClient, serverInfo, options) { - return options.checkFileExistence ? (console.log("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return options.checkFileExistence ? (console.debug("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -332,13 +332,13 @@ define(["localassetmanager"], function(localassetmanager) { return function() { var self = this; "string" == typeof webWorkerBaseUrl && -1 !== webWorkerBaseUrl.indexOf("ms-appx://") ? self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { return !0 === options.syncCheckProgressOnly && downloadCount > 2 ? Promise.resolve() : reportOfflineActions(apiClient, serverInfo).then(function() { return getNewMedia(apiClient, downloadCount).then(function() { return syncData(apiClient, serverInfo).then(function() { - return console.log("[mediasync]************************************* Exit sync"), Promise.resolve() + return console.debug("[mediasync]************************************* Exit sync"), Promise.resolve() }) }) }) @@ -348,7 +348,7 @@ define(["localassetmanager"], function(localassetmanager) { console.error(err.toString()) }) } : self.sync = function(apiClient, serverInfo, options) { - return console.log("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return syncData(apiClient, serverInfo).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { diff --git a/src/libraries/apiclient/sync/multiserversync.js b/src/libraries/apiclient/sync/multiserversync.js index 0654b5615d..c0f05fb734 100644 --- a/src/libraries/apiclient/sync/multiserversync.js +++ b/src/libraries/apiclient/sync/multiserversync.js @@ -3,18 +3,18 @@ define(["serversync"], function(ServerSync) { function syncNext(connectionManager, servers, index, options, resolve, reject) { var length = servers.length; - if (index >= length) return console.log("MultiServerSync.sync complete"), void resolve(); + if (index >= length) return console.debug("MultiServerSync.sync complete"), void resolve(); var server = servers[index]; - console.log("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { - console.log("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.debug("Creating ServerSync to server: " + server.Id), (new ServerSync).sync(connectionManager, server, options).then(function() { + console.debug("ServerSync succeeded to server: " + server.Id), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }, function(err) { - console.log("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) + console.error("ServerSync failed to server: " + server.Id + ". " + err), syncNext(connectionManager, servers, index + 1, options, resolve, reject) }) } function MultiServerSync() {} return MultiServerSync.prototype.sync = function(connectionManager, options) { - return console.log("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { + return console.debug("MultiServerSync.sync starting..."), new Promise(function(resolve, reject) { var servers = connectionManager.getSavedServers(); syncNext(connectionManager, servers, 0, options, resolve, reject) }) diff --git a/src/libraries/apiclient/sync/serversync.js b/src/libraries/apiclient/sync/serversync.js index 34a1b11e8e..4d773c06a6 100644 --- a/src/libraries/apiclient/sync/serversync.js +++ b/src/libraries/apiclient/sync/serversync.js @@ -2,11 +2,11 @@ define([], function() { "use strict"; function performSync(connectionManager, server, options) { - console.log("ServerSync.performSync to server: " + server.Id), options = options || {}; + console.debug("ServerSync.performSync to server: " + server.Id), options = options || {}; var cameraUploadServers = options.cameraUploadServers || []; - console.log("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); + console.debug("ServerSync cameraUploadServers: " + JSON.stringify(cameraUploadServers)); var uploadPhotos = -1 !== cameraUploadServers.indexOf(server.Id); - return console.log("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { + return console.debug("ServerSync uploadPhotos: " + uploadPhotos), (uploadPhotos ? uploadContent(connectionManager, server, options) : Promise.resolve()).then(function() { return syncMedia(connectionManager, server, options) }) } @@ -26,7 +26,7 @@ define([], function() { function ServerSync() {} return ServerSync.prototype.sync = function(connectionManager, server, options) { - if (!server.AccessToken && !server.ExchangeToken) return console.log("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); + if (!server.AccessToken && !server.ExchangeToken) return console.debug("Skipping sync to server " + server.Id + " because there is no saved authentication information."), Promise.resolve(); var connectionOptions = { updateDateLastAccessed: !1, enableWebSocket: !1, @@ -34,9 +34,9 @@ define([], function() { enableAutomaticBitrateDetection: !1 }; return connectionManager.connectToServer(server, connectionOptions).then(function(result) { - return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.log("Unable to connect to server id: " + server.Id), Promise.reject()) + return "SignedIn" === result.State ? performSync(connectionManager, server, options) : (console.error("Unable to connect to server id: " + server.Id), Promise.reject()) }, function(err) { - throw console.log("Unable to connect to server id: " + server.Id), err + throw console.error("Unable to connect to server id: " + server.Id), err }) }, ServerSync }); \ No newline at end of file diff --git a/src/scripts/autobackdrops.js b/src/scripts/autobackdrops.js index 73042f83ce..09f89fad6f 100644 --- a/src/scripts/autobackdrops.js +++ b/src/scripts/autobackdrops.js @@ -10,7 +10,7 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett var data = cache[key]; if (data) { - console.log("Found backdrop id list in cache. Key: " + key); + console.debug("Found backdrop id list in cache. Key: " + key); data = JSON.parse(data); return Promise.resolve(data); } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 9d91a691d0..1e5b96f967 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -302,9 +302,9 @@ define(['browser'], function (browser) { try { var isTizenUhd = webapis.productinfo.isUdPanelSupported(); isTizenFhd = !isTizenUhd; - console.log("isTizenFhd = " + isTizenFhd); + console.debug("isTizenFhd = " + isTizenFhd); } catch (error) { - console.log("isUdPanelSupported() error code = " + error.code); + console.error("isUdPanelSupported() error code = " + error.code); } } diff --git a/src/scripts/globalize.js b/src/scripts/globalize.js index aa3a2ef0f9..69bb3aee21 100644 --- a/src/scripts/globalize.js +++ b/src/scripts/globalize.js @@ -38,7 +38,7 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana try { culture = userSettings.language(); } catch (err) { - console.log('no language set in user settings'); + console.error('no language set in user settings'); } culture = culture || getDefaultLanguage(); @@ -48,7 +48,7 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana try { dateTimeCulture = userSettings.dateTimeLocale(); } catch (err) { - console.log('no date format set in user settings'); + console.error('no date format set in user settings'); } if (dateTimeCulture) { diff --git a/src/scripts/livetvcomponents.js b/src/scripts/livetvcomponents.js index 4215de4cbe..61ffc66fb4 100644 --- a/src/scripts/livetvcomponents.js +++ b/src/scripts/livetvcomponents.js @@ -34,7 +34,7 @@ define(["layoutManager", "datetime", "cardBuilder", "apphost"], function (layout day: "numeric" }); } catch (err) { - console.log("Error parsing premiereDate:" + item.StartDate + "; error: " + err); + console.error("error parsing premiereDate:" + item.StartDate + "; error: " + err); } } diff --git a/src/scripts/routes.js b/src/scripts/routes.js index b726aaf872..9c3db58a7f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -16,12 +16,12 @@ define([ function defineRoute(newRoute) { var path = newRoute.path; - console.log("defining route: " + path); + console.debug("defining route: " + path); newRoute.dictionary = "core"; Emby.Page.addRoute(path, newRoute); } - console.log("defining core routes"); + console.debug("defining core routes"); defineRoute({ path: "/addplugin.html", diff --git a/src/scripts/site.js b/src/scripts/site.js index 0cf65158d5..c0f3904316 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -286,10 +286,10 @@ var AppInfo = {}; bindConnectionManagerEvents(connectionManager, events, userSettings); if (!AppInfo.isNativeApp) { - console.log("loading ApiClient singleton"); + console.debug("loading ApiClient singleton"); return require(["apiclient"], function (apiClientFactory) { - console.log("creating ApiClient singleton"); + console.debug("creating ApiClient singleton"); var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), window.devicePixelRatio); @@ -301,7 +301,7 @@ var AppInfo = {}; window.ApiClient = apiClient; localApiClient = apiClient; - console.log("loaded ApiClient singleton"); + console.debug("loaded ApiClient singleton"); }); } @@ -335,7 +335,7 @@ var AppInfo = {}; try { playbackManager.onAppClose(); } catch (err) { - console.log("error in onAppClose: " + err); + console.error("error in onAppClose: " + err); } }); return playbackManager; @@ -393,7 +393,7 @@ var AppInfo = {}; } function onRequireJsError(requireType, requireModules) { - console.log("RequireJS error: " + (requireType || "unknown") + ". Failed modules: " + (requireModules || []).join(",")); + console.error("RequireJS error: " + (requireType || "unknown") + ". Failed modules: " + (requireModules || []).join(",")); } function defineResizeObserver() { @@ -481,7 +481,7 @@ var AppInfo = {}; Promise.all(promises).then(function () { createConnectionManager().then(function () { - console.log("initAfterDependencies promises resolved"); + console.debug("initAfterDependencies promises resolved"); require(["globalize", "browser"], function (globalize, browser) { window.Globalize = globalize; @@ -525,10 +525,10 @@ var AppInfo = {}; document.title = Globalize.translateDocument(document.title, "core"); if (browser.tv && !browser.android) { - console.log("Using system fonts with explicit sizes"); + console.debug("using system fonts with explicit sizes"); require(["systemFontsSizedCss"]); } else { - console.log("Using default fonts"); + console.debug("using default fonts"); require(["systemFontsCss"]); } @@ -540,7 +540,7 @@ var AppInfo = {}; } function loadPlugins(appHost, browser, shell) { - console.log("Loading installed plugins"); + console.debug("loading installed plugins"); var list = [ "components/playback/playaccessvalidation", "components/playback/experimentalwarnings", @@ -582,13 +582,13 @@ var AppInfo = {}; } function onAppReady(browser) { - console.log("Begin onAppReady"); + console.debug("begin onAppReady"); // ensure that appHost is loaded in this point require(['apphost', 'appRouter'], function (appHost, appRouter) { window.Emby = {}; - console.log("onAppReady - loading dependencies"); + console.debug("onAppReady - loading dependencies"); if (browser.iOS) { require(['css!assets/css/ios.css']); } @@ -659,7 +659,7 @@ var AppInfo = {}; try { navigator.serviceWorker.register("serviceworker.js"); } catch (err) { - console.log("Error registering serviceWorker: " + err); + console.error("error registering serviceWorker: " + err); } } } From df81f33360f4a72bab1f47d339305f133bae9f6f Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:13:10 +0000 Subject: [PATCH 151/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 5045d4d0b8..67b7be2d27 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -88,7 +88,7 @@ "AddGuideProviderHelp": "Lisää lähde ohjelmaoppaalle.", "AddItemToCollectionHelp": "Lisää nimikkeitä etsimällä niitä ja käyttämällä hiiren oikeaa nappia tai valikkoa lisätäksesi ne kokoelmaan.", "Aired": "Esityspäivä", - "AllowHWTranscodingHelp": "Jos sallittu, salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen Jellyfin palvelimella.", + "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", "AllowOnTheFlySubtitleExtractionHelp": "Sulautetut tekstitykset voi erottaa videoista ja toimittaa Jellyfin ohjelmalle tekstinä, jotta videoita ei tarvitse uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa videotoiston pysähtymisen purun ajaksi. Poista tämä liittääksesi tekstiyksen videokuvaankon asiakaslaite ei tue tekstiyksiä.", @@ -121,7 +121,7 @@ "BirthLocation": "Syntymäpaikka", "BirthPlaceValue": "Syntymäpaikka: {0}", "Blacklist": "Kieltolista", - "BookLibraryHelp": "Ääni- ja tekstimuotoiset kirjat on tuettuja. Katso {0}Jellyfin Kirjojen nimeämisopas{1}.", + "BookLibraryHelp": "Ääni- ja tekstimuotoiset kirjat on tuettuja. Katso {0}kirjojen nimeämisopas{1}.", "Books": "Kirjat", "Box": "Laatikko", "BoxRear": "Laatikko (takaa)", From 479fe2c889ef4e97c85c8abb4b1b8508f2cdbc85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:14:36 +0000 Subject: [PATCH 152/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 67b7be2d27..d30437fef0 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -91,7 +91,7 @@ "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", - "AllowOnTheFlySubtitleExtractionHelp": "Sulautetut tekstitykset voi erottaa videoista ja toimittaa Jellyfin ohjelmalle tekstinä, jotta videoita ei tarvitse uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa videotoiston pysähtymisen purun ajaksi. Poista tämä liittääksesi tekstiyksen videokuvaankon asiakaslaite ei tue tekstiyksiä.", + "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille ilmitekstinä, jotta videota ei tarvitsisi uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa toiston pysähtymisen purun ajaksi. Poista tämä käytöstä polttaaksesi tekstiykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä.", "AllowRemoteAccess": "Salli etäyhteydet tähän Jellyfin palvelimeen.", "AllowRemoteAccessHelp": "Jos merkki puuttuu, kaikki ulkopuoliset yhteydet estetään.", "AllowSeasonalThemes": "Salli automaattiset vuodenaikateemat", @@ -285,5 +285,6 @@ "ValueSpecialEpisodeName": "Erikois - {0}", "Sync": "Synkronoi", "Songs": "Kappaleet", - "Shows": "Ohjelmat" + "Shows": "Ohjelmat", + "CopyStreamURLSuccess": "URL kopioitu onnistuneesti." } From bef1747c3f55a8dbfc8c306ceb369071e5e34395 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:18:22 +0000 Subject: [PATCH 153/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index d30437fef0..8f9e44c398 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -286,5 +286,5 @@ "Sync": "Synkronoi", "Songs": "Kappaleet", "Shows": "Ohjelmat", - "CopyStreamURLSuccess": "URL kopioitu onnistuneesti." + "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti." } From a491c6b83292621e6880b8730a062db26df07e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:19:41 +0000 Subject: [PATCH 154/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 8f9e44c398..e722926c16 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -236,7 +236,7 @@ "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", - "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen toistoa.", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", @@ -286,5 +286,7 @@ "Sync": "Synkronoi", "Songs": "Kappaleet", "Shows": "Ohjelmat", - "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti." + "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", + "DeathDateValue": "Kuoli: {0}", + "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili." } From fb5adbce2d9db73c376b2adb06c6f706f39577c5 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:22:12 +0000 Subject: [PATCH 155/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index e722926c16..c018cccfee 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -236,7 +236,7 @@ "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", "DirectPlaying": "Suoraan toistaminen", - "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (mkv, avi, wmv, jne.). Tämä video uudelleenpakataan lennossa ennen laitteeseen lähetystä.", "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", "DirectStreaming": "Suora suoratoisto", "Director": "Ohjaaja", From bf2caf59579a67a1922a6a3b0bcd3ae0fc991ebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:22:40 +0000 Subject: [PATCH 156/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index c018cccfee..5a0aa741d6 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -249,7 +249,7 @@ "DisplayInMyMedia": "Näytä kotinäytöllä", "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", - "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös Jellyfin-palvelimen asennusvaiheessa.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asennusvaiheessa.", "DisplayModeHelp": "Valitse näyttölaitteen tyyppi jolla pyörität Jellyfiniä.", "DoNotRecord": "Älä tallenna", "Down": "Alas", From ac9807d93a9ac3f09ddeec47c238c4fd0f2cce60 Mon Sep 17 00:00:00 2001 From: Kaspar Laineste Date: Sun, 16 Feb 2020 11:22:49 +0000 Subject: [PATCH 157/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 5a0aa741d6..548f96ecdf 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -249,7 +249,7 @@ "DisplayInMyMedia": "Näytä kotinäytöllä", "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", - "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asennusvaiheessa.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös palvelimen asetuksissa.", "DisplayModeHelp": "Valitse näyttölaitteen tyyppi jolla pyörität Jellyfiniä.", "DoNotRecord": "Älä tallenna", "Down": "Alas", From 7a9fbb3edf5a6e1998badc0ba0d564ddc65f2a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:24:33 +0000 Subject: [PATCH 158/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 548f96ecdf..88e623d905 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -288,5 +288,6 @@ "Shows": "Ohjelmat", "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {0}", - "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili." + "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili.", + "EnableBackdrops": "Taustat" } From 54fdd34f774e2600e84e5b8ce488335a1db819b0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 17:42:00 +0300 Subject: [PATCH 159/260] Fix padding for plain itemscontainer --- src/controllers/movies/moviegenres.js | 2 +- src/controllers/movies/moviesrecommended.js | 2 ++ src/controllers/shows/tvgenres.js | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 0067f64228..f48dc08b8f 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -152,7 +152,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 31ded5c594..8b71844434 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -178,6 +178,8 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu" if (layoutManager.tv) { elem.classList.add("smoothScrollX"); + elem.classList.add("padded-top-focusscale"); + elem.classList.add("padded-bottom-focusscale"); } elem.classList.add("scrollX"); diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 23397fd73e..950f2e45d1 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -147,7 +147,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader if (enableScrollX()) { var scrollXClass = "scrollX hiddenScrollX"; if (layoutManager.tv) { - scrollXClass += "smoothScrollX"; + scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale"; } html += '
'; } else { From 07268df35a9ad683352b15a6b0b675257ebec295 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 22:06:37 +0300 Subject: [PATCH 160/260] Simplify expression --- src/components/scrollManager.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 57107ed185..ba000ed954 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -158,11 +158,20 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function getScrollableParent(element, vertical) { if (element) { + var nameScroll = "scrollWidth"; + var nameClient = "clientWidth"; + var nameClass = "scrollX"; + + if (vertical) { + nameScroll = "scrollHeight"; + nameClient = "clientHeight"; + nameClass = "scrollY"; + } + var parent = element.parentElement; while (parent) { - if ((!vertical && parent.scrollWidth > parent.clientWidth && parent.classList.contains("scrollX")) || - (vertical && parent.scrollHeight > parent.clientHeight && parent.classList.contains("scrollY"))) { + if (parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } From 6ad85b3c45020a78ac105b2db72d81d8d969d48e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Feb 2020 22:08:08 +0300 Subject: [PATCH 161/260] Disable scrollManager on emby-scroller --- src/components/scrollManager.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index ba000ed954..4ba696d744 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -171,7 +171,9 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var parent = element.parentElement; while (parent) { - if (parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { + // Skip 'emby-scroller' because it scrolls by itself + if (!parent.classList.contains("emby-scroller") && + parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } From c354e16b521c746d3a576ef1a211463f18bd52dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tuomo=20Bj=C3=B6rk?= Date: Sun, 16 Feb 2020 11:24:45 +0000 Subject: [PATCH 162/260] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 88e623d905..66ce8e837f 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -289,5 +289,21 @@ "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {0}", "CustomDlnaProfilesHelp": "Luo mukautettu profiili uutta laitetta varten, tai ohita järjestelmäprofiili.", - "EnableBackdrops": "Taustat" + "EnableBackdrops": "Taustat", + "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfin Palvelimella pääsy sijaintiin.", + "Episodes": "Jaksot", + "EndsAtValue": "Päättyy {0}", + "Ended": "Päättynyt", + "EnableThemeSongsHelp": "Soita tunnuslaulut taustalla, selatessasi kirjastoa.", + "EnableThemeSongs": "Tunnuslaulut", + "EnableStreamLoopingHelp": "Laita tämä päälle, jos suoratoistot sisältävät vain muutaman sekuntin verran dataa jota tarvitsee pyytää jatkuvasti. Tämän päälle laittaminen ilman toiminnon tarvetta voi aiheuttaa ongelmia.", + "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden media-tiedostojen ohessa.", + "EnablePhotos": "Näytä valokuvat", + "EnableNextVideoInfoOverlay": "Näytä seuraavan videon tiedot toiston aikana", + "EnableHardwareEncoding": "Salli rauta-tason muunnoksen kiihdytys", + "EnableExternalVideoPlayers": "Ulkoiset videosoittimet", + "EnableDisplayMirroring": "Näytön peilaus", + "EnableColorCodedBackgrounds": "Väri-koodatut taustat", + "EnableCinemaMode": "Teatteri-tila", + "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa." } From 485549fedf548c1d4eec3149f69b1ac807fb4b57 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sun, 16 Feb 2020 09:02:25 +0000 Subject: [PATCH 163/260] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 64f455b7a8..541323e90a 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -4,7 +4,7 @@ "AddToPlaylist": "Hozzáadás lejátszási listához", "AddedOnValue": "Hozzáadva: {0}", "AdditionalNotificationServices": "Keresd meg a Bővítmények katalógust további értesítési szolgáltatások telepítéséhez.", - "Alerts": "Riasztások", + "Alerts": "Értesítések", "All": "Összes", "AllEpisodes": "Összes epizód", "AllLanguages": "Összes nyelv", @@ -275,7 +275,7 @@ "LabelLogs": "Naplók:", "LabelMessageText": "Üzenet szövege:", "LabelMessageTitle": "Üzenet címe:", - "LabelMetadata": "Metaadat:", + "LabelMetadata": "Metaadatok:", "LabelMetadataDownloadLanguage": "Előnyben részesített letöltendő nyelv:", "LabelMetadataPath": "Metaadat útvonal:", "LabelMetadataReaders": "Metaadat olvasók:", @@ -591,7 +591,7 @@ "AllowMediaConversionHelp": "Add meg vagy tiltsd le a média konvertálás funkcióhoz való hozzáférést.", "AllowRemoteAccess": "Engedélyezze a távoli kapcsolatokat a Jellyfin szerverhez.", "AllowRemoteAccessHelp": "Ha nincs bekapcsolva, minden távoli kapcsolat blokkolva lesz.", - "AlwaysPlaySubtitles": "A feliratokat mindig jelenítse meg", + "AlwaysPlaySubtitles": "Mindig legyen felirat", "AnyLanguage": "Bármelyik nyelv", "Anytime": "Bármikor", "AroundTime": "{0} körül", @@ -706,7 +706,7 @@ "HeaderAccessSchedule": "Hozzáférési Ütemezés", "HeaderAccessScheduleHelp": "Hozz létre hozzáférési ütemezést, hogy korlátozd a hozzáférést bizonyos időben.", "HeaderActiveRecordings": "Aktív Felvételek", - "HeaderActivity": "Tevékenység", + "HeaderActivity": "Tevékenységek", "HeaderAdditionalParts": "További részek", "HeaderAdmin": "Adminisztrátor", "HeaderAlbumArtists": "Album előadók", @@ -1439,5 +1439,6 @@ "LabelDisplaySpecialsWithinSeasons": "Speciális epizódok megjelenítése abban az évadban, amiben adásban voltak", "LabelCorruptedFrames": "Sérült képkockák:", "HeaderKeepSeries": "Sorozat megtartása", - "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra." + "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra.", + "LabelTranscodes": "Átkódolások:" } From 04c5f4bfdd9a7e7590f336ba35363a0b84279f31 Mon Sep 17 00:00:00 2001 From: tokiedokie Date: Sun, 16 Feb 2020 02:20:43 +0000 Subject: [PATCH 164/260] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 88cfc5b689..6fcdf086db 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1118,5 +1118,10 @@ "LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:", "HeaderNavigation": "ナビゲーション", "CopyStreamURLError": "URLのコピー中にエラーが発生しました。", - "ButtonSplit": "分ける" + "ButtonSplit": "分ける", + "LabelEnableDlnaServer": "DLNAサーバーの有効化", + "LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化", + "LabelDroppedFrames": "ドロップフレーム:", + "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", + "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。" } From cb48def4aebbb9841edfb46d72e09ff018672754 Mon Sep 17 00:00:00 2001 From: Jared Allard Date: Sun, 16 Feb 2020 05:26:52 +0000 Subject: [PATCH 165/260] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 6fcdf086db..f10e63bcef 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1123,5 +1123,7 @@ "LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化", "LabelDroppedFrames": "ドロップフレーム:", "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", - "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。" + "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。", + "LabelArtistsHelp": "分けますと使用;", + "Identify": "識別する" } From f1fb59ec265fe0ae6d97bca8cd8bbe61968e1b09 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 17 Feb 2020 20:41:04 +0100 Subject: [PATCH 166/260] Fix change requests and general formatting improvements --- src/components/guide/guide.js | 1 - src/components/htmlaudioplayer/plugin.js | 2 +- src/components/htmlvideoplayer/plugin.js | 12 +- src/components/keyboardnavigation.js | 4 +- src/components/nowplayingbar/nowplayingbar.js | 3 +- src/controllers/wizard/user.js | 2 +- src/libraries/apiclient/apiclientcore.js | 8 +- src/libraries/apiclient/appStorage.js | 2 +- src/libraries/apiclient/localassetmanager.js | 4 +- src/libraries/apiclient/sync/mediasync.js | 108 +++++++++--------- src/scripts/site.js | 2 +- 11 files changed, 74 insertions(+), 74 deletions(-) diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index c3203ed8df..ef6b8bebf6 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -29,7 +29,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var offset = newPct - left; var pctOfWidth = (offset / width) * 100; - //console.debug(pctOfWidth); var guideProgramName = cell.guideProgramName; if (!guideProgramName) { guideProgramName = cell.querySelector('.guideProgramName'); diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index aeccaa9a12..8cae76bbee 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -298,7 +298,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 5ffed8c999..6760e1dd99 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -408,7 +408,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa lrd.media.streamType = cast.receiver.media.StreamType.OTHER; lrd.media.customData = options; - console.debug('loading media url into mediaManager'); + console.debug('loading media url into media manager'); try { mediaManager.load(lrd); @@ -418,7 +418,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return Promise.resolve(); } catch (err) { - console.debug('mediaManager error: ' + err); + console.debug('media manager error: ' + err); return Promise.reject(); } } @@ -461,10 +461,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } console.debug('loading playback url: ' + url); - console.debug('contentType: ' + contentType); + console.debug('content type: ' + contentType); host.onError = function (errorCode) { - console.error("Fatal Error - " + errorCode); + console.error("fatal Error - " + errorCode); }; mediaElement.autoplay = false; @@ -911,7 +911,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function onError() { var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; - console.error('Media element error: ' + errorCode.toString() + ' ' + errorMessage); + console.error('media element error: ' + errorCode.toString() + ' ' + errorMessage); var type; @@ -1328,7 +1328,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function setCurrentTrackElement(streamIndex) { - console.debug('Setting new text track index to: ' + streamIndex); + console.debug('setting new text track index to: ' + streamIndex); var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource); diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js index 6fbec937d2..12246a0d80 100644 --- a/src/components/keyboardnavigation.js +++ b/src/components/keyboardnavigation.js @@ -1,8 +1,6 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) { "use strict"; - console.debug("keyboardnavigation"); - /** * Key name mapping. */ @@ -142,7 +140,7 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager) } if (capture) { - console.debug("Disabling default event handling"); + console.debug("disabling default event handling"); e.preventDefault(); } }); diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 876e42e5e4..368c326470 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -581,8 +581,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } function onPlaybackStart(e, state) { - - //console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; diff --git a/src/controllers/wizard/user.js b/src/controllers/wizard/user.js index c2560ba06a..270953b24e 100644 --- a/src/controllers/wizard/user.js +++ b/src/controllers/wizard/user.js @@ -10,7 +10,7 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em } function onUpdateUserComplete(result) { - console.debug(result); + console.debug("user update complete: " + result); loading.hide(); nextWizardPage(); } diff --git a/src/libraries/apiclient/apiclientcore.js b/src/libraries/apiclient/apiclientcore.js index 0b17c7c3cb..ec1a329b13 100644 --- a/src/libraries/apiclient/apiclientcore.js +++ b/src/libraries/apiclient/apiclientcore.js @@ -68,6 +68,7 @@ define(["events", "appStorage"], function(events, appStorage) { console.debug("ApiClient appVersion: " + appVersion); console.debug("ApiClient deviceName: " + deviceName); console.debug("ApiClient deviceId: " + deviceId); + this._serverInfo = {}; this._serverAddress = serverAddress; this._deviceId = deviceId; @@ -165,9 +166,10 @@ define(["events", "appStorage"], function(events, appStorage) { function setSocketOnClose(apiClient, socket) { socket.onclose = function() { console.debug("web socket closed"); - apiClient._webSocket === socket; - console.debug("nulling out web socket"); - apiClient._webSocket = null; + if (apiClient._webSocket === socket) { + console.debug("nulling out web socket"); + apiClient._webSocket = null; + } setTimeout(function() { events.trigger(apiClient, "websocketclose") }, 0) diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 97229f8558..951f7891a0 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -2,7 +2,7 @@ define([], function() { "use strict"; function onCachePutFail(e) { - console.error(e); + console.error("cannot put to a cache: " + e); } function updateCache(instance) { diff --git a/src/libraries/apiclient/localassetmanager.js b/src/libraries/apiclient/localassetmanager.js index 190fe4cd7d..6fb1d4722d 100644 --- a/src/libraries/apiclient/localassetmanager.js +++ b/src/libraries/apiclient/localassetmanager.js @@ -2,7 +2,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman "use strict"; function getLocalItem(serverId, itemId) { - return console.debug("[localassetmanager] Begin getLocalItem"), itemrepository.get(serverId, itemId) + return console.debug("localassetmanager: begin getLocalItem"), itemrepository.get(serverId, itemId) } function recordUserAction(action) { @@ -25,7 +25,7 @@ define(["filerepository", "itemrepository", "useractionrepository", "transferman } function getServerItems(serverId) { - return console.debug("[localassetmanager] Begin getServerItems"), itemrepository.getAll(serverId) + return console.debug("localassetmanager: begin getServerItems"), itemrepository.getAll(serverId) } function getItemsFromIds(serverId, ids) { diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 9ca101b540..0a60e3c2e8 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -2,9 +2,9 @@ define(["localassetmanager"], function(localassetmanager) { "use strict"; function processDownloadStatus(apiClient, serverInfo, options) { - return console.debug("[mediasync] Begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { + return console.debug("mediasync: begin processDownloadStatus"), localassetmanager.resyncTransfers().then(function() { return localassetmanager.getServerItems(serverInfo.Id).then(function(items) { - console.debug("[mediasync] Begin processDownloadStatus getServerItems completed"); + console.debug("mediasync: begin processDownloadStatus getServerItems completed"); var p = Promise.resolve(), cnt = 0; return items.filter(function(item) { @@ -14,7 +14,9 @@ define(["localassetmanager"], function(localassetmanager) { return reportTransfer(apiClient, item) }), cnt++ }), p.then(function() { - return console.debug("[mediasync] Exit processDownloadStatus. Items reported: " + cnt.toString()), Promise.resolve() + console.debug("mediasync: exit processDownloadStatus"); + console.debug("items reported: " + cnt.toString()); + return Promise.resolve(); }) }) }) @@ -23,39 +25,39 @@ define(["localassetmanager"], function(localassetmanager) { function reportTransfer(apiClient, item) { return localassetmanager.getItemFileSize(item.LocalPath).then(function(size) { return size > 0 ? apiClient.reportSyncJobItemTransferred(item.SyncJobItemId).then(function() { - return item.SyncStatus = "synced", console.debug("[mediasync] reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) + return item.SyncStatus = "synced", console.debug("mediasync: reportSyncJobItemTransferred called for " + item.LocalPath), localassetmanager.addOrUpdateLocalItem(item) }, function(error) { - return console.error("[mediasync] Mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) + return console.error("mediasync: mediasync error on reportSyncJobItemTransferred", error), item.SyncStatus = "error", localassetmanager.addOrUpdateLocalItem(item) }) : localassetmanager.isDownloadFileInQueue(item.LocalPath).then(function(result) { - return result ? Promise.resolve() : (console.debug("[mediasync] reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { - return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return result ? Promise.resolve() : (console.debug("mediasync: reportTransfer: Size is 0 and download no longer in queue. Deleting item."), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("mediasync: reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.debug("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.debug("mediasync: reportTransfer: Failed to delete item.", err2), Promise.resolve() })) }) }, function(error) { - return console.error("[mediasync] reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { - return console.debug("[mediasync] reportTransfer: Item deleted."), Promise.resolve() + return console.error("mediasync: reportTransfer: error on getItemFileSize. Deleting item.", error), localassetmanager.removeLocalItem(item).then(function() { + return console.debug("mediasync: reportTransfer: Item deleted."), Promise.resolve() }, function(err2) { - return console.error("[mediasync] reportTransfer: Failed to delete item.", err2), Promise.resolve() + return console.error("mediasync: reportTransfer: Failed to delete item.", err2), Promise.resolve() }) }) } function reportOfflineActions(apiClient, serverInfo) { - return console.debug("[mediasync] Begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { + return console.debug("mediasync: begin reportOfflineActions"), localassetmanager.getUserActions(serverInfo.Id).then(function(actions) { return actions.length ? apiClient.reportOfflineActions(actions).then(function() { return localassetmanager.deleteUserActions(actions).then(function() { - return console.debug("[mediasync] Exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() + return console.debug("mediasync: exit reportOfflineActions (actions reported and deleted.)"), Promise.resolve() }) }, function(err) { - return console.error("[mediasync] error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) - }) : (console.debug("[mediasync] Exit reportOfflineActions (no actions)"), Promise.resolve()) + return console.error("mediasync: error on apiClient.reportOfflineActions: " + err.toString()), localassetmanager.deleteUserActions(actions) + }) : (console.debug("mediasync: exit reportOfflineActions (no actions)"), Promise.resolve()) }) } function syncData(apiClient, serverInfo) { - return console.debug("[mediasync] Begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return console.debug("mediasync: begin syncData"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -67,16 +69,16 @@ define(["localassetmanager"], function(localassetmanager) { }; return apiClient.syncData(request).then(function(result) { return afterSyncData(apiClient, serverInfo, result).then(function() { - return console.debug("[mediasync] Exit syncData"), Promise.resolve() + return console.debug("mediasync: exit syncData"), Promise.resolve() }, function(err) { - return console.error("[mediasync] Error in syncData: " + err.toString()), Promise.resolve() + return console.error("mediasync: error in syncData: " + err.toString()), Promise.resolve() }) }) }) } function afterSyncData(apiClient, serverInfo, syncDataResult) { - console.debug("[mediasync] Begin afterSyncData"); + console.debug("mediasync: begin afterSyncData"); var p = Promise.resolve(); return syncDataResult.ItemIdsToRemove && syncDataResult.ItemIdsToRemove.length > 0 && syncDataResult.ItemIdsToRemove.forEach(function(itemId) { p = p.then(function() { @@ -85,25 +87,25 @@ define(["localassetmanager"], function(localassetmanager) { }), p = p.then(function() { return removeObsoleteContainerItems(serverInfo.Id) }), p.then(function() { - return console.debug("[mediasync] Exit afterSyncData"), Promise.resolve() + return console.debug("mediasync: exit afterSyncData"), Promise.resolve() }) } function removeObsoleteContainerItems(serverId) { - return console.debug("[mediasync] Begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) + return console.debug("mediasync: begin removeObsoleteContainerItems"), localassetmanager.removeObsoleteContainerItems(serverId) } function removeLocalItem(itemId, serverId) { - return console.debug("[mediasync] Begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { + return console.debug("mediasync: begin removeLocalItem"), localassetmanager.getLocalItem(serverId, itemId).then(function(item) { return item ? localassetmanager.removeLocalItem(item) : Promise.resolve() }, function(err2) { - return console.error("[mediasync] removeLocalItem: Failed: ", err2), Promise.resolve() + return console.error("mediasync: removeLocalItem: Failed: ", err2), Promise.resolve() }) } function getNewMedia(apiClient, downloadCount) { - return console.debug("[mediasync] Begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { - console.debug("[mediasync] getReadySyncItems returned " + jobItems.length + " items"); + return console.debug("mediasync: begin getNewMedia"), apiClient.getReadySyncItems(apiClient.deviceId()).then(function(jobItems) { + console.debug("mediasync: getReadySyncItems returned " + jobItems.length + " items"); var p = Promise.resolve(), currentCount = downloadCount; return jobItems.forEach(function(jobItem) { @@ -111,15 +113,15 @@ define(["localassetmanager"], function(localassetmanager) { return getNewItem(jobItem, apiClient) })) }), p.then(function() { - return console.debug("[mediasync] Exit getNewMedia"), Promise.resolve() + return console.debug("mediasync: exit getNewMedia"), Promise.resolve() }) }, function(err) { - return console.error("[mediasync] getReadySyncItems: Failed: ", err), Promise.resolve() + return console.error("mediasync: getReadySyncItems: Failed: ", err), Promise.resolve() }) } function afterMediaDownloaded(apiClient, jobItem, localItem) { - return console.debug("[mediasync] Begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { + return console.debug("mediasync: begin afterMediaDownloaded"), getImages(apiClient, jobItem, localItem).then(function() { var libraryItem = jobItem.Item; return downloadParentItems(apiClient, jobItem, libraryItem).then(function() { return getSubtitles(apiClient, jobItem, localItem) @@ -128,21 +130,21 @@ define(["localassetmanager"], function(localassetmanager) { } function createLocalItem(libraryItem, jobItem) { - console.debug("[localassetmanager] Begin createLocalItem"); + console.debug("localassetmanager: begin createLocalItem"); var item = { Item: libraryItem, ItemId: libraryItem.Id, ServerId: libraryItem.ServerId, Id: libraryItem.Id }; - return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.debug("[localassetmanager] End createLocalItem"), item + return jobItem && (item.SyncJobItemId = jobItem.SyncJobItemId), console.debug("localassetmanager: end createLocalItem"), item } function getNewItem(jobItem, apiClient) { - console.debug("[mediasync] Begin getNewItem"); + console.debug("mediasync: begin getNewItem"); var libraryItem = jobItem.Item; return localassetmanager.getLocalItem(libraryItem.ServerId, libraryItem.Id).then(function(existingItem) { - if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.debug("[mediasync] getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); + if (existingItem && ("queued" === existingItem.SyncStatus || "transferring" === existingItem.SyncStatus || "synced" === existingItem.SyncStatus) && (console.debug("mediasync: getNewItem: getLocalItem found existing item"), localassetmanager.enableBackgroundCompletion())) return Promise.resolve(); libraryItem.CanDelete = !1, libraryItem.CanDownload = !1, libraryItem.SupportsSync = !1, libraryItem.People = [], libraryItem.Chapters = [], libraryItem.Studios = [], libraryItem.SpecialFeatureCount = null, libraryItem.LocalTrailerCount = null, libraryItem.RemoteTrailers = []; var localItem = createLocalItem(libraryItem, jobItem); return localItem.SyncStatus = "queued", downloadMedia(apiClient, jobItem, localItem) @@ -169,7 +171,7 @@ define(["localassetmanager"], function(localassetmanager) { return localassetmanager.addOrUpdateLocalItem(localItem).then(function() { return Promise.resolve(localItem) }, function(err) { - return console.error("[mediasync] downloadItem failed: " + err.toString()), Promise.resolve(null) + return console.error("mediasync: downloadItem failed: " + err.toString()), Promise.resolve(null) }) }) } @@ -183,12 +185,12 @@ define(["localassetmanager"], function(localassetmanager) { } function downloadMedia(apiClient, jobItem, localItem) { - console.debug("[mediasync] downloadMedia: start."); + console.debug("mediasync: downloadMedia: start."); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/File", { api_key: apiClient.accessToken() }); return ensureLocalPathParts(localItem, jobItem), localassetmanager.downloadFile(url, localItem).then(function(result) { - console.debug("[mediasync] downloadMedia-downloadFile returned path: " + result.path); + console.debug("mediasync: downloadMedia-downloadFile returned path: " + result.path); var localPath = result.path, libraryItem = localItem.Item; if (localPath && libraryItem.MediaSources) @@ -200,18 +202,18 @@ define(["localassetmanager"], function(localassetmanager) { return afterMediaDownloaded(apiClient, jobItem, localItem).then(function() { return result.isComplete ? (localItem.SyncStatus = "synced", reportTransfer(apiClient, localItem)) : Promise.resolve() }, function(err) { - return console.debug("[mediasync] downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: afterMediaDownloaded failed: " + err), Promise.reject(err) }) }, function(err) { - return console.debug("[mediasync] downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: addOrUpdateLocalItem failed: " + err), Promise.reject(err) }) }, function(err) { - return console.debug("[mediasync] downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) + return console.debug("mediasync: downloadMedia: localassetmanager.downloadFile failed: " + err), Promise.reject(err) }) } function getImages(apiClient, jobItem, localItem) { - console.debug("[mediasync] Begin getImages"); + console.debug("mediasync: begin getImages"); var p = Promise.resolve(), libraryItem = localItem.Item, serverId = libraryItem.ServerId, @@ -249,15 +251,15 @@ define(["localassetmanager"], function(localassetmanager) { })), libraryItem.ParentPrimaryImageItemId && libraryItem.ParentPrimaryImageTag && (p = p.then(function() { return downloadImage(localItem, apiClient, serverId, libraryItem.ParentPrimaryImageItemId, libraryItem.ParentPrimaryImageTag, "Primary") })), p.then(function() { - return console.debug("[mediasync] Finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) + return console.debug("mediasync: finished getImages"), localassetmanager.addOrUpdateLocalItem(localItem) }, function(err) { - return console.error("[mediasync] Error getImages: " + err.toString()), Promise.resolve() + return console.error("mediasync: error getImages: " + err.toString()), Promise.resolve() }) } function downloadImage(localItem, apiClient, serverId, itemId, imageTag, imageType, index) { return index = index || 0, localassetmanager.hasImage(serverId, itemId, imageType, index).then(function(hasImage) { - if (hasImage) return console.debug("[mediasync] downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); + if (hasImage) return console.debug("mediasync: downloadImage - skip existing: " + itemId + " " + imageType + "_" + index.toString()), Promise.resolve(); var maxWidth = 400; "backdrop" === imageType && (maxWidth = null); var imageUrl = apiClient.getScaledImageUrl(itemId, { @@ -266,18 +268,18 @@ define(["localassetmanager"], function(localassetmanager) { maxWidth: maxWidth, api_key: apiClient.accessToken() }); - return console.debug("[mediasync] downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { + return console.debug("mediasync: downloadImage " + itemId + " " + imageType + "_" + index.toString()), localassetmanager.downloadImage(localItem, imageUrl, serverId, itemId, imageType, index).then(function(result) { return Promise.resolve(result) }, function(err) { - return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("mediasync: error downloadImage: " + err.toString()), Promise.resolve() }) }, function(err) { - return console.error("[mediasync] Error downloadImage: " + err.toString()), Promise.resolve() + return console.error("mediasync: error downloadImage: " + err.toString()), Promise.resolve() }) } function getSubtitles(apiClient, jobItem, localItem) { - if (console.debug("[mediasync] Begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.debug("[mediasync] Cannot download subtitles because video has no media source info."), Promise.resolve(); + if (console.debug("mediasync: begin getSubtitles"), !jobItem.Item.MediaSources.length) return console.debug("mediasync: cannot download subtitles because video has no media source info."), Promise.resolve(); var files = jobItem.AdditionalFiles.filter(function(f) { return "Subtitles" === f.Type }), @@ -288,16 +290,16 @@ define(["localassetmanager"], function(localassetmanager) { return getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) }) }), p.then(function() { - return console.debug("[mediasync] Exit getSubtitles"), Promise.resolve() + return console.debug("mediasync: exit getSubtitles"), Promise.resolve() }) } function getItemSubtitle(file, apiClient, jobItem, localItem, mediaSource) { - console.debug("[mediasync] Begin getItemSubtitle"); + console.debug("mediasync: begin getItemSubtitle"); var subtitleStream = mediaSource.MediaStreams.filter(function(m) { return "Subtitle" === m.Type && m.Index === file.Index })[0]; - if (!subtitleStream) return console.debug("[mediasync] Cannot download subtitles because matching stream info was not found."), Promise.resolve(); + if (!subtitleStream) return console.debug("mediasync: cannot download subtitles because matching stream info was not found."), Promise.resolve(); var url = apiClient.getUrl("Sync/JobItems/" + jobItem.SyncJobItemId + "/AdditionalFiles", { Name: file.Name, api_key: apiClient.accessToken() @@ -311,7 +313,7 @@ define(["localassetmanager"], function(localassetmanager) { } function checkLocalFileExistence(apiClient, serverInfo, options) { - return options.checkFileExistence ? (console.debug("[mediasync] Begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { + return options.checkFileExistence ? (console.debug("mediasync: begin checkLocalFileExistence"), localassetmanager.getServerItems(serverInfo.Id).then(function(items) { var completedItems = items.filter(function(item) { return item && ("synced" === item.SyncStatus || "error" === item.SyncStatus) }), @@ -332,13 +334,13 @@ define(["localassetmanager"], function(localassetmanager) { return function() { var self = this; "string" == typeof webWorkerBaseUrl && -1 !== webWorkerBaseUrl.indexOf("ms-appx://") ? self.sync = function(apiClient, serverInfo, options) { - return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("mediasync: start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { return !0 === options.syncCheckProgressOnly && downloadCount > 2 ? Promise.resolve() : reportOfflineActions(apiClient, serverInfo).then(function() { return getNewMedia(apiClient, downloadCount).then(function() { return syncData(apiClient, serverInfo).then(function() { - return console.debug("[mediasync]************************************* Exit sync"), Promise.resolve() + return console.debug("mediasync: Exit sync"), Promise.resolve() }) }) }) @@ -348,7 +350,7 @@ define(["localassetmanager"], function(localassetmanager) { console.error(err.toString()) }) } : self.sync = function(apiClient, serverInfo, options) { - return console.debug("[mediasync]************************************* Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { + return console.debug("mediasync: Start sync"), checkLocalFileExistence(apiClient, serverInfo, options).then(function() { return syncData(apiClient, serverInfo).then(function() { return processDownloadStatus(apiClient, serverInfo, options).then(function() { return localassetmanager.getDownloadItemCount().then(function(downloadCount) { diff --git a/src/scripts/site.js b/src/scripts/site.js index c0f3904316..a33ccd5fca 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -588,7 +588,7 @@ var AppInfo = {}; require(['apphost', 'appRouter'], function (appHost, appRouter) { window.Emby = {}; - console.debug("onAppReady - loading dependencies"); + console.debug("onAppReady: loading dependencies"); if (browser.iOS) { require(['css!assets/css/ios.css']); } From bd596777aaf5ca14322b3ef59704d2d7e13f6463 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> Date: Tue, 18 Feb 2020 08:13:49 +0300 Subject: [PATCH 167/260] Fix slider update by touch on iPhone/iPad (#807) --- src/elements/emby-slider/emby-slider.js | 36 ++++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 13472b4d5d..bcadc48b70 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -254,24 +254,40 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli cancelable: false })); - // Reset dragging (from 'input' event) so that real dragging can be detected - var range = this; - setTimeout(function () { - range.dragging = false; - }, 0); + // Prevent 'pointermove' and 'click' after 'touch*' + // FIXME: Still have some 'pointermove' and 'click' that bypass 'touchstart' + e.preventDefault(); + }, { + capture: true + }); + + dom.addEventListener(this, 'touchmove', function (e) { + if (!this.touched || e.targetTouches.length !== 1) { + return; + } + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); }, { passive: true }); dom.addEventListener(this, 'touchend', function (e) { - if (!this.dragging) { - this.dispatchEvent(new Event('change', { + var range = this; + + setTimeout(function () { + range.touched = false; + + range.dispatchEvent(new Event('change', { bubbles: true, cancelable: false })); - } - - this.touched = false; + }, 0); }, { passive: true }); From 5aae08cab9fff7d6fbbd91c10862068209fbadb1 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 18 Feb 2020 14:23:42 +0900 Subject: [PATCH 168/260] change string --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 755f890737..c97b2e67a4 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -652,7 +652,7 @@ "LabelH264Crf": "H264 encoding CRF:", "LabelH264EncodingPreset": "H264 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", - "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration - please see the documentation at https://docs.jellyfin.org/general/administration/hardware-acceleration.html", + "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration.", "LabelHomeNetworkQuality": "Home network quality:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", From 1eef18c0f162a6a5dbda456e3e7c1f679d2306f0 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 18 Feb 2020 14:28:36 +0900 Subject: [PATCH 169/260] add link back to acceleration description --- src/encodingsettings.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 3d67544c0b..682451bed9 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -20,7 +20,9 @@ -
${LabelHardwareAccelerationTypeHelp}
+
From 62c580f249b91fd5ebca2b12f9cb6570b66e9053 Mon Sep 17 00:00:00 2001 From: NeroBurner Date: Mon, 17 Feb 2020 10:55:40 +0000 Subject: [PATCH 170/260] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 2e338cce62..ac5b84ae76 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1485,5 +1485,6 @@ "EnableFastImageFadeIn": "Schnelle Bildeinblendung", "LabelPlayerDimensions": "Playerabmessungen:", "LabelDroppedFrames": "Verlorene Frames:", - "LabelCorruptedFrames": "Fehlerhafte Frames:" + "LabelCorruptedFrames": "Fehlerhafte Frames:", + "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)" } From a77b281a9553a0fa2dfc0bf39b376d39edd9054c Mon Sep 17 00:00:00 2001 From: TheGoose Date: Mon, 17 Feb 2020 14:54:57 +0000 Subject: [PATCH 171/260] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 6e6a19bfe6..3b3926a258 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1463,5 +1463,13 @@ "OptionRandom": "Random", "SelectAdminUsername": "Please select a username for the admin account.", "ButtonSplit": "Split", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "MessageConfirmAppExit": "Do you want to exit?", + "LabelVideoResolution": "Video resolution:", + "LabelStreamType": "Stream type:", + "LabelPlayerDimensions": "Player dimensions:", + "LabelDroppedFrames": "Dropped frames:", + "LabelCorruptedFrames": "Corrupted frames:", + "CopyStreamURLError": "There was an error copying the URL." } From e125ad70572f8496c0fd8db8a419f2e048c1336b Mon Sep 17 00:00:00 2001 From: zibius1 Date: Mon, 17 Feb 2020 16:25:28 +0000 Subject: [PATCH 172/260] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a489d053f6..97e2692387 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -916,7 +916,7 @@ "MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.", "MinutesAfter": "minutes après", "MinutesBefore": "minutes avant", - "Mobile": "Mobile", + "Mobile": "Pour appareil Mobile", "Monday": "Lundi", "MoreFromValue": "Plus de {0}", "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.", @@ -1455,5 +1455,15 @@ "OptionRandom": "Aléatoire", "ButtonSplit": "Séparer", "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)", + "MessageConfirmAppExit": "Sortir?", + "LabelVideoResolution": "Résolution vidéo", + "LabelStreamType": "Type de flux", + "EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées", + "EnableFastImageFadeIn": "Transition d'image rapide", + "LabelPlayerDimensions": "Dimension du lecteur", + "LabelDroppedFrames": "Cadre informatique oublié", + "LabelCorruptedFrames": "Cadre informatique corrompu", + "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL." } From 5256f98c948d037964d6e1ab6dc2a5a74facbf8a Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Mon, 17 Feb 2020 16:33:43 +0000 Subject: [PATCH 173/260] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 0635b5ee25..a952175d80 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -434,7 +434,7 @@ "LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.", "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", - "LabelCustomRating": "Egen anmeldelse:", + "LabelCustomRating": "Egen aldersgrense:", "LabelDateAdded": "Dato lagt til:", "LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:", "LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.", @@ -1463,5 +1463,6 @@ "LabelPlayerDimensions": "Dimensjoner på avspiller:", "LabelCorruptedFrames": "Korrupte bilder:", "LabelStreamType": "Type strøm:", - "LabelDroppedFrames": "Fortapte bilder:" + "LabelDroppedFrames": "Fortapte bilder:", + "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)" } From 5a1f3c1614ac3548dfb48cd64fb3a045b9d17194 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Mon, 17 Feb 2020 09:05:59 +0000 Subject: [PATCH 174/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 1967ed310c..0390eb9073 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1464,5 +1464,6 @@ "LabelPlayerDimensions": "Rozmery prehrávača:", "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškodené snímky:", - "CopyStreamURLError": "Pri kopírovaní URL nastala chyba." + "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", + "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)" } From b8c90dcc7fe091c0c905b1e5bfcaf7c0afaae3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20F=C3=A4th?= Date: Tue, 18 Feb 2020 16:46:17 +0100 Subject: [PATCH 175/260] Fix dashboard padding --- src/dashboard.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dashboard.html b/src/dashboard.html index 4888c1110f..7180b94872 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -2,7 +2,7 @@
- -
+

${HeaderActiveDevices}

chevron_right From 2cd1edda3ba8fd561221348fda53ecf8797a45cc Mon Sep 17 00:00:00 2001 From: 4d1m Date: Tue, 18 Feb 2020 09:58:33 +0000 Subject: [PATCH 176/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 96f10feef5..b8e87e0d36 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1462,5 +1462,6 @@ "LabelStreamType": "Tipul streamului:", "LabelPlayerDimensions": "Dimensiunile soft redare:", "LabelDroppedFrames": "Cadre abandonate:", - "LabelCorruptedFrames": "Cadre corupte:" + "LabelCorruptedFrames": "Cadre corupte:", + "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)" } From 7e58b448cd252edb6d1c0a1b5dc031128d7d3c55 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 19 Feb 2020 02:10:40 +0300 Subject: [PATCH 177/260] apply suggestion make position slider navigable by keyboard --- src/components/remotecontrol/remotecontrol.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e7e8f42b..0316e19a0b 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -1,4 +1,4 @@ -define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize) { +define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageLoader", "playbackManager", "nowPlayingHelper", "events", "connectionManager", "apphost", "globalize", "layoutManager", "userSettings", "cardStyle", "emby-itemscontainer", "css!./remotecontrol.css", "emby-ratingbutton"], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings) { "use strict"; function showAudioMenu(context, player, button, item) { @@ -228,6 +228,11 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL buttonVisible(context.querySelector(".btnFastForward"), null != item); var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + if (positionSlider && item && item.RunTimeTicks) { + positionSlider.setKeyboardSteps(userSettings.skipBackLength() * 1000000 / item.RunTimeTicks, + userSettings.skipForwardLength() * 1000000 / item.RunTimeTicks); + } + if (positionSlider && !positionSlider.dragging) { positionSlider.disabled = !playState.CanSeek; var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; @@ -687,6 +692,12 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL context.querySelector(".sendMessageForm").addEventListener("submit", onMessageSubmit); context.querySelector(".typeTextForm").addEventListener("submit", onSendStringSubmit); events.on(playbackManager, "playerchange", onPlayerChange); + + if (layoutManager.tv) { + var positionSlider = context.querySelector(".nowPlayingPositionSlider"); + positionSlider.classList.add("focusable"); + positionSlider.enableKeyboardDragging(); + } } function onDialogClosed(e) { From 2d509e9fb652b72c8206c8a37736aa1d6bc840e6 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Wed, 19 Feb 2020 02:11:29 +0300 Subject: [PATCH 178/260] apply suggestion make focus --- src/nowplaying.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nowplaying.html b/src/nowplaying.html index 78813255c8..94180ed397 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -12,7 +12,7 @@
-
+
From 4be2aed45c47cb8be66951ce25076c9517973c4a Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Wed, 19 Feb 2020 02:54:46 +0000 Subject: [PATCH 179/260] Added translation using Weblate (Spanish (Dominican Republic)) --- src/strings/es_DO.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/es_DO.json diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/es_DO.json @@ -0,0 +1 @@ +{} From 4ea3b98c2794ad97a4d910880faae3209f0aee04 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 19 Feb 2020 11:10:12 +0300 Subject: [PATCH 180/260] Extract setVolume/setVolumeDelayed --- src/controllers/playback/videoosd.js | 49 +++++++++++----------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 6c7dcce788..1c73351db9 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1405,39 +1405,28 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med }, options); } + function setVolume() { + clearTimeout(volumeSliderTimer); + volumeSliderTimer = null; + + playbackManager.setVolume(this.value, currentPlayer); + } + + function setVolumeDelayed() { + if (!volumeSliderTimer) { + var that = this; + volumeSliderTimer = setTimeout(function () { + setVolume.call(that); + }, 700); + } + } + view.querySelector(".buttonMute").addEventListener("click", function () { playbackManager.toggleMute(currentPlayer); }); - nowPlayingVolumeSlider.addEventListener("change", function () { - if (volumeSliderTimer) { - // interupt and remove existing timer - clearTimeout(volumeSliderTimer); - volumeSliderTimer = null; - } - playbackManager.setVolume(this.value, currentPlayer); - }); - nowPlayingVolumeSlider.addEventListener("mousemove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); - nowPlayingVolumeSlider.addEventListener("touchmove", function () { - if (!volumeSliderTimer) { - var that = this; - // register new timer - volumeSliderTimer = setTimeout(function() { - playbackManager.setVolume(that.value, currentPlayer); - // delete timer after completion - volumeSliderTimer = null; - }, 700); - } - }); + nowPlayingVolumeSlider.addEventListener("change", setVolume); + nowPlayingVolumeSlider.addEventListener("mousemove", setVolumeDelayed); + nowPlayingVolumeSlider.addEventListener("touchmove", setVolumeDelayed); nowPlayingPositionSlider.addEventListener("change", function () { var player = currentPlayer; From 805394d9a3151b635cedb831efe9ce35d7f2f986 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 15:42:48 +0100 Subject: [PATCH 181/260] Add a message to home when no libraries have been created (#798) * Add a prompt to home when no libraries exist Resolves: #642 * Replace let with var in homesection.js * Use centerMessage class in "no library" prompt * Fix invalid closing tag * Change \"no library\" prompt description for admins --- src/components/homesections/homesections.js | 54 +++++++++++++++------ src/strings/en-us.json | 2 + 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index af574200f3..c6d0652ecc 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -40,26 +40,48 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la return getUserViews(apiClient, user.Id).then(function (userViews) { var html = ''; - var sectionCount = 7; - for (var i = 0; i < sectionCount; i++) { - html += '
'; - } + if (userViews.length) { + var sectionCount = 7; + for (var i = 0; i < sectionCount; i++) { + html += '
'; + } - elem.innerHTML = html; - elem.classList.add('homeSectionsContainer'); + elem.innerHTML = html; + elem.classList.add('homeSectionsContainer'); - var promises = []; - var sections = getAllSectionsToShow(userSettings, sectionCount); - for (var i = 0; i < sections.length; i++) { - promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); - } + var promises = []; + var sections = getAllSectionsToShow(userSettings, sectionCount); + for (var i = 0; i < sections.length; i++) { + promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); + } - return Promise.all(promises).then(function () { - return resume(elem, { - refresh: true, - returnPromise: false + return Promise.all(promises).then(function () { + return resume(elem, { + refresh: true, + returnPromise: false + }); }); - }); + } else { + var noLibDescription; + if (user['Policy'] && user['Policy']['IsAdministrator']) { + noLibDescription = Globalize.translate("NoCreatedLibraries", '
', '') + } else { + noLibDescription = Globalize.translate("AskAdminToCreateLibrary"); + } + + html += '
'; + html += '

' + Globalize.translate("MessageNothingHere") + '

'; + html += '

' + noLibDescription + '

' + html += '
'; + elem.innerHTML = html; + + var createNowLink = elem.querySelector("#button-createLibrary") + if (createNowLink) { + createNowLink.addEventListener("click", () => { + Dashboard.navigate("library.html"); + }); + } + } }); } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 84f78079a5..d7e404eba6 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -36,6 +36,7 @@ "Artists": "Artists", "AsManyAsPossible": "As many as possible", "Ascending": "Ascending", + "AskAdminToCreateLibrary": "Ask an administrator to create a library.", "AspectRatio": "Aspect Ratio", "AttributeNew": "New", "Audio": "Audio", @@ -1032,6 +1033,7 @@ "Next": "Next", "NextUp": "Next Up", "No": "No", + "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoNextUpItemsMessage": "None found. Start watching your shows!", "NoPluginConfigurationMessage": "This plugin has no settings to configure.", From 80c2fe2318077b6663e4631a9ef368f36f4f5b95 Mon Sep 17 00:00:00 2001 From: Philmo67 Date: Wed, 19 Feb 2020 09:34:35 +0000 Subject: [PATCH 182/260] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 97e2692387..3a1b280d24 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1456,7 +1456,7 @@ "ButtonSplit": "Séparer", "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", "HeaderNavigation": "Navigation", - "OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)", + "OptionForceRemoteSourceTranscoding": "Transcodage forcé pour sources de media à distance (ex: TV en direct)", "MessageConfirmAppExit": "Sortir?", "LabelVideoResolution": "Résolution vidéo", "LabelStreamType": "Type de flux", From af80b62376a898e2fda775b66389ab1c6c607a7a Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Wed, 19 Feb 2020 12:40:52 +0000 Subject: [PATCH 183/260] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 3a1b280d24..0946d7d6e1 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -605,7 +605,7 @@ "LabelH264Crf": "CRF d'encodage H264 :", "LabelEncoderPreset": "Profil d'encodage H264 :", "LabelHardwareAccelerationType": "Accélération matérielle :", - "LabelHardwareAccelerationTypeHelp": "Fonctionnalité expérimentale disponible sur les systèmes supportés.", + "LabelHardwareAccelerationTypeHelp": "L'accélération matérielle nécessite une configuration supplémentaire.", "LabelHomeNetworkQuality": "Qualité du réseau local :", "LabelHomeScreenSectionValue": "Section {0} de l'accueil :", "LabelHttpsPort": "Numéro de port HTTPS local :", From fb29a45087af339726ca3e2f6401e8450f1501a1 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Wed, 19 Feb 2020 08:04:48 +0000 Subject: [PATCH 184/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 0390eb9073..a6fce31503 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -380,7 +380,7 @@ "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií", "LabelGroupMoviesIntoCollectionsHelp": "Pri zobrazení zoznamu filmov budú filmy patriace do kolekcie zobrazené ako jedna zoskupená položka.", "LabelHardwareAccelerationType": "Hardvérová akcelerácia:", - "LabelHardwareAccelerationTypeHelp": "Toto je experimentálna funkcia a je dostupná len na podporovaných systémoch.", + "LabelHardwareAccelerationTypeHelp": "Hardvérová akcelerácia vyžaduje dodatočnú konfiguráciu.", "LabelHomeScreenSectionValue": "Sekcia domácej obrazovky {0}:", "LabelHttpsPort": "Lokálny HTTPS port:", "LabelIconMaxHeight": "Maximálna výška ikony:", @@ -609,7 +609,7 @@ "OptionBlockBooks": "Knihy", "OptionBlockMovies": "Filmy", "OptionBlockMusic": "Hudba", - "OptionBlockTrailers": "Ukážky", + "OptionBlockTrailers": "Trailery", "OptionCommunityRating": "Hodnotenie komunity", "OptionContinuing": "Pokračuje", "OptionCriticRating": "Hodnotenie kritikov", @@ -812,7 +812,7 @@ "TabShows": "Seriály", "TabSongs": "Skladby", "TabSuggestions": "Návrhy", - "TabTrailers": "Ukážky", + "TabTrailers": "Trailery", "TabTranscoding": "Transkódovanie", "TabUpcoming": "Nadchádzajúce", "TabUsers": "Užívatelia", @@ -821,7 +821,7 @@ "Thursday": "Štvrtok", "TitleHardwareAcceleration": "Hardvérová akcelerácia", "TrackCount": "{0} stôp", - "Trailers": "Ukážky", + "Trailers": "Trailery", "Tuesday": "Utorok", "UninstallPluginConfirmation": "Ste si istý, že chcete odinštalovať {0}?", "UninstallPluginHeader": "Odinštalovať rozšírenie", @@ -1258,7 +1258,7 @@ "OptionIgnoreTranscodeByteRangeRequests": "Ignorovať požiadavky na transkódovanie bajtového rozsahu", "OptionHlsSegmentedSubtitles": "HLS segmentované titulky", "OptionExternallyDownloaded": "Externé sťahovanie", - "OptionEnableExternalContentInSuggestionsHelp": "Povoliť zahrnutie internetových ukážok a živých TV programov do navrhovaného obsahu.", + "OptionEnableExternalContentInSuggestionsHelp": "Povoliť zahrnutie internetových trailerov a živých TV programov do navrhovaného obsahu.", "OptionDownloadImagesInAdvanceHelp": "Vo východzom stave sa väčšina obrázkov sťahuje až po vyžiadaní Jellyfin aplikáciou. Povolením tejto možnosti sa budú všetky obrázky sťahovať popredu, keď sa budú importovať nové médiá. Toto môže spôsobiť výrazne dlhšie skenovanie knižnice.", "OptionDownloadBoxImage": "Krabica", "OptionDownloadBannerImage": "Banner", From 5159d851caf6f2c5fae082a382b4e95aa45f7e6f Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 12:28:53 +0000 Subject: [PATCH 185/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index cdc96cf6ef..4274d4efd7 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -583,7 +583,7 @@ "LabelH264Crf": "H264 CRF 编码质量等级:", "LabelEncoderPreset": "H264 和 H265 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", - "LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。", + "LabelHardwareAccelerationTypeHelp": "硬件加速需要额外配置。", "LabelHomeNetworkQuality": "家庭网络质量:", "LabelHomeScreenSectionValue": "主屏幕模块{0}:", "LabelHttpsPort": "本地 HTTPS 端口号:", @@ -802,7 +802,7 @@ "LabelZipCode": "邮编:", "LabelffmpegPath": "FFmpeg 路径:", "LabelffmpegPathHelp": "FFmpeg 应用程序的文件,或者包含了 FFmpeg 的文件夹的路径。", - "LanNetworksHelp": "在强制带宽限制时, 将在本地网络上考虑的网络的 ip 地址或 ip/网络掩码条目的逗号分隔列表。如果设置, 所有其他 IP 地址将被视为在外部网络上, 并且将受到外部带宽限制。如果保留为空, 则只将服务器的子网视为本地网络。", + "LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。", "Large": "大", "LatestFromLibrary": "最新的{0}", "LearnHowYouCanContribute": "学习如何构建。", @@ -1049,7 +1049,7 @@ "OptionRuntime": "播放时长", "OptionSaturday": "星期六", "OptionSaveMetadataAsHidden": "保存媒体资料和图像为隐藏文件", - "OptionSaveMetadataAsHiddenHelp": "更改此项将适用于保存向前的新元数据。在下次 Jellyfin 服务器保存时, 现有元数据文件将被更新。", + "OptionSaveMetadataAsHiddenHelp": "更改此项将应用于以后保存的元数据。现有元数据文件将在下一次 Jellyfin 服务器保存它们时被更新。", "OptionSpecialEpisode": "特集", "OptionSubstring": "子串", "OptionSunday": "星期天", @@ -1422,7 +1422,7 @@ "DashboardArchitecture": "架构:{0}", "GroupVersions": "按版本分组", "LaunchWebAppOnStartup": "当启动服务器时,打开Web界面", - "LaunchWebAppOnStartupHelp": "这个插件已经被成功安装。 服务器需要重启以使该插件生效。", + "LaunchWebAppOnStartupHelp": "服务器启动时在默认浏览器中打开网页端。使用重启服务器功能时此项不生效。", "MusicAlbum": "音乐专辑", "MusicArtist": "音乐艺术家", "MusicVideo": "音乐视频", @@ -1468,5 +1468,6 @@ "CopyStreamURLError": "复制URL地址时发生错误。", "MessageConfirmAppExit": "你要退出吗?", "EnableFastImageFadeIn": "快速图片淡入", - "EnableFastImageFadeInHelp": "为加载图片启用更快的图片淡入" + "EnableFastImageFadeInHelp": "为已加载的图片启用更快的图片淡入动画", + "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)" } From ac46dbe3ace893d356670814357619c27d1a2971 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 13:00:40 +0000 Subject: [PATCH 186/260] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index b83aaf0330..2d9634d333 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -347,5 +347,27 @@ "AllLanguages": "全部語言", "All": "全部", "AddedOnValue": "已添加 {0}", - "AddToPlaylist": "添加至播放清單" + "AddToPlaylist": "添加至播放清單", + "ValueSpecialEpisodeName": "特典 - {0}", + "Sync": "同步", + "Songs": "歌曲", + "Shows": "節目", + "Playlists": "播放清單", + "Photos": "相片", + "Movies": "電影", + "HeaderLiveTV": "電視直播", + "HeaderFavoriteSongs": "最愛的歌曲", + "HeaderFavoriteShows": "最愛的節目", + "HeaderFavoriteEpisodes": "最愛的劇集", + "HeaderFavoriteArtists": "最愛藝術家", + "HeaderFavoriteAlbums": "最愛專輯", + "HeaderContinueWatching": "繼續觀看", + "HeaderAlbumArtists": "專輯藝術家", + "Genres": "風格", + "Folders": "檔案夾", + "Favorites": "我的最愛", + "Collections": "合輯", + "Channels": "頻道", + "Books": "圖書", + "Albums": "專輯" } From 17d931035e2b4ae611ef32bd8f8488eedab7a743 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Wed, 19 Feb 2020 12:31:01 +0000 Subject: [PATCH 187/260] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 6d18c646b9..756a759068 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -499,7 +499,7 @@ "EnterFFmpegLocation": "輸入 FFmpeg 路徑", "Episodes": "劇集", "Error": "錯誤", - "ErrorAddingListingsToSchedulesDirect": "", + "ErrorAddingListingsToSchedulesDirect": "在將電視節目時間表添加到您的Schedules Direct賬號時出現錯誤。每個Schedules Direct賬號只允許有限的時間表。您在繼續前可能需要登入Schedules Direct網站并刪除賬號中的其它列表。", "ErrorAddingGuestAccount1": "新增Jellyfin Connect時發生錯誤。你的賓客有建立Jellyfin帳號嗎?他們可以在 {0} 創建帳號。", "ErrorAddingGuestAccount2": "若你還是遇到問題,請發送email至 {0} 並附上你和他們的email帳號。", "ErrorAddingJellyfinConnectAccount1": "新增Jellyfin Connect時發生錯誤。您有建立Jellyfin帳號嗎?您可以在 {0} 創建帳號。", @@ -1299,7 +1299,7 @@ "Writer": "編劇", "XmlTvMovieCategoriesHelp": "有這些類別的節目會被當作電影。用「|」分隔多個。", "ValueSeriesCount": "{0} 劇集", - "LabelHardwareAccelerationTypeHelp": "這個功能只能在支援的系統上使用。", + "LabelHardwareAccelerationTypeHelp": "硬件加速需要額外的配置。", "LabelHomeNetworkQuality": "區域網路畫質:", "LabelHomeScreenSectionValue": "主畫面模塊 {0}:", "LabelMetadataDownloadersHelp": "啟用媒體屬性下載器的優先次序,愈下次序只會用來填補缺少的信息。", @@ -1484,7 +1484,7 @@ "LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的家庭網路中使用你的簡易 PIN 碼登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN 碼留空,那麼在你的區域網路中便不需輸入密碼。", "LabelReleaseDate": "釋出日期:", "LabelRemoteClientBitrateLimit": "網際網路串流傳輸位元率限制(Mbps):", - "LanNetworksHelp": "", + "LanNetworksHelp": "在强制頻寬限制時,認作本地網路上的 IP 地址或 IP/網路掩碼條目的逗號分隔列表。如果設置此項,所有其它 IP 地址將被視作在外部網路上,并且將受到外部頻寬限制。如果保留爲空,則只將服務器的子網視作本地網路。", "OptionIgnoreTranscodeByteRangeRequests": "忽略轉檔位元組範圍請求", "OptionIgnoreTranscodeByteRangeRequestsHelp": "如果啟用,這些請求會被兌現,但會忽略的位元組範圍標頭。", "OptionLoginAttemptsBeforeLockoutHelp": "若值為 0,則表示將允許普通使用者嘗試三次、管理員嘗試五次的預設值,設定為 -1 來停用此功能。", @@ -1628,5 +1628,18 @@ "XmlDocumentAttributeListHelp": "這些屬性會在每一個XML回應的根元素上應用。", "SkipEpisodesAlreadyInMyLibraryHelp": "劇集將使用季和劇集編號進行比較。", "SelectAdminUsername": "請為管理員賬戶選擇一個用戶名。", - "CopyStreamURLError": "複製網址的時候發生錯誤." + "CopyStreamURLError": "複製網址的時候發生錯誤.", + "OptionSaveMetadataAsHiddenHelp": "更改此項將應用於以後保存的元數據。現有元數據文件將在下一次 Jellyfin 伺服器保存它們時被更新。", + "OptionAllowRemoteSharedDevicesHelp": "DLNA 設備在用戶對它們進行控制前都被視作共享的。", + "OptionForceRemoteSourceTranscoding": "强制遠端轉碼(像電視直播一樣)", + "MessageConfirmAppExit": "您要退出嗎?", + "LaunchWebAppOnStartupHelp": "伺服器啓動時在默認游覽器中打開網頁端。使用重啓伺服器功能時此項不生效。", + "LabelVideoResolution": "視頻解析度:", + "LabelStreamType": "串流類型:", + "EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫", + "EnableFastImageFadeIn": "快速圖片淡入", + "LabelPlayerDimensions": "播放器尺寸:", + "LabelDroppedFrames": "丟棄的幀:", + "LabelCorruptedFrames": "損壞的幀:", + "ButtonSplit": "拆分" } From c3f518a4c4ec639c3755ec476524f7a12ad9039f Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Wed, 19 Feb 2020 02:57:19 +0000 Subject: [PATCH 188/260] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 0967ef424b..70f9f52d46 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -1 +1,6 @@ -{} +{ + "Add": "Añadir", + "Actor": "Actor", + "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Inténtelo de nuevo más tarde.", + "Absolute": "Absoluto" +} From 41ea428237a36b4b351aa8387f932d363fcfe6dd Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:07:06 +0100 Subject: [PATCH 189/260] Rename and move declaration of playerPauseClickTimeout --- src/controllers/playback/videoosd.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index eccf065487..754a214149 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,15 +1223,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); + + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); } var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); @@ -1372,7 +1373,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med destroySubtitleSync(); }); var lastPointerDown = 0; - let playerPauseClickTimeout; dom.addEventListener(view, window.PointerEvent ? "pointerdown" : "click", function (e) { if (dom.parentWithClass(e.target, ["videoOsdBottom", "upNextContainer"])) { return void showOsd(); @@ -1392,14 +1392,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med case "mouse": if (!e.button) { - if (playerPauseClickTimeout) { - clearTimeout(playerPauseClickTimeout); - playerPauseClickTimeout = 0; + if (playPauseClickTimeout) { + clearTimeout(playPauseClickTimeout); + playPauseClickTimeout = 0; } else { - playerPauseClickTimeout = setTimeout(() => { + playPauseClickTimeout = setTimeout(() => { playbackManager.playPause(currentPlayer); showOsd(); - playerPauseClickTimeout = 0; + playPauseClickTimeout = 0; }, 300); } } From f52075eb261d542b3c81022d6eecfb98b7b93757 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:09:00 +0100 Subject: [PATCH 190/260] Remove unnecessary check when clearing playPauseClickTimeout --- src/controllers/playback/videoosd.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 754a214149..7624724fba 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1231,9 +1231,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med shell.disableFullscreen(); }); - if (playPauseClickTimeout) { - clearTimeout(playPauseClickTimeout); - } + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); releaseCurrentPlayer(); From 6b2faaed8df0c1d127f1895354bf91776f103287 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Wed, 19 Feb 2020 16:54:55 +0100 Subject: [PATCH 191/260] fix linting errors --- src/controllers/playback/videoosd.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 7624724fba..daab8cc9ae 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1223,14 +1223,14 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - + let playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { shell.disableFullscreen(); }); - + clearTimeout(playPauseClickTimeout); var player = currentPlayer; view.removeEventListener("viewbeforehide", onViewHideStopPlayback); From c85e5ec48b69d64280021e765891a62d09846142 Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Wed, 19 Feb 2020 17:00:17 +0000 Subject: [PATCH 192/260] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index a952175d80..fb5d6a900c 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -489,7 +489,7 @@ "LabelH264Crf": "CRF-verdi for H264-koding:", "LabelEncoderPreset": "Forhåndsinnstilling for H264-koding:", "LabelHardwareAccelerationType": "Maskinvareakselerasjon:", - "LabelHardwareAccelerationTypeHelp": "Dette er en eksperimentell funksjon som bare er tilgjengelig på støttede systemer.", + "LabelHardwareAccelerationTypeHelp": "Maskinvareakselerasjon krever ytterligere konfigurasjon.", "LabelHomeScreenSectionValue": "Hjemskjermseksjon {0}:", "LabelHttpsPort": "Lokal HTTPS-port:", "LabelHttpsPortHelp": "TCP-portnummeret som Jellyfin sin HTTPS-server skal benytte.", @@ -783,7 +783,7 @@ "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", "OptionAllowRemoteSharedDevices": "Tillat fjernstyring av delte enheter", "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner å styre dem.", - "OptionAllowUserToManageServer": "TIllatt denne brukeren å administrere serveren", + "OptionAllowUserToManageServer": "Tillatt denne brukeren å administrere serveren", "OptionAllowVideoPlaybackRemuxing": "Tillat avspilling av video som krever konvertering uten omkoding", "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever omkoding", "OptionAscending": "Økende", @@ -1464,5 +1464,7 @@ "LabelCorruptedFrames": "Korrupte bilder:", "LabelStreamType": "Type strøm:", "LabelDroppedFrames": "Fortapte bilder:", - "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)" + "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)", + "NoCreatedLibraries": "Det virker som at du ikke har opprettet noen biblioteker ennå. {0}Vil du opprette et nå?{1}", + "AskAdminToCreateLibrary": "Spør en administrator om å lage et bibliotek." } From a1f6db48b15ec3626246427ad9fed0d5c66500d3 Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Thu, 20 Feb 2020 17:38:22 +0800 Subject: [PATCH 193/260] h264 high10 is not supported on mobile browsers --- src/scripts/browserdeviceprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 9d91a691d0..b9fb5f4223 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -761,7 +761,7 @@ define(['browser'], function (browser) { videoTestElement.canPlayType('video/mp4; codecs="avc1.6e0033"').replace(/no/, '')) { // These tests are passing in safari, but playback is failing - if (!browser.safari && !browser.iOS && !browser.web0s && !browser.edge) { + if (!browser.safari && !browser.iOS && !browser.web0s && !browser.edge && !browser.mobile) { h264Profiles += '|high 10'; } } From 87a4f39844f3a2bac2642701eb3165a11b18dd90 Mon Sep 17 00:00:00 2001 From: Andreas B <6439218+YouKnowBlom@users.noreply.github.com> Date: Thu, 20 Feb 2020 11:23:08 +0100 Subject: [PATCH 194/260] Fix webOS support in videoosd.js and homesection.js --- src/components/homesections/homesections.js | 2 +- src/controllers/playback/videoosd.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 21373a1796..87be8c7c33 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -77,7 +77,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var createNowLink = elem.querySelector("#button-createLibrary") if (createNowLink) { - createNowLink.addEventListener("click", () => { + createNowLink.addEventListener("click", function () { Dashboard.navigate("library.html"); }); } diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 27652958d0..27fe6bae75 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1218,7 +1218,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med return null; } - let playPauseClickTimeout; + var playPauseClickTimeout; function onViewHideStopPlayback() { if (playbackManager.isPlayingVideo()) { require(['shell'], function (shell) { @@ -1388,7 +1388,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med clearTimeout(playPauseClickTimeout); playPauseClickTimeout = 0; } else { - playPauseClickTimeout = setTimeout(() => { + playPauseClickTimeout = setTimeout(function() { playbackManager.playPause(currentPlayer); showOsd(); playPauseClickTimeout = 0; From a12da2309ff6d33ac415f1b4da1f5e0e6c84d1a2 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Thu, 20 Feb 2020 19:46:34 +0300 Subject: [PATCH 195/260] apply suggustion change --- src/scripts/librarymenu.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 7d86dec42e..9e5748f449 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -12,7 +12,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += "
"; html += '
'; html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -84,7 +84,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " if (!layoutManager.tv) { headerCastButton.classList.remove("hide"); } - } else { headerHomeButton.classList.add("hide"); headerCastButton.classList.add("hide"); @@ -157,7 +156,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function onPlaybackStart(e) { - if (playbackManager.isPlayingAudio() && layoutManager.tv) { headerAudioPlayerButton.classList.remove("hide"); } else { @@ -166,7 +164,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " } function onPlaybackStop(e, stopInfo) { - if (stopInfo.nextMediaType != 'Audio') { headerAudioPlayerButton.classList.add("hide"); } From f7d383f76a7493b65d27eb096551e32c614272bb Mon Sep 17 00:00:00 2001 From: S1ckn3z Date: Fri, 21 Feb 2020 17:54:13 +0000 Subject: [PATCH 196/260] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index ac5b84ae76..e8a73eda00 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1486,5 +1486,6 @@ "LabelPlayerDimensions": "Playerabmessungen:", "LabelDroppedFrames": "Verlorene Frames:", "LabelCorruptedFrames": "Fehlerhafte Frames:", - "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)" + "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)", + "AskAdminToCreateLibrary": "Bitten Sie einen Administrator, eine Bibliothek zu erstellen." } From 99f5818a6ccb9a65dc4251335ffb4ef9ed1c7411 Mon Sep 17 00:00:00 2001 From: Saksol Date: Fri, 21 Feb 2020 03:08:03 +0000 Subject: [PATCH 197/260] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 66 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 36eba8ff7a..70fc891193 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -232,24 +232,66 @@ "ButtonResetPassword": "Endurstilla lykilorð", "ButtonOpen": "Opna", "Songs": "Lög", - "ButtonProfile": "", - "ButtonPreviousTrack": "", - "ButtonPause": "", - "ButtonRemove": "", - "ButtonResume": "", - "ButtonQuickStartGuide": "", - "ConfirmDeleteImage": "", - "ButtonRename": "", + "ButtonProfile": "Prófíll", + "ButtonPreviousTrack": "Fyrra lag", + "ButtonPause": "Pása", + "ButtonRemove": "Fjarlægja", + "ButtonResume": "Halda áfram", + "ButtonQuickStartGuide": "Byrjunar leiðarvísir", + "ConfirmDeleteImage": "Eyða mynd?", + "ButtonRename": "Endurnefna", "Sync": "Samstilla", "Never": "", "News": "", - "ButtonRevoke": "", - "ButtonRepeat": "", + "ButtonRevoke": "Afturkalla", + "ButtonRepeat": "Endurtaka", "MusicArtist": "", "MusicAlbum": "", "No": "", - "Monday": "", + "Monday": "Mánudagur", "Name": "", "Mute": "", - "MusicVideo": "" + "MusicVideo": "", + "ButtonRefresh": "Endurhlaða", + "ButtonParentalControl": "Foreldraeftirlit", + "ButtonOff": "Af", + "ButtonNextTrack": "Næsta lag", + "ButtonNetwork": "Net", + "ButtonMore": "Meira", + "ButtonManualLogin": "Handvirkt Auðkenni", + "ButtonLibraryAccess": "Aðgangur að safni", + "ButtonLearnMore": "Læra meira", + "ButtonInfo": "Upplýsingar", + "ButtonHome": "Heim", + "ButtonHelp": "Hjálp", + "ButtonGuide": "Sjónvarpsvísir", + "ButtonGotIt": "Skilið", + "ButtonFullscreen": "Fylla upp í skjá", + "ButtonForgotPassword": "Gleymt Lykilorð", + "ButtonFilter": "Sía", + "ButtonEditOtherUserPreferences": "Breyta stillingum notanda, mynd og persónulegum stillingum.", + "ButtonEditImages": "Breyta myndum", + "ButtonEdit": "Breyta", + "ButtonDownload": "Sækja", + "ButtonDown": "Niður", + "ButtonDeleteImage": "Eyða Mynd", + "ButtonDelete": "Eyða", + "ButtonConnect": "Tengjast", + "ButtonChangeServer": "Skipta um þjón", + "ButtonBack": "Til baka", + "ButtonAudioTracks": "Hljóðspor", + "BookLibraryHelp": "Hljóð og texta bækur eru stuttar. Lesið {0}book naming guide{1}.", + "Backdrops": "Bakgrunnar", + "Backdrop": "Bakgrunnur", + "AuthProviderHelp": "Veljið vottunaraðila til þess að sannvotta lykilorð notanta.", + "AskAdminToCreateLibrary": "Biðjið stjórnanda að gera nýtt gagnasafn.", + "MoreFromValue": "Meira frá {0}", + "AlwaysPlaySubtitlesHelp": "Allir textar sem samsvara við túngumáli valið verða alltaf hlaðnir óháð hljóðmáls túngumáli.", + "AllowedRemoteAddressesHelp": "Kommu aðskilinn listi yfir ip tölur eða ip-númeramát fyrir net sem mega fjartengjas. Ef þetta er autt eru allar fjartengingar leyfðar.", + "AllowHWTranscodingHelp": "Leyfa viðtæki að umbreyta straumi í rauntíma.Þetta getur minnkað álag á þjón.", + "ValueSpecialEpisodeName": "Sérstakt - {0}", + "Shows": "Þættir", + "Playlists": "Spilunarlisti", + "ButtonScanAllLibraries": "Skanna Öll Gagnasöfn", + "AllLibraries": "Öll gagnasöfn" } From 813693fd89b26663b7d99aacb15e82742850a7ae Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 20 Feb 2020 14:53:53 +0000 Subject: [PATCH 198/260] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index a6fce31503..2553dcb622 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1465,5 +1465,7 @@ "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškodené snímky:", "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", - "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)" + "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)", + "NoCreatedLibraries": "Vyzerá to tak, že ste zatiaľ nevytvorili žiadnu knižnicu. {0}Chceli by ste nejakú vytvoriť teraz?{1}", + "AskAdminToCreateLibrary": "Pokiaľ chcete vytvoriť knižnicu, musíte sa spýtať administrátora." } From b4886568144542b226267a873261a34748ced2bf Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Fri, 21 Feb 2020 07:55:14 +0000 Subject: [PATCH 199/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 48 +++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 17556a0f6d..74792b679e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Aktivera för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", + "AllowHWTranscodingHelp": "Tillåt för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}Jellyfins boknamngivningsguide{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0} boknamngivningsguide{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) på vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -69,7 +69,7 @@ "ButtonEditImages": "Ändra bilder", "ButtonEditOtherUserPreferences": "Ändra den här användarens profil, bild och personliga inställningar.", "ButtonFilter": "Filtrera", - "ButtonForgotPassword": "Glömt lösenord", + "ButtonForgotPassword": "Glömt Lösenord", "ButtonFullscreen": "Fullskärm", "ButtonGotIt": "Ok", "ButtonHelp": "Hjälp", @@ -180,7 +180,7 @@ "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras", - "DropShadow": "Visa skugga", + "DropShadow": "Visa Skugga", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", @@ -198,9 +198,9 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Aktivera ledmotiv", + "EnableThemeSongs": "Ledmotiv", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", - "EnableThemeVideos": "Aktivera tema-videos", + "EnableThemeVideos": "Tema-videos", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", @@ -214,7 +214,7 @@ "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", "EveryNDays": "Var {0}:e dag", "ExitFullscreen": "Avsluta fullskärm", - "ExtraLarge": "Extra stor", + "ExtraLarge": "Extra Stor", "ExtractChapterImagesHelp": "Att extrahera kapitelrutor möjliggör för klienter att visa grafiska menyer för kapitelval. Aktiviteten kan vara långsam, resurs-intensiv och kan kräva flera gigabyte i utrymme. Aktiviteten körs när nya videofiler upptäcks, och är även schemalagd under nattetid. Schemat går att konfigurera under schemalagda aktiviteter. Det är inte rekommenderat att köra den här aktiviteten vid tider med hög belastning.", "FFmpegSavePathNotFound": "Det gick inte att hitta FFmpeg med den angivna sökvägen. FFprobe måste även finnas i samma mapp. Dessa komponenter inkluderas normalt i samma nedladdning. Var god undersök sökvägen och försök igen.", "Favorite": "Favorit", @@ -320,7 +320,7 @@ "HeaderFrequentlyPlayed": "Ofta spelade", "HeaderGenres": "Genrer", "HeaderGuideProviders": "Källor för programguide", - "HeaderHttpHeaders": "Http-rubriker", + "HeaderHttpHeaders": "HTTP-rubriker", "HeaderIdentification": "Identifiering", "HeaderIdentificationCriteriaHelp": "Var god skriv in minst ett identifieringskriterium", "HeaderIdentificationHeader": "ID-rubrik", @@ -331,7 +331,7 @@ "HeaderItems": "Objekt", "HeaderKeepRecording": "Fortsätt spela in", "HeaderKeepSeries": "Behåll serie", - "HeaderKodiMetadataHelp": "Jellyfin har stöd för Nfo-metadatafiler. För att aktivera eller inaktivera Nfo-metadata, använd Metadata-fliken för att konfigurera Nfo-stöd för dina mediatyper.", + "HeaderKodiMetadataHelp": "Jellyfin har stöd för NFO-metadatafiler. För att aktivera eller inaktivera NFO-metadata, använd Metadata-fliken för att konfigurera NFO-stöd för dina mediatyper.", "HeaderLatestEpisodes": "Senaste avsnitten", "HeaderLatestMedia": "Nytillkommet", "HeaderLatestMovies": "Nytillkomna filmer", @@ -1277,7 +1277,7 @@ "General": "Allmänt", "FastForward": "Snabbspola", "Extras": "Mer", - "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.", + "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av MLTV filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLooping": "Loopa direktsändningar", @@ -1339,5 +1339,29 @@ "ButtonSplit": "Dela upp", "LabelCache": "Cache:", "LabelAlbum": "Album:", - "HeaderVideos": "Videor" + "HeaderVideos": "Videor", + "LabelBitrate": "Bithastighet:", + "LabelStreamType": "Stream typ:", + "LabelStatus": "Status:", + "LabelSize": "Storlek:", + "LabelServerName": "Server namn:", + "LabelSecureConnectionsMode": "Säker uppkopplings läge:", + "EnableFastImageFadeInHelp": "Aktivera snabbare fade-in animationer för laddade bilder", + "EnableFastImageFadeIn": "Snabb bild fade-in", + "LabelPostProcessorArgumentsHelp": "Använd {path} som sökväg till inspelade filen.", + "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", + "LabelDroppedFrames": "Tappade ramar:", + "LabelAudioSampleRate": "Ljudprovfrekvens:", + "LabelAudioBitrate": "Ljudbithastighet", + "LabelAudioBitDepth": "Ljudbitdjup", + "LabelPlayMethod": "Uppspelningsmetod:", + "LabelPlayerDimensions": "Spelare dimensioner:", + "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", + "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", + "LabelCorruptedFrames": "Skadade ramar:", + "HeaderParentalRatings": "Föräldrarbetyg", + "HeaderNavigation": "Navigering", + "HeaderBranding": "Märke", + "CopyStreamURLError": "Det vart ett fel vid kopiering av URL.", + "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek." } From b1065db0af95aa0b984ad7c8b098842de8f5edf1 Mon Sep 17 00:00:00 2001 From: Vincent Phan Date: Thu, 20 Feb 2020 05:54:06 +0000 Subject: [PATCH 200/260] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 99 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 9cb4b48495..99ab29d68b 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -118,5 +118,102 @@ "UninstallPluginHeader": "Gỡ bỏ Plugin", "AccessRestrictedTryAgainLater": "Truy cập hiện đang hạn chế. Hãy thử lại sau.", "AddToCollection": "Thêm vào bộ sưu tập", - "Actor": "Diễn viên" + "Actor": "Diễn viên", + "ButtonRevoke": "Thu hồi", + "ButtonResume": "Tiếp tục", + "ButtonRestart": "Khởi động lại", + "ButtonResetEasyPassword": "Đặt lại mã pin nhanh", + "ButtonRepeat": "Lặp lại", + "ButtonRename": "Đổi tên", + "ButtonRefreshGuideData": "Làm mới dữ liệu hướng dẫn", + "ButtonRefresh": "Làm mới", + "ButtonQuickStartGuide": "Hướng dẫn nhanh", + "ButtonProfile": "Hồ sơ", + "ButtonPreviousTrack": "Bài trước", + "ButtonPlay": "Chơi", + "ButtonPause": "Tạm dừng", + "ButtonParentalControl": "Kiểm soát của cha mẹ", + "ButtonOpen": "Mở", + "ButtonOff": "Tắt", + "ButtonNextTrack": "Tiếp theo", + "ButtonNetwork": "Mạng", + "ButtonMore": "Thêm", + "ButtonManualLogin": "Đăng nhập thủ công", + "ButtonLibraryAccess": "Truy cập thư viện", + "ButtonLearnMore": "Tìm hiểu thêm", + "ButtonInfo": "Thông tin", + "ButtonHome": "Trang chủ", + "ButtonHelp": "Giúp đỡ", + "ButtonGuide": "Hướng dẫn", + "ButtonGotIt": "Hiểu rồi", + "ButtonFullscreen": "Toàn màn hình", + "ButtonForgotPassword": "Quên mật khẩu", + "ButtonFilter": "Lọc", + "ButtonEditOtherUserPreferences": "Chỉnh sửa hồ sơ, hình ảnh và sở thích cá nhân.", + "ButtonEditImages": "Sửa hình ảnh", + "ButtonEdit": "Sửa", + "ButtonDownload": "Tải", + "ButtonDown": "Xuống", + "ButtonDelete": "Xoá", + "ButtonConnect": "Kết nối", + "ButtonChangeServer": "Đổi máy chủ", + "ButtonBack": "Lùi", + "ButtonAudioTracks": "Track âm thanh", + "ButtonArrowUp": "Lên", + "ButtonArrowRight": "Phải", + "ButtonArrowLeft": "Trái", + "ButtonArrowDown": "Xuống", + "ButtonAddServer": "Thêm máy chủ", + "ButtonAddScheduledTaskTrigger": "Thêm kích hoạt", + "ButtonAddMediaLibrary": "Thêm thư viện Media", + "ButtonAddImage": "Thêm hình ảnh", + "BurnSubtitlesHelp": "Xác định xem máy chủ có ghi phụ đề khi chuyển đổi video hay không tùy thuộc vào định dạng phụ đề. Tránh ghi trong phụ đề sẽ cải thiện hiệu suất máy chủ. Chọn Tự động để ghi hình ảnh dựa trên các định dạng (VOBSUB, PGS, SUB / IDX, v.v.) và phụ đề ASS/SSA nhất định.", + "Browse": "Duyệt", + "BoxRear": "Hộp (mặt sau)", + "Books": "Sách", + "BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0}hướng dẫn đặt tên sách{1}.", + "Blacklist": "Danh sách đen", + "BirthPlaceValue": "Nơi sinh: {0}", + "BirthLocation": "Nơi sinh", + "BirthDateValue": "Sinh năm: {0}", + "Backdrops": "Phông nền", + "Backdrop": "Phông nền", + "AutoBasedOnLanguageSetting": "Tự động (dựa trên cài đặt ngôn ngữ)", + "Auto": "Tự động", + "AuthProviderHelp": "Chọn Nhà cung cấp xác thực sẽ được sử dụng để xác thực mật khẩu người dùng này.", + "Audio": "Âm thanh", + "AttributeNew": "Tạo mới", + "AspectRatio": "Tỷ lệ khung hình", + "AskAdminToCreateLibrary": "Yêu cầu quản trị viên tạo thư viện.", + "Ascending": "Tăng dần", + "AsManyAsPossible": "Càng nhiều càng tốt", + "Artists": "Nghệ Sĩ", + "AroundTime": "Xunh quanh {0}", + "Anytime": "Bất cứ lúc nào", + "AnyLanguage": "Bất kỳ ngôn ngữ", + "AlwaysPlaySubtitlesHelp": "Phụ đề phù hợp với sở thích ngôn ngữ sẽ được tải bất kể ngôn ngữ âm thanh.", + "AlwaysPlaySubtitles": "Luôn hiển thị phụ đề", + "AllowedRemoteAddressesHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc các mục IP/netmask cho các mạng sẽ được phép kết nối từ xa. Nếu để trống, tất cả các địa chỉ sẽ được cho phép.", + "AllowRemoteAccessHelp": "Nếu không được chọn, tất cả các kết nối từ xa sẽ bị chặn.", + "AllowRemoteAccess": "Cho phép kết nối từ xa đến Máy chủ Jellyfin.", + "AllowOnTheFlySubtitleExtractionHelp": "Phụ đề nhúng có thể được trích xuất từ video và dùng như văn bản thuần túy để giúp ngăn chặn chuyển mã video. Trên một số hệ thống, việc này có thể mất nhiều thời gian và khiến quá trình phát video bị đình trệ trong quá trình trích xuất. Vô hiệu hóa điều này để có phụ đề nhúng được ghi trong chuyển mã video khi chúng không được thiết bị khách hỗ trợ.", + "AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề trực tiếp", + "AllowMediaConversionHelp": "Cấp hoặc từ chối truy cập vào tính năng chuyển đổi media.", + "AllowMediaConversion": "Cho phép chuyển đổi media", + "AllowHWTranscodingHelp": "Cho phép bộ chỉnh chuyển mã stream khi đang chơi. Điều này có thể giúp giảm tải của máy chủ khi chuyển mã.", + "AllLibraries": "Tất cả các thư viện", + "AllLanguages": "Tất cả các ngôn ngữ", + "AllEpisodes": "Tất cả các tập phim", + "AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB / IDX, v.v.)", + "AllChannels": "Tất cả các kênh", + "Alerts": "Cảnh Báo", + "Albums": "Albums", + "Aired": "Đã phát sóng", + "AirDate": "Ngày phát sóng", + "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt các dịch vụ thông báo bổ sung.", + "AddedOnValue": "Đã thêm {0}", + "AddToPlaylist": "Thêm vào danh sách phát", + "AddToPlayQueue": "Thêm vào hàng đợi", + "AddItemToCollectionHelp": "Thêm các mục vào bộ sưu tập bằng cách tìm kiếm và nhấp chuột phải hoặc nhấn vào menu để thêm chúng vào bộ sưu tập.", + "Absolute": "Tuyệt Đối" } From 78a276009275b337c2b6873f7be6794740602286 Mon Sep 17 00:00:00 2001 From: SleepyJesse Date: Fri, 21 Feb 2020 06:41:43 +0000 Subject: [PATCH 201/260] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 4274d4efd7..06104cfc28 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1469,5 +1469,7 @@ "MessageConfirmAppExit": "你要退出吗?", "EnableFastImageFadeIn": "快速图片淡入", "EnableFastImageFadeInHelp": "为已加载的图片启用更快的图片淡入动画", - "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)" + "OptionForceRemoteSourceTranscoding": "强制远程转码(像电视直播一样)", + "NoCreatedLibraries": "看上去您还未创建任何资料库。{0} 您想现在创建一个吗? {1}", + "AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。" } From cfafd519e83d90cfc1aa05dafab5d3df8247a0f5 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:06:33 +0000 Subject: [PATCH 202/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 209 +++++++++++++++++++++++++++++++++----------- 1 file changed, 156 insertions(+), 53 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 74792b679e..1870fad272 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -80,14 +80,14 @@ "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", "ButtonNew": "Nytillkommet", - "ButtonNextTrack": "Nästa spår:", + "ButtonNextTrack": "Nästa spår", "ButtonOff": "Av", "ButtonOk": "OK", "ButtonOpen": "Öppna", "ButtonParentalControl": "Föräldralås", "ButtonPause": "Paus", "ButtonPlay": "Spela upp", - "ButtonPreviousTrack": "Föregående spår:", + "ButtonPreviousTrack": "Föregående spår", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Snabbstartguide", "ButtonRefresh": "Uppdatera", @@ -179,14 +179,14 @@ "Down": "Ner", "Download": "Ladda ned", "DownloadsValue": "Nedladdningar: {0}", - "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras", + "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras.", "DropShadow": "Visa Skugga", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "Edit": "Ändra", "EditImages": "Ändra bilder", "EditMetadata": "Redigera metadata", "EditSubtitles": "Ändra undertexter", - "EnableBackdrops": "Aktivera fondbilder", + "EnableBackdrops": "Fondbilder", "EnableBackdropsHelp": "Visar fondbilder i bakgrunden av vissa sidor vid bläddring i biblioteket.", "EnableCinemaMode": "Bioläge", "EnableColorCodedBackgrounds": "Färgkodade bakgrundsbilder", @@ -198,7 +198,7 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Ledmotiv", + "EnableThemeSongs": "Signaturmelodier", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", "EnableThemeVideos": "Tema-videos", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", @@ -229,7 +229,7 @@ "FolderTypeMovies": "Filmer", "FolderTypeMusic": "Musik", "FolderTypeMusicVideos": "Musikvideor", - "FolderTypeTvShows": "Serier", + "FolderTypeTvShows": "TV Serier", "FolderTypeUnset": "Blandat Innehåll", "Folders": "Mappar", "Friday": "Fredag", @@ -287,7 +287,7 @@ "HeaderContainerProfile": "Behållareprofil", "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", "HeaderContinueListening": "Fortsätt lyssna på", - "HeaderContinueWatching": "Fortsätt kolla på", + "HeaderContinueWatching": "Fortsätt titta", "HeaderCustomDlnaProfiles": "Anpassade profiler", "HeaderDateIssued": "Utgivningsdatum", "HeaderDefaultRecordingSettings": "Standard inspelningsinställningar", @@ -322,7 +322,7 @@ "HeaderGuideProviders": "Källor för programguide", "HeaderHttpHeaders": "HTTP-rubriker", "HeaderIdentification": "Identifiering", - "HeaderIdentificationCriteriaHelp": "Var god skriv in minst ett identifieringskriterium", + "HeaderIdentificationCriteriaHelp": "Skriv in minst ett kriterie för identifiering.", "HeaderIdentificationHeader": "ID-rubrik", "HeaderIdentifyItemHelp": "Ange ett eller flera sökkriterier. Ta bort kriterier för att få fler träffar.", "HeaderImageSettings": "Bildinställningar", @@ -350,7 +350,7 @@ "HeaderMetadataSettings": "Metadatainställningar", "HeaderMoreLikeThis": "Mer som denna", "HeaderMovies": "Filmer", - "HeaderMusicQuality": "Musikkvalitet:", + "HeaderMusicQuality": "Musikkvalitet", "HeaderMusicVideos": "Musikvideor", "HeaderMyDevice": "Min enhet", "HeaderMyMedia": "Min Media", @@ -358,7 +358,7 @@ "HeaderNewApiKey": "Ny API-nyckel", "HeaderNewDevices": "Nya enheter", "HeaderNextEpisodePlayingInValue": "Nästa avsnitt börjar om {0}", - "HeaderNextUp": "Nästa på tur", + "HeaderNextUp": "Nästa", "HeaderNextVideoPlayingInValue": "Nästa video börjar om {0}", "HeaderOnNow": "Visas nu", "HeaderOtherItems": "Övriga objekt", @@ -375,7 +375,7 @@ "HeaderPlaybackError": "Uppspelningsfel", "HeaderPleaseSignIn": "Var god logga in", "HeaderPluginInstallation": "Installation av tillägg", - "HeaderPreferredMetadataLanguage": "Önskat språk för metadata:", + "HeaderPreferredMetadataLanguage": "Önskat språk för metadata", "HeaderProfile": "Profil", "HeaderProfileInformation": "Profilinformation", "HeaderProfileServerSettingsHelp": "Dessa inställningar kontrollerar hur Jellyfin Server presenterar sig för enheten.", @@ -479,7 +479,7 @@ "LabelAllowServerAutoRestart": "Tillåt att servern startas om automatiskt efter uppdateringar", "LabelAllowServerAutoRestartHelp": "Servern startas om endast då inga användare är inloggade.", "LabelAppName": "Appens namn", - "LabelAppNameExample": "Exempel: Sickbeard, NzbDrone", + "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med vid flera ;", "LabelAudio": "Ljud:", @@ -507,7 +507,7 @@ "LabelCurrentPassword": "Nuvarande lösenord:", "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format", - "LabelCustomCss": "Egen css:", + "LabelCustomCss": "Egen CSS:", "LabelCustomCssHelp": "Applicera din egen css till webbgränssnittet.", "LabelCustomDeviceDisplayName": "Visningsnamn:", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", @@ -550,9 +550,9 @@ "LabelEnableDlnaDebugLogging": "Aktivera DLNA felsökningsloggning", "LabelEnableDlnaDebugLoggingHelp": "Detta resulterar i mycket stora loggfiler och rekommenderas bara vid felsökning.", "LabelEnableDlnaPlayTo": "Använd DLNA spela-upp-på", - "LabelEnableDlnaPlayToHelp": "Jellyfin kan hitta enheter på ditt nätverk och ge dig möjlighet att fjärrstyra dem.", + "LabelEnableDlnaPlayToHelp": "Hitta enheter på ditt nätverk och ge dig möjlighet att fjärrstyra dem.", "LabelEnableDlnaServer": "Aktivera DLNA-server", - "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll från din Jellyfin Server.", + "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll.", "LabelEnableHardwareDecodingFor": "Aktivera hårdvaruomkodning för:", "LabelEnableRealtimeMonitor": "Aktivera bevakning av mappar i realtid", "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta)", @@ -565,7 +565,7 @@ "LabelExtractChaptersDuringLibraryScan": "Extrahera kapitelbildrutor vid genomsökning av biblioteket", "LabelExtractChaptersDuringLibraryScanHelp": "Om aktiverat extraheras kapitelbildrutor när videor importeras vid genomsökning av biblioteket. Om avaktiverat kommer extrahering att ske vid schemalagd kapitelbildrutebehandling, för att snabba upp den regelbundna genomsökningen av biblioteket.", "LabelFailed": "Misslyckades", - "LabelFileOrUrl": "Fil eller url:", + "LabelFileOrUrl": "Fil eller URL:", "LabelFinish": "Klart", "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", @@ -579,7 +579,7 @@ "LabelHardwareAccelerationTypeHelp": "Endast tillgängligt på hårdvara med stöd.", "LabelHomeNetworkQuality": "Hemnätverkskvalitet:", "LabelHomeScreenSectionValue": "Hemskärmsdel {0}:", - "LabelHttpsPort": "Lokalt portnummer för https:", + "LabelHttpsPort": "Lokalt portnummer för HTTPS:", "LabelHttpsPortHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på https.", "LabelIconMaxHeight": "Maxhöjd på ikoner:", "LabelIconMaxHeightHelp": "Högsta upplösning hos ikoner som visas via upnp:icon.", @@ -607,20 +607,20 @@ "LabelLanNetworks": "LAN nätverk:", "LabelLanguage": "Språk:", "LabelLineup": "Uppsättning:", - "LabelLocalHttpServerPortNumber": "Lokalt portnummer för http:", + "LabelLocalHttpServerPortNumber": "Lokalt portnummer för HTTP:", "LabelLocalHttpServerPortNumberHelp": "Den lokala tcp-port som Jellyfin Server ska lyssna på http.", "LabelLockItemToPreventChanges": "Lås det här objektet för att förhindra ändringar", "LabelLoginDisclaimer": "Ansvarsbegränsning vid inloggning:", "LabelLoginDisclaimerHelp": "Detta visas längst ned på inloggningssidan.", "LabelLogs": "Loggfiler:", - "LabelManufacturer": "Tillverkare", + "LabelManufacturer": "Tillverkare:", "LabelManufacturerUrl": "Tillverkarens webaddress", "LabelMatchType": "Matchningstyp:", "LabelMaxBackdropsPerItem": "Högsta antal fondbilder per objekt:", "LabelMaxChromecastBitrate": "Strömningskvalitet för Chromecast:", "LabelMaxParentalRating": "Högsta tillåtna åldersgräns", - "LabelMaxResumePercentage": "Högsta gräns för återupptagande (%)", - "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt", + "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent", + "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt.", "LabelMaxScreenshotsPerItem": "Högsta antal skärmdumpar per objekt:", "LabelMaxStreamingBitrate": "Maximal strömningskvalite:", "LabelMaxStreamingBitrateHelp": "Ange högsta bithastighet för strömning.", @@ -636,10 +636,10 @@ "LabelMetadataSaversHelp": "Välj de filformat du vill använda för att spara dina metadata.", "LabelMethod": "Metod:", "LabelMinBackdropDownloadWidth": "Hämta enbart fondbilder bredare än:", - "LabelMinResumeDuration": "Minsta tid för återupptagande (s)", - "LabelMinResumeDurationHelp": "Objekt med speltid kortare än så här kan ej återupptas", - "LabelMinResumePercentage": "Lägsta gräns för återupptagande (%)", - "LabelMinResumePercentageHelp": "Objekt betraktas som ej spelade om uppspelningen stoppas före denna tidpunkt", + "LabelMinResumeDuration": "Minsta tid för återupptagande:", + "LabelMinResumeDurationHelp": "Objekt med speltid kortare än så här kan ej återupptas.", + "LabelMinResumePercentage": "Lägsta gräns för återupptagande i procent:", + "LabelMinResumePercentageHelp": "Objekt betraktas som ej spelade om uppspelningen stoppas före denna tidpunkt.", "LabelMinScreenshotDownloadWidth": "Hämta enbart skärmdumpar bredare än:", "LabelModelDescription": "Modellbeskrivning", "LabelModelName": "Modellnamn", @@ -648,10 +648,10 @@ "LabelMonitorUsers": "Övervaka aktivitet från:", "LabelMovieCategories": "Filmkategorier:", "LabelMoviePrefix": "Film prefix:", - "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att Jellyfin kan hantera dessa korrekt.", + "LabelMoviePrefixHelp": "Om ett prefix har lagts till filmertitlarna, skriv in det här så att servern kan hantera dessa korrekt.", "LabelMovieRecordingPath": "Inspelningssökväg för film (valfri):", "LabelMusicStreamingTranscodingBitrate": "Bithastighet vid omkodning av musik:", - "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik", + "LabelMusicStreamingTranscodingBitrateHelp": "Ange högsta bithastighet vid strömning av musik.", "LabelName": "Namn:", "LabelNewName": "Nytt namn:", "LabelNewPassword": "Nytt lösenord:", @@ -691,10 +691,10 @@ "LabelProtocol": "Protokoll:", "LabelProtocolInfo": "Protokollinfo:", "LabelProtocolInfoHelp": "Värde att använda vid svar på GetProtocolInfo-begäran från enheter.", - "LabelPublicHttpPort": "Publikt portnummer för http:", - "LabelPublicHttpPortHelp": "Det publika portnumret som ska mappas till den lokala porten för http.", - "LabelPublicHttpsPort": "Publikt portnummer för https:", - "LabelPublicHttpsPortHelp": "Det publika portnumret som ska mappas till den lokala porten för https.", + "LabelPublicHttpPort": "Publikt portnummer för HTTP:", + "LabelPublicHttpPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTP.", + "LabelPublicHttpsPort": "Publikt portnummer för HTTPS:", + "LabelPublicHttpsPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTPS.", "LabelReadHowYouCanContribute": "Se hur du kan hjälpa till.", "LabelReasonForTranscoding": "Orsak för omkodning:", "LabelRecord": "Spela in:", @@ -718,7 +718,7 @@ "LabelSerialNumber": "Serienummer", "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier (valfri):", "LabelServerHost": "Värd:", - "LabelServerHostHelp": "192.168.1.100 eller https://min.server.com", + "LabelServerHostHelp": "192.168.1.100:8096 eller https://min.server.com", "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar", "LabelSkin": "Skal:", "LabelSkipBackLength": "'Hoppa bakåt'-längd:", @@ -757,7 +757,7 @@ "LabelTrackNumber": "Spår nr", "LabelTranscodingAudioCodec": "Ljudkodning:", "LabelTranscodingContainer": "Behållare:", - "LabelTranscodingTempPathHelp": "Denna mapp innehåller tillfälliga filer som används vid omkodning. Ange en plats för dessa, eller lämna blankt för att använda förvald plats.", + "LabelTranscodingTempPathHelp": "Ange en egen sökväg där omkodningar skall sparas för klienter. Lämna blankt för att använda förvald plats.", "LabelTranscodingThreadCount": "Trådar för omkodning:", "LabelTranscodingThreadCountHelp": "Välj maximala antalet trådar som ska användas vid omkodning. Att minska antalet trådar sänker cpu-belastningan men ökar även risken att omkodning inte kan ske snabbt nog för felfri uppspelning.", "LabelTranscodingVideoCodec": "Videokodning:", @@ -832,7 +832,7 @@ "MessageConfirmRemoveMediaLocation": "Är du säker på att du vill ta bort den här platsen?", "MessageConfirmRestart": "Är du säker på att du vill starta om Jellyfin server?", "MessageConfirmRevokeApiKey": "Är du säker på att du vill återkalla den här api-nyckeln? Applikationens koppling till Jellyfin Server kommer avslutas abrupt.", - "MessageConfirmShutdown": "Är du säker på att du vill stänga av Jellyfin server?", + "MessageConfirmShutdown": "Är du säker på att du vill stänga av servern?", "MessageContactAdminToResetPassword": "Vänligen kontakta din systemadministratör för att återställa ditt lösenord.", "MessageCreateAccountAt": "Skapa ett konto på {0}", "MessageDeleteTaskTrigger": "Vill du ta bort denna aktivitetsutlösare?", @@ -856,27 +856,27 @@ "MessageNoTrailersFound": "Hittade inga trailers. Installera Trailer-kanalen och öka biokänslan genom att lägga till ett bibliotek av trailers.", "MessageNothingHere": "Ingenting här.", "MessagePasswordResetForUsers": "Lösenord har tagots bort från följande användare. För att logga in, använd ett blankt lösenord.", - "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din Jellyfin Server administratör för mer information.", + "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din server administratör för mer information.", "MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.", "MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.", "MessagePluginConfigurationRequiresLocalAccess": "Logga in på din din lokala Jellyfin Server för att konfigurera det här tillägget.", "MessagePluginInstallDisclaimer": "Tillägg skapade av Jellyfin-användare är ett bra sätt att förbättra din Jellyfin-upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din Jellyfin-server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", "MessageReenableUser": "Se nedan för att aktivera igen", "MessageSettingsSaved": "Inställningarna har sparats.", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt Jellyfin bibliotek:", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek:", "MessageUnableToConnectToServer": "Vi kunde inte upprätta anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.", "MessageUnsetContentHelp": "Innehåll kommer visas som enkla mappar. För bästa resultat, använd en metadata-hanterare för att ställa in typ av innehåll för undermapparna.", "MessageYouHaveVersionInstalled": "Version {0} är installerad.", "MetadataManager": "Metadata-hanteraren", "MinutesAfter": "minuter efter", "MinutesBefore": "minuter före", - "Mobile": "Mobil / Platta", + "Mobile": "Mobil", "Monday": "Måndag", "MoreFromValue": "Mer från {0}", "MoreUsersCanBeAddedLater": "Flera användare kan skapas senare i Kontrollpanelen.", "MoveLeft": "Vänster", "MoveRight": "Höger", - "MovieLibraryHelp": "Läs om {0}Jellyfins namngivningsguide för filmer{1}.", + "MovieLibraryHelp": "Läs om {0} namngivningsguide för filmer{1}.", "Movies": "Filmer", "Mute": "Tyst", "MySubtitles": "Mina undertexter", @@ -902,7 +902,7 @@ "OneChannel": "En kanal", "OnlyForcedSubtitles": "Endast tvingande undertexter", "OnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.", - "OnlyImageFormats": "Endast image-format (VOBSUB, PGS, SUB/IDX, etc.)", + "OnlyImageFormats": "Endast image-format (VOBSUB, PGS, SUB, etc)", "OptionAdminUsers": "Administratörer", "OptionAlbumArtist": "Albumartist", "OptionAllUsers": "Alla användare", @@ -945,7 +945,7 @@ "OptionDisableUserHelp": "Spärrade användare tillåts ej kontakta servern. Eventuella pågående anslutningar avbryts omedelbart.", "OptionDislikes": "Ogillar", "OptionDisplayFolderView": "Visa en mappvy för att visa enkla mediamappar", - "OptionDisplayFolderViewHelp": "Vid aktivering kommer Jellyfinappar att visa en Mappkategori intill ditt mediabibliotek. Detta är användbart om du har enkla mappvyer.", + "OptionDisplayFolderViewHelp": "Visa mappar jämsides med dina andra media bibliotek. Detta kan vara bra om du vill ha en enkel mapp visning.", "OptionDownloadArtImage": "Grafik", "OptionDownloadBackImage": "Baksida", "OptionDownloadBannerImage": "Banderoll", @@ -982,7 +982,7 @@ "OptionHideUser": "Visa inte den här användaren på inloggningssidorna", "OptionHideUserFromLoginHelp": "Användbart för privata konton eller gömda administratörskonton. Användaren beöver logga in manuellt genom att skriva sitt användarnamn och lösenord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterade undertexter", - "OptionHomeVideos": "Hemvideos & foton", + "OptionHomeVideos": "Foton", "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om \"byte range\" vid omkodning", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Om aktiverad kommer begäran att uppfyllas, men \"byte range\"-rubriken ignoreras.", "OptionImdbRating": "Betyg på IMDB", @@ -1182,7 +1182,7 @@ "TabMusicVideos": "Musikvideor", "TabMyPlugins": "Mina tillägg", "TabNetworks": "TV-bolag", - "TabNfoSettings": "nfo-inställingar", + "TabNfoSettings": "NFO-inställingar", "TabNotifications": "Meddelanden", "TabOther": "Övrigt", "TabParentalControl": "Föräldralås", @@ -1195,7 +1195,7 @@ "TabProfiles": "Profiler", "TabRecordings": "Inspelningar", "TabResponses": "Svar", - "TabResumeSettings": "Återuppta-inställningar", + "TabResumeSettings": "Återuppta", "TabScheduledTasks": "Schemalagda aktiviteter", "TabSeries": "Serie", "TabSettings": "Inställningar", @@ -1221,7 +1221,7 @@ "TrackCount": "{0} spår", "Transcoding": "Omkodning", "Tuesday": "Tisdag", - "TvLibraryHelp": "Läs om {0}Jellyfins namngivningsguide för TV-serier{1}.", + "TvLibraryHelp": "Läs om {0} namngivningsguide för TV-serier{1}.", "UninstallPluginConfirmation": "Är du säker på att du vill avinstallera {0}?", "UninstallPluginHeader": "Avinstallera tillägg", "Unmute": "Muting av", @@ -1259,11 +1259,11 @@ "WelcomeToProject": "Välkommen till Jellyfin!", "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin Server har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", "Writer": "Manusförfattare", - "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla xml-svar.", + "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla XML-svar.", "XmlTvKidsCategoriesHelp": "Program med dessa kategorier kommer visas som program för barn. Separerade med '|'.", "XmlTvMovieCategoriesHelp": "Program med dessa kategorier kommer visas som filmer. Separerade med '|'.", "XmlTvNewsCategoriesHelp": "Program med dessa kategorier kommer visas som nyhetsprogram. Separerade med '|'.", - "XmlTvPathHelp": "En sökväg till en xml-fil för tv. Jellyfin kommer läsa in den här filen och regelbundet leta efter uppdateringar. Du är själv ansvarig för att skapa och uppdatera filen.", + "XmlTvPathHelp": "En sökväg till en XML-fil för tv. Jellyfin kommer läsa in den här filen och regelbundet leta efter uppdateringar. Du är själv ansvarig för att skapa och uppdatera filen.", "XmlTvSportsCategoriesHelp": "Program med dessa kategorier kommer visas som sportprogram. Separerade med '|'.", "Yes": "Ja", "Yesterday": "Igår", @@ -1276,8 +1276,8 @@ "GenreValue": "Genre: {0}", "General": "Allmänt", "FastForward": "Snabbspola", - "Extras": "Mer", - "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av MLTV filen. Kontrollera att filen är tillgänglig och försök igen.", + "Extras": "Extramaterial", + "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XMLTV filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLooping": "Loopa direktsändningar", @@ -1313,12 +1313,12 @@ "CopyStreamURLSuccess": "URL har kopierats.", "CopyStreamURL": "Kopiera Stream URL", "FetchingData": "Hämtar ytterligare data", - "HeaderFetcherSettings": "Hämtarinställningar", + "HeaderFetcherSettings": "Hämtningsinställningar", "ButtonAddImage": "Lägg till bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildinställningar", "Absolute": "Absolut", - "HeaderFavoritePeople": "Favoritpersoner", + "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", "LabelPostProcessor": "Program för efterbehandling:", @@ -1334,7 +1334,7 @@ "LabelAllowedRemoteAddressesMode": "Fjärr-IP-adressfilterläge:", "LabelAllowedRemoteAddresses": "Fjärr-IP-adressfilter:", "HttpsRequiresCert": "För att aktivera säkra anslutningar måste du tillhandahålla ett pålitligt SSL-certifikat, till exempel \"Let's Encrypt\". Vänligen ange ett certifikat eller inaktivera säkra anslutningar.", - "HeaderTypeImageFetchers": "{0} Bildhämtare", + "HeaderTypeImageFetchers": "Bildhämtare", "HeaderLiveTvTunerSetup": "Ställ in Live-TV-mottagare", "ButtonSplit": "Dela upp", "LabelCache": "Cache:", @@ -1359,9 +1359,112 @@ "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", "LabelCorruptedFrames": "Skadade ramar:", - "HeaderParentalRatings": "Föräldrarbetyg", + "HeaderParentalRatings": "Föräldrabetyg", "HeaderNavigation": "Navigering", "HeaderBranding": "Märke", "CopyStreamURLError": "Det vart ett fel vid kopiering av URL.", - "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek." + "AskAdminToCreateLibrary": "Fråga en administratör för att skapa ett bibliotek.", + "Whitelist": "Vitlista", + "VideoRange": "Video räckvidd", + "ValueOneAlbum": "1 album", + "ValueMinutes": "{0} min", + "ValueContainer": "Behållare: {0}", + "UserAgentHelp": "Stöd en egen user-agent HTTP rubrik.", + "Uniform": "Enhetlig", + "Trailers": "Trailers", + "TabTrailers": "Trailers", + "TabServer": "Server", + "TabNetworking": "Nätverk", + "TabMetadata": "Metadata", + "TabInfo": "Info", + "TabAccess": "Tillgång", + "TV": "TV", + "SubtitleOffset": "Undertext justering", + "Smart": "Smart", + "Smaller": "Mindre", + "ShowAdvancedSettings": "Visa avancerade inställningar", + "SeriesDisplayOrderHelp": "Ordna avsnitt via sändnings datum, DVD ordning, eller absolut numrering.", + "SelectAdminUsername": "Vänligen välj ett användarnamn för admin kontot.", + "SaveSubtitlesIntoMediaFoldersHelp": "Spara undertexter vid video filer kommer göra det mer enklare att hantera.", + "Rewind": "Spola tillbaka", + "RequiredForAllRemoteConnections": "Krävs för alla fjärr kopplingar", + "RecordingPathChangeMessage": "Ändring av din inspelnings mapp kommer inte migrera existerande inspelningar från gamla platsen till den nya. Du behöver flytta dom manuellt om så önskas.", + "PreferredNotRequired": "Föredragen, men inte krävande", + "PlaybackData": "Uppspelnings Data", + "PasswordResetProviderHelp": "Välj en Lösenords Återställnings Provider att använda när denna användare begär att återställa lösenordet", + "OptionThumbCard": "Miniatyr kort", + "OptionThumb": "Miniatyr", + "OptionSaveMetadataAsHiddenHelp": "Ändring av detta kommer att tilldelas till ny metadata som sparas. Existerande metadata filer kommer att uppdateras nästa gång dom sparas av Jellyfin Server.", + "OptionResElement": "res element", + "OptionRegex": "Regex", + "OptionRandom": "Slumpmässig", + "OptionProtocolHttp": "HTTP", + "OptionProfileVideo": "Video", + "OptionPosterCard": "Omslags kort", + "OptionPoster": "Omslag", + "OptionMax": "Max", + "OptionLoginAttemptsBeforeLockoutHelp": "Ett värde av noll menas att använda standard av tre försök för normala användare och fem för administratörer. -1 kommer att stänga av denna funktion.", + "OptionLoginAttemptsBeforeLockout": "Avgör hur många felaktiga inloggnings försök som kan utföras innan kontot låses.", + "OptionList": "List", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionHasTrailer": "Trailer", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionBlockTrailers": "Trailers", + "OptionBanner": "Banner", + "OptionAutomatic": "Auto", + "OptionAuto": "Auto", + "OptionArtist": "Artist", + "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på fjärr media källor (som LiveTV)", + "OptionAlbum": "Album", + "Option3D": "3D", + "Normal": "Normal", + "NoCreatedLibraries": "Ser ut som du inte har skapat några bibliotek än. {0}Vill du skapa ett nu?{1}", + "NextUp": "Nästa på tur", + "MusicVideo": "Musik Video", + "MusicLibraryHelp": "Granska {0}musik döpnings guiden{1}.", + "MusicArtist": "Musik Artist", + "MusicAlbum": "Musik Album", + "MoreMediaInfo": "Media Info", + "MetadataSettingChangeHelp": "Ändring av metadata inställningar kommer att ske på nytt innehåll som är tillagt framledes. För att uppdatera existerat innehåll, öppna detalj skärmen och tryck på uppdatera knappen, eller utför bulk uppdateringar med metadata hanteraren.", + "Metadata": "Metadata", + "MessageNoServersAvailable": "Inga servrar har hittats med automatiska server sökningen.", + "MessageNoCollectionsAvailable": "Samlingar tillåter dig att njuta av personlig gruppering av Filmer, Serier och Albums. Tryck på + knapen för att skapa samlingar.", + "MessageImageTypeNotSelected": "Vänligen välj en bild typ från rullningslisten.", + "MessageImageFileTypeAllowed": "Endast JPEG och PNG filer stöds.", + "MessageConfirmAppExit": "Vill du avsluta?", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Undertext", + "MediaInfoStreamTypeEmbeddedImage": "Inbäddad Bild", + "MediaInfoStreamTypeData": "Data", + "MediaInfoStreamTypeAudio": "Ljud", + "MediaInfoSoftware": "Mjukvara", + "MediaInfoLayout": "Design", + "MediaInfoContainer": "Behållare", + "ManageLibrary": "Hantera bibliotek", + "Live": "Live", + "LeaveBlankToNotSetAPassword": "Du kan lämna detta fält tomt för att inte ange lösenord.", + "LaunchWebAppOnStartupHelp": "Öppna webb klient i din standard webbläsare när servern startas. Detta kommer inte ske när du använder starta om servern funktionen.", + "LaunchWebAppOnStartup": "Starta webb gränssnitt när servern startas", + "LanNetworksHelp": "Kommatecken separerad lista på IP adresser eller IP/nätmask inlägg för nätverk som anses vara på lokala nätverket för att tvinga fram bandbredd begränsningar. Om angett, alla andra IP adresser kommer att anses vara på ett externt nätverk och kommer tilldelas till det externa bandbredd begränsningarna. Om lämnat tomt, endast serverns subnet anses vara på det lokala nätverket.", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelWeb": "Webb:", + "LabelVideoResolution": "Video upplösning:", + "LabelVideoCodec": "Video codec:", + "LabelVideoBitrate": "Video bitrate:", + "LabelVideo": "Video:", + "DashboardArchitecture": "Arkitektur: {0}", + "DashboardOperatingSystem": "Operativsystem: {0}", + "DashboardServerName": "Server: {0}", + "DashboardVersionNumber": "Version: {0}", + "LabelVersion": "Version:", + "LabelUserLoginAttemptsBeforeLockout": "Felaktiga inloggnings försök innan användare blir utelåst:", + "LabelUserAgent": "Användar agent:", + "LabelTypeText": "Text", + "LabelTypeMetadataDownloaders": "{0} metadata nerladdare:", + "LabelTranscodingProgress": "Omkodning progress:", + "LabelTranscodingFramerate": "Omkodning framerate:", + "LabelTranscodes": "Omkodningar:", + "LabelTranscodePath": "Omkodning sökväg:" } From 73f625ee0234e91c214b8d6c399cb7a1c1c570de Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:55:07 +0000 Subject: [PATCH 203/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1870fad272..5f3929da7c 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -200,7 +200,7 @@ "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", "EnableThemeSongs": "Signaturmelodier", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", - "EnableThemeVideos": "Tema-videos", + "EnableThemeVideos": "Tema-videor", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", @@ -208,7 +208,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Det gick inte att lägga till sökvägen. Kontrollera att sökvägen är korrekt och att Jellyfin Server har rättigheter till sökvägen.", "ErrorAddingTunerDevice": "Det gick inte att lågga till den här TV-mottagaren. Säkerställ att den går att nå och försök igen.", "ErrorDeletingItem": "Det gick inte att ta bort det här objektet från Jellyfin-servern. Kontrollera att Jellyfin-servern har skrivrättigheter till media-mappen och försök igen.", - "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav tv-sortimentet. Se till så att uppgifterna stämmer och försök igen.", + "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav TV-sortimentet. Se till så att uppgifterna stämmer och försök igen.", "ErrorMessageStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Om inga lineups finns tillgängliga, kolla så att användarnamn, lösenord och postnummer stämmer.", "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", From 10891bf6e251a4019204da184919f8502719b76c Mon Sep 17 00:00:00 2001 From: Jonas Lundberg Date: Sat, 22 Feb 2020 09:55:33 +0000 Subject: [PATCH 204/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 5f3929da7c..a866a75775 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -320,7 +320,7 @@ "HeaderFrequentlyPlayed": "Ofta spelade", "HeaderGenres": "Genrer", "HeaderGuideProviders": "Källor för programguide", - "HeaderHttpHeaders": "HTTP-rubriker", + "HeaderHttpHeaders": "HTTP headers", "HeaderIdentification": "Identifiering", "HeaderIdentificationCriteriaHelp": "Skriv in minst ett kriterie för identifiering.", "HeaderIdentificationHeader": "ID-rubrik", @@ -1316,7 +1316,7 @@ "HeaderFetcherSettings": "Hämtningsinställningar", "ButtonAddImage": "Lägg till bild", "HeaderStopRecording": "Stoppa inspelning", - "HeaderImageOptions": "Bildinställningar", + "HeaderImageOptions": "Bildalternativ", "Absolute": "Absolut", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", From ff914d715e89a44118380af5963a7efed518d0b4 Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:56:20 +0000 Subject: [PATCH 205/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index a866a75775..50fb828018 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -523,7 +523,7 @@ "LabelDefaultUser": "Förvald användare:", "LabelDefaultUserHelp": "Anger vilket användarbibliotek som skall visas på anslutna enheter. Denna inställning kan ändras på enhetsbasis med hjälp av en enhetsprofiler.", "LabelDeviceDescription": "Enhetsbeskrivning", - "LabelDidlMode": "Didl-läge:", + "LabelDidlMode": "DIDL-läge:", "LabelDiscNumber": "Skivnummer:", "LabelDisplayLanguage": "Visningsspråk:", "LabelDisplayLanguageHelp": "Att översätta Jellyfin är ett pågående projekt.", @@ -936,7 +936,7 @@ "OptionCriticRating": "Kritikerbetyg", "OptionCustomUsers": "Anpassad", "OptionDaily": "Dagligen", - "OptionDateAdded": "Inlagd den", + "OptionDateAdded": "Tillagd den", "OptionDateAddedFileTime": "Använd datum då filen skapades", "OptionDateAddedImportTime": "Använd datum för inläsning i biblioteket", "OptionDatePlayed": "Senast visad", From bfb2b618ef0a03c585e5b08bbce3e186f64ff199 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:56:30 +0000 Subject: [PATCH 206/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 50fb828018..33e8a5d293 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1,5 +1,5 @@ { - "AccessRestrictedTryAgainLater": "Åtkomst är begränsad. Försök igen senare.", + "AccessRestrictedTryAgainLater": "För närvarande är åtkomst begränsad. Försök igen senare.", "Actor": "Skådespelare", "Add": "Lägg till", "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dom och sen högerklicka eller tappa upp menyn för att lägga till dom.", @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt för att låta TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0} boknamngivningsguide{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguiden{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) på vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -76,7 +76,7 @@ "ButtonHome": "Hem", "ButtonLearnMore": "Läs mer", "ButtonLibraryAccess": "Biblioteksåtkomst", - "ButtonManualLogin": "Manuell inloggning:", + "ButtonManualLogin": "Manuell inloggning", "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", "ButtonNew": "Nytillkommet", @@ -198,7 +198,7 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Signaturmelodier", + "EnableThemeSongs": "Signaturmelodi", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", "EnableThemeVideos": "Tema-videor", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", @@ -287,7 +287,7 @@ "HeaderContainerProfile": "Behållareprofil", "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", "HeaderContinueListening": "Fortsätt lyssna på", - "HeaderContinueWatching": "Fortsätt titta", + "HeaderContinueWatching": "Fortsätt kolla", "HeaderCustomDlnaProfiles": "Anpassade profiler", "HeaderDateIssued": "Utgivningsdatum", "HeaderDefaultRecordingSettings": "Standard inspelningsinställningar", @@ -1209,7 +1209,7 @@ "Tags": "Etiketter", "TagsValue": "Etiketter: {0}", "TellUsAboutYourself": "Berätta om dig själv", - "ThemeSongs": "Vinjetter", + "ThemeSongs": "Signaturmelodier", "ThemeVideos": "Temavideos", "TheseSettingsAffectSubtitlesOnThisDevice": "Dessa inställningar påverkar undertexter på den här enheten", "ThisWizardWillGuideYou": "Den här guiden hjälper dig att göra de första inställningarna. För att börja var vänlig välj önskat språk.", @@ -1257,7 +1257,7 @@ "Watched": "Sedd", "Wednesday": "Onsdag", "WelcomeToProject": "Välkommen till Jellyfin!", - "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin Server har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", + "WizardCompleted": "Det är allt vi behöver veta just nu. Jellyfin har börjat samla information om ditt mediabibliotek. Kolla in några av våra appar och klicka sedan på Avsluta för att se kontrollpanelen.", "Writer": "Manusförfattare", "XmlDocumentAttributeListHelp": "Dessa attribut tillämpas på rotelementet i alla XML-svar.", "XmlTvKidsCategoriesHelp": "Program med dessa kategorier kommer visas som program för barn. Separerade med '|'.", @@ -1294,12 +1294,12 @@ "ButtonGuide": "Guide", "Blacklist": "Svartlista", "Auto": "Automatisk", - "AuthProviderHelp": "Välj en autentiseringsleverantör för att autentisera denna användares lösenord.", + "AuthProviderHelp": "Välj en autentiserings leverantör som ska användas för att autentisera denna användarens lösenord.", "Ascending": "Stigande", "AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.", "AllowMediaConversionHelp": "Tillåt eller neka tillgång till media konvertings funktionen.", "AllowMediaConversion": "Tillåt media konvertering", - "Alerts": "Notiser", + "Alerts": "Alarm", "HeaderMedia": "Media", "HeaderHome": "Hem", "HeaderFavoriteVideos": "Favoritvideor", @@ -1313,8 +1313,8 @@ "CopyStreamURLSuccess": "URL har kopierats.", "CopyStreamURL": "Kopiera Stream URL", "FetchingData": "Hämtar ytterligare data", - "HeaderFetcherSettings": "Hämtningsinställningar", - "ButtonAddImage": "Lägg till bild", + "HeaderFetcherSettings": "Hämtar inställningar", + "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", "Absolute": "Absolut", @@ -1327,7 +1327,7 @@ "LabelMetadata": "Metadata:", "LabelFormat": "Format:", "LabelFolder": "Mapp:", - "LabelBaseUrl": "Grund URL:", + "LabelBaseUrl": "Bas-RL:", "LabelAuthProvider": "Autentiseringsleverantör:", "LabelAudioCodec": "Ljudkodek:", "LabelAudioChannels": "Ljudkanaler:", From 5ff1eb98012ac411161142fed55715c5e06a3343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85skar=20Andersson?= Date: Sat, 22 Feb 2020 09:56:43 +0000 Subject: [PATCH 207/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 33e8a5d293..0b5c464f82 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -2,13 +2,13 @@ "AccessRestrictedTryAgainLater": "För närvarande är åtkomst begränsad. Försök igen senare.", "Actor": "Skådespelare", "Add": "Lägg till", - "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dom och sen högerklicka eller tappa upp menyn för att lägga till dom.", + "AddItemToCollectionHelp": "Lägg till objekt till samlingar genom att först söka efter dem och sen högerklicka eller tappa upp menyn för att lägga till dem.", "AddToCollection": "Lägg till samling", "AddToPlayQueue": "Lägg till i spelkö", "AddToPlaylist": "Lägg till i spellista", "AddedOnValue": "Tillagd {0}", "AdditionalNotificationServices": "Sök efter fler meddelandetillägg i tilläggskatalogen.", - "AirDate": "Sändningstid", + "AirDate": "Sändningsdatum", "Aired": "Sändes", "Albums": "Album", "All": "Alla", @@ -1354,7 +1354,7 @@ "LabelAudioSampleRate": "Ljudprovfrekvens:", "LabelAudioBitrate": "Ljudbithastighet", "LabelAudioBitDepth": "Ljudbitdjup", - "LabelPlayMethod": "Uppspelningsmetod:", + "LabelPlayMethod": "Spelningsmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", From 6de77f364b22898e0874a00c2c1923f99d6647a4 Mon Sep 17 00:00:00 2001 From: Grasfer Date: Sat, 22 Feb 2020 09:57:25 +0000 Subject: [PATCH 208/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 0b5c464f82..b290023005 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1317,7 +1317,7 @@ "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", - "Absolute": "Absolut", + "Absolute": "Total", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", From c762d32040ac214015ec73535f6d4a3947894e3a Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 09:58:26 +0000 Subject: [PATCH 209/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index b290023005..1a2d034104 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", @@ -40,13 +40,13 @@ "BirthDateValue": "Född: {0}", "BirthLocation": "Födelseort", "BirthPlaceValue": "Födelseort:{0}", - "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguiden{1}.", + "BookLibraryHelp": "Ljud- och textböcker stöds. Läs {0}boknamngivningsguide{1}.", "Books": "Böcker", "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc.) men också vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc) och vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", @@ -1317,7 +1317,7 @@ "ButtonAddImage": "Lägg till Bild", "HeaderStopRecording": "Stoppa inspelning", "HeaderImageOptions": "Bildalternativ", - "Absolute": "Total", + "Absolute": "komplett", "HeaderFavoritePeople": "Favoritmänniskor", "HeaderRestartingServer": "Startar om server", "HeaderStatus": "Status", @@ -1354,7 +1354,7 @@ "LabelAudioSampleRate": "Ljudprovfrekvens:", "LabelAudioBitrate": "Ljudbithastighet", "LabelAudioBitDepth": "Ljudbitdjup", - "LabelPlayMethod": "Spelningsmetod:", + "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Du kan lägga till en egen underkategori här för att få tillgång till servern från en mer unik URL.", From a897460d8b567322d0db7bf2d94843594d3a4162 Mon Sep 17 00:00:00 2001 From: Jonas Lundberg Date: Sat, 22 Feb 2020 09:59:06 +0000 Subject: [PATCH 210/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1a2d034104..2efe8d0fc0 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -46,7 +46,7 @@ "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", - "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (VOBSUB, PGS, SUB/IDX, etc) och vissa ASS/SSA undertexter.", + "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under videokonverteringen, beroende på undertextsformatet. Att undvika inbränning av undertexter kommer att förbättra prestandan på servern. Välj Automatisk för att bränna bild-baserade formats (ex. VOBSUB, PGS, SUB/IDX, etc.) och vissa ASS/SSA undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", From a57e9c4f40728a75454c26972cf0925c24213cbd Mon Sep 17 00:00:00 2001 From: Anders Bengtsson Date: Sat, 22 Feb 2020 09:59:16 +0000 Subject: [PATCH 211/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 2efe8d0fc0..74830694d0 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", + "AllowHWTranscodingHelp": "Tillåt mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From ac02fb2d239b2a732303abf89e2f9011aa2ac448 Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 10:00:00 +0000 Subject: [PATCH 212/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 74830694d0..cc6bc757fa 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -404,7 +404,7 @@ "HeaderSelectTranscodingPath": "Välj plats för mellanlagring vid omkodning", "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för omkodarens mellanlagring. Katalogen måste vara tillgänglig för skrivning.", "HeaderSendMessage": "Skicka meddelande", - "HeaderSeries": "Serie:", + "HeaderSeries": "Serier", "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Serverinställningar", @@ -506,7 +506,7 @@ "LabelCriticRating": "Kritikerbetyg:", "LabelCurrentPassword": "Nuvarande lösenord:", "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", - "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format", + "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", "LabelCustomCss": "Egen CSS:", "LabelCustomCssHelp": "Applicera din egen css till webbgränssnittet.", "LabelCustomDeviceDisplayName": "Visningsnamn:", @@ -532,7 +532,7 @@ "LabelDisplayName": "Visningsnamn:", "LabelDisplayOrder": "Visningsordning:", "LabelDisplaySpecialsWithinSeasons": "Visa specialavsnitt i de säsonger de sändes i", - "LabelDownMixAudioScale": "Höj nivån vid nedmixning av ljud", + "LabelDownMixAudioScale": "Höj nivån vid nedmixning av ljud:", "LabelDownMixAudioScaleHelp": "Höj nivån vid nedmixning. Sätt värdet till 1 för att behålla den ursprungliga nivån.", "LabelDownloadLanguages": "Språk att hämta:", "LabelDropImageHere": "Släpp en bild här, eller klicka för att bläddra.", @@ -555,7 +555,7 @@ "LabelEnableDlnaServerHelp": "Tillåt att UPnP-enheter på ditt nätverk kan se och spela upp innehåll.", "LabelEnableHardwareDecodingFor": "Aktivera hårdvaruomkodning för:", "LabelEnableRealtimeMonitor": "Aktivera bevakning av mappar i realtid", - "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta)", + "LabelEnableRealtimeMonitorHelp": "Förändringar upptäcks omedelbart (i filsystem som stödjer detta).", "LabelEnableSingleImageInDidlLimit": "Begränsa till en inbäddad bild", "LabelEnableSingleImageInDidlLimitHelp": "Visa enheter kommer inte renderas ordentligt om flera bilder bäddas in i Didl.", "LabelEndDate": "Slutdatum:", @@ -569,7 +569,7 @@ "LabelFinish": "Klart", "LabelFont": "Typsnitt:", "LabelForgotPasswordUsernameHelp": "Skriv ditt användarnamn, om du kommer ihåg det.", - "LabelFriendlyName": "Visningsnamn", + "LabelFriendlyName": "Visningsnamn:", "LabelServerNameHelp": "Det här namnet används för att identifiera servern, om det lämnas tomt kommer datorns namn att användas.", "LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar", "LabelGroupMoviesIntoCollectionsHelp": "I filmlistor visas filmer som ingår i en samlingsbox som ett enda objekt.", @@ -618,14 +618,14 @@ "LabelMatchType": "Matchningstyp:", "LabelMaxBackdropsPerItem": "Högsta antal fondbilder per objekt:", "LabelMaxChromecastBitrate": "Strömningskvalitet för Chromecast:", - "LabelMaxParentalRating": "Högsta tillåtna åldersgräns", - "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent", + "LabelMaxParentalRating": "Högsta tillåtna åldersgräns:", + "LabelMaxResumePercentage": "Högsta gräns för återupptagande i procent:", "LabelMaxResumePercentageHelp": "Objekt betraktas som färdigspelade om uppspelningen stoppas efter denna tidpunkt.", "LabelMaxScreenshotsPerItem": "Högsta antal skärmdumpar per objekt:", "LabelMaxStreamingBitrate": "Maximal strömningskvalite:", "LabelMaxStreamingBitrateHelp": "Ange högsta bithastighet för strömning.", - "LabelMessageText": "Meddelandetext", - "LabelMessageTitle": "Meddelandetitel", + "LabelMessageText": "Meddelandetext:", + "LabelMessageTitle": "Meddelandetitel:", "LabelMetadataDownloadLanguage": "Önskat språk:", "LabelMetadataDownloadersHelp": "Aktivera och rangordna dina hämtare baserat på prioritet. Lägre prioriterade hämtare används endast för att fylla i saknad information.", "LabelMetadataPath": "Plats för metadata:", @@ -660,7 +660,7 @@ "LabelNext": "Nästa", "LabelNotificationEnabled": "Aktivera denna meddelandetyp", "LabelNumber": "Nr:", - "LabelNumberOfGuideDays": "Antal dagars tablå att hämta", + "LabelNumberOfGuideDays": "Antal dagars tablå att hämta:", "LabelNumberOfGuideDaysHelp": "Hämtning av en längre periods tablå ger möjlighet att boka inspelningar och se program längre fram i tiden, men ger längre nedladdningstid. \"Auto\" väljer baserat på antalet kanaler.", "LabelOptionalNetworkPath": "(Valfri) Delad nätverksmapp:", "LabelOptionalNetworkPathHelp": "Om denna mappen delas på ditt nätverk, kan den delade sökvägen tillåta Jellyfin-appar på andra enheter att streama mediafiler direkt.", @@ -707,7 +707,7 @@ "LabelRuntimeMinutes": "Speltid (min):", "LabelSaveLocalMetadata": "Spara grafik till mediamapparna", "LabelSaveLocalMetadataHelp": "Om grafik sparas tillsammans med media är de enkelt åtkomliga för redigering.", - "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}", + "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}.", "LabelScreensaver": "Skärmsläckare:", "LabelSeasonNumber": "Säsongsnummer:", "LabelSelectFolderGroups": "Gruppera automatiskt innehåll från dessa mappar i vyer, t ex Filmer, Musik eller TV:", @@ -719,18 +719,18 @@ "LabelSeriesRecordingPath": "Inspelningssökväg för TV-serier (valfri):", "LabelServerHost": "Värd:", "LabelServerHostHelp": "192.168.1.100:8096 eller https://min.server.com", - "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar", + "LabelSimultaneousConnectionLimit": "Begränsning för samtidiga strömmar:", "LabelSkin": "Skal:", "LabelSkipBackLength": "'Hoppa bakåt'-längd:", "LabelSkipForwardLength": "'Hoppa framåt'-längd:", - "LabelSkipIfAudioTrackPresent": "Hoppa över om det förvalda ljudspårets språk är samma som det hämtade.", + "LabelSkipIfAudioTrackPresent": "Hoppa över om det förvalda ljudspårets språk är samma som det hämtade", "LabelSkipIfAudioTrackPresentHelp": "Bocka ur denna för att ge undertexter åt alla videor oavsett ljudspårets språk.", "LabelSkipIfGraphicalSubsPresent": "Hoppa över om videofilen redan innehåller inbäddade undertexter", "LabelSkipIfGraphicalSubsPresentHelp": "Att även ha externa undertexter resulterar i en effektivare uppspelning och minskar risken för omkodning.", "LabelSonyAggregationFlags": "\"Aggregation flags\" för Sony:", "LabelSonyAggregationFlagsHelp": "Anger innehållet i elementet aggregationFlags i namnutrymmet urn:schemas-sonycom:av.", "LabelSortBy": "Sortera efter:", - "LabelSortOrder": "Sortering", + "LabelSortOrder": "Sortering:", "LabelSortTitle": "Sorteringstitel:", "LabelSoundEffects": "Ljudeffekter:", "LabelSource": "Källa:", @@ -745,7 +745,7 @@ "LabelSubtitles": "Undertexter:", "LabelSupportedMediaTypes": "Mediaformat som stöds:", "LabelTVHomeScreen": "Hemskärm i TV-läge:", - "LabelTag": "Etikett", + "LabelTag": "Etikett:", "LabelTagline": "Slogan:", "LabelTextBackgroundColor": "Bakgrundsfärg för text:", "LabelTextColor": "Textfärg:", @@ -754,7 +754,7 @@ "LabelTime": "Tid:", "LabelTimeLimitHours": "Tidsbegränsning (timmar):", "LabelTitle": "Titel:", - "LabelTrackNumber": "Spår nr", + "LabelTrackNumber": "Spår nr:", "LabelTranscodingAudioCodec": "Ljudkodning:", "LabelTranscodingContainer": "Behållare:", "LabelTranscodingTempPathHelp": "Ange en egen sökväg där omkodningar skall sparas för klienter. Lämna blankt för att använda förvald plats.", @@ -799,7 +799,7 @@ "MarkUnplayed": "Markera som ospelad", "MaxParentalRatingHelp": "Innehåll med högre gräns visas ej för den här användaren.", "MediaInfoAnamorphic": "Anamorfisk", - "MediaInfoAspectRatio": "Bildförhållande:", + "MediaInfoAspectRatio": "Bildförhållande", "MediaInfoBitDepth": "Färgdjup", "MediaInfoBitrate": "Bithastighet", "MediaInfoChannels": "Kanaler", @@ -919,7 +919,7 @@ "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktas som delade tills en användare börjar kontrollera den.", "OptionAllowSyncTranscoding": "Tillåt nedladdning som kräver omkodning", "OptionAllowUserToManageServer": "Tillåt denna användare att administrera servern", - "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning.", + "OptionAllowVideoPlaybackRemuxing": "Tillåt videouppspelning som kräver konvertering utan omkodning", "OptionAllowVideoPlaybackTranscoding": "Tillåt videouppspelning som kräver omkodning", "OptionAscending": "Stigande", "OptionAutomaticallyGroupSeries": "Slå ihop serier automatiskt som ligger utspritt under flera kataloger", @@ -975,7 +975,7 @@ "OptionExtractChapterImage": "Aktivera extrahering av kapitelbilder", "OptionFavorite": "Favoriter", "OptionFriday": "Fredag", - "OptionHasSpecialFeatures": "Extramaterial:", + "OptionHasSpecialFeatures": "Extramaterial", "OptionHasSubtitles": "Undertexter", "OptionHasThemeSong": "Ledmotiv", "OptionHasThemeVideo": "Temavideo", @@ -1082,7 +1082,7 @@ "Record": "Spela in", "RecordSeries": "Spela in serie", "RecordingCancelled": "Inspelning avbruten.", - "RecordingScheduled": "Inspelning schemalagd", + "RecordingScheduled": "Inspelning schemalagd.", "Recordings": "Inspelningar", "Refresh": "Uppdatera", "RefreshDialogHelp": "Metadata uppdateras baserat på inställningar och internettjänster som har aktiverats under Jellyfin servers kontrollpanel.", @@ -1352,8 +1352,8 @@ "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", "LabelDroppedFrames": "Tappade ramar:", "LabelAudioSampleRate": "Ljudprovfrekvens:", - "LabelAudioBitrate": "Ljudbithastighet", - "LabelAudioBitDepth": "Ljudbitdjup", + "LabelAudioBitrate": "Ljudbithastighet:", + "LabelAudioBitDepth": "Ljudbitdjup:", "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", From 519ca6ba0b3542a15431eb7bae2070ee4d541459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85skar=20Andersson?= Date: Sat, 22 Feb 2020 10:06:36 +0000 Subject: [PATCH 213/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index cc6bc757fa..1d2a223cdb 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Tillåt mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på servern.", + "AllowHWTranscodingHelp": "Låt TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From 598402d9539a3fb285dd8dacf4527647e02a24fa Mon Sep 17 00:00:00 2001 From: h1nk <12993584+h1nk@users.noreply.github.com> Date: Sat, 22 Feb 2020 11:47:03 -0500 Subject: [PATCH 214/260] Add missing final newlines Used this one-liner: https://unix.stackexchange.com/a/161853 --- .gitignore | 2 +- .stylelintrc | 2 +- src/availableplugins.html | 2 +- src/components/alert.js | 2 +- src/components/alphanumericshortcuts/alphanumericshortcuts.js | 2 +- src/components/chromecast/chromecasthelpers.js | 2 +- src/components/confirm/nativeconfirm.js | 2 +- src/components/dialog/dialog.template.html | 2 +- src/components/dialogHelper/dialogHelper.js | 2 +- src/components/dom.js | 2 +- .../emby-itemrefreshindicator/emby-itemrefreshindicator.js | 2 +- src/components/emby-itemscontainer/emby-itemscontainer.js | 2 +- src/components/emby-scroller/emby-scroller.js | 2 +- src/components/emby-tabs/emby-tabs.js | 2 +- src/components/fetchhelper.js | 2 +- src/components/filedownloader.js | 2 +- src/components/filesystem.js | 2 +- src/components/filtermenu/filtermenu.template.html | 2 +- src/components/guide/guide-settings.js | 2 +- src/components/headroom/headroom.js | 2 +- .../homescreensettings/homescreensettings.template.html | 2 +- src/components/htmlMediaHelper.js | 2 +- src/components/images/imageFetcher.js | 2 +- src/components/images/imageLoader.js | 2 +- src/components/itemsrefresher.js | 2 +- src/components/lazyloader/lazyloader-intersectionobserver.js | 2 +- src/components/lazyloader/lazyloader-scroll.js | 2 +- .../libraryoptionseditor/libraryoptionseditor.template.html | 2 +- src/components/loading/loading.js | 2 +- src/components/maintabsmanager.js | 2 +- src/components/metadataeditor/personeditor.js | 2 +- src/components/multidownload.js | 2 +- src/components/packagemanager.js | 2 +- src/components/photoplayer/plugin.js | 2 +- src/components/playback/experimentalwarnings.js | 2 +- src/components/playback/playaccessvalidation.js | 2 +- src/components/playback/playbackorientation.js | 2 +- src/components/playback/playmethodhelper.js | 2 +- src/components/playback/playqueuemanager.js | 2 +- src/components/playback/remotecontrolautoplay.js | 2 +- src/components/playbacksettings/playbacksettings.js | 2 +- src/components/playbacksettings/playbacksettings.template.html | 2 +- src/components/playmenu.js | 2 +- src/components/pluginManager.js | 2 +- src/components/prompt/nativeprompt.js | 2 +- src/components/prompt/prompt.js | 2 +- src/components/qualityoptions.js | 2 +- src/components/recordingcreator/recordingcreator.js | 2 +- src/components/recordingcreator/recordingeditor.js | 2 +- src/components/recordingcreator/recordinghelper.js | 2 +- src/components/recordingcreator/seriesrecordingeditor.js | 2 +- src/components/sanitizefilename.js | 2 +- src/components/scroller.js | 2 +- src/components/scrollhelper.js | 2 +- src/components/search/searchfields.js | 2 +- src/components/search/searchresults.template.html | 2 +- src/components/serverNotifications/gamepadtokey.js | 2 +- src/components/serverNotifications/mouseManager.js | 2 +- src/components/serverRestartDialog.js | 2 +- src/components/serviceworker/notifications.js | 2 +- src/components/sessionplayer.js | 2 +- src/components/shell.js | 2 +- src/components/shortcuts.js | 2 +- src/components/slideshow/slideshow.js | 2 +- src/components/sortmenu/sortmenu.template.html | 2 +- src/components/subtitlesettings/subtitleappearancehelper.js | 2 +- src/components/subtitlesettings/subtitlesettings.js | 2 +- src/components/subtitlesettings/subtitlesettings.template.html | 2 +- src/components/subtitlesync/subtitlesync.template.html | 2 +- src/components/tabbedview/tabbedview.js | 2 +- src/components/thememediaplayer.js | 2 +- src/components/toast/toast.js | 2 +- src/components/touchhelper.js | 2 +- src/components/tvproviders/schedulesdirect.template.html | 2 +- src/components/upnextdialog/upnextdialog.js | 2 +- src/components/userdatabuttons/emby-playstatebutton.js | 2 +- src/components/viewsettings/viewsettings.template.html | 2 +- src/components/visibleinviewport.js | 2 +- src/components/youtubeplayer/plugin.js | 2 +- src/controllers/dashboard/logs.js | 2 +- src/controllers/librarydisplay.js | 2 +- src/controllers/metadataimagespage.js | 2 +- src/elements/emby-collapse/emby-collapse.js | 2 +- src/elements/emby-input/emby-input.js | 2 +- src/elements/emby-progressring/emby-progressring.js | 2 +- src/elements/emby-progressring/emby-progressring.template.html | 2 +- src/elements/emby-radio/emby-radio.js | 2 +- src/elements/emby-textarea/emby-textarea.js | 2 +- src/elements/emby-toggle/emby-toggle.js | 2 +- src/installedplugins.html | 2 +- src/legacy/dashboard.js | 2 +- src/legacy/fnchecked.js | 2 +- src/legacy/selectmenu.js | 2 +- src/libraries/apiclient/apiclient.js | 2 +- src/libraries/apiclient/appStorage.js | 2 +- src/libraries/apiclient/credentialprovider.js | 2 +- src/libraries/apiclient/events.js | 2 +- src/libraries/apiclient/package.json | 2 +- src/libraries/apiclient/sync/filerepository.js | 2 +- src/libraries/apiclient/sync/itemrepository.js | 2 +- src/libraries/apiclient/sync/localsync.js | 2 +- src/libraries/apiclient/sync/mediasync.js | 2 +- src/libraries/apiclient/sync/multiserversync.js | 2 +- src/libraries/apiclient/sync/serversync.js | 2 +- src/libraries/apiclient/sync/transfermanager.js | 2 +- src/libraries/apiclient/sync/useractionrepository.js | 2 +- src/libraries/pagejs/page.js | 2 +- src/libraries/query-string/index.js | 2 +- src/libraries/query-string/test.js | 2 +- src/library.html | 2 +- src/livetvsettings.html | 2 +- src/log.html | 2 +- src/metadataimages.html | 2 +- src/metadatanfo.html | 2 +- src/mypreferencesdisplay.html | 2 +- src/mypreferenceshome.html | 2 +- src/notificationsetting.html | 2 +- src/playbackconfiguration.html | 2 +- src/robots.txt | 2 +- src/scripts/browser.js | 2 +- src/scripts/datetime.js | 2 +- src/serviceworker.js | 2 +- 122 files changed, 122 insertions(+), 122 deletions(-) diff --git a/.gitignore b/.gitignore index 2e12adf220..10b2d24f42 100644 --- a/.gitignore +++ b/.gitignore @@ -575,4 +575,4 @@ healthchecksdb # End of https://www.gitignore.io/api/node,rider,macos,linux,windows,visualstudio,visualstudiocode # dist for webpack output -dist \ No newline at end of file +dist diff --git a/.stylelintrc b/.stylelintrc index 93e3592099..a13acf428d 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -140,4 +140,4 @@ "value-list-comma-space-before": "never", "value-list-max-empty-lines": 0, } -} \ No newline at end of file +} diff --git a/src/availableplugins.html b/src/availableplugins.html index ea1147fbfd..6c9b89c26d 100644 --- a/src/availableplugins.html +++ b/src/availableplugins.html @@ -5,4 +5,4 @@
-
\ No newline at end of file +
diff --git a/src/components/alert.js b/src/components/alert.js index 8a4dc11c20..8a37ac1845 100644 --- a/src/components/alert.js +++ b/src/components/alert.js @@ -42,4 +42,4 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) return Promise.resolve(); }; -}); \ No newline at end of file +}); diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 03d0118cbe..0c62add1e1 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -127,4 +127,4 @@ define(['dom', 'focusManager'], function (dom, focusManager) { }; return AlphaNumericShortcuts; -}); \ No newline at end of file +}); diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 9d6f811cb1..f85bf4d307 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -230,4 +230,4 @@ define(['events'], function (events) { return { getServerAddress: getServerAddress }; -}); \ No newline at end of file +}); diff --git a/src/components/confirm/nativeconfirm.js b/src/components/confirm/nativeconfirm.js index fd586ad1d5..7d72bc5eaf 100644 --- a/src/components/confirm/nativeconfirm.js +++ b/src/components/confirm/nativeconfirm.js @@ -24,4 +24,4 @@ define([], function () { return Promise.reject(); } }; -}); \ No newline at end of file +}); diff --git a/src/components/dialog/dialog.template.html b/src/components/dialog/dialog.template.html index eae210d14e..bee0ef7f73 100644 --- a/src/components/dialog/dialog.template.html +++ b/src/components/dialog/dialog.template.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index bddd839760..4796f880fb 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -481,4 +481,4 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager', globalOnOpenCallback = val; } }; -}); \ No newline at end of file +}); diff --git a/src/components/dom.js b/src/components/dom.js index da03b87428..fb2b377a19 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -178,4 +178,4 @@ define([], function () { whichAnimationEvent: whichAnimationEvent, whichAnimationCancelEvent: whichAnimationCancelEvent }; -}); \ No newline at end of file +}); diff --git a/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js b/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js index be50abeb87..9864dbbb67 100644 --- a/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js +++ b/src/components/emby-itemrefreshindicator/emby-itemrefreshindicator.js @@ -74,4 +74,4 @@ define(['emby-progressring', 'dom', 'serverNotifications', 'events', 'registerEl prototype: EmbyItemRefreshIndicatorPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-itemscontainer/emby-itemscontainer.js b/src/components/emby-itemscontainer/emby-itemscontainer.js index 7cfb3e4a4a..fdb565b6e9 100644 --- a/src/components/emby-itemscontainer/emby-itemscontainer.js +++ b/src/components/emby-itemscontainer/emby-itemscontainer.js @@ -479,4 +479,4 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', prototype: ItemsContainerPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-scroller/emby-scroller.js b/src/components/emby-scroller/emby-scroller.js index f943047f52..cb5bae818f 100644 --- a/src/components/emby-scroller/emby-scroller.js +++ b/src/components/emby-scroller/emby-scroller.js @@ -206,4 +206,4 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro prototype: ScrollerPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-tabs/emby-tabs.js b/src/components/emby-tabs/emby-tabs.js index 9fedf0bfe9..fa5979fa4c 100644 --- a/src/components/emby-tabs/emby-tabs.js +++ b/src/components/emby-tabs/emby-tabs.js @@ -338,4 +338,4 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register prototype: EmbyTabs, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index bb7f21e75e..6a77d10560 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -129,4 +129,4 @@ define([], function () { getFetchPromise: getFetchPromise, ajax: ajax }; -}); \ No newline at end of file +}); diff --git a/src/components/filedownloader.js b/src/components/filedownloader.js index c5810b460e..08b6176a02 100644 --- a/src/components/filedownloader.js +++ b/src/components/filedownloader.js @@ -15,4 +15,4 @@ define(['multi-download'], function (multiDownload) { } } }; -}); \ No newline at end of file +}); diff --git a/src/components/filesystem.js b/src/components/filesystem.js index 3ab759b28a..aac697415e 100644 --- a/src/components/filesystem.js +++ b/src/components/filesystem.js @@ -15,4 +15,4 @@ define([], function () { return Promise.reject(); } }; -}); \ No newline at end of file +}); diff --git a/src/components/filtermenu/filtermenu.template.html b/src/components/filtermenu/filtermenu.template.html index 1cadab2d1f..1a5545baa3 100644 --- a/src/components/filtermenu/filtermenu.template.html +++ b/src/components/filtermenu/filtermenu.template.html @@ -105,4 +105,4 @@
-
\ No newline at end of file +
diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 9ee43be9f1..b31a3d1086 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -171,4 +171,4 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/headroom/headroom.js b/src/components/headroom/headroom.js index 9c058a8e82..3c0ada3ce9 100644 --- a/src/components/headroom/headroom.js +++ b/src/components/headroom/headroom.js @@ -340,4 +340,4 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay }; return Headroom; -}); \ No newline at end of file +}); diff --git a/src/components/homescreensettings/homescreensettings.template.html b/src/components/homescreensettings/homescreensettings.template.html index 1ed2ec1b9c..d5bae685b8 100644 --- a/src/components/homescreensettings/homescreensettings.template.html +++ b/src/components/homescreensettings/homescreensettings.template.html @@ -129,4 +129,4 @@ - \ No newline at end of file + diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 86f05dabfa..62c058aed5 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -463,4 +463,4 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve getCrossOriginValue: getCrossOriginValue, getBufferedRanges: getBufferedRanges }; -}); \ No newline at end of file +}); diff --git a/src/components/images/imageFetcher.js b/src/components/images/imageFetcher.js index 54d3ef7502..1e13cebc77 100644 --- a/src/components/images/imageFetcher.js +++ b/src/components/images/imageFetcher.js @@ -35,4 +35,4 @@ define(['dom'], function (dom) { loadImage: loadImage }; -}); \ No newline at end of file +}); diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index 80fcbbd3f4..764be06fd1 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -122,4 +122,4 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings', self.getPrimaryImageAspectRatio = getPrimaryImageAspectRatio; return self; -}); \ No newline at end of file +}); diff --git a/src/components/itemsrefresher.js b/src/components/itemsrefresher.js index 46956d2df5..6da74eef80 100644 --- a/src/components/itemsrefresher.js +++ b/src/components/itemsrefresher.js @@ -278,4 +278,4 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM }; return ItemsRefresher; -}); \ No newline at end of file +}); diff --git a/src/components/lazyloader/lazyloader-intersectionobserver.js b/src/components/lazyloader/lazyloader-intersectionobserver.js index 1935f65a30..5f83742601 100644 --- a/src/components/lazyloader/lazyloader-intersectionobserver.js +++ b/src/components/lazyloader/lazyloader-intersectionobserver.js @@ -100,4 +100,4 @@ define(['require', 'browser'], function (require, browser) { }; return LazyLoader; -}); \ No newline at end of file +}); diff --git a/src/components/lazyloader/lazyloader-scroll.js b/src/components/lazyloader/lazyloader-scroll.js index 318f6dbea0..d5120146ce 100644 --- a/src/components/lazyloader/lazyloader-scroll.js +++ b/src/components/lazyloader/lazyloader-scroll.js @@ -186,4 +186,4 @@ define(['visibleinviewport', 'dom', 'browser'], function (visibleinviewport, dom }; return LazyLoader; -}); \ No newline at end of file +}); diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index ebfdacaa19..377488f44f 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -147,4 +147,4 @@
${SaveSubtitlesIntoMediaFoldersHelp}
-
\ No newline at end of file +
diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index 510f311217..d6c00347c7 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -81,4 +81,4 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio } } }; -}); \ No newline at end of file +}); diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 64e25b4870..2571470015 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -264,4 +264,4 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, getTabsElement: getTabsElement, selectedTabIndex: selectedTabIndex }; -}); \ No newline at end of file +}); diff --git a/src/components/metadataeditor/personeditor.js b/src/components/metadataeditor/personeditor.js index 7883cfca1b..9fb6fdec6f 100644 --- a/src/components/metadataeditor/personeditor.js +++ b/src/components/metadataeditor/personeditor.js @@ -96,4 +96,4 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-but return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/multidownload.js b/src/components/multidownload.js index a1881b8db9..d11e52de14 100644 --- a/src/components/multidownload.js +++ b/src/components/multidownload.js @@ -63,4 +63,4 @@ define(['browser'], function (browser) { download(url); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/packagemanager.js b/src/components/packagemanager.js index 03ed1006c1..46f4704522 100644 --- a/src/components/packagemanager.js +++ b/src/components/packagemanager.js @@ -149,4 +149,4 @@ define(['appSettings', 'pluginManager'], function (appSettings, pluginManager) { }; return new PackageManager(); -}); \ No newline at end of file +}); diff --git a/src/components/photoplayer/plugin.js b/src/components/photoplayer/plugin.js index 6629fbfb0f..4ebdbbd6d2 100644 --- a/src/components/photoplayer/plugin.js +++ b/src/components/photoplayer/plugin.js @@ -43,4 +43,4 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; return PhotoPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/playback/experimentalwarnings.js b/src/components/playback/experimentalwarnings.js index 17b1af0257..2d1ef53c19 100644 --- a/src/components/playback/experimentalwarnings.js +++ b/src/components/playback/experimentalwarnings.js @@ -94,4 +94,4 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function ( }; return ExpirementalPlaybackWarnings; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playaccessvalidation.js b/src/components/playback/playaccessvalidation.js index 35d8314fc1..46a6f7546c 100644 --- a/src/components/playback/playaccessvalidation.js +++ b/src/components/playback/playaccessvalidation.js @@ -47,4 +47,4 @@ define(['connectionManager', 'globalize'], function (connectionManager, globaliz }; return PlayAccessValidation; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 3253d8acdf..e7ffc52d79 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -52,4 +52,4 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager } } }); -}); \ No newline at end of file +}); diff --git a/src/components/playback/playmethodhelper.js b/src/components/playback/playmethodhelper.js index 4e85f87093..75af04035c 100644 --- a/src/components/playback/playmethodhelper.js +++ b/src/components/playback/playmethodhelper.js @@ -21,4 +21,4 @@ define([], function () { return { getDisplayPlayMethod: getDisplayPlayMethod }; -}); \ No newline at end of file +}); diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index ed2076a814..429c4027f1 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -230,4 +230,4 @@ define([], function () { }; return PlayQueueManager; -}); \ No newline at end of file +}); diff --git a/src/components/playback/remotecontrolautoplay.js b/src/components/playback/remotecontrolautoplay.js index d8316b87ef..214a9546d2 100644 --- a/src/components/playback/remotecontrolautoplay.js +++ b/src/components/playback/remotecontrolautoplay.js @@ -44,4 +44,4 @@ define(['events', 'playbackManager'], function (events, playbackManager) { transferPlayback(oldPlayer, newPlayer); }); -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.js b/src/components/playbacksettings/playbacksettings.js index 69915b18bf..d249b5b989 100644 --- a/src/components/playbacksettings/playbacksettings.js +++ b/src/components/playbacksettings/playbacksettings.js @@ -342,4 +342,4 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality }; return PlaybackSettings; -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.template.html b/src/components/playbacksettings/playbacksettings.template.html index 06cfe3f3d6..0c8b726a40 100644 --- a/src/components/playbacksettings/playbacksettings.template.html +++ b/src/components/playbacksettings/playbacksettings.template.html @@ -86,4 +86,4 @@ - \ No newline at end of file + diff --git a/src/components/playmenu.js b/src/components/playmenu.js index 7225ff94e1..a410da6985 100644 --- a/src/components/playmenu.js +++ b/src/components/playmenu.js @@ -72,4 +72,4 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings' return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index ec65e63e65..93afa84daa 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -146,4 +146,4 @@ define(['events'], function (events) { }; return new PluginManager(); -}); \ No newline at end of file +}); diff --git a/src/components/prompt/nativeprompt.js b/src/components/prompt/nativeprompt.js index b0634bd428..ba7f1a9a49 100644 --- a/src/components/prompt/nativeprompt.js +++ b/src/components/prompt/nativeprompt.js @@ -25,4 +25,4 @@ define([], function () { return Promise.reject(result); } }; -}); \ No newline at end of file +}); diff --git a/src/components/prompt/prompt.js b/src/components/prompt/prompt.js index 6e8e019c83..8f4f839eaa 100644 --- a/src/components/prompt/prompt.js +++ b/src/components/prompt/prompt.js @@ -101,4 +101,4 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're }); }); }; -}); \ No newline at end of file +}); diff --git a/src/components/qualityoptions.js b/src/components/qualityoptions.js index e46a690e8a..5ad69cb790 100644 --- a/src/components/qualityoptions.js +++ b/src/components/qualityoptions.js @@ -160,4 +160,4 @@ define(['globalize'], function (globalize) { getVideoQualityOptions: getVideoQualityOptions, getAudioQualityOptions: getAudioQualityOptions }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index 614d483b21..a51fac4305 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -202,4 +202,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 3a1d4ba943..86c731ad26 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -159,4 +159,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c return { show: showEditor }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 4bfd316c73..a071cb2032 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -214,4 +214,4 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi cancelTimerWithConfirmation: cancelTimerWithConfirmation, cancelSeriesTimerWithConfirmation: cancelSeriesTimerWithConfirmation }; -}); \ No newline at end of file +}); diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index 73a98cf5e7..62accd5b63 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -267,4 +267,4 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c show: showEditor, embed: embed }; -}); \ No newline at end of file +}); diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index d422a95533..9bcc99e3a1 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -92,4 +92,4 @@ define([], function () { return truncate(sanitized, 255); } }; -}); \ No newline at end of file +}); diff --git a/src/components/scroller.js b/src/components/scroller.js index 65f33b8e8d..e3f9a956d8 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -928,4 +928,4 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; return scrollerFactory; -}); \ No newline at end of file +}); diff --git a/src/components/scrollhelper.js b/src/components/scrollhelper.js index 6280dc5062..1a36594026 100644 --- a/src/components/scrollhelper.js +++ b/src/components/scrollhelper.js @@ -134,4 +134,4 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) { toCenter: toCenter, toStart: toStart }; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchfields.js b/src/components/search/searchfields.js index 912acfc41c..53ab187a81 100644 --- a/src/components/search/searchfields.js +++ b/src/components/search/searchfields.js @@ -121,4 +121,4 @@ define(['layoutManager', 'globalize', 'require', 'events', 'browser', 'alphaPick }; return SearchFields; -}); \ No newline at end of file +}); diff --git a/src/components/search/searchresults.template.html b/src/components/search/searchresults.template.html index a9fa232fbc..33c9389190 100644 --- a/src/components/search/searchresults.template.html +++ b/src/components/search/searchresults.template.html @@ -142,4 +142,4 @@
-
\ No newline at end of file +
diff --git a/src/components/serverNotifications/gamepadtokey.js b/src/components/serverNotifications/gamepadtokey.js index abf3ddb38b..7705aed71f 100644 --- a/src/components/serverNotifications/gamepadtokey.js +++ b/src/components/serverNotifications/gamepadtokey.js @@ -369,4 +369,4 @@ require(['apphost'], function (appHost) { window.navigator.gamepadInputEmulation = "gamepad"; } -}); \ No newline at end of file +}); diff --git a/src/components/serverNotifications/mouseManager.js b/src/components/serverNotifications/mouseManager.js index ffea3b01ff..78057c0bfe 100644 --- a/src/components/serverNotifications/mouseManager.js +++ b/src/components/serverNotifications/mouseManager.js @@ -166,4 +166,4 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd events.on(layoutManager, 'modechange', initMouse); return self; -}); \ No newline at end of file +}); diff --git a/src/components/serverRestartDialog.js b/src/components/serverRestartDialog.js index 4c20183b2a..ef012fe44a 100644 --- a/src/components/serverRestartDialog.js +++ b/src/components/serverRestartDialog.js @@ -155,4 +155,4 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp }; return ServerRestartDialog; -}); \ No newline at end of file +}); diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 9c5be840bf..dbb0844045 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -41,4 +41,4 @@ event.waitUntil(executeAction(action, data, serverId)); }, false); -})(); \ No newline at end of file +})(); diff --git a/src/components/sessionplayer.js b/src/components/sessionplayer.js index adcaab2674..bbb22a9654 100644 --- a/src/components/sessionplayer.js +++ b/src/components/sessionplayer.js @@ -549,4 +549,4 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] }; return SessionPlayer; -}); \ No newline at end of file +}); diff --git a/src/components/shell.js b/src/components/shell.js index 534a57b027..f82f5eea3c 100644 --- a/src/components/shell.js +++ b/src/components/shell.js @@ -27,4 +27,4 @@ define([], function () { } } }; -}); \ No newline at end of file +}); diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index 9d2b1847e5..ab606ab1d2 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -425,4 +425,4 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl getShortcutAttributesHtml: getShortcutAttributesHtml }; -}); \ No newline at end of file +}); diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 115de54b25..f31ac091b5 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -641,4 +641,4 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } }; }; -}); \ No newline at end of file +}); diff --git a/src/components/sortmenu/sortmenu.template.html b/src/components/sortmenu/sortmenu.template.html index 3f523c2959..da7da98371 100644 --- a/src/components/sortmenu/sortmenu.template.html +++ b/src/components/sortmenu/sortmenu.template.html @@ -19,4 +19,4 @@
-
\ No newline at end of file +
diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 8a40bd134b..fdc64f0dfa 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -156,4 +156,4 @@ define([], function () { getStyles: getStyles, applyStyles: applyStyles }; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 669b26d271..69de536e4c 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -219,4 +219,4 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi }; return SubtitleSettings; -}); \ No newline at end of file +}); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index a6ec43d8fa..cc2788397f 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -91,4 +91,4 @@ - \ No newline at end of file + diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 2aa6b10450..999e4d0bb9 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index 33f1c6e6cc..a67e8e0fa1 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -120,4 +120,4 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( }; return TabbedView; -}); \ No newline at end of file +}); diff --git a/src/components/thememediaplayer.js b/src/components/thememediaplayer.js index a8298fad37..94012ba823 100644 --- a/src/components/thememediaplayer.js +++ b/src/components/thememediaplayer.js @@ -108,4 +108,4 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playb // } //}); -}); \ No newline at end of file +}); diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index d8ac404764..22eb53396c 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -39,4 +39,4 @@ define(['css!./toast'], function () { }, 300); }; -}); \ No newline at end of file +}); diff --git a/src/components/touchhelper.js b/src/components/touchhelper.js index 0f6d34aace..97455fc969 100644 --- a/src/components/touchhelper.js +++ b/src/components/touchhelper.js @@ -168,4 +168,4 @@ define(['dom', 'events'], function (dom, events) { }; return TouchHelper; -}); \ No newline at end of file +}); diff --git a/src/components/tvproviders/schedulesdirect.template.html b/src/components/tvproviders/schedulesdirect.template.html index da593ef569..3cfba06fe1 100644 --- a/src/components/tvproviders/schedulesdirect.template.html +++ b/src/components/tvproviders/schedulesdirect.template.html @@ -70,4 +70,4 @@
-
\ No newline at end of file +
diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 80e7d807bd..05e51cdb2c 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -332,4 +332,4 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l }; return UpNextDialog; -}); \ No newline at end of file +}); diff --git a/src/components/userdatabuttons/emby-playstatebutton.js b/src/components/userdatabuttons/emby-playstatebutton.js index eaed128933..4c3e5b6b62 100644 --- a/src/components/userdatabuttons/emby-playstatebutton.js +++ b/src/components/userdatabuttons/emby-playstatebutton.js @@ -156,4 +156,4 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby prototype: EmbyPlaystateButtonPrototype, extends: 'button' }); -}); \ No newline at end of file +}); diff --git a/src/components/viewsettings/viewsettings.template.html b/src/components/viewsettings/viewsettings.template.html index 07cbc35e9f..8aea2fac26 100644 --- a/src/components/viewsettings/viewsettings.template.html +++ b/src/components/viewsettings/viewsettings.template.html @@ -38,4 +38,4 @@
-
\ No newline at end of file +
diff --git a/src/components/visibleinviewport.js b/src/components/visibleinviewport.js index 3768740175..a48dbd3a1d 100644 --- a/src/components/visibleinviewport.js +++ b/src/components/visibleinviewport.js @@ -38,4 +38,4 @@ define(['dom'], function (dom) { } return visibleInViewport; -}); \ No newline at end of file +}); diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index a2478cd3f4..df04fb850e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -405,4 +405,4 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi }; return YoutubePlayer; -}); \ No newline at end of file +}); diff --git a/src/controllers/dashboard/logs.js b/src/controllers/dashboard/logs.js index f5866f344c..144e21fc92 100644 --- a/src/controllers/dashboard/logs.js +++ b/src/controllers/dashboard/logs.js @@ -30,4 +30,4 @@ define(["datetime", "loading", "apphost", "listViewStyle", "emby-button", "flexS }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/librarydisplay.js b/src/controllers/librarydisplay.js index 10a0eb945b..55986a4b7d 100644 --- a/src/controllers/librarydisplay.js +++ b/src/controllers/librarydisplay.js @@ -68,4 +68,4 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", " }); }); } -}); \ No newline at end of file +}); diff --git a/src/controllers/metadataimagespage.js b/src/controllers/metadataimagespage.js index 3a6656e4b6..a4932e9bb0 100644 --- a/src/controllers/metadataimagespage.js +++ b/src/controllers/metadataimagespage.js @@ -61,4 +61,4 @@ define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($, }).on("pageshow", "#metadataImagesConfigurationPage", function() { libraryMenu.setTabs("metadata", 2, getTabs), loading.show(), loadPage(this) }) -}); \ No newline at end of file +}); diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index 764e525a25..600af55516 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -97,4 +97,4 @@ define(['browser', 'css!./emby-collapse', 'registerElement', 'emby-button'], fun prototype: EmbyButtonPrototype, extends: 'div' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-input/emby-input.js b/src/elements/emby-input/emby-input.js index 7d2ea63a0d..03ba2b93aa 100644 --- a/src/elements/emby-input/emby-input.js +++ b/src/elements/emby-input/emby-input.js @@ -123,4 +123,4 @@ define(['layoutManager', 'browser', 'dom', 'css!./emby-input', 'registerElement' prototype: EmbyInputPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-progressring/emby-progressring.js b/src/elements/emby-progressring/emby-progressring.js index 80c5458528..edc635947c 100644 --- a/src/elements/emby-progressring/emby-progressring.js +++ b/src/elements/emby-progressring/emby-progressring.js @@ -98,4 +98,4 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ }); return EmbyProgressRing; -}); \ No newline at end of file +}); diff --git a/src/elements/emby-progressring/emby-progressring.template.html b/src/elements/emby-progressring/emby-progressring.template.html index bebefe5f51..a1be620b33 100644 --- a/src/elements/emby-progressring/emby-progressring.template.html +++ b/src/elements/emby-progressring/emby-progressring.template.html @@ -20,4 +20,4 @@
-
\ No newline at end of file +
diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 3c72f91521..9b91591050 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -45,4 +45,4 @@ define(['css!./emby-radio', 'registerElement'], function () { prototype: EmbyRadioPrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-textarea/emby-textarea.js b/src/elements/emby-textarea/emby-textarea.js index c500db6e1f..e0ce77aa51 100644 --- a/src/elements/emby-textarea/emby-textarea.js +++ b/src/elements/emby-textarea/emby-textarea.js @@ -135,4 +135,4 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e prototype: EmbyTextAreaPrototype, extends: 'textarea' }); -}); \ No newline at end of file +}); diff --git a/src/elements/emby-toggle/emby-toggle.js b/src/elements/emby-toggle/emby-toggle.js index 08597164b2..bd7eba3078 100644 --- a/src/elements/emby-toggle/emby-toggle.js +++ b/src/elements/emby-toggle/emby-toggle.js @@ -47,4 +47,4 @@ define(['css!./emby-toggle', 'registerElement'], function () { prototype: EmbyTogglePrototype, extends: 'input' }); -}); \ No newline at end of file +}); diff --git a/src/installedplugins.html b/src/installedplugins.html index 633df2df29..d2b11592e9 100644 --- a/src/installedplugins.html +++ b/src/installedplugins.html @@ -4,4 +4,4 @@
-
\ No newline at end of file +
diff --git a/src/legacy/dashboard.js b/src/legacy/dashboard.js index 11ba3177b7..0268806f21 100644 --- a/src/legacy/dashboard.js +++ b/src/legacy/dashboard.js @@ -17,4 +17,4 @@ Dashboard.confirm = function(message, title, callback) { require(["loading"], function(loading) { loading.hide() }) -}; \ No newline at end of file +}; diff --git a/src/legacy/fnchecked.js b/src/legacy/fnchecked.js index 120f6e148a..4f24990f46 100644 --- a/src/legacy/fnchecked.js +++ b/src/legacy/fnchecked.js @@ -7,4 +7,4 @@ define(["jQuery"], function($) { }, $.fn.checkboxradio = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/legacy/selectmenu.js b/src/legacy/selectmenu.js index bc211b9664..ba8c688511 100644 --- a/src/legacy/selectmenu.js +++ b/src/legacy/selectmenu.js @@ -3,4 +3,4 @@ define(["jQuery"], function($) { $.fn.selectmenu = function() { return this } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/apiclient.js b/src/libraries/apiclient/apiclient.js index 06d9cf0861..d848358c3e 100644 --- a/src/libraries/apiclient/apiclient.js +++ b/src/libraries/apiclient/apiclient.js @@ -233,4 +233,4 @@ define(["libraries/apiclient/apiclientcore", "localassetmanager"], function(ApiC } return ApiClient.prototype.getItemDownloadUrl.call(this, itemId) }, ApiClientEx -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/appStorage.js b/src/libraries/apiclient/appStorage.js index 6083bb4953..a8f2eb5035 100644 --- a/src/libraries/apiclient/appStorage.js +++ b/src/libraries/apiclient/appStorage.js @@ -50,4 +50,4 @@ define([], function() { } return new MyStore; -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/credentialprovider.js b/src/libraries/apiclient/credentialprovider.js index 471f2b5ef1..3d5e9a3dbf 100644 --- a/src/libraries/apiclient/credentialprovider.js +++ b/src/libraries/apiclient/credentialprovider.js @@ -26,4 +26,4 @@ define(["events", "appStorage"], function(events, appStorage) { })[0]; return existing ? (existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0), existing.UserLinkType = server.UserLinkType, server.AccessToken && (existing.AccessToken = server.AccessToken, existing.UserId = server.UserId), server.ExchangeToken && (existing.ExchangeToken = server.ExchangeToken), server.RemoteAddress && (existing.RemoteAddress = server.RemoteAddress), server.ManualAddress && (existing.ManualAddress = server.ManualAddress), server.LocalAddress && (existing.LocalAddress = server.LocalAddress), server.Name && (existing.Name = server.Name), null != server.LastConnectionMode && (existing.LastConnectionMode = server.LastConnectionMode), server.ConnectServerId && (existing.ConnectServerId = server.ConnectServerId), existing) : (list.push(server), server) }, Credentials -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/events.js b/src/libraries/apiclient/events.js index 6204dc4d4f..c109ee9c48 100644 --- a/src/libraries/apiclient/events.js +++ b/src/libraries/apiclient/events.js @@ -27,4 +27,4 @@ define([], function() { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/package.json b/src/libraries/apiclient/package.json index 0069cfc6bf..67f9d49756 100644 --- a/src/libraries/apiclient/package.json +++ b/src/libraries/apiclient/package.json @@ -1,3 +1,3 @@ { "main": "apiclient.js" -} \ No newline at end of file +} diff --git a/src/libraries/apiclient/sync/filerepository.js b/src/libraries/apiclient/sync/filerepository.js index 198967469d..5b7088af31 100644 --- a/src/libraries/apiclient/sync/filerepository.js +++ b/src/libraries/apiclient/sync/filerepository.js @@ -42,4 +42,4 @@ define([], function() { getItemFileSize: getItemFileSize, getImageUrl: getImageUrl } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/itemrepository.js b/src/libraries/apiclient/sync/itemrepository.js index 5330d5d1a2..db1f962876 100644 --- a/src/libraries/apiclient/sync/itemrepository.js +++ b/src/libraries/apiclient/sync/itemrepository.js @@ -120,4 +120,4 @@ define([], function() { getAll: getAll, getServerItemTypes: getServerItemTypes } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/localsync.js b/src/libraries/apiclient/sync/localsync.js index cea244de08..7341cf1d30 100644 --- a/src/libraries/apiclient/sync/localsync.js +++ b/src/libraries/apiclient/sync/localsync.js @@ -14,4 +14,4 @@ define(["connectionManager"], function(connectionManager) { })) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/mediasync.js b/src/libraries/apiclient/sync/mediasync.js index 24220561ad..71203cd952 100644 --- a/src/libraries/apiclient/sync/mediasync.js +++ b/src/libraries/apiclient/sync/mediasync.js @@ -365,4 +365,4 @@ define(["localassetmanager"], function(localassetmanager) { }) } } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/multiserversync.js b/src/libraries/apiclient/sync/multiserversync.js index 0654b5615d..75e72dab67 100644 --- a/src/libraries/apiclient/sync/multiserversync.js +++ b/src/libraries/apiclient/sync/multiserversync.js @@ -19,4 +19,4 @@ define(["serversync"], function(ServerSync) { syncNext(connectionManager, servers, 0, options, resolve, reject) }) }, MultiServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/serversync.js b/src/libraries/apiclient/sync/serversync.js index 34a1b11e8e..0494e6034f 100644 --- a/src/libraries/apiclient/sync/serversync.js +++ b/src/libraries/apiclient/sync/serversync.js @@ -39,4 +39,4 @@ define([], function() { throw console.log("Unable to connect to server id: " + server.Id), err }) }, ServerSync -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/transfermanager.js b/src/libraries/apiclient/sync/transfermanager.js index 162a6a1226..d9889fffbd 100644 --- a/src/libraries/apiclient/sync/transfermanager.js +++ b/src/libraries/apiclient/sync/transfermanager.js @@ -27,4 +27,4 @@ define([], function() { resyncTransfers: resyncTransfers, getDownloadItemCount: getDownloadItemCount } -}); \ No newline at end of file +}); diff --git a/src/libraries/apiclient/sync/useractionrepository.js b/src/libraries/apiclient/sync/useractionrepository.js index 8612b05bea..7b33ba1c35 100644 --- a/src/libraries/apiclient/sync/useractionrepository.js +++ b/src/libraries/apiclient/sync/useractionrepository.js @@ -105,4 +105,4 @@ define([], function() { getAll: getAll, getByServerId: getByServerId } -}); \ No newline at end of file +}); diff --git a/src/libraries/pagejs/page.js b/src/libraries/pagejs/page.js index ce96fd185e..be5c8aee97 100644 --- a/src/libraries/pagejs/page.js +++ b/src/libraries/pagejs/page.js @@ -1074,4 +1074,4 @@ define([], function () { return page; -}); \ No newline at end of file +}); diff --git a/src/libraries/query-string/index.js b/src/libraries/query-string/index.js index 515b745bf3..cc63f52b80 100644 --- a/src/libraries/query-string/index.js +++ b/src/libraries/query-string/index.js @@ -15,4 +15,4 @@ window.queryString = {}, window.queryString.extract = function(maybeUrl) { return encodeURIComponent(key) + "=" + encodeURIComponent(val2) }).join("&") : encodeURIComponent(key) + "=" + encodeURIComponent(val) }).join("&") : "" -}; \ No newline at end of file +}; diff --git a/src/libraries/query-string/test.js b/src/libraries/query-string/test.js index 4e16ad17c1..072a33fb1d 100644 --- a/src/libraries/query-string/test.js +++ b/src/libraries/query-string/test.js @@ -80,4 +80,4 @@ describe(".parse()", function() { qs.extract(void 0) }, TypeError) }) -}); \ No newline at end of file +}); diff --git a/src/library.html b/src/library.html index 7e313c1708..398613f9e6 100644 --- a/src/library.html +++ b/src/library.html @@ -12,4 +12,4 @@
-
\ No newline at end of file +
diff --git a/src/livetvsettings.html b/src/livetvsettings.html index d853063ab0..1b1557889e 100644 --- a/src/livetvsettings.html +++ b/src/livetvsettings.html @@ -99,4 +99,4 @@
-
\ No newline at end of file +
diff --git a/src/log.html b/src/log.html index dd98b0d333..5943f5dc08 100644 --- a/src/log.html +++ b/src/log.html @@ -5,4 +5,4 @@
-
\ No newline at end of file +
diff --git a/src/metadataimages.html b/src/metadataimages.html index 8250572011..8ad129256c 100644 --- a/src/metadataimages.html +++ b/src/metadataimages.html @@ -22,4 +22,4 @@
-
\ No newline at end of file +
diff --git a/src/metadatanfo.html b/src/metadatanfo.html index 7263952b42..4005c74f67 100644 --- a/src/metadatanfo.html +++ b/src/metadatanfo.html @@ -46,4 +46,4 @@
-
\ No newline at end of file +
diff --git a/src/mypreferencesdisplay.html b/src/mypreferencesdisplay.html index 799681f061..bee49754af 100644 --- a/src/mypreferencesdisplay.html +++ b/src/mypreferencesdisplay.html @@ -1,4 +1,4 @@
-
\ No newline at end of file +
diff --git a/src/mypreferenceshome.html b/src/mypreferenceshome.html index f45a6478bf..79c5ccc4bd 100644 --- a/src/mypreferenceshome.html +++ b/src/mypreferenceshome.html @@ -1,4 +1,4 @@
-
\ No newline at end of file +
diff --git a/src/notificationsetting.html b/src/notificationsetting.html index 46c361910d..f982aa29ce 100644 --- a/src/notificationsetting.html +++ b/src/notificationsetting.html @@ -65,4 +65,4 @@
-
\ No newline at end of file +
diff --git a/src/playbackconfiguration.html b/src/playbackconfiguration.html index 81a42231e4..9deeeebbcd 100644 --- a/src/playbackconfiguration.html +++ b/src/playbackconfiguration.html @@ -27,4 +27,4 @@
-
\ No newline at end of file + diff --git a/src/robots.txt b/src/robots.txt index 77470cb39f..1f53798bb4 100644 --- a/src/robots.txt +++ b/src/robots.txt @@ -1,2 +1,2 @@ User-agent: * -Disallow: / \ No newline at end of file +Disallow: / diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 66c3051c8c..791ac7411b 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -311,4 +311,4 @@ define([], function () { browser.chromecast = browser.chrome && userAgent.toLowerCase().indexOf('crkey') !== -1; return browser; -}); \ No newline at end of file +}); diff --git a/src/scripts/datetime.js b/src/scripts/datetime.js index a7ee1d946a..8a7666844c 100644 --- a/src/scripts/datetime.js +++ b/src/scripts/datetime.js @@ -279,4 +279,4 @@ define(['globalize'], function (globalize) { return toLocaleTimeStringSupportsLocales; } }; -}); \ No newline at end of file +}); diff --git a/src/serviceworker.js b/src/serviceworker.js index 4d9e12ee6a..49c3767691 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1 +1 @@ -importScripts("components/serviceworker/notifications.js"); \ No newline at end of file +importScripts("components/serviceworker/notifications.js"); From a26091a165a7f7369ef4b026540f4f09b83c4f98 Mon Sep 17 00:00:00 2001 From: h1nk <12993584+h1nk@users.noreply.github.com> Date: Sat, 22 Feb 2020 11:55:57 -0500 Subject: [PATCH 215/260] Enforce final newlines in ESLint See: https://github.com/jellyfin/jellyfin-web/pull/838#issuecomment-589933845 --- .eslintrc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index b215e15800..ee0b32ffad 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -8,7 +8,7 @@ rules: brace-style: ["error"] comma-dangle: ["error", "never"] comma-spacing: ["error"] - eol-last: ["off"] + eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] line-comment-position: ["off"] From a75d37390ea6f1a36f20826717a2e19695425fe7 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Sat, 22 Feb 2020 09:10:37 +0000 Subject: [PATCH 216/260] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 541323e90a..083403ad46 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1440,5 +1440,6 @@ "LabelCorruptedFrames": "Sérült képkockák:", "HeaderKeepSeries": "Sorozat megtartása", "ErrorGettingTvLineups": "Hiba történt a TV kínálat letöltése során. Kérjük ellenőrizd a megadott információkat és próbáld újra.", - "LabelTranscodes": "Átkódolások:" + "LabelTranscodes": "Átkódolások:", + "AskAdminToCreateLibrary": "Kérj meg egy adminisztrátort könyvtár létrehozására." } From 9334e1babe7fc782b6442a875c7552f17ed5eb8b Mon Sep 17 00:00:00 2001 From: Andreas Olsson Date: Sat, 22 Feb 2020 10:06:45 +0000 Subject: [PATCH 217/260] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 1d2a223cdb..524a644f8b 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -17,7 +17,7 @@ "AllEpisodes": "Alla avsnitt", "AllLanguages": "Alla språk", "AllLibraries": "Alla bibliotek", - "AllowHWTranscodingHelp": "Låt TV-mottagaren omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Server.", + "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och stoppa videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", From 4b99f00552ef128bafd68f3a9a6eafd6037935c9 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 01:22:55 +0300 Subject: [PATCH 218/260] move underscore Icon to class --- src/components/cardbuilder/cardBuilder.js | 8 ++++---- src/components/cardbuilder/chaptercardbuilder.js | 2 +- src/components/channelmapper/channelmapper.js | 2 +- src/components/directorybrowser/directorybrowser.js | 2 +- src/components/imagedownloader/imagedownloader.js | 4 ++-- .../libraryoptionseditor/libraryoptionseditor.js | 2 +- src/components/metadataeditor/metadataeditor.js | 4 ++-- src/components/remotecontrol/remotecontrol.js | 2 +- src/controllers/dashboard/notifications/notifications.js | 6 +++--- src/controllers/devices.js | 2 +- src/controllers/dlnaprofiles.js | 2 +- src/scripts/editorsidebar.js | 2 +- src/scripts/librarybrowser.js | 2 +- src/scripts/librarymenu.js | 4 ++-- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 4e589c4a19..472585674e 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1497,13 +1497,13 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana case 'Person': return 'person'; case 'Movie': - return 'movie' + return 'movie'; case 'Series': - return 'tv' + return 'tv'; case 'Book': - return 'book' + return 'book'; case 'Folder': - return 'folder' + return 'folder'; } if (options && options.defaultCardImageIcon) { diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 75b940285f..02d583abc0 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -90,7 +90,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'layoutManager', 'browse var cardImageContainer = imgUrl ? ('
') : ('
'); if (!imgUrl) { - cardImageContainer += 'local_movies'; + cardImageContainer += ''; } var nameHtml = ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 2b2de1870c..1b536f440b 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -84,7 +84,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee html += "
"; html += "
"; - html += ''; + html += ''; return html += ""; } diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 06f7773cf6..b71f7bbb05 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -76,7 +76,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper- html += name; html += ""; html += ""; - html += 'arrow_forward'; + html += ''; html += ""; return html; } diff --git a/src/components/imagedownloader/imagedownloader.js b/src/components/imagedownloader/imagedownloader.js index f984ce22a5..ce53b5cf0d 100644 --- a/src/components/imagedownloader/imagedownloader.js +++ b/src/components/imagedownloader/imagedownloader.js @@ -117,7 +117,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' html += '
'; html += ''; - html += ''; + html += ''; html += '
'; } @@ -277,7 +277,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader' if (enableFooterButtons) { html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index f9f63c9b51..010af4a1df 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -58,7 +58,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - html += 'live_tv'; + html += ''; html += '
'; html += '

'; html += plugin.Name; diff --git a/src/components/metadataeditor/metadataeditor.js b/src/components/metadataeditor/metadataeditor.js index 030fdc80ce..e8736258fa 100644 --- a/src/components/metadataeditor/metadataeditor.js +++ b/src/components/metadataeditor/metadataeditor.js @@ -477,7 +477,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '

'; if (formatString) { - html += ''; + html += ''; } html += '
'; @@ -917,7 +917,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi for (var i = 0; i < items.length; i++) { html += '
'; - html += 'live_tv'; + html += ''; html += '
'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 11f14fdc8e..1ed220e069 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -266,7 +266,7 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL toggleRepeatButton.innerHTML = "repeat"; toggleRepeatButton.classList.add("repeatButton-active"); } else if ("RepeatOne" == repeatMode) { - toggleRepeatButton.innerHTML = "repeat_one"; + toggleRepeatButton.innerHTML = ""; toggleRepeatButton.classList.add("repeatButton-active"); } else { toggleRepeatButton.innerHTML = "repeat"; diff --git a/src/controllers/dashboard/notifications/notifications.js b/src/controllers/dashboard/notifications/notifications.js index 466728210e..8f63753bf3 100644 --- a/src/controllers/dashboard/notifications/notifications.js +++ b/src/controllers/dashboard/notifications/notifications.js @@ -31,14 +31,14 @@ define(["loading", "libraryMenu", "globalize", "listViewStyle", "emby-button"], } itemHtml += ''; if (notification.Enabled) { - itemHtml += 'notifications_active'; + itemHtml += ''; } else { - itemHtml += 'notifications_off'; + itemHtml += ''; } itemHtml += '
'; itemHtml += '
' + notification.Name + "
"; itemHtml += "
"; - itemHtml += ''; + itemHtml += ''; itemHtml += "
"; return itemHtml; }).join(""); diff --git a/src/controllers/devices.js b/src/controllers/devices.js index 4ddb4d4d20..3fd2be983e 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -80,7 +80,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu deviceHtml += '
"; deviceHtml += "
"; } else { - deviceHtml += 'tablet_android'; + deviceHtml += ''; } deviceHtml += ""; diff --git a/src/controllers/dlnaprofiles.js b/src/controllers/dlnaprofiles.js index eae529c538..e1719ea597 100644 --- a/src/controllers/dlnaprofiles.js +++ b/src/controllers/dlnaprofiles.js @@ -32,7 +32,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby- for (var i = 0, length = profiles.length; i < length; i++) { var profile = profiles[i]; html += '
'; - html += 'live_tv'; + html += ''; html += '
'; html += ""; html += "
" + profile.Name + "
"; diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 1a9b9775ef..b7cb4b5c57 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -49,7 +49,7 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) { } else if (item.MediaType === "Audio") { htmlName += 'audiotrack'; } else if (item.Type === "TvChannel") { - htmlName += 'live_tv'; + htmlName += ''; } else if (item.MediaType === "Photo") { htmlName += 'photo'; } else if (item.MediaType === "Book") { diff --git a/src/scripts/librarybrowser.js b/src/scripts/librarybrowser.js index 4aab16b2e3..bd8980aed2 100644 --- a/src/scripts/librarybrowser.js +++ b/src/scripts/librarybrowser.js @@ -92,7 +92,7 @@ define(["userSettings"], function (userSettings) { if (showControls) { html += ''; - html += ''; + html += ''; } if (options.addLayoutButton) { diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 0abcf697b1..a1ca198d55 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -205,7 +205,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += globalize.translate("HeaderAdmin"); html += ""; html += '
dashboard' + globalize.translate("TabDashboard") + ""; - html += 'mode_edit' + globalize.translate("Metadata") + ""; + html += '' + globalize.translate("Metadata") + ""; html += "
"; } @@ -219,7 +219,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += 'wifi' + globalize.translate("ButtonSelectServer") + ""; } - html += 'exit_to_app' + globalize.translate("ButtonSignOut") + ""; + html += '' + globalize.translate("ButtonSignOut") + ""; html += "
"; } From 25f3be7e7030b9b802091173cbd37a2df667349d Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 01:47:17 +0300 Subject: [PATCH 219/260] move underscore Icon to class --- src/components/apphost.js | 2 +- src/components/guide/tvguide.template.html | 2 +- src/itemdetails.html | 4 ++-- src/mypreferencesmenu.html | 6 +++--- src/nowplaying.html | 4 ++-- src/wizardlibrary.html | 2 +- src/wizardremoteaccess.html | 2 +- src/wizardsettings.html | 2 +- src/wizardstart.html | 2 +- src/wizarduser.html | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index 2a0b7b19e9..22d61cc086 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -374,7 +374,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return -1 !== supportedFeatures.indexOf(command.toLowerCase()); }, preferVisualCards: browser.android || browser.chrome, - moreIcon: browser.android ? "dots-vert" : "dots-horiz", + moreIcon: browser.android ? "more_vert" : "more_horiz", getSyncProfile: getSyncProfile, getDefaultLayout: function () { if (window.NativeShell) { diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index 5dc16dba3b..ef3c4b58ca 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -33,6 +33,6 @@
diff --git a/src/itemdetails.html b/src/itemdetails.html index 100e3f968a..ec3ada09d6 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -31,7 +31,7 @@ @@ -94,7 +94,7 @@ diff --git a/src/mypreferencesmenu.html b/src/mypreferencesmenu.html index f7948a0789..41fcd1b75c 100644 --- a/src/mypreferencesmenu.html +++ b/src/mypreferencesmenu.html @@ -32,7 +32,7 @@ diff --git a/src/wizardremoteaccess.html b/src/wizardremoteaccess.html index 8a830d6244..c7ddfb7e84 100644 --- a/src/wizardremoteaccess.html +++ b/src/wizardremoteaccess.html @@ -26,7 +26,7 @@
diff --git a/src/wizardsettings.html b/src/wizardsettings.html index 5850167c54..f753919478 100644 --- a/src/wizardsettings.html +++ b/src/wizardsettings.html @@ -21,7 +21,7 @@ diff --git a/src/wizardstart.html b/src/wizardstart.html index 5dd6f7e1b8..a47fcad090 100644 --- a/src/wizardstart.html +++ b/src/wizardstart.html @@ -20,7 +20,7 @@
diff --git a/src/wizarduser.html b/src/wizarduser.html index 9f54d7ca67..90f492b0fe 100644 --- a/src/wizarduser.html +++ b/src/wizarduser.html @@ -27,7 +27,7 @@ From de28101f660a6f953b5971938b840791de24c5bc Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 02:32:44 +0300 Subject: [PATCH 220/260] Fix 2 speakers icons next to volume slider #841 --- src/components/playback/volumeosd.js | 2 +- src/videoosd.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index de20aaab15..5d2c90ddb7 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -11,7 +11,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia function getOsdElementHtml() { var html = ''; - html += ''; + html += ''; html += '
'; diff --git a/src/videoosd.html b/src/videoosd.html index ac3570c670..c200360c05 100644 --- a/src/videoosd.html +++ b/src/videoosd.html @@ -76,7 +76,7 @@
From b20bd4d4b96834a237eab2b9fa0165b2c0083aac Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sun, 23 Feb 2020 02:40:08 +0300 Subject: [PATCH 221/260] Fix 2 speakers icons --- src/components/nowplayingbar/nowplayingbar.js | 2 +- src/nowplaying.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 9a96220e51..7d4cfaa349 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -54,7 +54,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', html += '
'; - html += ''; + html += ''; html += '
'; html += ''; diff --git a/src/nowplaying.html b/src/nowplaying.html index b106241492..c1d77bdc36 100644 --- a/src/nowplaying.html +++ b/src/nowplaying.html @@ -63,7 +63,7 @@
From 5fb2c8bd82b3dae4ad629d38712f683935ad06cf Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 23 Feb 2020 01:31:24 -0500 Subject: [PATCH 222/260] Fix horizontal scrolling on emby-scrollers --- src/components/homesections/homesections.js | 16 ++++----- src/components/scroller.js | 4 ++- .../search/searchresults.template.html | 34 +++++++++---------- src/controllers/favorites.js | 2 +- src/itemdetails.html | 10 +++--- src/selectserver.html | 2 +- 6 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 87be8c7c33..430c06bc57 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -290,7 +290,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -343,7 +343,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (userViews.length) { html += '

' + globalize.translate('HeaderMyMedia') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -423,7 +423,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -496,7 +496,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -582,7 +582,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
'; } else { html += '
'; @@ -639,7 +639,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -713,7 +713,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; @@ -785,7 +785,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; html += '
' } else { html += '
'; diff --git a/src/components/scroller.js b/src/components/scroller.js index e3f9a956d8..c3c64a403e 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -575,7 +575,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc */ function normalizeWheelDelta(event) { // wheelDelta needed only for IE8- - scrolling.curDelta = ((o.horizontal ? event.deltaY || event.deltaX : event.deltaY) || -event.wheelDelta); + // JELLYFIN MOD: Only use deltaX for horizontal scroll instead of `event.deltaY || event.deltaX` + scrolling.curDelta = ((o.horizontal ? event.deltaX : event.deltaY) || -event.wheelDelta); + // END JELLYFIN MOD if (transform) { scrolling.curDelta /= event.deltaMode === 1 ? 3 : 100; diff --git a/src/components/search/searchresults.template.html b/src/components/search/searchresults.template.html index 33c9389190..1deecaca6c 100644 --- a/src/components/search/searchresults.template.html +++ b/src/components/search/searchresults.template.html @@ -11,7 +11,7 @@

${Movies}

-
+
@@ -19,7 +19,7 @@

${Shows}

-
+
@@ -27,7 +27,7 @@

${Episodes}

-
+
@@ -35,7 +35,7 @@

${Sports}

-
+
@@ -43,7 +43,7 @@

${Kids}

-
+
@@ -51,7 +51,7 @@

${News}

-
+
@@ -59,7 +59,7 @@

${Programs}

-
+
@@ -67,7 +67,7 @@

${Videos}

-
+
@@ -75,7 +75,7 @@

${Playlists}

-
+
@@ -83,7 +83,7 @@

${Artists}

-
+
@@ -91,7 +91,7 @@

${Albums}

-
+
@@ -99,7 +99,7 @@

${Songs}

-
+
@@ -107,7 +107,7 @@

${HeaderPhotoAlbums}

-
+
@@ -115,7 +115,7 @@

${Photos}

-
+
@@ -123,7 +123,7 @@

${HeaderAudioBooks}

-
+
@@ -131,7 +131,7 @@

${Books}

-
+
@@ -139,7 +139,7 @@

${People}

-
+
diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index a4f2af64dd..c06b0bd8fb 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -253,7 +253,7 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap } html += "
"; - html += '
'; + html += '
'; html += "
"; } diff --git a/src/itemdetails.html b/src/itemdetails.html index 100e3f968a..ba36eb85b8 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -182,21 +182,21 @@

-
+

-
+

${HeaderCastCrew}

-
+
@@ -218,14 +218,14 @@

${HeaderScenes}

-
+

${HeaderMoreLikeThis}

-
+
diff --git a/src/selectserver.html b/src/selectserver.html index dd52467bfe..2c84525174 100644 --- a/src/selectserver.html +++ b/src/selectserver.html @@ -3,7 +3,7 @@

${HeaderSelectServer}

-
+
From 4268a01e301f7206acd7419e76cf173ebac3fb1b Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 23 Feb 2020 01:43:03 -0500 Subject: [PATCH 223/260] Remove es6 env until babel is added --- .eslintrc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index ee0b32ffad..1055e084c9 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,5 +1,5 @@ env: - es6: true + es6: false browser: true amd: true From a87c4d97a018b254229996ab4b1bd632c244cb60 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 23 Feb 2020 10:52:03 +0300 Subject: [PATCH 224/260] Fix slideshow start/stop --- src/components/slideshow/slideshow.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index f31ac091b5..922cda34b0 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -342,7 +342,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f btnSlideshowPause.innerHTML = "pause"; } - swiperInstance.startAutoplay(); + if (swiperInstance.autoplay) { + swiperInstance.autoplay.start(); + } } function pause() { @@ -352,7 +354,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f btnSlideshowPause.innerHTML = ""; } - swiperInstance.stopAutoplay(); + if (swiperInstance.autoplay) { + swiperInstance.autoplay.stop(); + } } function playPause() { From a9be94a803934b5d7f78952ab6f7bd195beda66a Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 23 Feb 2020 17:23:20 +0900 Subject: [PATCH 225/260] uncomment all log statements --- src/components/chromecast/chromecastplayer.js | 16 ++++++++-------- src/components/nowplayingbar/nowplayingbar.js | 4 ++-- src/components/playback/playbackmanager.js | 2 +- src/components/scroller.js | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 4bb9b4daa1..18103e433f 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -377,7 +377,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; CastPlayer.prototype.onPlayCommandSuccess = function () { - //console.debug('Message was sent to receiver ok.'); + console.debug('Message was sent to receiver ok.'); }; /** @@ -386,7 +386,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.onMediaDiscovered = function (how, mediaSession) { - //console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); + console.debug("chromecast new media session ID:" + mediaSession.mediaSessionId + ' (' + how + ')'); this.currentMediaSession = mediaSession; if (how === 'loadMedia') { @@ -417,7 +417,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { if (!this.currentMediaSession) { - //console.debug('this.currentMediaSession is null'); + console.debug('this.currentMediaSession is null'); return; } @@ -443,7 +443,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { - //console.debug(info); + console.debug(info); }; function normalizeImages(state) { @@ -493,7 +493,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, eventName, function (e, data) { - //console.debug('cc: ' + eventName); + console.debug('cc: ' + eventName); var state = instance.getPlayerStateInternal(data); events.trigger(instance, eventName, [state]); @@ -555,7 +555,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playbackprogress", function (e, data) { - //console.debug('cc: positionchange'); + console.debug('cc: positionchange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "timeupdate", [state]); @@ -569,7 +569,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' events.on(instance._castPlayer, "playstatechange", function (e, data) { - //console.debug('cc: playstatechange'); + console.debug('cc: playstatechange'); var state = instance.getPlayerStateInternal(data); events.trigger(instance, "pause", [state]); @@ -664,7 +664,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' normalizeImages(data); - //console.debug(JSON.stringify(data)); + console.debug(JSON.stringify(data)); if (triggerStateChange) { events.trigger(this, "statechange", [data]); diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 368c326470..96a52cc789 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -626,7 +626,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { - //console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; if (player.isLocalPlayer) { @@ -652,7 +652,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - //console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + e.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index f9af97803b..3a3bddd989 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -57,7 +57,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); } - //console.debug(method + '-' + JSON.stringify(info)); + console.debug(method + '-' + JSON.stringify(info)); var apiClient = connectionManager.getApiClient(serverId); apiClient[method](info); } diff --git a/src/components/scroller.js b/src/components/scroller.js index 45a0c08982..f98c348598 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -392,7 +392,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var currentStart = self._pos.cur; var currentEnd = currentStart + frameSize; - //console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); + console.debug('offset:' + offset + ' currentStart:' + currentStart + ' currentEnd:' + currentEnd); var isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { From baea3593a5b388b77a615487f8955bd9a8153185 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 23 Feb 2020 11:48:01 +0300 Subject: [PATCH 226/260] Sync button state with actual autoplay state --- src/components/slideshow/slideshow.js | 29 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 922cda34b0..dffe8c2f78 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -198,6 +198,20 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } } + function onAutoplayStart() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.innerHTML = "pause"; + } + } + + function onAutoplayStop() { + var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); + if (btnSlideshowPause) { + btnSlideshowPause.innerHTML = ""; + } + } + function loadSwiper(dlg) { if (currentOptions.slides) { @@ -225,6 +239,9 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f speed: 240 }); + swiperInstance.on('autoplayStart', onAutoplayStart); + swiperInstance.on('autoplayStop', onAutoplayStop); + if (layoutManager.mobile) { pause(); } else { @@ -336,24 +353,12 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f } function play() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = "pause"; - } - if (swiperInstance.autoplay) { swiperInstance.autoplay.start(); } } function pause() { - - var btnSlideshowPause = dlg.querySelector('.btnSlideshowPause i'); - if (btnSlideshowPause) { - btnSlideshowPause.innerHTML = ""; - } - if (swiperInstance.autoplay) { swiperInstance.autoplay.stop(); } From 6924d082f5bc9e730c48cadb6017ac7c2fb125a3 Mon Sep 17 00:00:00 2001 From: Daniel De Jesus Date: Sun, 23 Feb 2020 03:42:31 +0000 Subject: [PATCH 227/260] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 70f9f52d46..7c42778a1c 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -2,5 +2,15 @@ "Add": "Añadir", "Actor": "Actor", "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Inténtelo de nuevo más tarde.", - "Absolute": "Absoluto" + "Absolute": "Absoluto", + "HeaderAlbumArtists": "Artistas del Álbum", + "HeaderContinueWatching": "Continuar Viendo", + "Genres": "Géneros", + "Folders": "Carpetas", + "Favorites": "Favoritos", + "Collections": "Colecciones", + "Books": "Libros", + "Albums": "Álbumes", + "Artists": "Artistas", + "Channels": "Canales" } From c87c6cb52acac08a6b5774ba7603ade781982304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Martins=20da=20Concei=C3=A7=C3=A3o?= Date: Sun, 23 Feb 2020 19:15:11 +0000 Subject: [PATCH 228/260] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 2cf5193bd7..089345ad55 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -351,7 +351,7 @@ "LabelGroupMoviesIntoCollections": "Agrupar filmes em coleções", "LabelGroupMoviesIntoCollectionsHelp": "Ao mostrar listas de filmes, filmes que pertençam a uma coleção serão mostrados como um único item agrupado.", "LabelHardwareAccelerationType": "Aceleração por hardware:", - "LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.", + "LabelHardwareAccelerationTypeHelp": "Aceleração via Hardware requer configurações adicionais.", "LabelHttpsPort": "Número do porto HTTPS local:", "LabelHttpsPortHelp": "Número do porto TCP em que o servidor HTTPS do Jellyfin ficará à escuta.", "LabelIconMaxHeight": "Altura máxima do ícone:", @@ -1442,5 +1442,9 @@ "EnableStreamLooping": "Auto-cíclico de streams ao vivo", "Down": "Baixo", "CopyStreamURLError": "Ocorreu um erro a copiar o URL.", - "ButtonSplit": "Dividir" + "ButtonSplit": "Dividir", + "NoCreatedLibraries": "Oh Não! Parece que você ainda não criou nenhuma biblioteca por enquanto. {0} Gostaria de criar uma biblioteca agora? {1}", + "AskAdminToCreateLibrary": "Pergunte a um administrador para criar uma biblioteca.", + "LabelVideoResolution": "Resolução de vídeo:", + "LabelPlayerDimensions": "Dimensões de leitor:" } From f60e396908c11f3116ddb6739d53a6ebab94caff Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 24 Feb 2020 22:25:08 +0900 Subject: [PATCH 229/260] catch some errors and remove unused method --- src/controllers/dashboard/general.js | 6 ++++++ src/controllers/encodingsettings.js | 6 ++++++ src/controllers/streamingsettings.js | 19 +------------------ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 7eed352329..fe8661b578 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -56,6 +56,12 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb } }); }); + }, function () { + require(["alert"], function (alert) { + alert(globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); }); }); return false; diff --git a/src/controllers/encodingsettings.js b/src/controllers/encodingsettings.js index 24cf656d62..e164508856 100644 --- a/src/controllers/encodingsettings.js +++ b/src/controllers/encodingsettings.js @@ -66,6 +66,12 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo config.EnableHardwareEncoding = form.querySelector("#chkHardwareEncoding").checked; ApiClient.updateNamedConfiguration("encoding", config).then(function () { updateEncoder(form); + }, function () { + require(["alert"], function (alert) { + alert(globalize.translate("DefaultErrorMessage")); + }); + + Dashboard.processServerConfigurationUpdateResult(); }); }); }; diff --git a/src/controllers/streamingsettings.js b/src/controllers/streamingsettings.js index 6c85034458..14e5e028a8 100644 --- a/src/controllers/streamingsettings.js +++ b/src/controllers/streamingsettings.js @@ -13,6 +13,7 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($("#txtRemoteClientBitrateLimit", form).val() || "0")); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); + return false; } @@ -30,24 +31,6 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) } $(document).on("pageinit", "#streamingSettingsPage", function () { - var page = this; - $("#btnSelectTranscodingTempPath", page).on("click.selectDirectory", function () { - require(["directorybrowser"], function (directoryBrowser) { - var picker = new directoryBrowser(); - picker.show({ - callback: function (path) { - if (path) { - $("#txtTranscodingTempPath", page).val(path); - } - - picker.close(); - }, - validateWriteable: true, - header: Globalize.translate("HeaderSelectTranscodingPath"), - instruction: Globalize.translate("HeaderSelectTranscodingPathHelp") - }); - }); - }); $(".streamingSettingsForm").off("submit", onSubmit).on("submit", onSubmit); }).on("pageshow", "#streamingSettingsPage", function () { loading.show(); From ac589eb922ae25c22b659b37dd9907bb64bcc1f3 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 24 Feb 2020 12:18:21 +0000 Subject: [PATCH 230/260] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index ebb3d22b95..73ea163b2e 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -637,7 +637,7 @@ "LabelH264Crf": "H264 kodtaý CRF máni:", "LabelEncoderPreset": "H264 kodtaý daıyndamasy:", "LabelHardwareAccelerationType": "Apparatyq jedeldetý:", - "LabelHardwareAccelerationTypeHelp": "Bul tájirıbelik múmkindik tek qoldaý kórsetiletin júıelerde qoljetimdi.", + "LabelHardwareAccelerationTypeHelp": "Apparattyq jedeldetý úshin qosymsha konfıgýrasýa qajet.", "LabelHomeNetworkQuality": "Úılik jeli sapasy:", "LabelHomeScreenSectionValue": "Basqy bet {0}-bólim:", "LabelHttpsPort": "Jergilikti HTTPS-port nómiri:", @@ -1485,5 +1485,21 @@ "FetchingData": "Qosymsha derekterdi shyǵaryp alý", "ButtonAddImage": "Sýret ústeý", "MusicLibraryHelp": "{0}Mýzyka ataý nusqaýlyǵyn{1} qarap shyǵý.", - "HeaderFavoritePeople": "Tańdaýly adamdar" + "HeaderFavoritePeople": "Tańdaýly adamdar", + "NoCreatedLibraries": "Eshqandaı tasyǵyshhanany jasamaǵanyńyz sıaqty. {0}Qazir bireýin jasaısyz ba?{1}", + "SelectAdminUsername": "Ákimshi tirkelgisi úshin paıdalanýshy atyn tańdańyz.", + "OptionRandom": "Kezdeısoq", + "OptionForceRemoteSourceTranscoding": "Alystaǵy tasyǵyshderekter kózin qaıta kodtaýdy májbúrleý (efırlik TD sıaqty)", + "MessageConfirmAppExit": "Shyǵýdy qalaısyz ba?", + "LabelVideoResolution": "Beıne ajyratymdylyǵy:", + "LabelStreamType": "Aǵyn túri:", + "EnableFastImageFadeInHelp": "Júktelgen sýretter úshin shapshan kórsetilýin qosý", + "EnableFastImageFadeIn": "Sýrettiń shapshan kórsetilýi", + "LabelPlayerDimensions": "Oınatqysh ólshemderi:", + "LabelDroppedFrames": "Ótkizilgen kadrlar:", + "LabelCorruptedFrames": "Búlingen kadrlar:", + "HeaderNavigation": "Sharlaý", + "CopyStreamURLError": "URL kóshirgende qate oryn aldy.", + "ButtonSplit": "Bólý", + "AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý." } From 494558f7dd2d5d03ffff0aab5dc23789f60eaa5a Mon Sep 17 00:00:00 2001 From: 4d1m Date: Mon, 24 Feb 2020 10:31:32 +0000 Subject: [PATCH 231/260] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index b8e87e0d36..3880d14d10 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -809,7 +809,7 @@ "LabelHttpsPort": "Portul local HTTPS:", "LabelHomeScreenSectionValue": "Secțiunea ecranului de pornire {0}:", "LabelHomeNetworkQuality": "Calitatea pe rețeaua de domiciliu:", - "LabelHardwareAccelerationTypeHelp": "Aceasta este o caracteristică experimentală disponibilă doar pe sistemele acceptate.", + "LabelHardwareAccelerationTypeHelp": "Accelerarea hardware necesită configurare suplimentară.", "LabelHardwareAccelerationType": "Accelerare hardware:", "LabelEncoderPreset": "H264 encoding presetat:", "LabelH264Crf": "CRF codare H264:", @@ -1463,5 +1463,7 @@ "LabelPlayerDimensions": "Dimensiunile soft redare:", "LabelDroppedFrames": "Cadre abandonate:", "LabelCorruptedFrames": "Cadre corupte:", - "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)" + "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)", + "NoCreatedLibraries": "Se pare că nu ați creat încă biblioteci. {0} Doriți să creați una acum? {1}", + "AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă." } From cd1f5512e320eb4a87247d239c429fef979f48e6 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 24 Feb 2020 12:12:46 +0000 Subject: [PATCH 232/260] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index b90aaa90b4..5ef7fb3024 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -622,7 +622,7 @@ "LabelH264Crf": "Значение CRF H264-кодирования:", "LabelEncoderPreset": "Предустановка H264-кодирования:", "LabelHardwareAccelerationType": "Аппаратное ускорение:", - "LabelHardwareAccelerationTypeHelp": "Это экспериментальная функция, имеющаяся только на поддерживаемых системах.", + "LabelHardwareAccelerationTypeHelp": "Аппаратное ускорение требует дополнительной конфигурации.", "LabelHomeNetworkQuality": "Качество в домашней сети:", "LabelHomeScreenSectionValue": "Главная страница - раздел {0}:", "LabelHttpsPort": "Номер локального HTTPS-порта:", @@ -1458,10 +1458,13 @@ "HeaderNavigation": "Навигация", "LabelVideoResolution": "Разрешение видео:", "LabelStreamType": "Тип потока:", - "EnableFastImageFadeInHelp": "Включить быстрое гашение анимации для загруженных рисунков", - "EnableFastImageFadeIn": "Быстрое гашение рисунка", + "EnableFastImageFadeInHelp": "Включить быстрое появление анимации для загруженных рисунков", + "EnableFastImageFadeIn": "Быстрое появление рисунка", "LabelPlayerDimensions": "Размерности проигрывателя:", "LabelDroppedFrames": "Пропущенные кадры:", "LabelCorruptedFrames": "Испорченные кадры:", - "CopyStreamURLError": "Произошла ошибка при копировании URL." + "CopyStreamURLError": "Произошла ошибка при копировании URL.", + "OptionForceRemoteSourceTranscoding": "Принудительное перекодирование удалённых источников медиаданных (например, эфирное ТВ)", + "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", + "AskAdminToCreateLibrary": "Запрашивать администратора для создания медиатеки." } From 92cd838633d5e4a5b6de3bb6c8c393c68053ab72 Mon Sep 17 00:00:00 2001 From: MOLOKAL Date: Tue, 25 Feb 2020 06:40:04 +0000 Subject: [PATCH 233/260] Translated using Weblate (Malay) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ms/ --- src/strings/ms.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ms.json b/src/strings/ms.json index 9f959b9574..c377e52af1 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -35,14 +35,14 @@ "AllowOnTheFlySubtitleExtractionHelp": "Sarikata-sarikata yang sedia ada dapat diekstrak dari video-video dan dihantar ke aplikasi Jellyfin dalam teks biasa. Ini untuk menghindari video daripada transkoding. Pada sistem-sistem lain, ia dapat mengambil masa panjang dan menyebabkan video main balik terhenti semasa proses pengekstrakan. Ciri ini dapat dimatikan supaya sarikata yang sedia ada akan dibakar bersama video transkoding, jika ianya tidak disokong secara asal oleh peranti klien.", "AllowRemoteAccess": "Membenarkan persambungan jauh ke pelayan Jellyfin ini.", "AllowRemoteAccessHelp": "Jika tidak disemak, semua persambungan jauh akan disekat.", - "AllowHWTranscodingHelp": "Jika diaktifkan, penala dibolehkan untuk transkod strim dengan serta-merta. Ini dapat bantu mengurangkan transkoding yang diperlukan dari pelayan Jellyfin.", + "AllowHWTranscodingHelp": "Benarkan penala untuk transkod strim serta-merta. Ini mungkin dapat bantu kurangkan kadar transkod yang diperlukan dari pelayan.", "AlwaysPlaySubtitles": "Sentiasa main sarikata", "AlwaysPlaySubtitlesHelp": "Sarikata sepadan dengan bahasa yang dipilih akan masih dimuatkan tanpa mengira bahasa audio.", "AnyLanguage": "Mana-mana bahasa", "Anytime": "Pada bila masa saja", "AroundTime": "Sekitar {0}", "Art": "Seni", - "Artists": "Artis-artis", + "Artists": "Artis", "AsManyAsPossible": "Sebanyak mungkin", "Ascending": "Susunan menaik", "AspectRatio": "Nisbah aspek", From 9091284b78c9ed5d306472270842945cd78b5b60 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 25 Feb 2020 22:31:54 +0900 Subject: [PATCH 234/260] uncomment one last line --- src/components/chromecast/chromecasthelpers.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index 21dbec6ff0..d8bb29252d 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -132,7 +132,7 @@ define(['events'], function (events) { var match; while (match = linkRegExp.exec(text)) { - // console.debug(matches); + console.debug(matches); var txt = match[0]; var pos = match.index; var len = txt.length; @@ -230,4 +230,4 @@ define(['events'], function (events) { return { getServerAddress: getServerAddress }; -}); \ No newline at end of file +}); From 911017a5df6c4f823d836cc62b9be369c3317d38 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 25 Feb 2020 21:27:17 +0300 Subject: [PATCH 235/260] Fix variable reference --- src/components/nowplayingbar/nowplayingbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index b38985e8db..a10cb89c68 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -662,7 +662,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onStateChanged(event, state) { - console.debug('nowplaying event: ' + e.type); + console.debug('nowplaying event: ' + event.type); var player = this; if (!state.NowPlayingItem || layoutManager.tv) { From 3fd2a2b59d4c289e64b939844b12c9164a7f1d58 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 25 Feb 2020 15:25:35 -0500 Subject: [PATCH 236/260] Remove IE8 support --- src/components/scroller.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/scroller.js b/src/components/scroller.js index c3c64a403e..b1e1f1dc7f 100644 --- a/src/components/scroller.js +++ b/src/components/scroller.js @@ -574,9 +574,8 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Int} */ function normalizeWheelDelta(event) { - // wheelDelta needed only for IE8- - // JELLYFIN MOD: Only use deltaX for horizontal scroll instead of `event.deltaY || event.deltaX` - scrolling.curDelta = ((o.horizontal ? event.deltaX : event.deltaY) || -event.wheelDelta); + // JELLYFIN MOD: Only use deltaX for horizontal scroll and remove IE8 support + scrolling.curDelta = o.horizontal ? event.deltaX : event.deltaY; // END JELLYFIN MOD if (transform) { From fbf675f919ed9d5719097ebfc0a0e0e834f7c802 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Tue, 25 Feb 2020 22:51:55 +0000 Subject: [PATCH 237/260] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index e94a916b02..e32add2356 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -66,7 +66,7 @@ "Edit": "ערוך", "EditImages": "ערוך תמונות", "EditSubtitles": "ערוך כתוביות", - "EnableColorCodedBackgrounds": "אפשר רקע בצבע מקודד", + "EnableColorCodedBackgrounds": "רקע בצבע מקודד", "Ended": "הסתיים", "EndsAtValue": "מסתיים ב {0}", "Favorite": "מועדף", @@ -550,5 +550,46 @@ "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", "AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB\\IDX וכדומה)", - "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף." + "AddItemToCollectionHelp": "הוסף פריטים לאוספים ע\"י חיפושם ושימוש בלחצן ימני או הקשה על התפריט כדי להוסיף אותם לאוסף.", + "Songs": "שירים", + "Shows": "סדרות", + "DownloadsValue": "{0} הורדות", + "DisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות", + "DisplayInMyMedia": "הצג בעמוד הבית", + "Disconnect": "התנתק", + "DirectorsValue": "במאים: {0}", + "DirectorValue": "במאי: {0}", + "Descending": "סדר יורד", + "Default": "ברירת מחדל", + "DeathDateValue": "נפטר: {0}", + "DatePlayed": "תאריך ניגון", + "DateAdded": "תאריך הוספה", + "CriticRating": "דירוג מבקרים", + "ContinueWatching": "המשך לצפות", + "ButtonUninstall": "הסר התקנה", + "ButtonTrailer": "קדימון", + "ButtonSubtitles": "כתוביות", + "ButtonSplit": "פיצול", + "ButtonStop": "עצור", + "ButtonSettings": "הגדרות", + "ButtonSend": "שלח", + "ButtonSelectView": "בחר תצוגה", + "ButtonSelectServer": "בחר שרת", + "ButtonRename": "שנה שם", + "ButtonPause": "השהה", + "ButtonParentalControl": "בקרת הורים", + "ButtonNetwork": "רשת", + "ButtonMore": "עוד", + "ButtonLearnMore": "למד עוד", + "ButtonInfo": "מידע", + "ButtonHome": "בית", + "ButtonHelp": "עזרה", + "ButtonFullscreen": "מסך מלא", + "ButtonEditImages": "ערוך תמונות", + "ButtonConnect": "התחבר", + "ButtonAddServer": "הוסף שרת", + "ButtonAddMediaLibrary": "הוסף ספריית מדיה", + "ButtonAddImage": "הוסף תמונה", + "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", + "Ascending": "סדר עולה" } From 8a1c7fb6f0b3d0b0d3783d602af0b534ef0d9d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9E=AC=ED=98=84?= Date: Tue, 25 Feb 2020 18:06:39 +0000 Subject: [PATCH 238/260] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 8e2e438d89..9cfacb6c34 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -94,7 +94,7 @@ "DeleteMedia": "미디어 제거", "DeleteUser": "사용자 제거", "DeleteUserConfirmation": "이 사용자를 제거하겠습니까?", - "DeviceAccessHelp": "이것은 고유하게 식별할 수 있고 브라우저 접근을 방해하지 않는 장치에만 적용됩니다. 사용자 장치 접근을 필터링하면 여기에서 승인될 때까지 새 장치를 사용할 수 없게 됩니다.", + "DeviceAccessHelp": "이것은 고유하게 식별할 수 있는 장치에만 적용되므로 브라우저를 통한 접근은 차단할 수 없습니다. 사용자 장치 접근을 필터링하면 이곳에서 승인될 때까지 새 장치를 사용할 수 없게 됩니다.", "Director": "감독", "Dislike": "싫어요", "Download": "다운로드", @@ -1285,5 +1285,15 @@ "Identify": "식별자", "HeaderMoreLikeThis": "비슷한 작품", "DirectorsValue": "감독: {0}", - "ButtonSplit": "나누기" + "ButtonSplit": "나누기", + "HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.", + "HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.", + "HeaderAppearsOn": "표시", + "HandledByProxy": "리버스 프록시로 처리", + "Features": "기능", + "ErrorPleaseSelectLineup": "라인업을 선택하고 다시 시도하십시오. 이용 가능한 라인업이 없으면 계정, 비밀번호, 우편번호가 정확한지 확인하십시오.", + "ErrorAddingListingsToSchedulesDirect": "Schedules Direct 계정에 라인업을 추가하는 중에 오류가 발생했습니다. Schedules Direct는 계정 당 제한된 수의 라인업만이 허용됩니다. 계속하려면 Schedules Direct 웹사이트에 로그인하여 다른 항목을 삭제해야 할 수 있습니다.", + "CopyStreamURLError": "URL을 복사하는 중에 오류가 발생했습니다.", + "ColorTransfer": "컬러 변환", + "AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오." } From f7997d5270f1a3e450d19db981679d837e6d37a3 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 25 Feb 2020 18:33:38 -0500 Subject: [PATCH 239/260] Add eslint:recommended and update rules and globals --- .eslintrc.yml | 56 ++++++++++++++++--- src/components/htmlvideoplayer/plugin.js | 1 + .../polyfills/focusPreventScroll.js | 1 + src/components/polyfills/objectassign.js | 1 + src/components/serviceworker/notifications.js | 1 + src/components/skinManager.js | 1 + src/components/youtubeplayer/plugin.js | 1 + src/serviceworker.js | 1 + 8 files changed, 56 insertions(+), 7 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 1055e084c9..c7ec5c228a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,6 +3,52 @@ env: browser: true amd: true +globals: + # New browser globals + DataView: readonly + MediaMetadata: readonly + Promise: readonly + # Deprecated browser globals + DocumentTouch: readonly + # Tizen globals + tizen: readonly + webapis: readonly + # WebOS globals + webOS: readonly + # Dependency globals + $: readonly + jQuery: readonly + queryString: readonly + requirejs: readonly + # Jellyfin globals + ApiClient: writable + AppInfo: writable + chrome: writable + ConnectionManager: writable + DlnaProfilePage: writable + Dashboard: writable + DashboardPage: writable + Emby: readonly + Events: writable + getParameterByName: writable + getWindowLocationSearch: writable + Globalize: writable + Hls: writable + humaneDate: writable + humaneElapsed: writable + LibraryMenu: writable + LinkParser: writable + LiveTvHelpers: writable + MetadataEditor: writable + pageClassOn: writable + pageIdOn: writable + PlaylistViewer: writable + UserParentalControlPage: writable + Windows: readonly + +extends: + - eslint:recommended + rules: block-spacing: ["error"] brace-style: ["error"] @@ -11,17 +57,13 @@ rules: eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] - line-comment-position: ["off"] max-statements-per-line: ["error"] - no-empty: ["error"] - no-extra-semi: ["error"] no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] + no-redeclare: ["warn"] no-trailing-spaces: ["error"] - no-void: ["off"] + no-unused-vars: ["warn"] + no-useless-escape: ["warn"] one-var: ["error", "never"] - padding-line-between-statements: ["off"] - semi: ["off"] space-before-blocks: ["error"] - yoda: ["off"] diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 6760e1dd99..c72afb382f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -357,6 +357,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return new Promise(function (resolve, reject) { require(['shaka'], function () { + /* globals shaka */ var player = new shaka.Player(elem); diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 8c8da94244..6df9e9928c 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -12,6 +12,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { }, true); var opts = Object.defineProperty({}, "preventScroll", { + // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; } diff --git a/src/components/polyfills/objectassign.js b/src/components/polyfills/objectassign.js index bf8d7118a5..85f55aa144 100644 --- a/src/components/polyfills/objectassign.js +++ b/src/components/polyfills/objectassign.js @@ -11,6 +11,7 @@ if (typeof Object.assign != 'function') { var source = arguments[index]; if (source !== undefined && source !== null) { for (var nextKey in source) { + // eslint-disable-next-line no-prototype-builtins if (source.hasOwnProperty(nextKey)) { output[nextKey] = source[nextKey]; } diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index dbb0844045..33f54bb64d 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -1,3 +1,4 @@ +/* eslint-env serviceworker */ (function () { 'use strict'; diff --git a/src/components/skinManager.js b/src/components/skinManager.js index b38ff25791..b81e7c3a40 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -162,6 +162,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function playSound(path, volume) { lastSound = new Date().getTime(); require(['howler'], function (howler) { + /* globals Howl */ try { var sound = new Howl({ src: [path], diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index df04fb850e..fd9c05292e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -1,5 +1,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) { "use strict"; + /* globals YT */ function zoomIn(elem, iterations) { var keyframes = [ diff --git a/src/serviceworker.js b/src/serviceworker.js index 49c3767691..c43d1f4b4e 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1 +1,2 @@ +/* eslint-env serviceworker */ importScripts("components/serviceworker/notifications.js"); From fb2fe462df209086d3e6c33cc14d1ff236fc0e78 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:19:04 -0500 Subject: [PATCH 240/260] Fix redundant double negation errors --- src/components/alphanumericshortcuts/alphanumericshortcuts.js | 2 +- src/components/apphost.js | 2 +- src/scripts/browserdeviceprofile.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 0c62add1e1..2bcf3712bb 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -10,7 +10,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) { if (e.ctrlKey) { return; } - if (!!e.shiftKey) { + if (e.shiftKey) { return; } if (e.altKey) { diff --git a/src/components/apphost.js b/src/components/apphost.js index 291f531eb1..83426a3267 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -324,7 +324,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet * Ask user for exit */ function askForExit() { - if (!!exitPromise) { + if (exitPromise) { return; } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 7eb2c3caff..b45bdc59bf 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -92,7 +92,7 @@ define(['browser'], function (browser) { return true; } - if (!!videoTestElement.canPlayType) { + if (videoTestElement.canPlayType) { return videoTestElement.canPlayType('application/x-mpegurl; codecs="avc1.42E01E, ac-3"').replace(/no/, '') || videoTestElement.canPlayType('application/vnd.apple.mpegURL; codecs="avc1.42E01E, ac-3"').replace(/no/, ''); } From 335dc4eff41b8c4e7768e38fd049501cae9fd3ac Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:42:58 -0500 Subject: [PATCH 241/260] Remove dead code --- src/scripts/userpassword.js | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 src/scripts/userpassword.js diff --git a/src/scripts/userpassword.js b/src/scripts/userpassword.js deleted file mode 100644 index 52e06e6cec..0000000000 --- a/src/scripts/userpassword.js +++ /dev/null @@ -1,30 +0,0 @@ -define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu) { - "use strict"; - - function loadUser(page, user) { - libraryMenu.setTitle(user.Name); - - if ("Guest" == user.ConnectLinkType) { - $(".connectMessage", page).show(); - } else { - $(".connectMessage", page).hide(); - } - - loading.hide(); - } - - function loadData(page) { - loading.show(); - var userId = getParameterByName("userId"); - ApiClient.getUser(userId).then(function (user) { - loadUser(page, user); - }); - } - - $(document).on("pageinit", "#userPasswordPage", function () { - $(".adminUpdatePasswordForm").off("submit", UpdatePasswordPage.onSubmit).on("submit", UpdatePasswordPage.onSubmit); - $(".adminLocalAccessForm").off("submit", UpdatePasswordPage.onLocalAccessSubmit).on("submit", UpdatePasswordPage.onLocalAccessSubmit); - }).on("pagebeforeshow", "#userPasswordPage", function () { - loadData(this); - }); -}); From 45acf525484a1205b114f8492d0c235d9f028792 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:46:56 -0500 Subject: [PATCH 242/260] Fix errors in itemdetailpage --- src/controllers/itemdetailpage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 990de87b60..83bd47d17a 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url = null) { + if (url == null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); @@ -1661,7 +1661,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function canPlaySomeItemInCollection(items) { var i = 0; - for (length = items.length; i < length; i++) { + for (var length = items.length; i < length; i++) { if (playbackManager.canPlay(items[i])) { return true; } From 36224ce5f71f28c62b833089fdb429ed744c65af Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:48:41 -0500 Subject: [PATCH 243/260] Fix undefined globalize error --- src/controllers/dashboard/general.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index fe8661b578..a434e46241 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -58,7 +58,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb }); }, function () { require(["alert"], function (alert) { - alert(globalize.translate("DefaultErrorMessage")); + alert(Globalize.translate("DefaultErrorMessage")); }); Dashboard.processServerConfigurationUpdateResult(); From 75b7afd531bc96497db464737ae32c1f675b1e25 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:01:21 -0500 Subject: [PATCH 244/260] Fix references to removed renderHasPendingRestart function --- src/controllers/dashboard/dashboard.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 1b7d123931..2530d7a9a1 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -741,21 +741,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }; return function (view, params) { function onRestartRequired(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onRestartRequired not implemented', evt, apiClient); } function onServerShuttingDown(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerShuttingDown not implemented', evt, apiClient); } function onServerRestarting(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerRestarting not implemented', evt, apiClient); } function onPackageInstalling(evt, apiClient) { From f12e24b1cb130c47158a8599b3c16427097c0ddd Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:07:23 -0500 Subject: [PATCH 245/260] Fix undefined variables in tunerpicker --- src/components/tunerpicker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index ec6087b890..4dd5ecd3de 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -1,4 +1,4 @@ -define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser) { +define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "focusManager", "scrollHelper", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; @@ -152,14 +152,14 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, true); + scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); } var apiClient = connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, false); + scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), false); } return dialogHelper.open(dlg).then(function () { From 23c3536acedcbb14e76af17e711442e6792ef9b6 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:12:48 -0500 Subject: [PATCH 246/260] Suppress fallthrough error in subtitlesync --- src/components/subtitlesync/subtitlesync.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 904c612317..07ce2cb7ec 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -130,7 +130,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle = function(action) { if (player && playbackManager.supportSubtitleOffset(player)) { - + /* eslint-disable no-fallthrough */ switch (action) { case undefined: // if showing subtitle sync is enabled @@ -157,7 +157,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncContainer.classList.add("hide"); break; } - + /* eslint-enable no-fallthrough */ } } From 75ac5ed8b28bca9ddc3d9c1a3bd24d611330490b Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:23:28 -0500 Subject: [PATCH 247/260] Suppress getter-return errors in compatibility tests --- src/components/dom.js | 1 + src/components/scrollManager.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/dom.js b/src/components/dom.js index 5c96965d15..072ff5c77c 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -63,6 +63,7 @@ define([], function () { var supportsCaptureOption = false; try { var opts = Object.defineProperty({}, 'capture', { + // eslint-disable-next-line getter-return get: function () { supportsCaptureOption = true; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 21af83055f..5fc3729bac 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -33,6 +33,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var elem = document.createElement("div"); var opts = Object.defineProperty({}, "behavior", { + // eslint-disable-next-line getter-return get: function () { supportsScrollToOptions = true; } From b30469654f56f011bee515c13e0065b4f5c35f4f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:10 -0500 Subject: [PATCH 248/260] Suppress no-control-regex in sanitizefilename --- src/components/sanitizefilename.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index 9bcc99e3a1..f53ce613f6 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -4,6 +4,7 @@ define([], function () { 'use strict'; var illegalRe = /[\/\?<>\\:\*\|":]/g; + // eslint-disable-next-line no-control-regex var controlRe = /[\x00-\x1f\x80-\x9f]/g; var reservedRe = /^\.+$/; var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; From 29e7c4775bc931b083d21319a1ded36776f023e4 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:40 -0500 Subject: [PATCH 249/260] Fix undefined type in libraryoptionseditor --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index f9f63c9b51..123fce9b95 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -463,7 +463,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct if (!typeOptions) { typeOptions = { - Type: type + Type: originalTypeOption.Type }; options.TypeOptions.push(typeOptions); } From 210e241c7746d06008e3e83abe92b51cc645c054 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:42:05 -0500 Subject: [PATCH 250/260] Suppress conditional assignment error in humanedate lib --- src/components/humanedate.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/humanedate.js b/src/components/humanedate.js index 85d3a6d3bf..26ce26d942 100644 --- a/src/components/humanedate.js +++ b/src/components/humanedate.js @@ -25,6 +25,7 @@ define(["datetime"], function (datetime) { if (seconds < 0) { seconds = Math.abs(seconds); } + // eslint-disable-next-line no-cond-assign for (; format = time_formats[i++];) { if (seconds < format[0]) { if (2 == format.length) { From 4c297573f11abdbbede9708b6a921a8ff89f252c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:58:15 -0500 Subject: [PATCH 251/260] Fix errors in htmlvideoplayer plugin --- src/components/htmlvideoplayer/plugin.js | 43 +++++------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index c72afb382f..2a59f3b13f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,5 +1,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager, globalize) { "use strict"; + /* globals cast */ var mediaManager; @@ -741,7 +742,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } + // No idea what this is possibly trying to workaround setTimeout(function () { + // eslint-disable-next-line no-self-assign elem.currentTime = elem.currentTime; }, 100); }; @@ -1350,38 +1353,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } - function updateTextStreamUrls(startPositionTicks) { - - if (!supportsTextTracks()) { - return; - } - - var allTracks = self._mediaElement.textTracks; // get list of tracks - var i; - var track; - - for (i = 0; i < allTracks.length; i++) { - - track = allTracks[i]; - - // This throws an error in IE, but is fine in chrome - // In IE it's not necessary anyway because changing the src seems to be enough - try { - while (track.cues.length) { - track.removeCue(track.cues[0]); - } - } catch (e) { - console.error('error removing cue from textTrack'); - } - } - - var tracks = self._mediaElement.querySelectorAll('track'); - for (i = 0; i < tracks.length; i++) { - track = tracks[i]; - track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks); - } - } - function createMediaElement(options) { if (browser.tv || browser.iOS || browser.mobile) { @@ -1653,9 +1624,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (document.AirPlayEnabled) { if (video) { if (isEnabled) { - video.requestAirPlay().catch(onAirPlayError); + video.requestAirPlay().catch(function(err) { + console.error("Error requesting AirPlay", err) + }); } else { - document.exitAirPLay().catch(onAirPlayError); + document.exitAirPLay().catch(function(err) { + console.error("Error exiting AirPlay", err) + }); } } } else { From 6acff39055fb38ad1bc35df6c9b732494d9ef91e Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:00:13 -0500 Subject: [PATCH 252/260] Remove dead code --- src/components/guide/guide-settings.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index b31a3d1086..7409a7e943 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -89,20 +89,6 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } } - function onSortByChange() { - var newValue = this.value; - if (this.checked) { - var changed = options.query.SortBy !== newValue; - - options.query.SortBy = newValue.replace('_', ','); - options.query.StartIndex = 0; - - if (options.callback && changed) { - options.callback(); - } - } - } - function showEditor(options) { return new Promise(function (resolve, reject) { From ce2fdc9df281d86015e7e26f30423fe3b771a629 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:03:21 -0500 Subject: [PATCH 253/260] Fix errors in chromecasthelpers --- src/components/chromecast/chromecasthelpers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index d8bb29252d..2fef0c68b3 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -131,8 +131,9 @@ define(['events'], function (events) { var links = []; var match; + // eslint-disable-next-line no-cond-assign while (match = linkRegExp.exec(text)) { - console.debug(matches); + console.debug(match); var txt = match[0]; var pos = match.index; var len = txt.length; From 33bbd40174a186650c87b4f6390f3aebb0e054ed Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:26:18 -0500 Subject: [PATCH 254/260] Fix errors in cardBuilder --- src/components/cardbuilder/cardBuilder.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 75702f386e..bc82813d9a 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -140,7 +140,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; case 'overflowPortrait': if (layoutManager.tv) { @@ -166,7 +165,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowSquare': if (layoutManager.tv) { return 100 / 15.5; @@ -191,7 +189,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowBackdrop': if (layoutManager.tv) { return 100 / 23.3; @@ -216,7 +213,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; default: return 4; } @@ -870,9 +866,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (item.PremiereDate) { try { - - lines.push(getPremiereDateText(item)); - + lines.push(datetime.toLocaleDateString( + datetime.parseISO8601Date(item.PremiereDate), + { weekday: 'long', month: 'long', day: 'numeric' } + )); } catch (err) { lines.push(''); @@ -1383,7 +1380,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress || (item.RefreshStatus && virtualFolder.item !== 'Idle') ? '' : ' class="hide"'; + var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } From c46c6c220347442ac496f51de9d2c42c8d8d88e2 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:29:52 -0500 Subject: [PATCH 255/260] Fix browsers that do not support Promises --- package.json | 1 - src/bundle.js | 6 ------ src/scripts/apploader.js | 26 +++++++++++++++++++------- src/scripts/site.js | 6 +----- webpack.common.js | 2 +- yarn.lock | 10 ---------- 6 files changed, 21 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 87050382c5..726823208f 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "libjass": "^0.11.0", "material-design-icons-iconfont": "^5.0.1", "native-promise-only": "^0.8.0-a", - "requirejs": "^2.3.5", "resize-observer-polyfill": "^1.5.1", "shaka-player": "^2.5.9", "sortablejs": "^1.10.2", diff --git a/src/bundle.js b/src/bundle.js index b7bde65f80..6a352c5776 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -47,12 +47,6 @@ _define("howler", function() { return howler; }); -// native-promise-only -var nativePromise = require("native-promise-only"); -_define("native-promise-only", function() { - return nativePromise; -}); - // resize-observer-polyfill var resize = require("resize-observer-polyfill").default; _define("resize-observer-polyfill", function() { diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index 4b5d2e8eec..e8a63217a8 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -19,11 +19,23 @@ document.head.appendChild(script); } - injectScriptElement( - self.Promise ? "./libraries/alameda.js" : "./libraries/require.js", - function() { - // onload of require library - injectScriptElement("./scripts/site.js"); - } - ); + function loadSite() { + injectScriptElement( + "./libraries/alameda.js", + function() { + // onload of require library + injectScriptElement("./scripts/site.js"); + } + ); + } + + if (!self.Promise) { + // Load Promise polyfill if they are not natively supported + injectScriptElement( + "./libraries/npo.js", + loadSite + ); + } else { + loadSite(); + } })(); diff --git a/src/scripts/site.js b/src/scripts/site.js index e43e321e8a..599f69c531 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -671,11 +671,7 @@ var AppInfo = {}; AppInfo.isNativeApp = true; } - if (!window.Promise || browser.web0s) { - require(["native-promise-only"], init); - } else { - init(); - } + init(); } var localApiClient; diff --git a/webpack.common.js b/webpack.common.js index 5e0f885267..0809fc01bb 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -5,7 +5,7 @@ const CopyPlugin = require("copy-webpack-plugin"); const Assets = [ "alameda/alameda.js", - "requirejs/require.js", + "native-promise-only/npo.js", "libass-wasm/dist/subtitles-octopus-worker.js", "libass-wasm/dist/subtitles-octopus-worker.data", "libass-wasm/dist/subtitles-octopus-worker.wasm" diff --git a/yarn.lock b/yarn.lock index 7187bd1774..669d31a4a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5415,11 +5415,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requirejs@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" - integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5639,11 +5634,6 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" From 15ef6bf94513912474807ab44702a0e3a4db765c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:49:53 -0500 Subject: [PATCH 256/260] Add missing semicolon warning --- .eslintrc.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index c7ec5c228a..f5ce779d44 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -61,9 +61,11 @@ rules: no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] - no-redeclare: ["warn"] no-trailing-spaces: ["error"] + one-var: ["error", "never"] + semi: ["warn"] + space-before-blocks: ["error"] + # TODO: Fix warnings and remove these rules + no-redeclare: ["warn"] no-unused-vars: ["warn"] no-useless-escape: ["warn"] - one-var: ["error", "never"] - space-before-blocks: ["error"] From 6f0b735b3d742b8b4b5b4a9948f25b28c3450769 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:50:41 -0500 Subject: [PATCH 257/260] Fix inverted logic --- src/controllers/itemdetailpage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 83bd47d17a..ad8c0286b0 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url == null) { + if (url != null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); From 8cdeaa8190573b2a3fea7923a11cb19bb8f4f3e5 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:51:34 -0500 Subject: [PATCH 258/260] Remove questionable code --- src/components/htmlvideoplayer/plugin.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 2a59f3b13f..3ac45aabb9 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -741,12 +741,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elemAudioTracks[i].enabled = false; } } - - // No idea what this is possibly trying to workaround - setTimeout(function () { - // eslint-disable-next-line no-self-assign - elem.currentTime = elem.currentTime; - }, 100); }; self.stop = function (destroyPlayer) { From ac50a0b1965160a49797acc893bf3c41d32e14e5 Mon Sep 17 00:00:00 2001 From: sharkykh Date: Tue, 25 Feb 2020 23:33:17 +0000 Subject: [PATCH 259/260] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index e32add2356..d2e7263177 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -591,5 +591,6 @@ "ButtonAddMediaLibrary": "הוסף ספריית מדיה", "ButtonAddImage": "הוסף תמונה", "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", - "Ascending": "סדר עולה" + "Ascending": "סדר עולה", + "Photos": "תמונות" } From 7e369da67b7b0965258e0ba1d9310f4bd3182bf1 Mon Sep 17 00:00:00 2001 From: Vincent Phan Date: Wed, 26 Feb 2020 04:17:14 +0000 Subject: [PATCH 260/260] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 99ab29d68b..88e7051d8a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -215,5 +215,10 @@ "AddToPlaylist": "Thêm vào danh sách phát", "AddToPlayQueue": "Thêm vào hàng đợi", "AddItemToCollectionHelp": "Thêm các mục vào bộ sưu tập bằng cách tìm kiếm và nhấp chuột phải hoặc nhấn vào menu để thêm chúng vào bộ sưu tập.", - "Absolute": "Tuyệt Đối" + "Absolute": "Tuyệt Đối", + "ButtonSend": "Gửi", + "ButtonSelectView": "Chọn chế độ xem", + "ButtonSelectServer": "Chọn máy chủ", + "ButtonScanAllLibraries": "Quét tất cả các thư viện", + "ButtonOk": "Đồng Ý" }