From 6e47761b98767b5e4445bcdb97f2d4f6e21011f1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Apr 2018 17:02:31 -0400 Subject: [PATCH] update title on video osd --- .../ApplicationHost.cs | 34 +----- .../Localization/Core/kk.json | 2 +- .../Localization/Core/nl.json | 8 +- .../Localization/Core/pl.json | 8 +- .../Localization/Core/ru.json | 2 +- .../Sync/IServerSyncProvider.cs | 29 +---- MediaBrowser.Model/Dlna/StreamBuilder.cs | 30 +++-- MediaBrowser.Model/IO/IIsoMounter.cs | 19 --- MediaBrowser.Model/MediaBrowser.Model.csproj | 3 + MediaBrowser.Model/Sync/SyncCategory.cs | 19 +++ MediaBrowser.Model/Sync/SyncJob.cs | 114 ++++++++++++++++++ MediaBrowser.Model/Sync/SyncJobStatus.cs | 14 +++ .../browserdeviceprofile.js | 2 +- .../emby-webcomponents/dialog/dialog.js | 2 +- .../emby-webcomponents/formdialog.css | 2 +- .../htmlvideoplayer/htmlmediahelper.js | 2 +- .../htmlvideoplayer/plugin.js | 2 +- .../emby-webcomponents/itemhelper.js | 2 +- .../emby-webcomponents/strings/en-us.json | 1 + .../emby-webcomponents/strings/kk.json | 16 +-- .../emby-webcomponents/strings/pl.json | 32 ++--- .../emby-webcomponents/strings/ru.json | 20 +-- .../emby-webcomponents/strings/sk.json | 14 +-- .../emby-webcomponents/sync/sync.js | 2 +- .../dashboard-ui/dashboard.html | 16 +-- .../dashboard-ui/home/favorites.js | 2 +- .../dashboard-ui/mysync.html | 15 --- .../dashboard-ui/scripts/pluginspage.js | 2 +- .../dashboard-ui/scripts/userprofilespage.js | 2 +- .../dashboard-ui/scripts/videoosd.js | 2 +- .../dashboard-ui/strings/ar.json | 5 + .../dashboard-ui/strings/be-BY.json | 5 + .../dashboard-ui/strings/bg-BG.json | 5 + .../dashboard-ui/strings/ca.json | 5 + .../dashboard-ui/strings/cs.json | 5 + .../dashboard-ui/strings/da.json | 5 + .../dashboard-ui/strings/de.json | 5 + .../dashboard-ui/strings/el.json | 5 + .../dashboard-ui/strings/en-GB.json | 5 + .../dashboard-ui/strings/en-US.json | 6 +- .../dashboard-ui/strings/es-AR.json | 5 + .../dashboard-ui/strings/es-MX.json | 5 + .../dashboard-ui/strings/es.json | 5 + .../dashboard-ui/strings/fa.json | 5 + .../dashboard-ui/strings/fi.json | 5 + .../dashboard-ui/strings/fr-CA.json | 5 + .../dashboard-ui/strings/fr.json | 5 + .../dashboard-ui/strings/gsw.json | 5 + .../dashboard-ui/strings/he.json | 5 + .../dashboard-ui/strings/hi-IN.json | 5 + .../dashboard-ui/strings/hr.json | 5 + .../dashboard-ui/strings/hu.json | 5 + .../dashboard-ui/strings/id.json | 5 + .../dashboard-ui/strings/it.json | 5 + .../dashboard-ui/strings/kk.json | 9 +- .../dashboard-ui/strings/ko.json | 5 + .../dashboard-ui/strings/lt-LT.json | 5 + .../dashboard-ui/strings/ms.json | 5 + .../dashboard-ui/strings/nb.json | 5 + .../dashboard-ui/strings/nl.json | 99 +++++++-------- .../dashboard-ui/strings/pl.json | 81 +++++++------ .../dashboard-ui/strings/pt-BR.json | 5 + .../dashboard-ui/strings/pt-PT.json | 5 + .../dashboard-ui/strings/ro.json | 5 + .../dashboard-ui/strings/ru.json | 5 + .../dashboard-ui/strings/sk.json | 5 + .../dashboard-ui/strings/sl-SI.json | 5 + .../dashboard-ui/strings/sv.json | 5 + .../dashboard-ui/strings/tr.json | 5 + .../dashboard-ui/strings/uk.json | 5 + .../dashboard-ui/strings/vi.json | 5 + .../dashboard-ui/strings/zh-CN.json | 5 + .../dashboard-ui/strings/zh-HK.json | 5 + .../dashboard-ui/strings/zh-TW.json | 5 + .../dashboard-ui/syncactivity.html | 15 --- SharedVersion.cs | 2 +- ThirdParty/emby/Emby.Server.Connect.dll | Bin 62464 -> 62464 bytes ThirdParty/emby/Emby.Server.MediaEncoding.dll | Bin 275968 -> 275968 bytes ThirdParty/emby/Emby.Server.Sync.dll | Bin 174592 -> 176128 bytes 79 files changed, 551 insertions(+), 279 deletions(-) create mode 100644 MediaBrowser.Model/Sync/SyncCategory.cs create mode 100644 MediaBrowser.Model/Sync/SyncJob.cs create mode 100644 MediaBrowser.Model/Sync/SyncJobStatus.cs diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index e35edb230b..2de10d18c3 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -823,8 +823,6 @@ public void Init() RegisterResources(); FindParts(); - - InstallIsoMounters(); } protected virtual void OnLoggerLoaded(bool isFirstLoad) @@ -1140,36 +1138,6 @@ private void SetHttpLimit() } } - /// - /// Installs the iso mounters. - /// - private void InstallIsoMounters() - { - var list = new List(); - - foreach (var isoMounter in GetExports()) - { - try - { - if (isoMounter.RequiresInstallation && !isoMounter.IsInstalled) - { - Logger.Info("Installing {0}", isoMounter.Name); - - var task = isoMounter.Install(CancellationToken.None); - Task.WaitAll(task); - } - - list.Add(isoMounter); - } - catch (Exception ex) - { - Logger.ErrorException("{0} failed to load.", ex, isoMounter.Name); - } - } - - IsoManager.AddParts(list); - } - protected string GetDefaultUserAgent() { var name = FormatAttribute(Name); @@ -1444,6 +1412,8 @@ protected void FindParts() NotificationManager.AddParts(GetExports(), GetExports()); UserManager.AddParts(GetExports()); + + IsoManager.AddParts(GetExports()); } private IPlugin LoadPlugin(Tuple info) diff --git a/Emby.Server.Implementations/Localization/Core/kk.json b/Emby.Server.Implementations/Localization/Core/kk.json index 0329234520..d937451af3 100644 --- a/Emby.Server.Implementations/Localization/Core/kk.json +++ b/Emby.Server.Implementations/Localization/Core/kk.json @@ -1,5 +1,5 @@ { - "HeaderCameraUploads": "Camera Uploads", + "HeaderCameraUploads": "\u041a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u0436\u04af\u043a\u0442\u0435\u043b\u0433\u0435\u043d\u0434\u0435\u0440", "Latest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "Inherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index cc0364a597..f0a16ce8ed 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -1,5 +1,5 @@ { - "HeaderCameraUploads": "Camera Uploads", + "HeaderCameraUploads": "Camera uploads", "Latest": "Nieuwste", "ValueSpecialEpisodeName": "Speciaal - {0}", "Inherit": "Overerven", @@ -25,11 +25,11 @@ "Channels": "Kanalen", "Movies": "Films", "Albums": "Albums", - "NameSeasonUnknown": "Season Unknown", + "NameSeasonUnknown": "Seizoen onbekend", "Artists": "Artiesten", "Folders": "Mappen", "Songs": "Titels", - "TvShows": "TV Shows", + "TvShows": "TV-series", "Shows": "Series", "Genres": "Genres", "NameSeasonNumber": "Seizoen {0}", @@ -55,7 +55,7 @@ "UserCreatedWithName": "Gebruiker {0} is aangemaakt", "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", "UserDeletedWithName": "Gebruiker {0} is verwijderd", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}", "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt", "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt", "MessageApplicationUpdated": "Emby Server is bijgewerkt", diff --git a/Emby.Server.Implementations/Localization/Core/pl.json b/Emby.Server.Implementations/Localization/Core/pl.json index 604019480d..b69a930a0d 100644 --- a/Emby.Server.Implementations/Localization/Core/pl.json +++ b/Emby.Server.Implementations/Localization/Core/pl.json @@ -1,6 +1,6 @@ { - "HeaderCameraUploads": "Camera Uploads", - "Latest": "Ostatnio dodane do", + "HeaderCameraUploads": "Przes\u0142ane z aparatu", + "Latest": "Ostatnio dodane", "ValueSpecialEpisodeName": "Specjalne - {0}", "Inherit": "Dziedzicz", "Books": "Ksi\u0105\u017cki", @@ -12,7 +12,7 @@ "HomeVideos": "Nagrania prywatne", "Playlists": "Listy odtwarzania", "HeaderRecordingGroups": "Grupy nagra\u0144", - "HeaderContinueWatching": "Kontynuuj ogl\u0105danie", + "HeaderContinueWatching": "Kontynuuj odtwarzanie", "HeaderFavoriteArtists": "Wykonawcy ulubieni", "HeaderFavoriteSongs": "Utwory ulubione", "HeaderAlbumArtists": "Wykonawcy album\u00f3w", @@ -25,7 +25,7 @@ "Channels": "Kana\u0142y", "Movies": "Filmy", "Albums": "Albumy", - "NameSeasonUnknown": "Season Unknown", + "NameSeasonUnknown": "Sezon nieznany", "Artists": "Wykonawcy", "Folders": "Foldery", "Songs": "Utwory", diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json index 07956920eb..a9581c3ec2 100644 --- a/Emby.Server.Implementations/Localization/Core/ru.json +++ b/Emby.Server.Implementations/Localization/Core/ru.json @@ -1,5 +1,5 @@ { - "HeaderCameraUploads": "Camera Uploads", + "HeaderCameraUploads": "\u0412\u044b\u043a\u043b\u0430\u0434\u043a\u0430 \u0441 \u043a\u0430\u043c\u0435\u0440", "Latest": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "Inherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0435", diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 197f579f05..50e113c634 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -5,6 +5,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Sync { @@ -13,25 +14,9 @@ public interface IServerSyncProvider : ISyncProvider /// /// Transfers the file. /// - /// The stream. - /// The path parts. - /// The target. - /// The progress. - /// The cancellation token. - /// Task. - Task SendFile(Stream stream, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + Task SendFile(SyncJob syncJob, string originalMediaPath, Stream inputStream, string[] outputPathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); - /// - /// Gets the file. - /// - /// The identifier. - /// The target. - /// The progress. - /// The cancellation token. - /// Task<Stream>. - Task GetFile(string id, SyncTarget target, IProgress progress, CancellationToken cancellationToken); - - Task> GetFiles(string[] pathParts, SyncTarget target, CancellationToken cancellationToken); + Task> GetFiles(string[] directoryPathParts, SyncTarget target, CancellationToken cancellationToken); } public interface ISupportsDirectCopy @@ -39,12 +24,6 @@ public interface ISupportsDirectCopy /// /// Sends the file. /// - /// The path. - /// The path parts. - /// The target. - /// The progress. - /// The cancellation token. - /// Task<SyncedFileInfo>. - Task SendFile(string path, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + Task SendFile(SyncJob syncJob, string originalMediaPath, string inputPath, string[] outputPathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 0c7fbb99ce..f549128896 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -855,10 +855,16 @@ private StreamInfo BuildVideoItem(MediaSourceInfo item, VideoOptions options) } } - var audioTranscodingConditions = new List(); + // Honor requested max channels + playlistItem.GlobalMaxAudioChannels = options.MaxAudioChannels; + + int audioBitrate = GetAudioBitrate(playlistItem.SubProtocol, options.GetMaxBitrate(false), playlistItem.TargetAudioCodec, audioStream, playlistItem); + playlistItem.AudioBitrate = Math.Min(playlistItem.AudioBitrate ?? audioBitrate, audioBitrate); + + isFirstAppliedCodecProfile = true; foreach (CodecProfile i in options.Profile.CodecProfiles) { - if (i.Type == CodecType.VideoAudio && i.ContainsAnyCodec(playlistItem.TargetAudioCodec, transcodingProfile.Container)) + if (i.Type == CodecType.VideoAudio && i.ContainsAnyCodec(transcodingProfile.AudioCodec, transcodingProfile.Container)) { bool applyConditions = true; foreach (ProfileCondition applyCondition in i.ApplyConditions) @@ -880,18 +886,19 @@ private StreamInfo BuildVideoItem(MediaSourceInfo item, VideoOptions options) if (applyConditions) { - audioTranscodingConditions.Add(i); - break; + var transcodingAudioCodecs = ContainerProfile.SplitValue(transcodingProfile.AudioCodec); + foreach (var transcodingAudioCodec in transcodingAudioCodecs) + { + if (i.ContainsAnyCodec(transcodingAudioCodec, transcodingProfile.Container)) + { + ApplyTranscodingConditions(playlistItem, i.Conditions, transcodingAudioCodec, true, isFirstAppliedCodecProfile); + isFirstAppliedCodecProfile = false; + } + } } } } - // Honor requested max channels - playlistItem.GlobalMaxAudioChannels = options.MaxAudioChannels; - - int audioBitrate = GetAudioBitrate(playlistItem.SubProtocol, options.GetMaxBitrate(false), playlistItem.TargetAudioCodec, audioStream, playlistItem); - playlistItem.AudioBitrate = Math.Min(playlistItem.AudioBitrate ?? audioBitrate, audioBitrate); - var maxBitrateSetting = options.GetMaxBitrate(false); // Honor max rate if (maxBitrateSetting.HasValue) @@ -908,9 +915,6 @@ private StreamInfo BuildVideoItem(MediaSourceInfo item, VideoOptions options) var longBitrate = Math.Max(Math.Min(availableBitrateForVideo, currentValue), 64000); playlistItem.VideoBitrate = longBitrate >= int.MaxValue ? int.MaxValue : Convert.ToInt32(longBitrate); } - - // Do this after initial values are set to account for greater than/less than conditions - ApplyTranscodingConditions(playlistItem, audioTranscodingConditions); } playlistItem.TranscodeReasons = transcodeReasons; diff --git a/MediaBrowser.Model/IO/IIsoMounter.cs b/MediaBrowser.Model/IO/IIsoMounter.cs index 6684e7eff6..7efbc20248 100644 --- a/MediaBrowser.Model/IO/IIsoMounter.cs +++ b/MediaBrowser.Model/IO/IIsoMounter.cs @@ -1,5 +1,4 @@ using System; -using System.IO; using System.Threading; using System.Threading.Tasks; @@ -24,24 +23,6 @@ public interface IIsoMounter : IDisposable /// true if this instance can mount the specified path; otherwise, false. bool CanMount(string path); - /// - /// Gets a value indicating whether [requires installation]. - /// - /// true if [requires installation]; otherwise, false. - bool RequiresInstallation { get; } - - /// - /// Gets a value indicating whether this instance is installed. - /// - /// true if this instance is installed; otherwise, false. - bool IsInstalled { get; } - - /// - /// Installs this instance. - /// - /// Task. - Task Install(CancellationToken cancellationToken); - /// /// Gets the name. /// diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 4c6768a1e1..ad0947706b 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -105,6 +105,9 @@ + + + diff --git a/MediaBrowser.Model/Sync/SyncCategory.cs b/MediaBrowser.Model/Sync/SyncCategory.cs new file mode 100644 index 0000000000..e0d7486853 --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncCategory.cs @@ -0,0 +1,19 @@ + +namespace MediaBrowser.Model.Sync +{ + public enum SyncCategory + { + /// + /// The latest + /// + Latest = 0, + /// + /// The next up + /// + NextUp = 1, + /// + /// The resume + /// + Resume = 2 + } +} diff --git a/MediaBrowser.Model/Sync/SyncJob.cs b/MediaBrowser.Model/Sync/SyncJob.cs new file mode 100644 index 0000000000..0cf9312a11 --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncJob.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using MediaBrowser.Model.Sync; + +namespace MediaBrowser.Model.Sync +{ + public class SyncJob + { + /// + /// Gets or sets the identifier. + /// + /// The identifier. + public string Id { get; set; } + /// + /// Gets or sets the device identifier. + /// + /// The device identifier. + public string TargetId { get; set; } + /// + /// Gets or sets the name of the target. + /// + /// The name of the target. + public string TargetName { get; set; } + /// + /// Gets or sets the quality. + /// + /// The quality. + public string Quality { get; set; } + /// + /// Gets or sets the bitrate. + /// + /// The bitrate. + public int? Bitrate { get; set; } + /// + /// Gets or sets the profile. + /// + /// The profile. + public string Profile { get; set; } + /// + /// Gets or sets the category. + /// + /// The category. + public SyncCategory? Category { get; set; } + /// + /// Gets or sets the parent identifier. + /// + /// The parent identifier. + public string ParentId { get; set; } + /// + /// Gets or sets the current progress. + /// + /// The current progress. + public double? Progress { get; set; } + /// + /// Gets or sets the name. + /// + /// The name. + public string Name { get; set; } + /// + /// Gets or sets the status. + /// + /// The status. + public SyncJobStatus Status { get; set; } + /// + /// Gets or sets the user identifier. + /// + /// The user identifier. + public string UserId { get; set; } + /// + /// Gets or sets a value indicating whether [unwatched only]. + /// + /// true if [unwatched only]; otherwise, false. + public bool UnwatchedOnly { get; set; } + /// + /// Gets or sets a value indicating whether [synchronize new content]. + /// + /// true if [synchronize new content]; otherwise, false. + public bool SyncNewContent { get; set; } + /// + /// Gets or sets the item limit. + /// + /// The item limit. + public int? ItemLimit { get; set; } + /// + /// Gets or sets the requested item ids. + /// + /// The requested item ids. + public Guid[] RequestedItemIds { get; set; } + /// + /// Gets or sets the date created. + /// + /// The date created. + public DateTime DateCreated { get; set; } + /// + /// Gets or sets the date last modified. + /// + /// The date last modified. + public DateTime DateLastModified { get; set; } + /// + /// Gets or sets the item count. + /// + /// The item count. + public int ItemCount { get; set; } + + public string ParentName { get; set; } + public string PrimaryImageItemId { get; set; } + public string PrimaryImageTag { get; set; } + + public SyncJob() + { + RequestedItemIds = new Guid[] { }; + } + } +} diff --git a/MediaBrowser.Model/Sync/SyncJobStatus.cs b/MediaBrowser.Model/Sync/SyncJobStatus.cs new file mode 100644 index 0000000000..2d1d30802b --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncJobStatus.cs @@ -0,0 +1,14 @@ + +namespace MediaBrowser.Model.Sync +{ + public enum SyncJobStatus + { + Queued = 0, + Converting = 1, + ReadyToTransfer = 2, + Transferring = 3, + Completed = 4, + CompletedWithError = 5, + Failed = 6 + } +} diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js index 0c1c85aa6a..5213038bb3 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/browserdeviceprofile.js @@ -1 +1 @@ -define(["browser"],function(browser){"use strict";function canPlayH264(videoTestElement){return!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/,""))}function canPlayH265(videoTestElement,options){if(browser.tizen||browser.orsay||browser.xboxOne||browser.web0s||options.supportsHevc)return!0;var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){if(-1!==userAgent.indexOf("aarch64"))return!0}return!!(browser.iOS&&(browser.iOSVersion||0)>=11)||!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/hevc; codecs="hevc, aac"').replace(/no/,""))}function supportsTextTracks(){return!(!browser.tizen&&!browser.orsay)||(null==_supportsTextTracks&&(_supportsTextTracks=null!=document.createElement("video").textTracks),_supportsTextTracks)}function canPlayHls(src){return null==_canPlayHls&&(_canPlayHls=canPlayNativeHls()||canPlayHlsWithMSE()),_canPlayHls}function canPlayNativeHls(){if(browser.tizen||browser.orsay)return!0;var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function canPlayHlsWithMSE(){return null!=window.MediaSource}function canPlayAudioFormat(format){var typeString;if("flac"===format){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(browser.edgeUwp)return!0}else if("wma"===format){if(browser.tizen||browser.orsay)return!0;if(browser.edgeUwp)return!0}else{if("opus"===format)return typeString='audio/ogg; codecs="opus"',!!document.createElement("audio").canPlayType(typeString).replace(/no/,"");if("mp2"===format)return!1}if("webma"===format)typeString="audio/webm";else if("mp2"===format)typeString="audio/mpeg";else if("ogg"===format||"oga"===format){if(browser.chrome)return!1;typeString="audio/"+format}else typeString="audio/"+format;return!!document.createElement("audio").canPlayType(typeString).replace(/no/,"")}function testCanPlayMkv(videoTestElement){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(videoTestElement.canPlayType("video/x-matroska").replace(/no/,"")||videoTestElement.canPlayType("video/mkv").replace(/no/,""))return!0;var userAgent=navigator.userAgent.toLowerCase();return browser.chrome?!browser.operaTv&&(-1===userAgent.indexOf("vivaldi")&&-1===userAgent.indexOf("opera")):!!browser.edgeUwp}function testCanPlayTs(){return browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp}function supportsMpeg2Video(){return browser.orsay||browser.tizen||browser.edgeUwp||browser.web0s}function supportsVc1(){return browser.orsay||browser.tizen||browser.edgeUwp}function getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options){var supported=!1,profileContainer=container,videoCodecs=[];switch(container){case"asf":supported=browser.tizen||browser.orsay||browser.edgeUwp,videoAudioCodecs=[];break;case"avi":supported=browser.tizen||browser.orsay||browser.edgeUwp;break;case"mpg":case"mpeg":supported=browser.edgeUwp||browser.tizen||browser.orsay;break;case"flv":supported=browser.tizen||browser.orsay;break;case"3gp":case"mts":case"trp":case"vob":case"vro":supported=browser.tizen||browser.orsay;break;case"mov":supported=browser.tizen||browser.orsay||browser.chrome||browser.edgeUwp,videoCodecs.push("h264");break;case"m2ts":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoCodecs.push("h264"),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video");break;case"wmv":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoAudioCodecs=[];break;case"ts":supported=testCanPlayTs(),videoCodecs.push("h264"),canPlayH265(videoTestElement,options)&&(videoCodecs.push("h265"),videoCodecs.push("hevc")),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video"),profileContainer="ts,mpegts"}return supported?{Container:profileContainer,Type:"Video",VideoCodec:videoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}:null}function getGlobalMaxVideoBitrate(){var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){return-1!==userAgent.indexOf("aarch64")?null:self.screen&&self.screen.width>=3800?null:3e7}var isTizenFhd=!1;if(browser.tizen)try{isTizenFhd=!webapis.productinfo.isUdPanelSupported(),console.log("isTizenFhd = "+isTizenFhd)}catch(error){console.log("isUdPanelSupported() error code = "+error.code)}return browser.ps4?8e6:browser.xboxOne?12e6:browser.edgeUwp?null:browser.tizen&&isTizenFhd?2e7:null}function supportsAc3(videoTestElement){return!!(browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/,"")&&!browser.osx&&!browser.iOS}function supportsEac3(videoTestElement){return!!(browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/,"")}var _supportsTextTracks,_canPlayHls;return function(options){options=options||{};var physicalAudioChannels=options.audioChannels||(browser.tv||browser.ps4||browser.xboxOne||browser.chromecast?6:2),videoTestElement=document.createElement("video"),canPlayVp8=videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/,""),canPlayVp9=videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/,""),webmAudioCodecs=["vorbis"],canPlayMkv=testCanPlayMkv(videoTestElement),profile={};profile.MaxStreamingBitrate=12e7,profile.MaxStaticBitrate=1e8,profile.MusicStreamingTranscodingBitrate=Math.min(12e7,192e3),profile.DirectPlayProfiles=[];var videoAudioCodecs=[],hlsVideoAudioCodecs=[],supportsMp3VideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/,"")||videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/,""),supportsMp2VideoAudio=browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s,maxVideoWidth=browser.xboxOne&&self.screen?self.screen.width:null;options.maxVideoWidth&&(maxVideoWidth=options.maxVideoWidth);var canPlayAacVideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/,"");if(canPlayAacVideoAudio&&browser.chromecast&&videoAudioCodecs.push("aac"),supportsAc3(videoTestElement)){videoAudioCodecs.push("ac3");var eAc3=supportsEac3(videoTestElement);eAc3&&videoAudioCodecs.push("eac3");(!browser.edge||!browser.touch||browser.edgeUwp)&&(hlsVideoAudioCodecs.push("ac3"),eAc3&&hlsVideoAudioCodecs.push("eac3"))}canPlayAacVideoAudio&&browser.chromecast&&-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),supportsMp3VideoAudio&&(videoAudioCodecs.push("mp3"),browser.ps4||physicalAudioChannels<=2&&hlsVideoAudioCodecs.push("mp3")),canPlayAacVideoAudio&&(-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),hlsVideoAudioCodecs.push("aac")),supportsMp3VideoAudio&&(browser.ps4||-1===hlsVideoAudioCodecs.indexOf("mp3")&&hlsVideoAudioCodecs.push("mp3")),supportsMp2VideoAudio&&videoAudioCodecs.push("mp2"),(browser.tizen||browser.orsay||browser.web0s||options.supportsDts)&&(videoAudioCodecs.push("dca"),videoAudioCodecs.push("dts")),(browser.tizen||browser.orsay)&&(videoAudioCodecs.push("pcm_s16le"),videoAudioCodecs.push("pcm_s24le")),options.supportsTrueHd&&videoAudioCodecs.push("truehd"),(browser.tizen||browser.orsay)&&videoAudioCodecs.push("aac_latm"),canPlayAudioFormat("opus")&&(videoAudioCodecs.push("opus"),hlsVideoAudioCodecs.push("opus"),webmAudioCodecs.push("opus")),canPlayAudioFormat("flac")&&videoAudioCodecs.push("flac"),videoAudioCodecs=videoAudioCodecs.filter(function(c){return-1===(options.disableVideoAudioCodecs||[]).indexOf(c)}),hlsVideoAudioCodecs=hlsVideoAudioCodecs.filter(function(c){return-1===(options.disableHlsVideoAudioCodecs||[]).indexOf(c)});var mp4VideoCodecs=[],hlsVideoCodecs=[];canPlayH264(videoTestElement)&&(mp4VideoCodecs.push("h264"),hlsVideoCodecs.push("h264")),canPlayH265(videoTestElement,options)&&(mp4VideoCodecs.push("h265"),mp4VideoCodecs.push("hevc"),(browser.tizen||browser.web0s)&&(hlsVideoCodecs.push("h265"),hlsVideoCodecs.push("hevc"))),supportsMpeg2Video()&&mp4VideoCodecs.push("mpeg2video"),supportsVc1()&&mp4VideoCodecs.push("vc1"),(browser.tizen||browser.orsay)&&mp4VideoCodecs.push("msmpeg4v2"),canPlayVp8&&mp4VideoCodecs.push("vp8"),canPlayVp9&&mp4VideoCodecs.push("vp9"),(canPlayVp8||browser.tizen||browser.orsay)&&videoAudioCodecs.push("vorbis"),mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mp4,m4v",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),canPlayMkv&&mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mkv",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),["m2ts","wmv","ts","asf","avi","mpg","mpeg","flv","3gp","mts","trp","vob","vro","mov"].map(function(container){return getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options)}).filter(function(i){return null!=i}).forEach(function(i){profile.DirectPlayProfiles.push(i)}),["opus","mp3","mp2","aac","flac","alac","webma","wma","wav","ogg","oga"].filter(canPlayAudioFormat).forEach(function(audioFormat){"mp2"===audioFormat?profile.DirectPlayProfiles.push({Container:"mp2,mp3",Type:"Audio",AudioCodec:audioFormat}):"mp3"===audioFormat?profile.DirectPlayProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat}):profile.DirectPlayProfiles.push({Container:"webma"===audioFormat?"webma,webm":audioFormat,Type:"Audio"}),"aac"!==audioFormat&&"alac"!==audioFormat||profile.DirectPlayProfiles.push({Container:"m4a",AudioCodec:audioFormat,Type:"Audio"})}),canPlayVp8&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP8"}),canPlayVp9&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP9"}),profile.TranscodingProfiles=[];var hlsBreakOnNonKeyFrames=!(!(browser.iOS||browser.osx||browser.edge)&&canPlayNativeHls());canPlayHls()&&!1!==browser.enableHlsAudio&&profile.TranscodingProfiles.push({Container:!canPlayNativeHls()||browser.edge||browser.android?"ts":"aac",Type:"Audio",AudioCodec:"aac",Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),["aac","mp3","opus","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),["opus","mp3","aac","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Static",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),!canPlayMkv||browser.tizen||browser.orsay||!1===options.enableMkvProgressive||profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Streaming",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayMkv&&profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Static",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayHls()&&!1!==options.enableHls&&profile.TranscodingProfiles.push({Container:"ts",Type:"Video",AudioCodec:hlsVideoAudioCodecs.join(","),VideoCodec:hlsVideoCodecs.join(","),Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),canPlayVp8&&profile.TranscodingProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"vpx",Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()}),profile.TranscodingProfiles.push({Container:"mp4",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:"h264",Context:"Static",Protocol:"http"}),profile.ContainerProfiles=[],profile.CodecProfiles=[];var supportsSecondaryAudio=browser.tizen||browser.orsay||browser.edge||browser.msie,aacCodecProfileConditions=[];videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.5"').replace(/no/,"")||aacCodecProfileConditions.push({Condition:"NotEquals",Property:"AudioProfile",Value:"HE-AAC"}),supportsSecondaryAudio||aacCodecProfileConditions.push({Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}),browser.chromecast&&aacCodecProfileConditions.push({Condition:"LessThanEqual",Property:"AudioChannels",Value:"2",IsRequired:!0}),aacCodecProfileConditions.length&&profile.CodecProfiles.push({Type:"VideoAudio",Codec:"aac",Conditions:aacCodecProfileConditions}),supportsSecondaryAudio||profile.CodecProfiles.push({Type:"VideoAudio",Conditions:[{Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}]});var maxH264Level=browser.chromecast?42:51,h264Profiles="high|main|baseline|constrained baseline";maxH264Level>=51&&browser.chrome&&!browser.osx&&(h264Profiles+="|high 10"),profile.CodecProfiles.push({Type:"Video",Codec:"h264",Conditions:[{Condition:"NotEquals",Property:"IsAnamorphic",Value:"true",IsRequired:!1},{Condition:"EqualsAny",Property:"VideoProfile",Value:h264Profiles},{Condition:"LessThanEqual",Property:"VideoLevel",Value:maxH264Level.toString()}]}),browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s||(profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsAVC",Value:"false",IsRequired:!1}),profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsInterlaced",Value:"true",IsRequired:!1})),maxVideoWidth&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1});var globalMaxVideoBitrate=(getGlobalMaxVideoBitrate()||"").toString(),h264MaxVideoBitrate=globalMaxVideoBitrate;h264MaxVideoBitrate&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:h264MaxVideoBitrate,IsRequired:!0});var globalVideoConditions=[];return globalMaxVideoBitrate&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:globalMaxVideoBitrate}),maxVideoWidth&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1}),globalVideoConditions.length&&profile.CodecProfiles.push({Type:"Video",Conditions:globalVideoConditions}),browser.chromecast&&profile.CodecProfiles.push({Type:"Audio",Codec:"flac",Conditions:[{Condition:"LessThanEqual",Property:"AudioSampleRate",Value:"96000"}]}),profile.SubtitleProfiles=[],supportsTextTracks()&&profile.SubtitleProfiles.push({Format:"vtt",Method:"External"}),profile.ResponseProfiles=[],profile.ResponseProfiles.push({Type:"Video",Container:"m4v",MimeType:"video/mp4"}),profile}}); \ No newline at end of file +define(["browser"],function(browser){"use strict";function canPlayH264(videoTestElement){return!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/,""))}function canPlayH265(videoTestElement,options){if(browser.tizen||browser.orsay||browser.xboxOne||browser.web0s||options.supportsHevc)return!0;var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){if(-1!==userAgent.indexOf("aarch64"))return!0}return!!(browser.iOS&&(browser.iOSVersion||0)>=11)||!(!videoTestElement.canPlayType||!videoTestElement.canPlayType('video/hevc; codecs="hevc, aac"').replace(/no/,""))}function supportsTextTracks(){return!(!browser.tizen&&!browser.orsay)||(null==_supportsTextTracks&&(_supportsTextTracks=null!=document.createElement("video").textTracks),_supportsTextTracks)}function canPlayHls(src){return null==_canPlayHls&&(_canPlayHls=canPlayNativeHls()||canPlayHlsWithMSE()),_canPlayHls}function canPlayNativeHls(){if(browser.tizen||browser.orsay)return!0;var media=document.createElement("video");return!(!media.canPlayType("application/x-mpegURL").replace(/no/,"")&&!media.canPlayType("application/vnd.apple.mpegURL").replace(/no/,""))}function canPlayHlsWithMSE(){return null!=window.MediaSource}function canPlayAudioFormat(format){var typeString;if("flac"===format){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(browser.edgeUwp)return!0}else if("wma"===format){if(browser.tizen||browser.orsay)return!0;if(browser.edgeUwp)return!0}else{if("opus"===format)return typeString='audio/ogg; codecs="opus"',!!document.createElement("audio").canPlayType(typeString).replace(/no/,"");if("mp2"===format)return!1}if("webma"===format)typeString="audio/webm";else if("mp2"===format)typeString="audio/mpeg";else if("ogg"===format||"oga"===format){if(browser.chrome)return!1;typeString="audio/"+format}else typeString="audio/"+format;return!!document.createElement("audio").canPlayType(typeString).replace(/no/,"")}function testCanPlayMkv(videoTestElement){if(browser.tizen||browser.orsay||browser.web0s)return!0;if(videoTestElement.canPlayType("video/x-matroska").replace(/no/,"")||videoTestElement.canPlayType("video/mkv").replace(/no/,""))return!0;var userAgent=navigator.userAgent.toLowerCase();return browser.chrome?!browser.operaTv&&(-1===userAgent.indexOf("vivaldi")&&-1===userAgent.indexOf("opera")):!!browser.edgeUwp}function testCanPlayTs(){return browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp}function supportsMpeg2Video(){return browser.orsay||browser.tizen||browser.edgeUwp||browser.web0s}function supportsVc1(){return browser.orsay||browser.tizen||browser.edgeUwp}function getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options){var supported=!1,profileContainer=container,videoCodecs=[];switch(container){case"asf":supported=browser.tizen||browser.orsay||browser.edgeUwp,videoAudioCodecs=[];break;case"avi":supported=browser.tizen||browser.orsay||browser.edgeUwp;break;case"mpg":case"mpeg":supported=browser.edgeUwp||browser.tizen||browser.orsay;break;case"flv":supported=browser.tizen||browser.orsay;break;case"3gp":case"mts":case"trp":case"vob":case"vro":supported=browser.tizen||browser.orsay;break;case"mov":supported=browser.tizen||browser.orsay||browser.chrome||browser.edgeUwp,videoCodecs.push("h264");break;case"m2ts":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoCodecs.push("h264"),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video");break;case"wmv":supported=browser.tizen||browser.orsay||browser.web0s||browser.edgeUwp,videoAudioCodecs=[];break;case"ts":supported=testCanPlayTs(),videoCodecs.push("h264"),canPlayH265(videoTestElement,options)&&(videoCodecs.push("h265"),videoCodecs.push("hevc")),supportsVc1()&&videoCodecs.push("vc1"),supportsMpeg2Video()&&videoCodecs.push("mpeg2video"),profileContainer="ts,mpegts"}return supported?{Container:profileContainer,Type:"Video",VideoCodec:videoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}:null}function getGlobalMaxVideoBitrate(){var userAgent=navigator.userAgent.toLowerCase();if(browser.chromecast){return-1!==userAgent.indexOf("aarch64")?null:self.screen&&self.screen.width>=3800?null:3e7}var isTizenFhd=!1;if(browser.tizen)try{isTizenFhd=!webapis.productinfo.isUdPanelSupported(),console.log("isTizenFhd = "+isTizenFhd)}catch(error){console.log("isUdPanelSupported() error code = "+error.code)}return browser.ps4?8e6:browser.xboxOne?12e6:browser.edgeUwp?null:browser.tizen&&isTizenFhd?2e7:null}function supportsAc3(videoTestElement){return!!(browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/,"")&&!browser.osx&&!browser.iOS}function supportsEac3(videoTestElement){return!!(browser.tizen||browser.orsay||browser.web0s)||videoTestElement.canPlayType('audio/mp4; codecs="ec-3"').replace(/no/,"")}var _supportsTextTracks,_canPlayHls;return function(options){options=options||{};var physicalAudioChannels=options.audioChannels||(browser.tv||browser.ps4||browser.xboxOne?6:2),videoTestElement=document.createElement("video"),canPlayVp8=videoTestElement.canPlayType('video/webm; codecs="vp8"').replace(/no/,""),canPlayVp9=videoTestElement.canPlayType('video/webm; codecs="vp9"').replace(/no/,""),webmAudioCodecs=["vorbis"],canPlayMkv=testCanPlayMkv(videoTestElement),profile={};profile.MaxStreamingBitrate=12e7,profile.MaxStaticBitrate=1e8,profile.MusicStreamingTranscodingBitrate=Math.min(12e7,192e3),profile.DirectPlayProfiles=[];var videoAudioCodecs=[],hlsVideoAudioCodecs=[],supportsMp3VideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.69"').replace(/no/,"")||videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/,""),supportsMp2VideoAudio=browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s,maxVideoWidth=browser.xboxOne&&self.screen?self.screen.width:null;options.maxVideoWidth&&(maxVideoWidth=options.maxVideoWidth);var canPlayAacVideoAudio=videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.2"').replace(/no/,"");if(canPlayAacVideoAudio&&browser.chromecast&&videoAudioCodecs.push("aac"),supportsAc3(videoTestElement)){videoAudioCodecs.push("ac3");var eAc3=supportsEac3(videoTestElement);eAc3&&videoAudioCodecs.push("eac3");(!browser.edge||!browser.touch||browser.edgeUwp)&&(hlsVideoAudioCodecs.push("ac3"),eAc3&&hlsVideoAudioCodecs.push("eac3"))}canPlayAacVideoAudio&&browser.chromecast&&-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),supportsMp3VideoAudio&&(videoAudioCodecs.push("mp3"),browser.ps4||physicalAudioChannels<=2&&hlsVideoAudioCodecs.push("mp3")),canPlayAacVideoAudio&&(-1===videoAudioCodecs.indexOf("aac")&&videoAudioCodecs.push("aac"),hlsVideoAudioCodecs.push("aac")),supportsMp3VideoAudio&&(browser.ps4||-1===hlsVideoAudioCodecs.indexOf("mp3")&&hlsVideoAudioCodecs.push("mp3")),supportsMp2VideoAudio&&videoAudioCodecs.push("mp2"),(browser.tizen||browser.orsay||browser.web0s||options.supportsDts)&&(videoAudioCodecs.push("dca"),videoAudioCodecs.push("dts")),(browser.tizen||browser.orsay)&&(videoAudioCodecs.push("pcm_s16le"),videoAudioCodecs.push("pcm_s24le")),options.supportsTrueHd&&videoAudioCodecs.push("truehd"),(browser.tizen||browser.orsay)&&videoAudioCodecs.push("aac_latm"),canPlayAudioFormat("opus")&&(videoAudioCodecs.push("opus"),hlsVideoAudioCodecs.push("opus"),webmAudioCodecs.push("opus")),canPlayAudioFormat("flac")&&videoAudioCodecs.push("flac"),videoAudioCodecs=videoAudioCodecs.filter(function(c){return-1===(options.disableVideoAudioCodecs||[]).indexOf(c)}),hlsVideoAudioCodecs=hlsVideoAudioCodecs.filter(function(c){return-1===(options.disableHlsVideoAudioCodecs||[]).indexOf(c)});var mp4VideoCodecs=[],hlsVideoCodecs=[];canPlayH264(videoTestElement)&&(mp4VideoCodecs.push("h264"),hlsVideoCodecs.push("h264")),canPlayH265(videoTestElement,options)&&(mp4VideoCodecs.push("h265"),mp4VideoCodecs.push("hevc"),(browser.tizen||browser.web0s)&&(hlsVideoCodecs.push("h265"),hlsVideoCodecs.push("hevc"))),supportsMpeg2Video()&&mp4VideoCodecs.push("mpeg2video"),supportsVc1()&&mp4VideoCodecs.push("vc1"),(browser.tizen||browser.orsay)&&mp4VideoCodecs.push("msmpeg4v2"),canPlayVp8&&mp4VideoCodecs.push("vp8"),canPlayVp9&&mp4VideoCodecs.push("vp9"),(canPlayVp8||browser.tizen||browser.orsay)&&videoAudioCodecs.push("vorbis"),mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mp4,m4v",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),canPlayMkv&&mp4VideoCodecs.length&&profile.DirectPlayProfiles.push({Container:"mkv",Type:"Video",VideoCodec:mp4VideoCodecs.join(","),AudioCodec:videoAudioCodecs.join(",")}),["m2ts","wmv","ts","asf","avi","mpg","mpeg","flv","3gp","mts","trp","vob","vro","mov"].map(function(container){return getDirectPlayProfileForVideoContainer(container,videoAudioCodecs,videoTestElement,options)}).filter(function(i){return null!=i}).forEach(function(i){profile.DirectPlayProfiles.push(i)}),["opus","mp3","mp2","aac","flac","alac","webma","wma","wav","ogg","oga"].filter(canPlayAudioFormat).forEach(function(audioFormat){"mp2"===audioFormat?profile.DirectPlayProfiles.push({Container:"mp2,mp3",Type:"Audio",AudioCodec:audioFormat}):"mp3"===audioFormat?profile.DirectPlayProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat}):profile.DirectPlayProfiles.push({Container:"webma"===audioFormat?"webma,webm":audioFormat,Type:"Audio"}),"aac"!==audioFormat&&"alac"!==audioFormat||profile.DirectPlayProfiles.push({Container:"m4a",AudioCodec:audioFormat,Type:"Audio"})}),canPlayVp8&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP8"}),canPlayVp9&&profile.DirectPlayProfiles.push({Container:"webm",Type:"Video",AudioCodec:webmAudioCodecs.join(","),VideoCodec:"VP9"}),profile.TranscodingProfiles=[];var hlsBreakOnNonKeyFrames=!(!(browser.iOS||browser.osx||browser.edge)&&canPlayNativeHls());canPlayHls()&&!1!==browser.enableHlsAudio&&profile.TranscodingProfiles.push({Container:!canPlayNativeHls()||browser.edge||browser.android?"ts":"aac",Type:"Audio",AudioCodec:"aac",Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),["aac","mp3","opus","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),["opus","mp3","aac","wav"].filter(canPlayAudioFormat).forEach(function(audioFormat){profile.TranscodingProfiles.push({Container:audioFormat,Type:"Audio",AudioCodec:audioFormat,Context:"Static",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()})}),!canPlayMkv||browser.tizen||browser.orsay||!1===options.enableMkvProgressive||profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Streaming",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayMkv&&profile.TranscodingProfiles.push({Container:"mkv",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:mp4VideoCodecs.join(","),Context:"Static",MaxAudioChannels:physicalAudioChannels.toString(),CopyTimestamps:!0}),canPlayHls()&&!1!==options.enableHls&&profile.TranscodingProfiles.push({Container:"ts",Type:"Video",AudioCodec:hlsVideoAudioCodecs.join(","),VideoCodec:hlsVideoCodecs.join(","),Context:"Streaming",Protocol:"hls",MaxAudioChannels:physicalAudioChannels.toString(),MinSegments:browser.iOS||browser.osx?"2":"1",BreakOnNonKeyFrames:hlsBreakOnNonKeyFrames}),canPlayVp8&&profile.TranscodingProfiles.push({Container:"webm",Type:"Video",AudioCodec:"vorbis",VideoCodec:"vpx",Context:"Streaming",Protocol:"http",MaxAudioChannels:physicalAudioChannels.toString()}),profile.TranscodingProfiles.push({Container:"mp4",Type:"Video",AudioCodec:videoAudioCodecs.join(","),VideoCodec:"h264",Context:"Static",Protocol:"http"}),profile.ContainerProfiles=[],profile.CodecProfiles=[];var supportsSecondaryAudio=browser.tizen||browser.orsay||browser.edge||browser.msie,aacCodecProfileConditions=[];videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.40.5"').replace(/no/,"")||aacCodecProfileConditions.push({Condition:"NotEquals",Property:"AudioProfile",Value:"HE-AAC"}),supportsSecondaryAudio||aacCodecProfileConditions.push({Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}),browser.chromecast&&aacCodecProfileConditions.push({Condition:"LessThanEqual",Property:"AudioChannels",Value:"2",IsRequired:!0}),aacCodecProfileConditions.length&&profile.CodecProfiles.push({Type:"VideoAudio",Codec:"aac",Conditions:aacCodecProfileConditions}),supportsSecondaryAudio||profile.CodecProfiles.push({Type:"VideoAudio",Conditions:[{Condition:"Equals",Property:"IsSecondaryAudio",Value:"false",IsRequired:"false"}]});var maxH264Level=browser.chromecast?42:51,h264Profiles="high|main|baseline|constrained baseline";maxH264Level>=51&&browser.chrome&&!browser.osx&&(h264Profiles+="|high 10"),profile.CodecProfiles.push({Type:"Video",Codec:"h264",Conditions:[{Condition:"NotEquals",Property:"IsAnamorphic",Value:"true",IsRequired:!1},{Condition:"EqualsAny",Property:"VideoProfile",Value:h264Profiles},{Condition:"LessThanEqual",Property:"VideoLevel",Value:maxH264Level.toString()}]}),browser.edgeUwp||browser.tizen||browser.orsay||browser.web0s||(profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsAVC",Value:"false",IsRequired:!1}),profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"NotEquals",Property:"IsInterlaced",Value:"true",IsRequired:!1})),maxVideoWidth&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1});var globalMaxVideoBitrate=(getGlobalMaxVideoBitrate()||"").toString(),h264MaxVideoBitrate=globalMaxVideoBitrate;h264MaxVideoBitrate&&profile.CodecProfiles[profile.CodecProfiles.length-1].Conditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:h264MaxVideoBitrate,IsRequired:!0});var globalVideoConditions=[];return globalMaxVideoBitrate&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"VideoBitrate",Value:globalMaxVideoBitrate}),maxVideoWidth&&globalVideoConditions.push({Condition:"LessThanEqual",Property:"Width",Value:maxVideoWidth.toString(),IsRequired:!1}),globalVideoConditions.length&&profile.CodecProfiles.push({Type:"Video",Conditions:globalVideoConditions}),browser.chromecast&&profile.CodecProfiles.push({Type:"Audio",Codec:"flac",Conditions:[{Condition:"LessThanEqual",Property:"AudioSampleRate",Value:"96000"}]}),profile.SubtitleProfiles=[],supportsTextTracks()&&profile.SubtitleProfiles.push({Format:"vtt",Method:"External"}),profile.ResponseProfiles=[],profile.ResponseProfiles.push({Type:"Video",Container:"m4v",MimeType:"video/mp4"}),profile}}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js index d6bb7f05a6..382e7e013e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/dialog/dialog.js @@ -1 +1 @@ -define(["dialogHelper","dom","layoutManager","scrollHelper","globalize","require","material-icons","emby-button","paper-icon-button-light","emby-input","formDialogStyle","flexStyles"],function(dialogHelper,dom,layoutManager,scrollHelper,globalize,require){"use strict";function showDialog(options,template){function onButtonClick(){dialogResult=this.getAttribute("data-id"),dialogHelper.close(dlg)}var dialogOptions={removeOnClose:!0,scrollY:!1},enableTvLayout=layoutManager.tv;enableTvLayout&&(dialogOptions.size="fullscreen");var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog"),dlg.innerHTML=globalize.translateHtml(template,"sharedcomponents"),dlg.classList.add("align-items-center"),dlg.classList.add("justify-content-center");var formDialogContent=dlg.querySelector(".formDialogContent");formDialogContent.classList.add("no-grow"),enableTvLayout?(formDialogContent.style["max-width"]="50%",formDialogContent.style["max-height"]="60%",scrollHelper.centerFocus.on(formDialogContent,!1)):(formDialogContent.style.maxWidth=Math.min(150*options.buttons.length+200,dom.getWindowSize().innerWidth-50)+"px",dlg.classList.add("dialog-fullscreen-lowres")),options.title?dlg.querySelector(".formDialogHeaderTitle").innerHTML=options.title||"":dlg.querySelector(".formDialogHeaderTitle").classList.add("hide");var displayText=options.html||options.text||"";dlg.querySelector(".text").innerHTML=displayText,displayText||dlg.querySelector(".dialogContentInner").classList.add("hide");var i,length,html="";for(i=0,length=options.buttons.length;i"+item.name+""}dlg.querySelector(".formDialogFooter").innerHTML=html;var dialogResult,buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i"+item.name+"",item.description&&(html+='
'+item.description+"
")}dlg.querySelector(".formDialogFooter").innerHTML=html,hasDescriptions&&dlg.querySelector(".formDialogFooter").classList.add("formDialogFooter-vertical");var dialogResult,buttons=dlg.querySelectorAll(".btnOption");for(i=0,length=buttons.length;i3e3?(recoverDecodingErrorDate=now,console.log("try to recover media Error ..."),hlsPlayer.recoverMediaError()):!recoverSwapAudioCodecDate||now-recoverSwapAudioCodecDate>3e3?(recoverSwapAudioCodecDate=now,console.log("try to swap Audio Codec and recover media Error ..."),hlsPlayer.swapAudioCodec(),hlsPlayer.recoverMediaError()):(console.error("cannot recover, last media error recovery failed ..."),reject?reject():onErrorInternal(instance,"mediadecodeerror"))}}function onErrorInternal(instance,type){instance.destroyCustomTrack&&instance.destroyCustomTrack(instance._mediaElement),events.trigger(instance,"error",[{type:type}])}function isValidDuration(duration){return!(!duration||isNaN(duration)||duration===Number.POSITIVE_INFINITY||duration===Number.NEGATIVE_INFINITY)}function setCurrentTimeIfNeeded(element,seconds){Math.abs(element.currentTime||0,seconds)<=1&&(element.currentTime=seconds)}function seekOnPlaybackStart(instance,element,ticks){var seconds=(ticks||0)/1e7;if(seconds){var delay=((instance.currentSrc()||"").toLowerCase(),browser.safari?2500:0);delay?setTimeout(function(){setCurrentTimeIfNeeded(element,seconds)},delay):setCurrentTimeIfNeeded(element,seconds)}}function applySrc(elem,src,options){return window.Windows&&options.mediaSource&&options.mediaSource.IsLocal?Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function(file){var playlist=new Windows.Media.Playback.MediaPlaybackList,source1=Windows.Media.Core.MediaSource.createFromStorageFile(file),startTime=(options.playerStartPositionTicks||0)/1e4;return playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1,startTime)),elem.src=URL.createObjectURL(playlist,{oneTimeOnly:!0}),Promise.resolve()}):(elem.src=src,Promise.resolve())}function onSuccessfulPlay(elem,onErrorFn){elem.addEventListener("error",onErrorFn)}function playWithPromise(elem,onErrorFn){try{var promise=elem.play();return promise&&promise.then?promise.catch(function(e){var errorName=(e.name||"").toLowerCase();return"notallowederror"===errorName||"aborterror"===errorName?(onSuccessfulPlay(elem,onErrorFn),Promise.resolve()):Promise.reject()}):(onSuccessfulPlay(elem,onErrorFn),Promise.resolve())}catch(err){return console.log("error calling video.play: "+err),Promise.reject()}}function destroyCastPlayer(instance){var player=instance._castPlayer;if(player){try{player.unload()}catch(err){console.log(err)}instance._castPlayer=null}}function destroyShakaPlayer(instance){var player=instance._shakaPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._shakaPlayer=null}}function destroyHlsPlayer(instance){var player=instance._hlsPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._hlsPlayer=null}}function destroyFlvPlayer(instance){var player=instance._flvPlayer;if(player){try{player.unload(),player.detachMediaElement(),player.destroy()}catch(err){console.log(err)}instance._flvPlayer=null}}function bindEventsToHlsPlayer(instance,hls,elem,onErrorFn,resolve,reject){hls.on(Hls.Events.MANIFEST_PARSED,function(){playWithPromise(elem,onErrorFn).then(resolve,function(){reject&&(reject(),reject=null)})}),hls.on(Hls.Events.ERROR,function(event,data){switch(console.log("HLS Error: Type: "+data.type+" Details: "+(data.details||"")+" Fatal: "+(data.fatal||!1)),data.type){case Hls.ErrorTypes.NETWORK_ERROR:if(data.response&&data.response.code&&data.response.code>=400)return console.log("hls.js response error code: "+data.response.code),hls.destroy(),void(reject?(reject("servererror"),reject=null):onErrorInternal(instance,"servererror"))}if(data.fatal)switch(data.type){case Hls.ErrorTypes.NETWORK_ERROR:data.response&&0===data.response.code?(console.log("hls.js response error code: "+data.response.code),hls.destroy(),reject?(reject("network"),reject=null):onErrorInternal(instance,"network")):(console.log("fatal network error encountered, try to recover"),hls.startLoad());break;case Hls.ErrorTypes.MEDIA_ERROR:console.log("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"),hls.destroy(),reject?(reject(),reject=null):onErrorInternal(instance,"mediadecodeerror")}})}function onEndedInternal(instance,elem,onErrorFn){elem.removeEventListener("error",onErrorFn),elem.src="",elem.innerHTML="",elem.removeAttribute("src"),destroyHlsPlayer(instance),destroyFlvPlayer(instance),destroyShakaPlayer(instance),destroyCastPlayer(instance),instance.originalDocumentTitle&&(document.title=instance.originalDocumentTitle,instance.originalDocumentTitle=null);var stopInfo={src:instance._currentSrc};events.trigger(instance,"stopped",[stopInfo]),instance._currentTime=null,instance._currentSrc=null,instance._currentPlayOptions=null}function getBufferedRanges(instance,elem){var offset,ranges=[],seekable=elem.buffered||[],currentPlayOptions=instance._currentPlayOptions;currentPlayOptions&&(offset=currentPlayOptions.transcodingOffsetTicks),offset=offset||0;for(var i=0,length=seekable.length;i3e3?(recoverDecodingErrorDate=now,console.log("try to recover media Error ..."),hlsPlayer.recoverMediaError()):!recoverSwapAudioCodecDate||now-recoverSwapAudioCodecDate>3e3?(recoverSwapAudioCodecDate=now,console.log("try to swap Audio Codec and recover media Error ..."),hlsPlayer.swapAudioCodec(),hlsPlayer.recoverMediaError()):(console.error("cannot recover, last media error recovery failed ..."),reject?reject():onErrorInternal(instance,"mediadecodeerror"))}}function onErrorInternal(instance,type){instance.destroyCustomTrack&&instance.destroyCustomTrack(instance._mediaElement),events.trigger(instance,"error",[{type:type}])}function isValidDuration(duration){return!(!duration||isNaN(duration)||duration===Number.POSITIVE_INFINITY||duration===Number.NEGATIVE_INFINITY)}function setCurrentTimeIfNeeded(element,seconds){Math.abs(element.currentTime||0,seconds)<=1&&(element.currentTime=seconds)}function seekOnPlaybackStart(instance,element,ticks){var seconds=(ticks||0)/1e7;if(seconds){var delay=((instance.currentSrc()||"").toLowerCase(),browser.safari?2500:0);delay?setTimeout(function(){setCurrentTimeIfNeeded(element,seconds)},delay):setCurrentTimeIfNeeded(element,seconds)}}function applySrc(elem,src,options){return window.Windows&&options.mediaSource&&options.mediaSource.IsLocal?Windows.Storage.StorageFile.getFileFromPathAsync(options.url).then(function(file){var playlist=new Windows.Media.Playback.MediaPlaybackList,source1=Windows.Media.Core.MediaSource.createFromStorageFile(file),startTime=(options.playerStartPositionTicks||0)/1e4;return playlist.items.append(new Windows.Media.Playback.MediaPlaybackItem(source1,startTime)),elem.src=URL.createObjectURL(playlist,{oneTimeOnly:!0}),Promise.resolve()}):(elem.src=src,Promise.resolve())}function onSuccessfulPlay(elem,onErrorFn){elem.addEventListener("error",onErrorFn)}function playWithPromise(elem,onErrorFn){try{var promise=elem.play();return promise&&promise.then?promise.catch(function(e){var errorName=(e.name||"").toLowerCase();return"notallowederror"===errorName||"aborterror"===errorName?(onSuccessfulPlay(elem,onErrorFn),Promise.resolve()):Promise.reject()}):(onSuccessfulPlay(elem,onErrorFn),Promise.resolve())}catch(err){return console.log("error calling video.play: "+err),Promise.reject()}}function destroyCastPlayer(instance){var player=instance._castPlayer;if(player){try{player.unload()}catch(err){console.log(err)}instance._castPlayer=null}}function destroyShakaPlayer(instance){var player=instance._shakaPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._shakaPlayer=null}}function destroyHlsPlayer(instance){var player=instance._hlsPlayer;if(player){try{player.destroy()}catch(err){console.log(err)}instance._hlsPlayer=null}}function destroyFlvPlayer(instance){var player=instance._flvPlayer;if(player){try{player.unload(),player.detachMediaElement(),player.destroy()}catch(err){console.log(err)}instance._flvPlayer=null}}function bindEventsToHlsPlayer(instance,hls,elem,onErrorFn,resolve,reject){hls.on(Hls.Events.MANIFEST_PARSED,function(){playWithPromise(elem,onErrorFn).then(resolve,function(){reject&&(reject(),reject=null)})}),hls.on(Hls.Events.ERROR,function(event,data){switch(console.log("HLS Error: Type: "+data.type+" Details: "+(data.details||"")+" Fatal: "+(data.fatal||!1)),data.type){case Hls.ErrorTypes.NETWORK_ERROR:if(data.response&&data.response.code&&data.response.code>=400)return console.log("hls.js response error code: "+data.response.code),hls.destroy(),void(reject?(reject("servererror"),reject=null):onErrorInternal(instance,"servererror"))}if(data.fatal)switch(data.type){case Hls.ErrorTypes.NETWORK_ERROR:data.response&&0===data.response.code?(console.log("hls.js response error code: "+data.response.code),hls.destroy(),reject?(reject("network"),reject=null):onErrorInternal(instance,"network")):(console.log("fatal network error encountered, try to recover"),hls.startLoad());break;case Hls.ErrorTypes.MEDIA_ERROR:console.log("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"),hls.destroy(),reject?(reject(),reject=null):onErrorInternal(instance,"mediadecodeerror")}})}function onEndedInternal(instance,elem,onErrorFn){elem.removeEventListener("error",onErrorFn),elem.src="",elem.innerHTML="",elem.removeAttribute("src"),destroyHlsPlayer(instance),destroyFlvPlayer(instance),destroyShakaPlayer(instance),destroyCastPlayer(instance);var stopInfo={src:instance._currentSrc};events.trigger(instance,"stopped",[stopInfo]),instance._currentTime=null,instance._currentSrc=null,instance._currentPlayOptions=null}function getBufferedRanges(instance,elem){var offset,ranges=[],seekable=elem.buffered||[],currentPlayOptions=instance._currentPlayOptions;currentPlayOptions&&(offset=currentPlayOptions.transcodingOffsetTicks),offset=offset||0;for(var i=0,length=seekable.length;i"}).join("")}function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function HtmlVideoPlayer(){function updateVideoUrl(streamInfo){var isHls=-1!==streamInfo.url.toLowerCase().indexOf(".m3u8"),mediaSource=streamInfo.mediaSource,item=streamInfo.item;if(mediaSource&&item&&!mediaSource.RunTimeTicks&&isHls&&"Transcode"===streamInfo.playMethod&&(browser.iOS||browser.osx)){var hlsPlaylistUrl=streamInfo.url.replace("master.m3u8","live.m3u8");return loading.show(),console.log("prefetching hls playlist: "+hlsPlaylistUrl),connectionManager.getApiClient(item.ServerId).ajax({type:"GET",url:hlsPlaylistUrl}).then(function(){return console.log("completed prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),streamInfo.url=hlsPlaylistUrl,Promise.resolve()},function(){return console.log("error prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),Promise.resolve()})}return Promise.resolve()}function setSrcWithFlvJs(instance,elem,options,url){return new Promise(function(resolve,reject){require(["flvjs"],function(flvjs){var flvPlayer=flvjs.createPlayer({type:"flv",url:url},{seekType:"range",lazyLoad:!1});flvPlayer.attachMediaElement(elem),flvPlayer.load(),flvPlayer.play().then(resolve,reject),instance._flvPlayer=flvPlayer,self._currentSrc=url})})}function setSrcWithHlsJs(instance,elem,options,url){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(url),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=url})})}function setCurrentSrcChromecast(instance,elem,options,url){elem.autoplay=!0;var lrd=new cast.receiver.MediaManager.LoadRequestData;lrd.currentTime=(options.playerStartPositionTicks||0)/1e7,lrd.autoplay=!0,lrd.media=new cast.receiver.media.MediaInformation,lrd.media.contentId=url,lrd.media.contentType=options.mimeType,lrd.media.streamType=cast.receiver.media.StreamType.OTHER,lrd.media.customData=options,console.log("loading media url into mediaManager");try{return mediaManager.load(lrd),self._currentSrc=url,Promise.resolve()}catch(err){return console.log("mediaManager error: "+err),Promise.reject()}}function onMediaManagerLoadMedia(event){self._castPlayer&&self._castPlayer.unload(),self._castPlayer=null;var protocol,data=event.data,media=event.data.media||{},url=media.contentId,contentType=media.contentType.toLowerCase(),mediaElement=(media.customData,self._mediaElement),host=new cast.player.api.Host({url:url,mediaElement:mediaElement});protocol=cast.player.api.CreateHlsStreamingProtocol(host),console.log("loading playback url: "+url),console.log("contentType: "+contentType),host.onError=function(errorCode){console.log("Fatal Error - "+errorCode)},mediaElement.autoplay=!1,self._castPlayer=new cast.player.api.Player(host),self._castPlayer.load(protocol,data.currentTime||0),self._castPlayer.playWhenHaveEnoughData()}function initMediaManager(){mediaManager.defaultOnLoad=mediaManager.onLoad.bind(mediaManager),mediaManager.onLoad=onMediaManagerLoadMedia.bind(self),mediaManager.defaultOnStop=mediaManager.onStop.bind(mediaManager),mediaManager.onStop=function(event){playbackManager.stop(),mediaManager.defaultOnStop(event)}}function setCurrentSrc(elem,options){elem.removeEventListener("error",onError);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),htmlMediaHelper.destroyFlvPlayer(self),htmlMediaHelper.destroyCastPlayer(self);var tracks=getMediaStreamTextTracks(options.mediaSource);subtitleTrackIndexToSetOnPlaying=null==options.mediaSource.DefaultSubtitleStreamIndex?-1:options.mediaSource.DefaultSubtitleStreamIndex,audioTrackIndexToSetOnPlaying="Transcode"===options.playMethod?null:options.mediaSource.DefaultAudioStreamIndex,self._currentPlayOptions=options;var crossOrigin=htmlMediaHelper.getCrossOriginValue(options.mediaSource);return crossOrigin&&(elem.crossOrigin=crossOrigin),browser.chromecast&&-1!==val.indexOf(".m3u8")&&options.mediaSource.RunTimeTicks?(setTracks(elem,tracks,options.item,options.mediaSource),setCurrentSrcChromecast(self,elem,options,val)):htmlMediaHelper.enableHlsJsPlayer(options.mediaSource.RunTimeTicks,"Video")&&-1!==val.indexOf(".m3u8")?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithHlsJs(self,elem,options,val)):"Transcode"!==options.playMethod&&"flv"===options.mediaSource.Container?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithFlvJs(self,elem,options,val)):(elem.autoplay=!0,htmlMediaHelper.applySrc(elem,val,options).then(function(){return setTracks(elem,tracks,options.item,options.mediaSource),self._currentSrc=val,htmlMediaHelper.playWithPromise(elem,onError)}))}function onEnded(){destroyCustomTrack(this),htmlMediaHelper.onEndedInternal(self,this,onError)}function onTimeUpdate(e){var time=this.currentTime;time&&!self._timeUpdated&&(self._timeUpdated=!0,ensureValidVideo(this)),self._currentTime=time;var currentPlayOptions=self._currentPlayOptions;if(currentPlayOptions){var timeMs=1e3*time;timeMs+=(currentPlayOptions.transcodingOffsetTicks||0)/1e4,updateSubtitleText(timeMs)}events.trigger(self,"timeupdate")}function onVolumeChange(){htmlMediaHelper.saveVolume(this.volume),events.trigger(self,"volumechange")}function onNavigatedToOsd(){var dlg=videoDialog;dlg&&(dlg.classList.remove("videoPlayerContainer-withBackdrop"),dlg.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())}function onStartedAndNavigatedToOsd(){setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying),null!=audioTrackIndexToSetOnPlaying&&self.canSetAudioStreamIndex()&&self.setAudioStreamIndex(audioTrackIndexToSetOnPlaying)}function onPlaying(e){self._started||(self._started=!0,this.removeAttribute("controls"),self._currentPlayOptions.title?(self.originalDocumentTitle=document.title,document.title=self._currentPlayOptions.title):self.originalDocumentTitle=null,loading.hide(),htmlMediaHelper.seekOnPlaybackStart(self,e.target,self._currentPlayOptions.playerStartPositionTicks),self._currentPlayOptions.fullscreen?appRouter.showVideoOsd().then(onNavigatedToOsd):(appRouter.setTransparency("backdrop"),videoDialog.classList.remove("videoPlayerContainer-withBackdrop"),videoDialog.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())),events.trigger(self,"playing")}function onPlay(e){events.trigger(self,"unpause")}function ensureValidVideo(elem){if(elem===self._mediaElement&&0===elem.videoWidth&&0===elem.videoHeight){var mediaSource=(self._currentPlayOptions||{}).mediaSource;if(!mediaSource||mediaSource.RunTimeTicks)return void htmlMediaHelper.onErrorInternal(self,"mediadecodeerror")}}function onClick(){events.trigger(self,"click")}function onDblClick(){events.trigger(self,"dblclick")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0,errorMessage=this.error?this.error.message||"":"";console.log("Media element error: "+errorCode.toString()+" "+errorMessage);var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(self._hlsPlayer)return void htmlMediaHelper.handleHlsJsMediaError(self);type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}htmlMediaHelper.onErrorInternal(self,type)}function destroyCustomTrack(videoElement){if(self._resizeObserver&&(self._resizeObserver.disconnect(),self._resizeObserver=null),window.removeEventListener("orientationchange",onVideoResize),videoSubtitlesElem){var subtitlesContainer=videoSubtitlesElem.parentNode;subtitlesContainer&&tryRemoveElement(subtitlesContainer),videoSubtitlesElem=null}if(currentTrackEvents=null,videoElement)for(var allTracks=videoElement.textTracks||[],i=0;i',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),setSubtitleAppearance(subtitlesContainer,videoSubtitlesElem),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function setSubtitleAppearance(elem,innerElem){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){subtitleAppearanceHelper.applyStyles({text:innerElem,window:elem},userSettings.getSubtitleAppearanceSettings())})}function getCueCss(appearance,selector){var html=selector+"::cue {";return html+=appearance.text.map(function(s){return s.name+":"+s.value+"!important;"}).join(""),html+="}"}function setCueAppearance(){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){var elementId=self.id+"-cuestyle",styleElem=document.querySelector("#"+elementId);styleElem||(styleElem=document.createElement("style"),styleElem.id=elementId,styleElem.type="text/css",document.getElementsByTagName("head")[0].appendChild(styleElem)),styleElem.innerHTML=getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(),!0),".htmlvideoplayer")})}function renderTracksEvents(videoElement,track,item){if(!itemHelper.isLocalItem(item)||track.IsExternal){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,item);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,item)}for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent&&selectedTrackEvent.Text?(subtitleTextElement.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),subtitleTextElement.classList.remove("hide")):subtitleTextElement.classList.add("hide")}}}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(self._currentPlayOptions.mediaSource),track=-1===streamIndex?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(self._currentSrc,track)?(setTrackForCustomDisplay(self._mediaElement,null),-1!==streamIndex&&setCueAppearance()):(setTrackForCustomDisplay(self._mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=-1!==streamIndex&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=self._mediaElement.textTracks,i=0;i':html+='",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=htmlMediaHelper.getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("play",onPlay),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,self._mediaElement=videoElement,mediaManager&&(mediaManager.embyInit||(initMediaManager(),mediaManager.embyInit=!0),mediaManager.setMediaElement(videoElement)),options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}browser.edgeUwp?this.name="Windows Video Player":this.name="Html Video Player",this.type="mediaplayer",this.id="htmlvideoplayer",this.priority=1;var videoDialog,subtitleTrackIndexToSetOnPlaying,audioTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,videoSubtitlesElem,currentTrackEvents,lastCustomTrackMs=0,customTrackIndex=-1,self=this;self.currentSrc=function(){return self._currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(self._started=!1,self._timeUpdated=!1,self._currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))},self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.setAudioStreamIndex=function(index){var i,length,audioStreams=getMediaStreamAudioTracks(self._currentPlayOptions.mediaSource),audioTrackOffset=-1;for(i=0,length=audioStreams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(this,"brightnesschange")}},HtmlVideoPlayer.prototype.getBrightness=function(){var elem=this._mediaElement;if(elem){var val=elem.brightnessValue;return null==val?100:val}},HtmlVideoPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlVideoPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlVideoPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlVideoPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlVideoPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return Math.min(Math.round(100*mediaElement.volume),100)},HtmlVideoPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlVideoPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlVideoPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlVideoPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlVideoPlayer.prototype.setAspectRatio=function(val){},HtmlVideoPlayer.prototype.getAspectRatio=function(){return this._currentAspectRatio},HtmlVideoPlayer.prototype.getSupportedAspectRatios=function(){return[]},HtmlVideoPlayer.prototype.togglePictureInPicture=function(){return this.setPictureInPictureEnabled(!this.isPictureInPictureEnabled())},HtmlVideoPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlVideoPlayer.prototype.getStats=function(){var mediaElement=this._mediaElement,playOptions=this._currentPlayOptions||[],categories=[];if(!mediaElement)return Promise.resolve({categories:categories});var mediaCategory={stats:[],type:"media"};if(categories.push(mediaCategory),playOptions.url){var link=document.createElement("a");link.setAttribute("href",playOptions.url);var protocol=(link.protocol||"").replace(":","");protocol&&mediaCategory.stats.push({label:"Protocol:",value:protocol}),link=null}this._hlsPlayer||this._shakaPlayer?mediaCategory.stats.push({label:"Stream type:",value:"HLS"}):mediaCategory.stats.push({label:"Stream type:",value:"Video"});var videoCategory={stats:[],type:"video"};categories.push(videoCategory);var rect=mediaElement.getBoundingClientRect?mediaElement.getBoundingClientRect():{},height=rect.height,width=rect.width;if(width&&height&&videoCategory.stats.push({label:"Player dimensions:",value:width+"x"+height}),height=mediaElement.videoHeight,width=mediaElement.videoWidth,width&&height&&videoCategory.stats.push({label:"Video resolution:",value:width+"x"+height}),mediaElement.getVideoPlaybackQuality){var playbackQuality=mediaElement.getVideoPlaybackQuality(),droppedVideoFrames=playbackQuality.droppedVideoFrames||0;videoCategory.stats.push({label:"Dropped frames:",value:droppedVideoFrames});var corruptedVideoFrames=playbackQuality.corruptedVideoFrames||0;videoCategory.stats.push({label:"Corrupted frames:",value:corruptedVideoFrames})}var audioCategory={stats:[],type:"audio"};categories.push(audioCategory);var sinkId=mediaElement.sinkId;return sinkId&&audioCategory.stats.push({label:"Sink Id:",value:sinkId}),Promise.resolve({categories:categories})},browser.chromecast&&(mediaManager=new cast.receiver.MediaManager(document.createElement("video"))),HtmlVideoPlayer}); \ No newline at end of file +define(["browser","require","events","apphost","loading","dom","playbackManager","appRouter","appSettings","connectionManager","htmlMediaHelper","itemHelper"],function(browser,require,events,appHost,loading,dom,playbackManager,appRouter,appSettings,connectionManager,htmlMediaHelper,itemHelper){"use strict";function tryRemoveElement(elem){var parentNode=elem.parentNode;if(parentNode)try{parentNode.removeChild(elem)}catch(err){console.log("Error removing dialog element: "+err)}}function enableNativeTrackSupport(currentSrc,track){if(track&&"Embed"===track.DeliveryMethod)return!0;if(browser.firefox&&-1!==(currentSrc||"").toLowerCase().indexOf(".m3u8"))return!1;if(browser.chromecast&&-1!==(currentSrc||"").toLowerCase().indexOf(".m3u8"))return!1;if(browser.ps4)return!1;if(browser.web0s)return!1;if(browser.edge)return!1;if(browser.iOS&&(browser.iosVersion||10)<10)return!1;if(track){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return!1}return!0}function requireHlsPlayer(callback){require(["hlsjs"],function(hls){window.Hls=hls,callback()})}function getMediaStreamAudioTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Audio"===s.Type})}function getMediaStreamTextTracks(mediaSource){return mediaSource.MediaStreams.filter(function(s){return"Subtitle"===s.Type})}function zoomIn(elem){return new Promise(function(resolve,reject){elem.style.animation="htmlvideoplayer-zoomin 240ms ease-in normal",dom.addEventListener(elem,dom.whichAnimationEvent(),resolve,{once:!0})})}function normalizeTrackEventText(text){return text.replace(/\\N/gi,"\n")}function setTracks(elem,tracks,item,mediaSource){elem.innerHTML=getTracksHtml(tracks,item,mediaSource)}function getTextTrackUrl(track,item,format){if(itemHelper.isLocalItem(item)&&track.Path)return track.Path;var url=playbackManager.getSubtitleUrl(track,item.ServerId);return format&&(url=url.replace(".vtt",format)),url}function getTracksHtml(tracks,item,mediaSource){return tracks.map(function(t){if("External"!==t.DeliveryMethod)return"";var defaultAttribute=mediaSource.DefaultSubtitleStreamIndex===t.Index?" default":"",language=t.Language||"und",label=t.Language||"und";return'"}).join("")}function getDefaultProfile(){return new Promise(function(resolve,reject){require(["browserdeviceprofile"],function(profileBuilder){resolve(profileBuilder({}))})})}function HtmlVideoPlayer(){function updateVideoUrl(streamInfo){var isHls=-1!==streamInfo.url.toLowerCase().indexOf(".m3u8"),mediaSource=streamInfo.mediaSource,item=streamInfo.item;if(mediaSource&&item&&!mediaSource.RunTimeTicks&&isHls&&"Transcode"===streamInfo.playMethod&&(browser.iOS||browser.osx)){var hlsPlaylistUrl=streamInfo.url.replace("master.m3u8","live.m3u8");return loading.show(),console.log("prefetching hls playlist: "+hlsPlaylistUrl),connectionManager.getApiClient(item.ServerId).ajax({type:"GET",url:hlsPlaylistUrl}).then(function(){return console.log("completed prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),streamInfo.url=hlsPlaylistUrl,Promise.resolve()},function(){return console.log("error prefetching hls playlist: "+hlsPlaylistUrl),loading.hide(),Promise.resolve()})}return Promise.resolve()}function setSrcWithFlvJs(instance,elem,options,url){return new Promise(function(resolve,reject){require(["flvjs"],function(flvjs){var flvPlayer=flvjs.createPlayer({type:"flv",url:url},{seekType:"range",lazyLoad:!1});flvPlayer.attachMediaElement(elem),flvPlayer.load(),flvPlayer.play().then(resolve,reject),instance._flvPlayer=flvPlayer,self._currentSrc=url})})}function setSrcWithHlsJs(instance,elem,options,url){return new Promise(function(resolve,reject){requireHlsPlayer(function(){var hls=new Hls({manifestLoadingTimeOut:2e4});hls.loadSource(url),hls.attachMedia(elem),htmlMediaHelper.bindEventsToHlsPlayer(self,hls,elem,onError,resolve,reject),self._hlsPlayer=hls,self._currentSrc=url})})}function setCurrentSrcChromecast(instance,elem,options,url){elem.autoplay=!0;var lrd=new cast.receiver.MediaManager.LoadRequestData;lrd.currentTime=(options.playerStartPositionTicks||0)/1e7,lrd.autoplay=!0,lrd.media=new cast.receiver.media.MediaInformation,lrd.media.contentId=url,lrd.media.contentType=options.mimeType,lrd.media.streamType=cast.receiver.media.StreamType.OTHER,lrd.media.customData=options,console.log("loading media url into mediaManager");try{return mediaManager.load(lrd),self._currentSrc=url,Promise.resolve()}catch(err){return console.log("mediaManager error: "+err),Promise.reject()}}function onMediaManagerLoadMedia(event){self._castPlayer&&self._castPlayer.unload(),self._castPlayer=null;var protocol,data=event.data,media=event.data.media||{},url=media.contentId,contentType=media.contentType.toLowerCase(),mediaElement=(media.customData,self._mediaElement),host=new cast.player.api.Host({url:url,mediaElement:mediaElement});protocol=cast.player.api.CreateHlsStreamingProtocol(host),console.log("loading playback url: "+url),console.log("contentType: "+contentType),host.onError=function(errorCode){console.log("Fatal Error - "+errorCode)},mediaElement.autoplay=!1,self._castPlayer=new cast.player.api.Player(host),self._castPlayer.load(protocol,data.currentTime||0),self._castPlayer.playWhenHaveEnoughData()}function initMediaManager(){mediaManager.defaultOnLoad=mediaManager.onLoad.bind(mediaManager),mediaManager.onLoad=onMediaManagerLoadMedia.bind(self),mediaManager.defaultOnStop=mediaManager.onStop.bind(mediaManager),mediaManager.onStop=function(event){playbackManager.stop(),mediaManager.defaultOnStop(event)}}function setCurrentSrc(elem,options){elem.removeEventListener("error",onError);var val=options.url;console.log("playing url: "+val);var seconds=(options.playerStartPositionTicks||0)/1e7;seconds&&(val+="#t="+seconds),htmlMediaHelper.destroyHlsPlayer(self),htmlMediaHelper.destroyFlvPlayer(self),htmlMediaHelper.destroyCastPlayer(self);var tracks=getMediaStreamTextTracks(options.mediaSource);subtitleTrackIndexToSetOnPlaying=null==options.mediaSource.DefaultSubtitleStreamIndex?-1:options.mediaSource.DefaultSubtitleStreamIndex,audioTrackIndexToSetOnPlaying="Transcode"===options.playMethod?null:options.mediaSource.DefaultAudioStreamIndex,self._currentPlayOptions=options;var crossOrigin=htmlMediaHelper.getCrossOriginValue(options.mediaSource);return crossOrigin&&(elem.crossOrigin=crossOrigin),browser.chromecast&&-1!==val.indexOf(".m3u8")&&options.mediaSource.RunTimeTicks?(setTracks(elem,tracks,options.item,options.mediaSource),setCurrentSrcChromecast(self,elem,options,val)):htmlMediaHelper.enableHlsJsPlayer(options.mediaSource.RunTimeTicks,"Video")&&-1!==val.indexOf(".m3u8")?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithHlsJs(self,elem,options,val)):"Transcode"!==options.playMethod&&"flv"===options.mediaSource.Container?(setTracks(elem,tracks,options.item,options.mediaSource),setSrcWithFlvJs(self,elem,options,val)):(elem.autoplay=!0,htmlMediaHelper.applySrc(elem,val,options).then(function(){return setTracks(elem,tracks,options.item,options.mediaSource),self._currentSrc=val,htmlMediaHelper.playWithPromise(elem,onError)}))}function onEnded(){destroyCustomTrack(this),htmlMediaHelper.onEndedInternal(self,this,onError)}function onTimeUpdate(e){var time=this.currentTime;time&&!self._timeUpdated&&(self._timeUpdated=!0,ensureValidVideo(this)),self._currentTime=time;var currentPlayOptions=self._currentPlayOptions;if(currentPlayOptions){var timeMs=1e3*time;timeMs+=(currentPlayOptions.transcodingOffsetTicks||0)/1e4,updateSubtitleText(timeMs)}events.trigger(self,"timeupdate")}function onVolumeChange(){htmlMediaHelper.saveVolume(this.volume),events.trigger(self,"volumechange")}function onNavigatedToOsd(){var dlg=videoDialog;dlg&&(dlg.classList.remove("videoPlayerContainer-withBackdrop"),dlg.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())}function onStartedAndNavigatedToOsd(){setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying),null!=audioTrackIndexToSetOnPlaying&&self.canSetAudioStreamIndex()&&self.setAudioStreamIndex(audioTrackIndexToSetOnPlaying)}function onPlaying(e){self._started||(self._started=!0,this.removeAttribute("controls"),loading.hide(),htmlMediaHelper.seekOnPlaybackStart(self,e.target,self._currentPlayOptions.playerStartPositionTicks),self._currentPlayOptions.fullscreen?appRouter.showVideoOsd().then(onNavigatedToOsd):(appRouter.setTransparency("backdrop"),videoDialog.classList.remove("videoPlayerContainer-withBackdrop"),videoDialog.classList.remove("videoPlayerContainer-onTop"),onStartedAndNavigatedToOsd())),events.trigger(self,"playing")}function onPlay(e){events.trigger(self,"unpause")}function ensureValidVideo(elem){if(elem===self._mediaElement&&0===elem.videoWidth&&0===elem.videoHeight){var mediaSource=(self._currentPlayOptions||{}).mediaSource;if(!mediaSource||mediaSource.RunTimeTicks)return void htmlMediaHelper.onErrorInternal(self,"mediadecodeerror")}}function onClick(){events.trigger(self,"click")}function onDblClick(){events.trigger(self,"dblclick")}function onPause(){events.trigger(self,"pause")}function onError(){var errorCode=this.error?this.error.code||0:0,errorMessage=this.error?this.error.message||"":"";console.log("Media element error: "+errorCode.toString()+" "+errorMessage);var type;switch(errorCode){case 1:return;case 2:type="network";break;case 3:if(self._hlsPlayer)return void htmlMediaHelper.handleHlsJsMediaError(self);type="mediadecodeerror";break;case 4:type="medianotsupported";break;default:return}htmlMediaHelper.onErrorInternal(self,type)}function destroyCustomTrack(videoElement){if(self._resizeObserver&&(self._resizeObserver.disconnect(),self._resizeObserver=null),window.removeEventListener("orientationchange",onVideoResize),videoSubtitlesElem){var subtitlesContainer=videoSubtitlesElem.parentNode;subtitlesContainer&&tryRemoveElement(subtitlesContainer),videoSubtitlesElem=null}if(currentTrackEvents=null,videoElement)for(var allTracks=videoElement.textTracks||[],i=0;i',videoSubtitlesElem=subtitlesContainer.querySelector(".videoSubtitlesInner"),setSubtitleAppearance(subtitlesContainer,videoSubtitlesElem),videoElement.parentNode.appendChild(subtitlesContainer),currentTrackEvents=data.TrackEvents}})}function setSubtitleAppearance(elem,innerElem){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){subtitleAppearanceHelper.applyStyles({text:innerElem,window:elem},userSettings.getSubtitleAppearanceSettings())})}function getCueCss(appearance,selector){var html=selector+"::cue {";return html+=appearance.text.map(function(s){return s.name+":"+s.value+"!important;"}).join(""),html+="}"}function setCueAppearance(){require(["userSettings","subtitleAppearanceHelper"],function(userSettings,subtitleAppearanceHelper){var elementId=self.id+"-cuestyle",styleElem=document.querySelector("#"+elementId);styleElem||(styleElem=document.createElement("style"),styleElem.id=elementId,styleElem.type="text/css",document.getElementsByTagName("head")[0].appendChild(styleElem)),styleElem.innerHTML=getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(),!0),".htmlvideoplayer")})}function renderTracksEvents(videoElement,track,item){if(!itemHelper.isLocalItem(item)||track.IsExternal){var format=(track.Codec||"").toLowerCase();if("ssa"===format||"ass"===format)return void renderWithLibjass(videoElement,track,item);if(requiresCustomSubtitlesElement())return void renderSubtitlesWithCustomElement(videoElement,track,item)}for(var trackElement=null,expectedId="manualTrack"+track.Index,allTracks=videoElement.textTracks,i=0;i=ticks){selectedTrackEvent=currentTrackEvent;break}}selectedTrackEvent&&selectedTrackEvent.Text?(subtitleTextElement.innerHTML=normalizeTrackEventText(selectedTrackEvent.Text),subtitleTextElement.classList.remove("hide")):subtitleTextElement.classList.add("hide")}}}function setCurrentTrackElement(streamIndex){console.log("Setting new text track index to: "+streamIndex);var mediaStreamTextTracks=getMediaStreamTextTracks(self._currentPlayOptions.mediaSource),track=-1===streamIndex?null:mediaStreamTextTracks.filter(function(t){return t.Index===streamIndex})[0];enableNativeTrackSupport(self._currentSrc,track)?(setTrackForCustomDisplay(self._mediaElement,null),-1!==streamIndex&&setCueAppearance()):(setTrackForCustomDisplay(self._mediaElement,track),streamIndex=-1,track=null);for(var expectedId="textTrack"+streamIndex,trackIndex=-1!==streamIndex&&track?mediaStreamTextTracks.indexOf(track):-1,modes=["disabled","showing","hidden"],allTracks=self._mediaElement.textTracks,i=0;i':html+='",dlg.innerHTML=html;var videoElement=dlg.querySelector("video");videoElement.volume=htmlMediaHelper.getSavedVolume(),videoElement.addEventListener("timeupdate",onTimeUpdate),videoElement.addEventListener("ended",onEnded),videoElement.addEventListener("volumechange",onVolumeChange),videoElement.addEventListener("pause",onPause),videoElement.addEventListener("playing",onPlaying),videoElement.addEventListener("play",onPlay),videoElement.addEventListener("click",onClick),videoElement.addEventListener("dblclick",onDblClick),document.body.insertBefore(dlg,document.body.firstChild),videoDialog=dlg,self._mediaElement=videoElement,mediaManager&&(mediaManager.embyInit||(initMediaManager(),mediaManager.embyInit=!0),mediaManager.setMediaElement(videoElement)),options.fullscreen&&browser.supportsCssAnimation()&&!browser.slow?zoomIn(dlg).then(function(){resolve(videoElement)}):resolve(videoElement)})})}browser.edgeUwp?this.name="Windows Video Player":this.name="Html Video Player",this.type="mediaplayer",this.id="htmlvideoplayer",this.priority=1;var videoDialog,subtitleTrackIndexToSetOnPlaying,audioTrackIndexToSetOnPlaying,currentClock,currentAssRenderer,videoSubtitlesElem,currentTrackEvents,lastCustomTrackMs=0,customTrackIndex=-1,self=this;self.currentSrc=function(){return self._currentSrc},self.play=function(options){return browser.msie&&"Transcode"===options.playMethod&&!window.MediaSource?(alert("Playback of this content is not supported in Internet Explorer. For a better experience, try a modern browser such as Microsoft Edge, Google Chrome, Firefox or Opera."),Promise.reject()):(self._started=!1,self._timeUpdated=!1,self._currentTime=null,createMediaElement(options).then(function(elem){return updateVideoUrl(options,options.mediaSource).then(function(){return setCurrentSrc(elem,options)})}))},self.setSubtitleStreamIndex=function(index){setCurrentTrackElement(index)},self.setAudioStreamIndex=function(index){var i,length,audioStreams=getMediaStreamAudioTracks(self._currentPlayOptions.mediaSource),audioTrackOffset=-1;for(i=0,length=audioStreams.length;i=100?"none":rawValue/100;elem.style["-webkit-filter"]="brightness("+cssValue+");",elem.style.filter="brightness("+cssValue+")",elem.brightnessValue=val,events.trigger(this,"brightnesschange")}},HtmlVideoPlayer.prototype.getBrightness=function(){var elem=this._mediaElement;if(elem){var val=elem.brightnessValue;return null==val?100:val}},HtmlVideoPlayer.prototype.seekable=function(){var mediaElement=this._mediaElement;if(mediaElement){var seekable=mediaElement.seekable;if(seekable&&seekable.length){var start=seekable.start(0),end=seekable.end(0);return htmlMediaHelper.isValidDuration(start)||(start=0),htmlMediaHelper.isValidDuration(end)||(end=0),end-start>0}return!1}},HtmlVideoPlayer.prototype.pause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.pause()},HtmlVideoPlayer.prototype.resume=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.unpause=function(){var mediaElement=this._mediaElement;mediaElement&&mediaElement.play()},HtmlVideoPlayer.prototype.paused=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.paused},HtmlVideoPlayer.prototype.setVolume=function(val){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.volume=val/100)},HtmlVideoPlayer.prototype.getVolume=function(){var mediaElement=this._mediaElement;if(mediaElement)return Math.min(Math.round(100*mediaElement.volume),100)},HtmlVideoPlayer.prototype.volumeUp=function(){this.setVolume(Math.min(this.getVolume()+2,100))},HtmlVideoPlayer.prototype.volumeDown=function(){this.setVolume(Math.max(this.getVolume()-2,0))},HtmlVideoPlayer.prototype.setMute=function(mute){var mediaElement=this._mediaElement;mediaElement&&(mediaElement.muted=mute)},HtmlVideoPlayer.prototype.isMuted=function(){var mediaElement=this._mediaElement;return!!mediaElement&&mediaElement.muted},HtmlVideoPlayer.prototype.setAspectRatio=function(val){},HtmlVideoPlayer.prototype.getAspectRatio=function(){return this._currentAspectRatio},HtmlVideoPlayer.prototype.getSupportedAspectRatios=function(){return[]},HtmlVideoPlayer.prototype.togglePictureInPicture=function(){return this.setPictureInPictureEnabled(!this.isPictureInPictureEnabled())},HtmlVideoPlayer.prototype.getBufferedRanges=function(){var mediaElement=this._mediaElement;return mediaElement?htmlMediaHelper.getBufferedRanges(this,mediaElement):[]},HtmlVideoPlayer.prototype.getStats=function(){var mediaElement=this._mediaElement,playOptions=this._currentPlayOptions||[],categories=[];if(!mediaElement)return Promise.resolve({categories:categories});var mediaCategory={stats:[],type:"media"};if(categories.push(mediaCategory),playOptions.url){var link=document.createElement("a");link.setAttribute("href",playOptions.url);var protocol=(link.protocol||"").replace(":","");protocol&&mediaCategory.stats.push({label:"Protocol:",value:protocol}),link=null}this._hlsPlayer||this._shakaPlayer?mediaCategory.stats.push({label:"Stream type:",value:"HLS"}):mediaCategory.stats.push({label:"Stream type:",value:"Video"});var videoCategory={stats:[],type:"video"};categories.push(videoCategory);var rect=mediaElement.getBoundingClientRect?mediaElement.getBoundingClientRect():{},height=rect.height,width=rect.width;if(width&&height&&videoCategory.stats.push({label:"Player dimensions:",value:width+"x"+height}),height=mediaElement.videoHeight,width=mediaElement.videoWidth,width&&height&&videoCategory.stats.push({label:"Video resolution:",value:width+"x"+height}),mediaElement.getVideoPlaybackQuality){var playbackQuality=mediaElement.getVideoPlaybackQuality(),droppedVideoFrames=playbackQuality.droppedVideoFrames||0;videoCategory.stats.push({label:"Dropped frames:",value:droppedVideoFrames});var corruptedVideoFrames=playbackQuality.corruptedVideoFrames||0;videoCategory.stats.push({label:"Corrupted frames:",value:corruptedVideoFrames})}var audioCategory={stats:[],type:"audio"};categories.push(audioCategory);var sinkId=mediaElement.sinkId;return sinkId&&audioCategory.stats.push({label:"Sink Id:",value:sinkId}),Promise.resolve({categories:categories})},browser.chromecast&&(mediaManager=new cast.receiver.MediaManager(document.createElement("video"))),HtmlVideoPlayer}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js index 9ae0e484a9..abd12a1373 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/itemhelper.js @@ -1 +1 @@ -define(["apphost","globalize"],function(appHost,globalize){"use strict";function getDisplayName(item,options){if(!item)throw new Error("null item passed into getDisplayName");options=options||{},"Timer"===item.Type&&(item=item.ProgramInfo||item);var name=("Program"!==item.Type&&"Recording"!==item.Type||!item.IsSeries&&!item.EpisodeTitle?item.Name:item.EpisodeTitle)||"";if("TvChannel"===item.Type)return item.ChannelNumber?item.ChannelNumber+" "+name:name;if("Episode"===item.Type&&0===item.ParentIndexNumber)name=globalize.translate("sharedcomponents#ValueSpecialEpisodeName",name);else if(("Episode"===item.Type||"Program"===item.Type)&&null!=item.IndexNumber&&null!=item.ParentIndexNumber&&!1!==options.includeIndexNumber){var displayIndexNumber=item.IndexNumber,number=displayIndexNumber,nameSeparator=" - ";!1!==options.includeParentInfo?number="S"+item.ParentIndexNumber+":E"+number:nameSeparator=". ",item.IndexNumberEnd&&(displayIndexNumber=item.IndexNumberEnd,number+="-"+displayIndexNumber),number&&(name=name?number+nameSeparator+name:number)}return name}function supportsAddingToCollection(item){var invalidTypes=["Genre","MusicGenre","Studio","GameGenre","UserView","CollectionFolder","Audio","Program","Timer","SeriesTimer"];return("Recording"!==item.Type||"Completed"===item.Status)&&(!item.CollectionType&&-1===invalidTypes.indexOf(item.Type)&&"Photo"!==item.MediaType&&!isLocalItem(item))}function supportsAddingToPlaylist(item){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&("Photo"!==item.MediaType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(item.MediaType||item.IsFolder||"Genre"===item.Type||"MusicGenre"===item.Type||"MusicArtist"===item.Type)))))))}function canEdit(user,item){var itemType=item.Type;return"UserRootFolder"!==itemType&&"UserView"!==itemType&&("Program"!==itemType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&user.Policy.IsAdministrator)))}function isLocalItem(item){return!(!item||!item.Id||0!==item.Id.indexOf("local"))}return{getDisplayName:getDisplayName,supportsAddingToCollection:supportsAddingToCollection,supportsAddingToPlaylist:supportsAddingToPlaylist,isLocalItem:isLocalItem,canIdentify:function(user,item){var itemType=item.Type;return!("Movie"!==itemType&&"Trailer"!==itemType&&"Series"!==itemType&&"Game"!==itemType&&"BoxSet"!==itemType&&"Person"!==itemType&&"Book"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType&&"MusicVideo"!==itemType||!user.Policy.IsAdministrator||isLocalItem(item))},canEdit:canEdit,canEditImages:function(user,item){var itemType=item.Type;return"Photo"!==item.MediaType&&("UserView"===itemType?!!user.Policy.IsAdministrator:("Recording"!==item.Type||"Completed"===item.Status)&&("Timer"!==itemType&&"SeriesTimer"!==itemType&&canEdit(user,item)&&!isLocalItem(item)))},canSync:function(user,item){return!(user&&!user.Policy.EnableContentDownloading)&&(!isLocalItem(item)&&item.SupportsSync)},canShare:function(item,user){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(user.Policy.EnablePublicSharing&&appHost.supports("sharing")))))))},enableDateAddedDisplay:function(item){return!item.IsFolder&&item.MediaType&&"Program"!==item.Type&&"TvChannel"!==item.Type&&"Trailer"!==item.Type},canMarkPlayed:function(item){if("Program"===item.Type)return!1;if("Video"===item.MediaType){if("TvChannel"!==item.Type)return!0}else if("Audio"===item.MediaType){if("AudioPodcast"===item.Type)return!0;if("AudioBook"===item.Type)return!0}return"Series"===item.Type||"Season"===item.Type||"BoxSet"===item.Type||"Game"===item.MediaType||"Book"===item.MediaType||"Recording"===item.MediaType},canRate:function(item){return"Program"!==item.Type&&"Timer"!==item.Type&&"SeriesTimer"!==item.Type},canConvert:function(item,user,apiClient){if(!item.SupportsSync)return!1;if(isLocalItem(item))return!1;var mediaType=item.MediaType;if("Book"===mediaType||"Photo"===mediaType||"Game"===mediaType||"Audio"===mediaType)return!1;var type=item.Type;return(!item.IsFolder||"Series"===type||"Season"===type)&&(apiClient&&apiClient.isMinServerVersion("3.3.1.20"))},canRefreshMetadata:function(item,user){return!(!user.Policy.IsAdministrator||"Timer"===item.Type||"SeriesTimer"===item.Type||"Program"===item.Type||"TvChannel"===item.Type||"Recording"===item.Type&&"Completed"!==item.Status||isLocalItem(item))},supportsMediaSourceSelection:function(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&(!(!item.MediaSources||1===item.MediaSources.length&&"Placeholder"===item.MediaSources[0].Type)&&(!1!==item.EnableMediaSourceDisplay&&(null!=item.EnableMediaSourceDisplay||!item.SourceType||"Library"===item.SourceType))))}}}); \ No newline at end of file +define(["apphost","globalize"],function(appHost,globalize){"use strict";function getDisplayName(item,options){if(!item)throw new Error("null item passed into getDisplayName");options=options||{},"Timer"===item.Type&&(item=item.ProgramInfo||item);var name=("Program"!==item.Type&&"Recording"!==item.Type||!item.IsSeries&&!item.EpisodeTitle?item.Name:item.EpisodeTitle)||"";if("TvChannel"===item.Type)return item.ChannelNumber?item.ChannelNumber+" "+name:name;if("Episode"===item.Type&&0===item.ParentIndexNumber)name=globalize.translate("sharedcomponents#ValueSpecialEpisodeName",name);else if(("Episode"===item.Type||"Program"===item.Type)&&null!=item.IndexNumber&&null!=item.ParentIndexNumber&&!1!==options.includeIndexNumber){var displayIndexNumber=item.IndexNumber,number=displayIndexNumber,nameSeparator=" - ";!1!==options.includeParentInfo?number="S"+item.ParentIndexNumber+":E"+number:nameSeparator=". ",item.IndexNumberEnd&&(displayIndexNumber=item.IndexNumberEnd,number+="-"+displayIndexNumber),number&&(name=name?number+nameSeparator+name:number)}return name}function supportsAddingToCollection(item){var invalidTypes=["Genre","MusicGenre","Studio","GameGenre","UserView","CollectionFolder","Audio","Program","Timer","SeriesTimer"];return("Recording"!==item.Type||"Completed"===item.Status)&&(!item.CollectionType&&-1===invalidTypes.indexOf(item.Type)&&"Photo"!==item.MediaType&&!isLocalItem(item))}function supportsAddingToPlaylist(item){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&("Photo"!==item.MediaType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(item.MediaType||item.IsFolder||"Genre"===item.Type||"MusicGenre"===item.Type||"MusicArtist"===item.Type)))))))}function canEdit(user,item){var itemType=item.Type;return"UserRootFolder"!==itemType&&"UserView"!==itemType&&("Program"!==itemType&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&user.Policy.IsAdministrator)))}function isLocalItem(item){return!(!item||!item.Id||0!==item.Id.indexOf("local"))}return{getDisplayName:getDisplayName,supportsAddingToCollection:supportsAddingToCollection,supportsAddingToPlaylist:supportsAddingToPlaylist,isLocalItem:isLocalItem,canIdentify:function(user,item){var itemType=item.Type;return!("Movie"!==itemType&&"Trailer"!==itemType&&"Series"!==itemType&&"Game"!==itemType&&"BoxSet"!==itemType&&"Person"!==itemType&&"Book"!==itemType&&"MusicAlbum"!==itemType&&"MusicArtist"!==itemType&&"MusicVideo"!==itemType||!user.Policy.IsAdministrator||isLocalItem(item))},canEdit:canEdit,canEditImages:function(user,item){var itemType=item.Type;return"Photo"!==item.MediaType&&("UserView"===itemType?!!user.Policy.IsAdministrator:("Recording"!==item.Type||"Completed"===item.Status)&&("Timer"!==itemType&&"SeriesTimer"!==itemType&&canEdit(user,item)&&!isLocalItem(item)))},canSync:function(user,item){return!(user&&!user.Policy.EnableContentDownloading)&&(!isLocalItem(item)&&item.SupportsSync)},canShare:function(item,user){return"Program"!==item.Type&&("TvChannel"!==item.Type&&("Timer"!==item.Type&&("SeriesTimer"!==item.Type&&(("Recording"!==item.Type||"Completed"===item.Status)&&(!isLocalItem(item)&&(user.Policy.EnablePublicSharing&&appHost.supports("sharing")))))))},enableDateAddedDisplay:function(item){return!item.IsFolder&&item.MediaType&&"Program"!==item.Type&&"TvChannel"!==item.Type&&"Trailer"!==item.Type},canMarkPlayed:function(item){if("Program"===item.Type)return!1;if("Video"===item.MediaType){if("TvChannel"!==item.Type)return!0}else if("Audio"===item.MediaType){if("AudioPodcast"===item.Type)return!0;if("AudioBook"===item.Type)return!0}return"Series"===item.Type||"Season"===item.Type||"BoxSet"===item.Type||"Game"===item.MediaType||"Book"===item.MediaType||"Recording"===item.MediaType},canRate:function(item){return"Program"!==item.Type&&"Timer"!==item.Type&&"SeriesTimer"!==item.Type},canConvert:function(item,user,apiClient){if(!item.SupportsSync)return!1;if(isLocalItem(item))return!1;var mediaType=item.MediaType;if("Book"===mediaType||"Photo"===mediaType||"Game"===mediaType||"Audio"===mediaType)return!1;var type=item.Type;return(!item.IsFolder||"Series"===type||"Season"===type)&&(!!user.Policy.EnableSyncTranscoding&&(apiClient&&apiClient.isMinServerVersion("3.3.1.20")))},canRefreshMetadata:function(item,user){return!(!user.Policy.IsAdministrator||"Timer"===item.Type||"SeriesTimer"===item.Type||"Program"===item.Type||"TvChannel"===item.Type||"Recording"===item.Type&&"Completed"!==item.Status||isLocalItem(item))},supportsMediaSourceSelection:function(item){return"Video"===item.MediaType&&("TvChannel"!==item.Type&&(!(!item.MediaSources||1===item.MediaSources.length&&"Placeholder"===item.MediaSources[0].Type)&&(!1!==item.EnableMediaSourceDisplay&&(null!=item.EnableMediaSourceDisplay||!item.SourceType||"Library"===item.SourceType))))}}}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json index 71f1abb541..6dde88ad62 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/en-us.json @@ -450,6 +450,7 @@ "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", "LabelSyncTo": "Sync to:", + "LabelConvertTo": "Convert to:", "Next": "Next", "LabelSource": "Source:", "LabelVersion": "Version:", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index 55d64cf488..8593681e35 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -17,14 +17,14 @@ "DisplayInMyMedia": "\u0411\u0430\u0441\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", "DisplayInMyMediaHelp": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u043d\u0435\u0433\u0456\u0437\u0433\u0456 \u044d\u043a\u0440\u0430\u043d\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0493\u0430\u043d\u0434\u0430 \u043e\u0493\u0430\u043d \u049b\u043e\u043b \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u0433\u0435 \u043a\u0435\u0434\u0435\u0440\u0433\u0456 \u043a\u0435\u043b\u0442\u0456\u0440\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d. \u04e8\u0437\u0456\u04a3\u0456\u0437 \u049b\u0430\u043b\u0430\u0493\u0430\u043d \u043d\u04d9\u0440\u0441\u0435\u0433\u0435 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", "LabelDefaultScreen": "\u04d8\u0434\u0435\u043f\u043a\u0456 \u044d\u043a\u0440\u0430\u043d:", - "EditMetadata": "Edit metadata", - "Convert": "Convert", - "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", - "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", - "AutomaticallyConvertNewContent": "Automatically convert new content", - "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", - "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", - "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "EditMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", + "Convert": "\u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "ConvertUnwatchedVideosOnly": "\u049a\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "ConvertUnwatchedVideosOnlyHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u049b\u0430\u0440\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0434\u0456", + "AutomaticallyConvertNewContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "AutomaticallyConvertNewContentHelp": "\u041e\u0441\u044b \u049b\u0430\u043b\u044c\u0430\u0493\u0430 \u0436\u0430\u04a3\u0430\u0434\u0430\u043d \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043e\u0441\u044b \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0434\u0456.", + "DownloadItemLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0416\u04af\u043a\u0442\u0435\u043b\u0435\u0442\u0456\u043d \u0442\u0430\u0440\u043c\u0430\u049b \u0441\u0430\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", + "ConvertItemLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u043b\u0435\u0442\u0456\u043d \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440 \u0441\u0430\u043d\u044b \u0448\u0435\u0433\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", "MessageUnlockAppWithPurchaseOrSupporter": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u044b \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u0441\u0430\u0442\u044b\u043f \u0430\u043b\u0443, \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", "MessageUnlockAppWithSupporter": "\u041e\u0441\u044b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u044b \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u0434\u0430\u043d \u0431\u043e\u0441\u0430\u0442\u0443.", "MessageToValidateSupporter": "\u0415\u0433\u0435\u0440 \u0441\u0456\u0437\u0434\u0435 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b \u0431\u043e\u043b\u0441\u0430, Emby Server \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0434\u0430\u0493\u044b Emby Premiere \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u044b\u043f \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d\u0456\u043d\u0435 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0411\u04b1\u043b \u0431\u0430\u0441\u0442\u044b \u043c\u04d9\u0437\u0456\u0440\u0434\u0435 Emby Premiere \u0434\u0435\u0433\u0435\u043d\u0434\u0456 \u043d\u04b1\u049b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b.", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json index c2fdb18956..3bfebbbd36 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/pl.json @@ -12,19 +12,19 @@ "WakeServerSuccess": "Powodzenie!", "WakeServerError": "Wys\u0142ano pakiery Wake On LAN do maszyny serwera, ale po\u0142\u0105czenie z serwer Emby zako\u0144czy\u0142o si\u0119 niepowodzeniem. Twoja maszyna potrzebuje wi\u0119cej czasu do wybudzenia lub serwer Emby mo\u017ce nie dzia\u0142a\u0107 aktywnie na tej maszynie.", "DirectPlayError": "Nieudane odtwarzanie bezpo\u015brednie", - "HeaderPhotoAlbums": "Albumy zdj\u0119\u0107", - "DisplayInOtherHomeScreenSections": "Wy\u015bwietlaj w sekcjach ekranu startowego takich jak: Ostatnio dodane i Kontynuuj odtwarzanie", + "HeaderPhotoAlbums": "Albumy fotografii", + "DisplayInOtherHomeScreenSections": "Wy\u015bwietlaj na ekranie startowym sekcje Ostatnio dodane i Kontynuuj odtwarzanie", "DisplayInMyMedia": "Wy\u015bwietlaj na ekranie startowym", "DisplayInMyMediaHelp": "Ukrycie biblioteki na ekranie startowym mo\u017ce uniemo\u017cliwia\u0107 dost\u0119p do niej. Upewnij si\u0119, \u017ce wiesz co robisz.", "LabelDefaultScreen": "Ekran domy\u015blny:", - "EditMetadata": "Edit metadata", - "Convert": "Convert", - "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", - "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", - "AutomaticallyConvertNewContent": "Automatically convert new content", - "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", - "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", - "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "EditMetadata": "Edytuj metadane", + "Convert": "Konwertuj", + "ConvertUnwatchedVideosOnly": "Konwertuj tylko nieobejrzane", + "ConvertUnwatchedVideosOnlyHelp": "Tylko nieobejrzane wideo b\u0119d\u0105 konwertowane.", + "AutomaticallyConvertNewContent": "Konwertuj automatycznie nowe media", + "AutomaticallyConvertNewContentHelp": "Nowe media dodane do tego folderu b\u0119d\u0105 konwertowane automatycznie.", + "DownloadItemLimitHelp": "Opcjonalne. Okre\u015bla maksymaln\u0105 liczb\u0119 pobieranych pozycji.", + "ConvertItemLimitHelp": "Opcjonalne. Okre\u015bla maksymaln\u0105 liczb\u0119 konwertowanych pozycji.", "MessageUnlockAppWithPurchaseOrSupporter": "Odblokuj t\u0119 funkcj\u0119, za niewielk\u0105 jednorazow\u0105 op\u0142at\u0105 lub przy u\u017cyciu aktywnej subskrypcji Emby Premium.", "MessageUnlockAppWithSupporter": "Odblokuj t\u0119 funkcj\u0119 przy u\u017cyciu subskrypcji Emby Premium.", "MessageToValidateSupporter": "Je\u015bli posiadasz aktywn\u0105 subskrypcj\u0119 Emby Premium, upewnij si\u0119, \u017ce j\u0105 poprawnie skonfigurowa\u0142e\u015b przy pomocy Kokpitu serwera Emby, do kt\u00f3rego mo\u017cesz uzyska\u0107 dost\u0119p, klikaj\u0105c na pozycj\u0119 Premium menu startowego.", @@ -63,10 +63,10 @@ "Friday": "Pi\u0105tek", "Saturday": "Sobota", "Days": "Dni", - "SortByValue": "Sortowanie po {0}", + "SortByValue": "Sortowanie wg {0}", "LabelSortBy": "Sortuj po:", "LabelSortOrder": "Porz\u0105dek sortowania", - "Photos": "Zdj\u0119cia", + "Photos": "Fotografie", "List": "Lista", "RecordSeries": "Nagraj seryjnie", "HeaderCinemaMode": "Tryb kinowy", @@ -173,8 +173,8 @@ "EditInfo": "Edytuj informacje", "Sync": "Synchronizuj", "InstantMix": "Szybki remiks", - "ViewAlbum": "Podejrzyj album", - "ViewArtist": "Podejrzyj wykonawc\u0119", + "ViewAlbum": "Podgl\u0105d albumu", + "ViewArtist": "Podgl\u0105d wykonawcy", "QueueAllFromHere": "Kolejkuj wszystko z tej lokalizacji", "PlayAllFromHere": "Odtwarzaj wszystko z tej lokalizacji", "PlayFromBeginning": "Odtwarzaj od pocz\u0105tku", @@ -216,7 +216,7 @@ "LabelCriticRating": "Ocena krytyk\u00f3w:", "CriticRating": "Ocena krytyk\u00f3w", "LabelWebsite": "Strona internetowa", - "LabelTagline": "Znaczniki", + "LabelTagline": "Motto:", "LabelOverview": "Opis:", "LabelShortOverview": "Streszczenie:", "LabelReleaseDate": "Data wydania:", @@ -297,7 +297,7 @@ "PackageInstallCompleted": "Instalacja {0} zako\u0144czona.", "PackageInstallFailed": "Instalacja {0} nieudana.", "PackageInstallCancelled": "Instalacja {0} anulowana.", - "SeriesYearToPresent": "{0} - Obecnych", + "SeriesYearToPresent": "{0} - Teraz", "ValueOneItem": "1 pozycja", "ValueOneSong": "1 utw\u00f3r", "ValueSongCount": "{0} utwory", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index edc79d6496..f45f04c55d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -17,14 +17,14 @@ "DisplayInMyMedia": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435", "DisplayInMyMediaHelp": "\u0421\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043a \u043d\u0435\u0439. \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435.", "LabelDefaultScreen": "\u042d\u043a\u0440\u0430\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:", - "EditMetadata": "Edit metadata", - "Convert": "Convert", - "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", - "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", - "AutomaticallyConvertNewContent": "Automatically convert new content", - "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", - "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", - "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "EditMetadata": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "Convert": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c", + "ConvertUnwatchedVideosOnly": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "ConvertUnwatchedVideosOnlyHelp": "\u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b", + "AutomaticallyConvertNewContent": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "AutomaticallyConvertNewContentHelp": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e.", + "DownloadItemLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f.", + "ConvertItemLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f.", "MessageUnlockAppWithPurchaseOrSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b, \u0438\u043b\u0438 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439 Emby Premiere .", "MessageUnlockAppWithSupporter": "\u0420\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439 Emby Premiere.", "MessageToValidateSupporter": "\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e Emby Premiere \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 \u0432\u0430\u0448\u0435\u0439 \u041f\u0430\u043d\u0435\u043b\u0438 Emby Server, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0449\u0435\u043b\u0447\u043a\u0443 \u043f\u043e Emby Premiere \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e.", @@ -116,8 +116,8 @@ "SearchForCollectionInternetMetadata": "\u0418\u0441\u043a\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "DisplayMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", "DisplayMissingEpisodesWithinSeasonsHelp": "\u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0422\u0412-\u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Emby Server.", - "EnableThemeSongs": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0439", - "EnableBackdrops": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u043d\u0438\u043a\u043e\u0432", + "EnableThemeSongs": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", + "EnableBackdrops": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0434\u043d\u0438\u043a\u0438", "EnableThemeSongsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0444\u043e\u043d\u043e\u043c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", "EnableBackdropsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0437\u0430\u0434\u043d\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0444\u043e\u043d\u043e\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", "EnableThemeVideos": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json index fca88f2bf6..7485460001 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/strings/sk.json @@ -14,17 +14,17 @@ "DirectPlayError": "Direct play error", "HeaderPhotoAlbums": "Albumy fotografi\u00ed", "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", - "DisplayInMyMedia": "Display on home screen", + "DisplayInMyMedia": "Zobrazi\u0165 na dom\u00e1cej obrazovke", "DisplayInMyMediaHelp": "Hiding a library from the home screen may prevent you from being able to access it. Please be sure this is what you want.", "LabelDefaultScreen": "Default screen:", - "EditMetadata": "Edit metadata", - "Convert": "Convert", + "EditMetadata": "Upravi\u0165 metad\u00e1ta", + "Convert": "Konvertova\u0165", "ConvertUnwatchedVideosOnly": "Convert unwatched videos only", "ConvertUnwatchedVideosOnlyHelp": "Only unwatched videos will be converted.", - "AutomaticallyConvertNewContent": "Automatically convert new content", - "AutomaticallyConvertNewContentHelp": "New content added to this folder will be automatically converted.", - "DownloadItemLimitHelp": "Optional. Set a limit to the number of items that will be downloaded.", - "ConvertItemLimitHelp": "Optional. Set a limit to the number of items that will be converted.", + "AutomaticallyConvertNewContent": "Automaticky konvertova\u0165 nov\u00fd obsah", + "AutomaticallyConvertNewContentHelp": "Nov\u00fd obsah pridan\u00fd do tohto prie\u010dinka bude automaticky skonvertovan\u00fd.", + "DownloadItemLimitHelp": "Volite\u013en\u00e9. Nastavi\u0165 limit polo\u017eiek, ktor\u00e9 bud\u00fa stiahnut\u00e9.", + "ConvertItemLimitHelp": "Volite\u013en\u00e9. Nastavi\u0165 limit polo\u017eiek, ktor\u00e9 bud\u00fa konvertovan\u00e9.", "MessageUnlockAppWithPurchaseOrSupporter": "Unlock this feature with a small one-time purchase, or with an active Emby Premiere subscription.", "MessageUnlockAppWithSupporter": "Unlock this feature with an active Emby Premiere subscription.", "MessageToValidateSupporter": "If you have an active Emby Premiere subscription, ensure you've setup Emby Premiere in your Emby Server Dashboard, which you can access by clicking Emby Premiere within the main menu.", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js index b9ff5f1483..9d459f485d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/bower_components/emby-webcomponents/sync/sync.js @@ -1 +1 @@ -define(["apphost","globalize","connectionManager","layoutManager","focusManager","scrollHelper","appSettings","registrationServices","dialogHelper","paper-icon-button-light","formDialogStyle"],function(appHost,globalize,connectionManager,layoutManager,focusManager,scrollHelper,appSettings,registrationServices,dialogHelper){"use strict";function submitJob(dlg,apiClient,userId,syncOptions,form){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!form)throw new Error("form cannot be null");var selectSyncTarget=form.querySelector("#selectSyncTarget"),target=selectSyncTarget?selectSyncTarget.value:null;if(!target)return require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#PleaseSelectDeviceToSyncTo"))}),!1;var options={userId:userId,TargetId:target,ParentId:syncOptions.ParentId,Category:syncOptions.Category};return setJobValues(options,form),syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){dialogHelper.close(dlg),require(["toast"],function(toast){showSubmissionToast(target,apiClient),"download"===syncOptions.mode&&syncNow()})}),!0}function showSubmissionToast(targetId,apiClient){var msg=targetId===apiClient.deviceId()?globalize.translate("sharedcomponents#DownloadingDots"):globalize.translate("sharedcomponents#SyncJobCreated");toast(msg)}function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function submitQuickSyncJob(apiClient,userId,targetId,syncOptions){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!targetId)throw new Error("targetId cannot be null");var options={userId:userId,TargetId:targetId,ParentId:syncOptions.ParentId,Category:syncOptions.Category,Quality:syncOptions.Quality,Bitrate:syncOptions.Bitrate};return syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){require(["toast"],function(toast){showSubmissionToast(targetId,apiClient),"download"===syncOptions.mode&&syncNow()})})}function setJobValues(job,form){var txtBitrate=form.querySelector("#txtBitrate"),bitrate=txtBitrate?txtBitrate.value:null;bitrate&&(bitrate=1e6*parseFloat(bitrate)),job.Bitrate=bitrate;var selectQuality=form.querySelector("#selectQuality");selectQuality&&(job.Quality=selectQuality.value,appSettings.set("sync-lastquality",job.Quality||""));var selectProfile=form.querySelector("#selectProfile");selectProfile&&(job.Profile=selectProfile.value);var txtItemLimit=form.querySelector("#txtItemLimit");txtItemLimit&&(job.ItemLimit=txtItemLimit.value||null);var chkSyncNewContent=form.querySelector("#chkSyncNewContent");chkSyncNewContent&&(job.SyncNewContent=chkSyncNewContent.checked);var chkUnwatchedOnly=form.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(job.UnwatchedOnly=chkUnwatchedOnly.checked)}function renderForm(options){return new Promise(function(resolve,reject){require(["emby-checkbox","emby-input","emby-select"],function(){appHost.appInfo().then(function(appInfo){renderFormInternal(options,appInfo.deviceId,resolve)})})})}function renderFormInternal(options,defaultTargetId,resolve){var elem=options.elem,dialogOptions=options.dialogOptions,targets=dialogOptions.Targets,html="",mode=options.mode,targetContainerClass="download"===mode||"convert"===mode?" hide":"",syncTargetLabel=globalize.translate("sharedcomponents#LabelSyncTo");options.readOnlySyncTarget?(html+='
',html+='',html+="
"):(html+='
',html+='",targets.length||(html+='
'+globalize.translate("sharedcomponents#LabelSyncNoTargetsHelp")+"
"),appHost.supports("externallinks")&&(html+='"),html+="
"),html+='
',html+='",html+='
',html+="
",html+='
',html+='",html+='
',html+="
",html+='
',html+='',html+="
",-1!==dialogOptions.Options.indexOf("UnwatchedOnly")&&(html+='
',html+="",html+="convert"===mode?'
'+globalize.translate("sharedcomponents#ConvertUnwatchedVideosOnlyHelp")+"
":'
'+globalize.translate("sharedcomponents#SyncUnwatchedVideosOnlyHelp")+"
",html+="
"),-1!==dialogOptions.Options.indexOf("SyncNewContent")&&(html+='
',html+="",html+="convert"===mode?'
'+globalize.translate("sharedcomponents#AutomaticallyConvertNewContentHelp")+"
":'
'+globalize.translate("sharedcomponents#AutomaticallySyncNewContentHelp")+"
",html+="
"),-1!==dialogOptions.Options.indexOf("ItemLimit")&&(html+='
',html+='',html+="convert"===mode?'
'+globalize.translate("sharedcomponents#ConvertItemLimitHelp")+"
":'
'+globalize.translate("sharedcomponents#DownloadItemLimitHelp")+"
",html+="
"),elem.innerHTML=html;var selectSyncTarget=elem.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.addEventListener("change",function(){loadQualityOptions(elem,this.value,options.dialogOptionsFn).then(resolve)}),selectSyncTarget.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectProfile=elem.querySelector("#selectProfile");selectProfile&&(selectProfile.addEventListener("change",function(){onProfileChange(elem,this.value)}),dialogOptions.ProfileOptions.length&&selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=elem.querySelector("#selectQuality");selectQuality&&(selectQuality.addEventListener("change",function(){onQualityChange(elem,this.value)}),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))),setTimeout(function(){focusManager.autoFocus(elem)},100)}function showWifiMessage(){require(["dialog","appRouter"],function(dialog,appRouter){var options={title:globalize.translate("sharedcomponents#HeaderWaitingForWifi"),text:globalize.translate("sharedcomponents#WifiRequiredToDownload")},items=[];items.push({name:options.confirmText||globalize.translate("sharedcomponents#ButtonOk"),id:"ok",type:"submit"}),items.push({name:options.cancelText||globalize.translate("sharedcomponents#HeaderDownloadSettings"),id:"downloadsettings",type:"cancel"}),options.buttons=items,dialog(options).then(function(result){return"ok"===result?Promise.resolve():"downloadsettings"===result?(appRouter.show(appRouter.getRouteUrl("downloadsettings")),Promise.resolve()):Promise.reject()})})}function validateNetwork(){switch(navigator.connection?navigator.connection.type:null){case"cellular":case"bluetooth":return showWifiMessage(),!1;default:return!0}}function showSyncMenu(options){return"download"===options.mode&&appSettings.syncOnlyOnWifi()&&!validateNetwork()?Promise.reject():registrationServices.validateFeature("sync").then(function(){return showSyncMenuInternal(options)})}function enableAutoSync(options){if("download"!==options.mode)return!1;var firstItem=(options.items||[])[0]||{};return"Audio"===firstItem.Type||("MusicAlbum"===firstItem.Type||("MusicArtist"===firstItem.Type||("MusicGenre"===firstItem.Type||"Playlist"===firstItem.Type&&"Audio"===firstItem.MediaType)))}function showSyncMenuInternal(options){var apiClient=connectionManager.getApiClient(options.serverId),userId=apiClient.getCurrentUserId();if(enableAutoSync(options))return submitQuickSyncJob(apiClient,userId,apiClient.deviceId(),{items:options.items,Quality:"custom",Bitrate:appSettings.maxStaticMusicBitrate()});var dialogOptionsFn=getTargetDialogOptionsFn(apiClient,{UserId:userId,ItemIds:(options.items||[]).map(function(i){return i.Id||i}).join(","),ParentId:options.ParentId,Category:options.Category});return dialogOptionsFn().then(function(dialogOptions){currentDialogOptions=dialogOptions;var dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="small";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

';var syncButtonLabel="download"===options.mode?globalize.translate("sharedcomponents#Download"):"convert"===options.mode?globalize.translate("sharedcomponents#Convert"):globalize.translate("sharedcomponents#Sync");html+=syncButtonLabel,html+="

",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
",html+='
',html+='
',html+='
',html+='
',html+='
',html+='",html+="
",html+="
",html+="
",html+="
",dlg.innerHTML=html;var submitted=!1;dlg.querySelector("form").addEventListener("submit",function(e){return submitted=submitJob(dlg,apiClient,userId,options,this),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1);var promise=dialogHelper.open(dlg);return renderForm({elem:dlg.querySelector(".formFields"),dialogOptions:dialogOptions,dialogOptionsFn:dialogOptionsFn,mode:options.mode}),promise.then(function(){return layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),submitted?Promise.resolve():Promise.reject()})})}function getTargetDialogOptionsFn(apiClient,query){return function(targetId){return query.TargetId=targetId,apiClient.getJSON(apiClient.getUrl("Sync/Options",query))}}function setQualityFieldVisible(form,visible){var fldQuality=form.querySelector(".fldQuality"),selectQuality=form.querySelector("#selectQuality");visible?(fldQuality&&fldQuality.classList.remove("hide"),selectQuality&&selectQuality.removeAttribute("required")):(fldQuality&&fldQuality.classList.add("hide"),selectQuality&&selectQuality.removeAttribute("required"))}function onProfileChange(form,profileId){var options=currentDialogOptions||{},profileOptions=options.ProfileOptions||[];if(profileOptions.length){var option=profileOptions.filter(function(o){return o.Id===profileId})[0],qualityOptions=options.QualityOptions||[];option?(form.querySelector(".profileDescription").innerHTML=option.Description||"",setQualityFieldVisible(form,qualityOptions.length>0&&option.EnableQualityOptions&&-1!==options.Options.indexOf("Quality"))):(form.querySelector(".profileDescription").innerHTML="",setQualityFieldVisible(form,qualityOptions.length>0&&-1!==options.Options.indexOf("Quality")))}}function onQualityChange(form,qualityId){var options=currentDialogOptions||{},option=(options.QualityOptions||[]).filter(function(o){return o.Id===qualityId})[0],qualityDescription=form.querySelector(".qualityDescription");qualityDescription.innerHTML=option?option.Description||"":"";var fldBitrate=form.querySelector(".fldBitrate"),txtBitrate=form.querySelector("#txtBitrate");"custom"===qualityId?(fldBitrate&&fldBitrate.classList.remove("hide"),txtBitrate&&txtBitrate.setAttribute("required","required")):(fldBitrate&&fldBitrate.classList.add("hide"),txtBitrate&&txtBitrate.removeAttribute("required"))}function renderTargetDialogOptions(form,options){currentDialogOptions=options;var fldProfile=form.querySelector(".fldProfile"),selectProfile=form.querySelector("#selectProfile");options.ProfileOptions.length&&-1!==options.Options.indexOf("Profile")?(fldProfile&&fldProfile.classList.remove("hide"),selectProfile&&selectProfile.setAttribute("required","required")):(fldProfile&&fldProfile.classList.add("hide"),selectProfile&&selectProfile.removeAttribute("required")),setQualityFieldVisible(form,options.QualityOptions.length>0),selectProfile&&(selectProfile.innerHTML=options.ProfileOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join(""),selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=form.querySelector("#selectQuality");if(selectQuality){selectQuality.innerHTML=options.QualityOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join("");var lastQuality=appSettings.get("sync-lastquality");lastQuality&&options.QualityOptions.filter(function(i){return i.Id===lastQuality}).length&&(selectQuality.value=lastQuality),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}}function loadQualityOptions(form,targetId,dialogOptionsFn){return dialogOptionsFn(targetId).then(function(options){return renderTargetDialogOptions(form,options)})}var currentDialogOptions;return{showMenu:showSyncMenu,renderForm:renderForm,setJobValues:setJobValues}}); \ No newline at end of file +define(["apphost","globalize","connectionManager","layoutManager","focusManager","scrollHelper","appSettings","registrationServices","dialogHelper","paper-icon-button-light","formDialogStyle"],function(appHost,globalize,connectionManager,layoutManager,focusManager,scrollHelper,appSettings,registrationServices,dialogHelper){"use strict";function submitJob(dlg,apiClient,userId,syncOptions,form){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!form)throw new Error("form cannot be null");var selectSyncTarget=form.querySelector("#selectSyncTarget"),target=selectSyncTarget?selectSyncTarget.value:null;if(!target)return require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#PleaseSelectDeviceToSyncTo"))}),!1;var options={userId:userId,TargetId:target,ParentId:syncOptions.ParentId,Category:syncOptions.Category};return setJobValues(options,form),syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){dialogHelper.close(dlg),require(["toast"],function(toast){showSubmissionToast(target,apiClient),"download"===syncOptions.mode&&syncNow()})}),!0}function showSubmissionToast(targetId,apiClient){var msg=targetId===apiClient.deviceId()?globalize.translate("sharedcomponents#DownloadingDots"):globalize.translate("sharedcomponents#SyncJobCreated");toast(msg)}function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function submitQuickSyncJob(apiClient,userId,targetId,syncOptions){if(!userId)throw new Error("userId cannot be null");if(!syncOptions)throw new Error("syncOptions cannot be null");if(!targetId)throw new Error("targetId cannot be null");var options={userId:userId,TargetId:targetId,ParentId:syncOptions.ParentId,Category:syncOptions.Category,Quality:syncOptions.Quality,Bitrate:syncOptions.Bitrate};return syncOptions.items&&syncOptions.items.length&&(options.ItemIds=(syncOptions.items||[]).map(function(i){return i.Id||i}).join(",")),apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/Jobs"),data:JSON.stringify(options),contentType:"application/json",dataType:"json"}).then(function(){require(["toast"],function(toast){showSubmissionToast(targetId,apiClient),"download"===syncOptions.mode&&syncNow()})})}function setJobValues(job,form){var txtBitrate=form.querySelector("#txtBitrate"),bitrate=txtBitrate?txtBitrate.value:null;bitrate&&(bitrate=1e6*parseFloat(bitrate)),job.Bitrate=bitrate;var selectQuality=form.querySelector("#selectQuality");selectQuality&&(job.Quality=selectQuality.value,appSettings.set("sync-lastquality",job.Quality||""));var selectProfile=form.querySelector("#selectProfile");selectProfile&&(job.Profile=selectProfile.value);var txtItemLimit=form.querySelector("#txtItemLimit");txtItemLimit&&(job.ItemLimit=txtItemLimit.value||null);var chkSyncNewContent=form.querySelector("#chkSyncNewContent");chkSyncNewContent&&(job.SyncNewContent=chkSyncNewContent.checked);var chkUnwatchedOnly=form.querySelector("#chkUnwatchedOnly");chkUnwatchedOnly&&(job.UnwatchedOnly=chkUnwatchedOnly.checked)}function renderForm(options){return new Promise(function(resolve,reject){require(["emby-checkbox","emby-input","emby-select"],function(){appHost.appInfo().then(function(appInfo){renderFormInternal(options,appInfo.deviceId,resolve)})})})}function renderFormInternal(options,defaultTargetId,resolve){var elem=options.elem,dialogOptions=options.dialogOptions,targets=dialogOptions.Targets,html="",mode=options.mode,targetContainerClass="download"===mode?" hide":"",syncTargetLabel="convert"===mode?globalize.translate("sharedcomponents#LabelConvertTo"):globalize.translate("sharedcomponents#LabelSyncTo");options.readOnlySyncTarget?(html+='
',html+='',html+="
"):(html+='
',html+='",targets.length||(html+='
'+globalize.translate("sharedcomponents#LabelSyncNoTargetsHelp")+"
"),appHost.supports("externallinks")&&(html+='"),html+="
"),html+='
',html+='",html+='
',html+="
",html+='
',html+='",html+='
',html+="
",html+='
',html+='',html+="
",-1!==dialogOptions.Options.indexOf("UnwatchedOnly")&&(html+='
',html+="",html+="convert"===mode?'
'+globalize.translate("sharedcomponents#ConvertUnwatchedVideosOnlyHelp")+"
":'
'+globalize.translate("sharedcomponents#SyncUnwatchedVideosOnlyHelp")+"
",html+="
"),-1!==dialogOptions.Options.indexOf("SyncNewContent")&&(html+='
',html+="",html+="convert"===mode?'
'+globalize.translate("sharedcomponents#AutomaticallyConvertNewContentHelp")+"
":'
'+globalize.translate("sharedcomponents#AutomaticallySyncNewContentHelp")+"
",html+="
"),-1!==dialogOptions.Options.indexOf("ItemLimit")&&(html+='
',html+='',html+="convert"===mode?'
'+globalize.translate("sharedcomponents#ConvertItemLimitHelp")+"
":'
'+globalize.translate("sharedcomponents#DownloadItemLimitHelp")+"
",html+="
"),elem.innerHTML=html;var selectSyncTarget=elem.querySelector("#selectSyncTarget");selectSyncTarget&&(selectSyncTarget.addEventListener("change",function(){loadQualityOptions(elem,this.value,options.dialogOptionsFn).then(resolve)}),selectSyncTarget.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectProfile=elem.querySelector("#selectProfile");selectProfile&&(selectProfile.addEventListener("change",function(){onProfileChange(elem,this.value)}),dialogOptions.ProfileOptions.length&&selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=elem.querySelector("#selectQuality");selectQuality&&(selectQuality.addEventListener("change",function(){onQualityChange(elem,this.value)}),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))),setTimeout(function(){focusManager.autoFocus(elem)},100)}function showWifiMessage(){require(["dialog","appRouter"],function(dialog,appRouter){var options={title:globalize.translate("sharedcomponents#HeaderWaitingForWifi"),text:globalize.translate("sharedcomponents#WifiRequiredToDownload")},items=[];items.push({name:options.confirmText||globalize.translate("sharedcomponents#ButtonOk"),id:"ok",type:"submit"}),items.push({name:options.cancelText||globalize.translate("sharedcomponents#HeaderDownloadSettings"),id:"downloadsettings",type:"cancel"}),options.buttons=items,dialog(options).then(function(result){return"ok"===result?Promise.resolve():"downloadsettings"===result?(appRouter.show(appRouter.getRouteUrl("downloadsettings")),Promise.resolve()):Promise.reject()})})}function validateNetwork(){switch(navigator.connection?navigator.connection.type:null){case"cellular":case"bluetooth":return showWifiMessage(),!1;default:return!0}}function showSyncMenu(options){return"download"===options.mode&&appSettings.syncOnlyOnWifi()&&!validateNetwork()?Promise.reject():registrationServices.validateFeature("sync").then(function(){return showSyncMenuInternal(options)})}function enableAutoSync(options){if("download"!==options.mode)return!1;var firstItem=(options.items||[])[0]||{};return"Audio"===firstItem.Type||("MusicAlbum"===firstItem.Type||("MusicArtist"===firstItem.Type||("MusicGenre"===firstItem.Type||"Playlist"===firstItem.Type&&"Audio"===firstItem.MediaType)))}function showSyncMenuInternal(options){var apiClient=connectionManager.getApiClient(options.serverId),userId=apiClient.getCurrentUserId();if(enableAutoSync(options))return submitQuickSyncJob(apiClient,userId,apiClient.deviceId(),{items:options.items,Quality:"custom",Bitrate:appSettings.maxStaticMusicBitrate()});var dialogOptionsFn=getTargetDialogOptionsFn(apiClient,{UserId:userId,ItemIds:(options.items||[]).map(function(i){return i.Id||i}).join(","),ParentId:options.ParentId,Category:options.Category,IncludeProviders:"convert"===options.mode?"ConvertSyncProvider":null,ExcludeProviders:"convert"===options.mode?null:"ConvertSyncProvider"});return dialogOptionsFn().then(function(dialogOptions){currentDialogOptions=dialogOptions;var dlgElementOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1};layoutManager.tv?dlgElementOptions.size="fullscreen":dlgElementOptions.size="small";var dlg=dialogHelper.createDialog(dlgElementOptions);dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

';var syncButtonLabel="download"===options.mode?globalize.translate("sharedcomponents#Download"):"convert"===options.mode?globalize.translate("sharedcomponents#Convert"):globalize.translate("sharedcomponents#Sync");html+=syncButtonLabel,html+="

",appHost.supports("externallinks")&&(html+='info'+globalize.translate("sharedcomponents#Help")+""),html+="
",html+='
',html+='
',html+='
',html+='
',html+='
',html+='",html+="
",html+="
",html+="
",html+="
",dlg.innerHTML=html;var submitted=!1;dlg.querySelector("form").addEventListener("submit",function(e){return submitted=submitJob(dlg,apiClient,userId,options,this),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),layoutManager.tv&&scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"),!1);var promise=dialogHelper.open(dlg);return renderForm({elem:dlg.querySelector(".formFields"),dialogOptions:dialogOptions,dialogOptionsFn:dialogOptionsFn,mode:options.mode}),promise.then(function(){return layoutManager.tv&&scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"),!1),submitted?Promise.resolve():Promise.reject()})})}function getTargetDialogOptionsFn(apiClient,query){return function(targetId){return query.TargetId=targetId,apiClient.getJSON(apiClient.getUrl("Sync/Options",query))}}function setQualityFieldVisible(form,visible){var fldQuality=form.querySelector(".fldQuality"),selectQuality=form.querySelector("#selectQuality");visible?(fldQuality&&fldQuality.classList.remove("hide"),selectQuality&&selectQuality.removeAttribute("required")):(fldQuality&&fldQuality.classList.add("hide"),selectQuality&&selectQuality.removeAttribute("required"))}function onProfileChange(form,profileId){var options=currentDialogOptions||{},profileOptions=options.ProfileOptions||[];if(profileOptions.length){var option=profileOptions.filter(function(o){return o.Id===profileId})[0],qualityOptions=options.QualityOptions||[];option?(form.querySelector(".profileDescription").innerHTML=option.Description||"",setQualityFieldVisible(form,qualityOptions.length>0&&option.EnableQualityOptions&&-1!==options.Options.indexOf("Quality"))):(form.querySelector(".profileDescription").innerHTML="",setQualityFieldVisible(form,qualityOptions.length>0&&-1!==options.Options.indexOf("Quality")))}}function onQualityChange(form,qualityId){var options=currentDialogOptions||{},option=(options.QualityOptions||[]).filter(function(o){return o.Id===qualityId})[0],qualityDescription=form.querySelector(".qualityDescription");qualityDescription.innerHTML=option?option.Description||"":"";var fldBitrate=form.querySelector(".fldBitrate"),txtBitrate=form.querySelector("#txtBitrate");"custom"===qualityId?(fldBitrate&&fldBitrate.classList.remove("hide"),txtBitrate&&txtBitrate.setAttribute("required","required")):(fldBitrate&&fldBitrate.classList.add("hide"),txtBitrate&&txtBitrate.removeAttribute("required"))}function renderTargetDialogOptions(form,options){currentDialogOptions=options;var fldProfile=form.querySelector(".fldProfile"),selectProfile=form.querySelector("#selectProfile");options.ProfileOptions.length&&-1!==options.Options.indexOf("Profile")?(fldProfile&&fldProfile.classList.remove("hide"),selectProfile&&selectProfile.setAttribute("required","required")):(fldProfile&&fldProfile.classList.add("hide"),selectProfile&&selectProfile.removeAttribute("required")),setQualityFieldVisible(form,options.QualityOptions.length>0),selectProfile&&(selectProfile.innerHTML=options.ProfileOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join(""),selectProfile.dispatchEvent(new CustomEvent("change",{bubbles:!0})));var selectQuality=form.querySelector("#selectQuality");if(selectQuality){selectQuality.innerHTML=options.QualityOptions.map(function(o){var selectedAttribute=o.IsDefault?' selected="selected"':"";return'"}).join("");var lastQuality=appSettings.get("sync-lastquality");lastQuality&&options.QualityOptions.filter(function(i){return i.Id===lastQuality}).length&&(selectQuality.value=lastQuality),selectQuality.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}}function loadQualityOptions(form,targetId,dialogOptionsFn){return dialogOptionsFn(targetId).then(function(options){return renderTargetDialogOptions(form,options)})}var currentDialogOptions;return{showMenu:showSyncMenu,renderForm:renderForm,setJobValues:setJobValues}}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html index 900eb7f0a2..314a69524a 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/dashboard.html @@ -110,26 +110,26 @@

${HeaderPaths}

-
${LabelCache}
-
+
${LabelCache}
+
-
${LabelLogs}
-
+
${LabelLogs}
+
-
${LabelMetadata}
-
+
${LabelMetadata}
+
-
${LabelTranscodingTemporaryFiles}
-
+
${LabelTranscodingTemporaryFiles}
+
diff --git a/MediaBrowser.WebDashboard/dashboard-ui/home/favorites.js b/MediaBrowser.WebDashboard/dashboard-ui/home/favorites.js index 793de9fcd9..56c73ce170 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/home/favorites.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/home/favorites.js @@ -1 +1 @@ -define(["appRouter","cardBuilder","dom","globalize","connectionManager","apphost","layoutManager","focusManager","emby-itemscontainer","emby-scroller"],function(appRouter,cardBuilder,dom,globalize,connectionManager,appHost,layoutManager,focusManager){"use strict";function enableScrollX(){return!0}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPosterShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getSquareShape(){return enableScrollX()?"overflowSquare":"square"}function getSections(){return[{name:"sharedcomponents#HeaderFavoriteMovies",types:"Movie",shape:getPosterShape(),showTitle:!1,overlayPlayButton:!0},{name:"sharedcomponents#HeaderFavoriteShows",types:"Series",shape:getPosterShape(),showTitle:!1,overlayPlayButton:!0},{name:"sharedcomponents#HeaderFavoriteEpisodes",types:"Episode",shape:getThumbShape(),preferThumb:!1,showTitle:!0,showParentTitle:!0,overlayPlayButton:!0,overlayText:!1,centerText:!0},{name:"sharedcomponents#HeaderFavoriteVideos",types:"Video",shape:getThumbShape(),preferThumb:!0,showTitle:!0,overlayPlayButton:!0,overlayText:!1,centerText:!0},{name:"sharedcomponents#HeaderFavoriteCollections",types:"BoxSet",shape:getPosterShape(),showTitle:!0,overlayPlayButton:!0,overlayText:!1,centerText:!0},{name:"sharedcomponents#HeaderFavoritePlaylists",types:"Playlist",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!1,centerText:!0,overlayPlayButton:!0,coverImage:!0},{name:"sharedcomponents#HeaderFavoriteArtists",types:"MusicArtist",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!1,centerText:!0,overlayPlayButton:!0,coverImage:!0},{name:"sharedcomponents#HeaderFavoriteAlbums",types:"MusicAlbum",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!0,centerText:!0,overlayPlayButton:!0,coverImage:!0},{name:"sharedcomponents#HeaderFavoriteSongs",types:"Audio",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!0,centerText:!0,overlayMoreButton:!0,action:"instantmix",coverImage:!0},{name:"sharedcomponents#HeaderFavoriteGames",types:"Game",shape:getSquareShape(),preferThumb:!1,showTitle:!0}]}function getFetchDataFn(section){return function(){var apiClient=this.apiClient,options={SortBy:"SortName",SortOrder:"Ascending",Filters:"IsFavorite",Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",EnableTotalRecordCount:!1};options.Limit=20;var userId=apiClient.getCurrentUserId();return"MusicArtist"===section.types?apiClient.getArtists(userId,options):(options.IncludeItemTypes=section.types,apiClient.getItems(userId,options))}}function getRouteUrl(section,serverId){return appRouter.getRouteUrl("list",{serverId:serverId,itemTypes:section.types,isFavorite:!0})}function getItemsHtmlFn(section){return function(items){var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=(appHost.preferVisualCards||supportsImageAnalysis)&§ion.autoCardLayout&§ion.showTitle;cardLayout=!1;var serverId=this.apiClient.serverId(),leadingButtons=layoutManager.tv?[{name:globalize.translate("sharedcomponents#All"),id:"more",icon:"",routeUrl:getRouteUrl(section,serverId)}]:null,lines=0;return section.showTitle&&lines++,section.showParentTitle&&lines++,cardBuilder.getCardsHtml({items:items,preferThumb:section.preferThumb,shape:section.shape,centerText:section.centerText&&!cardLayout,overlayText:!1!==section.overlayText,showTitle:section.showTitle,showParentTitle:section.showParentTitle,scalable:!0,coverImage:section.coverImage,overlayPlayButton:section.overlayPlayButton,overlayMoreButton:section.overlayMoreButton&&!cardLayout,action:section.action,allowBottomPadding:!enableScrollX(),cardLayout:cardLayout,vibrant:supportsImageAnalysis&&cardLayout,leadingButtons:leadingButtons,lines:lines})}}function FavoritesTab(view,params){this.view=view,this.params=params,this.apiClient=connectionManager.currentApiClient(),this.sectionsContainer=view.querySelector(".sections"),createSections(this,this.sectionsContainer,this.apiClient)}function createSections(instance,elem,apiClient){var i,length,sections=getSections(),html="";for(i=0,length=sections.length;i',html+='
',layoutManager.tv?html+='

'+globalize.translate(section.name)+"

":(html+='',html+='

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

",html+='',html+="
"),html+="
",html+='
',html+=""}elem.innerHTML=html;var elems=elem.querySelectorAll(".itemsContainer");for(i=0,length=elems.length;i',html+='
',layoutManager.tv?html+='

'+globalize.translate(section.name)+"

":(html+='',html+='

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

",html+='',html+="
"),html+="
",html+='
',html+=""}elem.innerHTML=html;var elems=elem.querySelectorAll(".itemsContainer");for(i=0,length=elems.length;i - -
diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/pluginspage.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/pluginspage.js index 3b4259c8bc..c47fb6ea1d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/pluginspage.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/pluginspage.js @@ -1 +1 @@ -define(["loading","libraryMenu","dom","cardStyle","emby-linkbutton"],function(loading,libraryMenu,dom){"use strict";function deletePlugin(page,uniqueid,name){var msg=Globalize.translate("UninstallPluginConfirmation").replace("{0}",name);require(["confirm"],function(confirm){confirm(msg,Globalize.translate("UninstallPluginHeader")).then(function(){loading.show(),ApiClient.uninstallPlugin(uniqueid).then(function(){reloadList(page)})})})}function showNoConfigurationMessage(){Dashboard.alert({message:Globalize.translate("NoPluginConfigurationMessage")})}function showConnectMessage(){Dashboard.alert({message:Globalize.translate("MessagePluginConfigurationRequiresLocalAccess")})}function getPluginCardHtml(plugin,pluginConfigurationPages){var configPage=pluginConfigurationPages.filter(function(pluginConfigurationPage){return pluginConfigurationPage.PluginId==plugin.Id})[0],html="",disallowPlugins=!Dashboard.allowPluginPages(plugin.Id),configPageUrl=configPage?Dashboard.getConfigurationPageUrl(configPage.Name):null,href=configPage&&!disallowPlugins?configPageUrl:null;return html+="
",html+='
',html+='
',html+='
',html+=href?'':configPageUrl?disallowPlugins?'
':'",html+='
',html+='
',html+='',html+="
",html+="
",html+=configPage?configPage.DisplayName||plugin.Name:plugin.Name,html+="
",html+="
",html+=plugin.Version,html+="
",html+="
",html+="
",html+="
"}function renderPlugins(page,plugins,showNoPluginsMessage){ApiClient.getJSON(ApiClient.getUrl("web/configurationpages")+"?pageType=PluginConfiguration").then(function(configPages){populateList(page,plugins,configPages,showNoPluginsMessage)})}function populateList(page,plugins,pluginConfigurationPages,showNoPluginsMessage){plugins=plugins.sort(function(plugin1,plugin2){return plugin1.Name>plugin2.Name?1:-1});var html=plugins.map(function(p){return getPluginCardHtml(p,pluginConfigurationPages)}).join(""),installedPluginsElement=page.querySelector(".installedPlugins");plugins.length?(installedPluginsElement.classList.add("itemsContainer"),installedPluginsElement.classList.add("vertical-wrap"),installedPluginsElement.innerHTML=html):(showNoPluginsMessage&&(html+='
',html+="

"+Globalize.translate("MessageNoPluginsInstalled")+"

",html+='

',html+=Globalize.translate("BrowsePluginCatalogMessage"),html+="

",html+="
"),installedPluginsElement.innerHTML=html),loading.hide()}function showPluginMenu(page,elem){var card=dom.parentWithClass(elem,"card"),id=card.getAttribute("data-id"),name=card.getAttribute("data-name"),configHref=card.querySelector(".cardContent").getAttribute("href"),menuItems=[];configHref&&menuItems.push({name:Globalize.translate("ButtonSettings"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonUninstall"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"open":Dashboard.navigate(configHref);break;case"delete":deletePlugin(page,id,name)}}})})}function reloadList(page){loading.show(),ApiClient.getInstalledPlugins().then(function(plugins){renderPlugins(page,plugins,!0)})}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}function onInstalledPluginsClick(e){if(dom.parentWithClass(e.target,"noConfigPluginCard"))showNoConfigurationMessage();else if(dom.parentWithClass(e.target,"connectModePluginCard"))showConnectMessage();else{var btnCardMenu=dom.parentWithClass(e.target,"btnCardMenu");btnCardMenu&&showPluginMenu(dom.parentWithClass(btnCardMenu,"page"),btnCardMenu)}}pageIdOn("pageinit","pluginsPage",function(){this.querySelector(".installedPlugins").addEventListener("click",onInstalledPluginsClick)}),pageIdOn("pageshow","pluginsPage",function(){libraryMenu.setTabs("plugins",0,getTabs),reloadList(this)}),window.PluginsPage={renderPlugins:renderPlugins}}); \ No newline at end of file +define(["loading","libraryMenu","dom","cardStyle","emby-linkbutton"],function(loading,libraryMenu,dom){"use strict";function deletePlugin(page,uniqueid,name){var msg=Globalize.translate("UninstallPluginConfirmation").replace("{0}",name);require(["confirm"],function(confirm){confirm(msg,Globalize.translate("UninstallPluginHeader")).then(function(){loading.show(),ApiClient.uninstallPlugin(uniqueid).then(function(){reloadList(page)})})})}function showNoConfigurationMessage(){Dashboard.alert({message:Globalize.translate("NoPluginConfigurationMessage")})}function showConnectMessage(){Dashboard.alert({message:Globalize.translate("MessagePluginConfigurationRequiresLocalAccess")})}function getPluginCardHtml(plugin,pluginConfigurationPages){var configPage=pluginConfigurationPages.filter(function(pluginConfigurationPage){return pluginConfigurationPage.PluginId==plugin.Id})[0],html="",disallowPlugins=!Dashboard.allowPluginPages(plugin.Id),configPageUrl=configPage?Dashboard.getConfigurationPageUrl(configPage.Name):null,href=configPage&&!disallowPlugins?configPageUrl:null;return html+="
",html+='
',html+='
',html+='
',html+=href?'':configPageUrl?disallowPlugins?'
':'",html+='
',html+='
',html+='',html+="
",html+="
",html+=configPage?configPage.DisplayName||plugin.Name:plugin.Name,html+="
",html+="
",html+=plugin.Version,html+="
",html+="
",html+="
",html+="
"}function renderPlugins(page,plugins,showNoPluginsMessage){ApiClient.getJSON(ApiClient.getUrl("web/configurationpages")+"?pageType=PluginConfiguration").then(function(configPages){populateList(page,plugins,configPages,showNoPluginsMessage)})}function populateList(page,plugins,pluginConfigurationPages,showNoPluginsMessage){plugins=plugins.sort(function(plugin1,plugin2){return plugin1.Name>plugin2.Name?1:-1});var html=plugins.map(function(p){return getPluginCardHtml(p,pluginConfigurationPages)}).join(""),installedPluginsElement=page.querySelector(".installedPlugins");installedPluginsElement.removeEventListener("click",onInstalledPluginsClick),installedPluginsElement.addEventListener("click",onInstalledPluginsClick),plugins.length?(installedPluginsElement.classList.add("itemsContainer"),installedPluginsElement.classList.add("vertical-wrap"),installedPluginsElement.innerHTML=html):(showNoPluginsMessage&&(html+='
',html+="

"+Globalize.translate("MessageNoPluginsInstalled")+"

",html+='

',html+=Globalize.translate("BrowsePluginCatalogMessage"),html+="

",html+="
"),installedPluginsElement.innerHTML=html),loading.hide()}function showPluginMenu(page,elem){var card=dom.parentWithClass(elem,"card"),id=card.getAttribute("data-id"),name=card.getAttribute("data-name"),configHref=card.querySelector(".cardContent").getAttribute("href"),menuItems=[];configHref&&menuItems.push({name:Globalize.translate("ButtonSettings"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonUninstall"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"open":Dashboard.navigate(configHref);break;case"delete":deletePlugin(page,id,name)}}})})}function reloadList(page){loading.show(),ApiClient.getInstalledPlugins().then(function(plugins){renderPlugins(page,plugins,!0)})}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}function onInstalledPluginsClick(e){if(dom.parentWithClass(e.target,"noConfigPluginCard"))showNoConfigurationMessage();else if(dom.parentWithClass(e.target,"connectModePluginCard"))showConnectMessage();else{var btnCardMenu=dom.parentWithClass(e.target,"btnCardMenu");btnCardMenu&&showPluginMenu(dom.parentWithClass(btnCardMenu,"page"),btnCardMenu)}}pageIdOn("pageshow","pluginsPage",function(){libraryMenu.setTabs("plugins",0,getTabs),reloadList(this)}),window.PluginsPage={renderPlugins:renderPlugins}}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/userprofilespage.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/userprofilespage.js index bfb7e9e843..4b2134fb75 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/userprofilespage.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/userprofilespage.js @@ -1 +1 @@ -define(["loading","dom","globalize","humanedate","paper-icon-button-light","cardStyle","emby-linkbutton","indicators","flexStyles"],function(loading,dom,globalize){"use strict";function deleteUser(page,id){var msg=globalize.translate("DeleteUserConfirmation");require(["confirm"],function(confirm){confirm({title:globalize.translate("DeleteUser"),text:msg,confirmText:globalize.translate("ButtonDelete"),primary:"cancel"}).then(function(){loading.show(),ApiClient.deleteUser(id).then(function(){loadData(page)})})})}function showUserMenu(elem){var card=dom.parentWithClass(elem,"card"),page=dom.parentWithClass(card,"page"),userId=card.getAttribute("data-userid"),menuItems=[];menuItems.push({name:globalize.translate("ButtonOpen"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:globalize.translate("ButtonLibraryAccess"),id:"access",ironIcon:"lock"}),menuItems.push({name:globalize.translate("ButtonParentalControl"),id:"parentalcontrol",ironIcon:"person"}),menuItems.push({name:globalize.translate("ButtonDelete"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:card,callback:function(id){switch(id){case"open":Dashboard.navigate("useredit.html?userId="+userId);break;case"access":Dashboard.navigate("userlibraryaccess.html?userId="+userId);break;case"parentalcontrol":Dashboard.navigate("userparentalcontrol.html?userId="+userId);break;case"delete":deleteUser(page,userId)}}})})}function getUserHtml(user,addConnectIndicator){var html="",cssClass="card squareCard scalableCard squareCard-scalable";user.Policy.IsDisabled&&(cssClass+=" grayscale"),html+="
",html+='
',html+='
',html+='
',html+='';var imgUrl;user.PrimaryImageTag&&(imgUrl=ApiClient.getUserImageUrl(user.Id,{width:300,tag:user.PrimaryImageTag,type:"Primary"}));var imageClass="cardImage";user.Policy.IsDisabled&&(imageClass+=" disabledUser"),imgUrl?html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.Name,html+="
",html+='
';var lastSeen=getLastSeenText(user.LastActivityDate);return html+=""!=lastSeen?lastSeen:" ",html+="
",html+="
",html+="
",html+="
"}function getLastSeenText(lastActivityDate){return lastActivityDate?"Last seen "+humane_date(lastActivityDate):""}function getUserSectionHtml(users,addConnectIndicator){var html="";return html+=users.map(function(u){return getUserHtml(u,addConnectIndicator)}).join("")}function renderUsers(page,users){page.querySelector(".localUsers").innerHTML=getUserSectionHtml(users,!0)}function showPendingUserMenu(elem){var menuItems=[];menuItems.push({name:globalize.translate("ButtonCancel"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){var card=dom.parentWithClass(elem,"card"),page=dom.parentWithClass(card,"page"),id=card.getAttribute("data-id");actionsheet.show({items:menuItems,positionTo:card,callback:function(menuItemId){switch(menuItemId){case"delete":cancelAuthorization(page,id)}}})})}function getPendingUserHtml(user){var html="";html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.UserName,html+="
",html+="
",html+="
",html+="
"}function renderPendingGuests(page,users){users.length?page.querySelector(".sectionPendingGuests").classList.remove("hide"):page.querySelector(".sectionPendingGuests").classList.add("hide");var html=users.map(getPendingUserHtml).join("");page.querySelector(".pending").innerHTML=html}function cancelAuthorization(page,id){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Connect/Pending",{Id:id})}).then(function(){loadData(page)})}function loadData(page){loading.show(),ApiClient.getUsers().then(function(users){renderUsers(page,users),loading.hide()}),ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function(pending){renderPendingGuests(page,pending)})}function showLinkUser(page,userId){require(["components/guestinviter/connectlink"],function(connectlink){connectlink.show().then(function(){loadData(page)})})}function showInvitePopup(page){Dashboard.getCurrentUser().then(function(user){if(!user.ConnectUserId)return void showLinkUser(page,user.Id);require(["components/guestinviter/guestinviter"],function(guestinviter){guestinviter.show().then(function(){loadData(page)})})})}function showNewUserDialog(e){require(["dialog"],function(dialog){var items=[];items.push({name:globalize.translate("HeaderAddUserManually"),id:"manual",type:"submit"}),items.push({name:globalize.translate("HeaderInviteByEmail"),id:"invite"}),items.push({name:globalize.translate("sharedcomponents#ButtonCancel"),id:"cancel",type:"cancel"});var options={title:globalize.translate("ButtonAddUser"),text:globalize.translate("HowWouldYouLikeToAddUser")};return options.buttons=items,dialog(options).then(function(result){var view=dom.parentWithClass(e.target,"page");"invite"===result?showInvitePopup(view):"manual"===result&&Dashboard.navigate("usernew.html")})})}pageIdOn("pageinit","userProfilesPage",function(){var page=this;page.querySelector(".btnAddUser").addEventListener("click",showNewUserDialog),page.querySelector(".localUsers").addEventListener("click",function(e){var btnUserMenu=dom.parentWithClass(e.target,"btnUserMenu");btnUserMenu&&showUserMenu(btnUserMenu)}),page.querySelector(".pending").addEventListener("click",function(e){var btnUserMenu=dom.parentWithClass(e.target,"btnUserMenu");btnUserMenu&&showPendingUserMenu(btnUserMenu)})}),pageIdOn("pagebeforeshow","userProfilesPage",function(){loadData(this)})}); \ No newline at end of file +define(["loading","dom","globalize","humanedate","paper-icon-button-light","cardStyle","emby-linkbutton","indicators","flexStyles"],function(loading,dom,globalize){"use strict";function deleteUser(page,id){var msg=globalize.translate("DeleteUserConfirmation");require(["confirm"],function(confirm){confirm({title:globalize.translate("DeleteUser"),text:msg,confirmText:globalize.translate("ButtonDelete"),primary:"cancel"}).then(function(){loading.show(),ApiClient.deleteUser(id).then(function(){loadData(page)})})})}function showUserMenu(elem){var card=dom.parentWithClass(elem,"card"),page=dom.parentWithClass(card,"page"),userId=card.getAttribute("data-userid"),menuItems=[];menuItems.push({name:globalize.translate("ButtonOpen"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:globalize.translate("ButtonLibraryAccess"),id:"access",ironIcon:"lock"}),menuItems.push({name:globalize.translate("ButtonParentalControl"),id:"parentalcontrol",ironIcon:"person"}),menuItems.push({name:globalize.translate("ButtonDelete"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:card,callback:function(id){switch(id){case"open":Dashboard.navigate("useredit.html?userId="+userId);break;case"access":Dashboard.navigate("userlibraryaccess.html?userId="+userId);break;case"parentalcontrol":Dashboard.navigate("userparentalcontrol.html?userId="+userId);break;case"delete":deleteUser(page,userId)}}})})}function getUserHtml(user,addConnectIndicator){var html="",cssClass="card squareCard scalableCard squareCard-scalable";user.Policy.IsDisabled&&(cssClass+=" grayscale"),html+="
",html+='
',html+='
',html+='
',html+='';var imgUrl;user.PrimaryImageTag&&(imgUrl=ApiClient.getUserImageUrl(user.Id,{width:300,tag:user.PrimaryImageTag,type:"Primary"}));var imageClass="cardImage";user.Policy.IsDisabled&&(imageClass+=" disabledUser"),imgUrl?html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.Name,html+="
",html+='
';var lastSeen=getLastSeenText(user.LastActivityDate);return html+=""!=lastSeen?lastSeen:" ",html+="
",html+="
",html+="
",html+="
"}function getLastSeenText(lastActivityDate){return lastActivityDate?"Last seen "+humane_date(lastActivityDate):""}function getUserSectionHtml(users,addConnectIndicator){var html="";return html+=users.map(function(u){return getUserHtml(u,addConnectIndicator)}).join("")}function renderUsers(page,users){page.querySelector(".localUsers").innerHTML=getUserSectionHtml(users,!0)}function showPendingUserMenu(elem){var menuItems=[];menuItems.push({name:globalize.translate("ButtonCancel"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){var card=dom.parentWithClass(elem,"card"),page=dom.parentWithClass(card,"page"),id=card.getAttribute("data-id");actionsheet.show({items:menuItems,positionTo:card,callback:function(menuItemId){switch(menuItemId){case"delete":cancelAuthorization(page,id)}}})})}function getPendingUserHtml(user){var html="";html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.UserName,html+="
",html+="
",html+="
",html+="
"}function renderPendingGuests(page,users){users.length?page.querySelector(".sectionPendingGuests").classList.remove("hide"):page.querySelector(".sectionPendingGuests").classList.add("hide");var html=users.map(getPendingUserHtml).join("");page.querySelector(".pending").innerHTML=html}function cancelAuthorization(page,id){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Connect/Pending",{Id:id})}).then(function(){loadData(page)})}function loadData(page){loading.show(),ApiClient.getUsers().then(function(users){renderUsers(page,users),loading.hide()}),ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function(pending){renderPendingGuests(page,pending)})}function showLinkUser(page,userId){require(["components/guestinviter/connectlink"],function(connectlink){connectlink.show().then(function(){loadData(page)})})}function showInvitePopup(page){Dashboard.getCurrentUser().then(function(user){if(!user.ConnectUserId)return void showLinkUser(page,user.Id);require(["components/guestinviter/guestinviter"],function(guestinviter){guestinviter.show().then(function(){loadData(page)})})})}function showNewUserDialog(e){require(["dialog"],function(dialog){var items=[];items.push({name:globalize.translate("HeaderAddLocalUser"),id:"manual",type:"submit",description:globalize.translate("AddUserByManually")}),items.push({name:globalize.translate("HeaderInviteWithEmbyConnect"),id:"invite",description:globalize.translate("InviteAnEmbyConnectUser")}),items.push({name:globalize.translate("sharedcomponents#ButtonCancel"),id:"cancel",type:"cancel"});var options={title:globalize.translate("ButtonAddUser"),text:globalize.translate("HowWouldYouLikeToAddUser")};return options.buttons=items,dialog(options).then(function(result){var view=dom.parentWithClass(e.target,"page");"invite"===result?showInvitePopup(view):"manual"===result&&Dashboard.navigate("usernew.html")})})}pageIdOn("pageinit","userProfilesPage",function(){var page=this;page.querySelector(".btnAddUser").addEventListener("click",showNewUserDialog),page.querySelector(".localUsers").addEventListener("click",function(e){var btnUserMenu=dom.parentWithClass(e.target,"btnUserMenu");btnUserMenu&&showUserMenu(btnUserMenu)}),page.querySelector(".pending").addEventListener("click",function(e){var btnUserMenu=dom.parentWithClass(e.target,"btnUserMenu");btnUserMenu&&showPendingUserMenu(btnUserMenu)})}),pageIdOn("pagebeforeshow","userProfilesPage",function(){loadData(this)})}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/scripts/videoosd.js b/MediaBrowser.WebDashboard/dashboard-ui/scripts/videoosd.js index c785ba5467..167b1e174e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/scripts/videoosd.js +++ b/MediaBrowser.WebDashboard/dashboard-ui/scripts/videoosd.js @@ -1 +1 @@ -define(["playbackManager","dom","inputmanager","datetime","itemHelper","mediaInfo","focusManager","imageLoader","scrollHelper","events","connectionManager","browser","globalize","apphost","layoutManager","userSettings","scrollStyles","emby-slider","paper-icon-button-light","css!css/videoosd"],function(playbackManager,dom,inputManager,datetime,itemHelper,mediaInfo,focusManager,imageLoader,scrollHelper,events,connectionManager,browser,globalize,appHost,layoutManager,userSettings){"use strict";function seriesImageUrl(item,options){if("Episode"!==item.Type)return null;if(options=options||{},options.type=options.type||"Primary","Primary"===options.type&&item.SeriesPrimaryImageTag)return options.tag=item.SeriesPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if("Thumb"===options.type){if(item.SeriesThumbImageTag)return options.tag=item.SeriesThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if(item.ParentThumbImageTag)return options.tag=item.ParentThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId,options)}return null}function imageUrl(item,options){return options=options||{},options.type=options.type||"Primary",item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId||item.Id,options)):"Primary"===options.type&&item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}return function(view,params){function onVerticalSwipe(e,elem,data){var player=currentPlayer;if(player){var deltaY=data.currentDeltaY,windowSize=dom.getWindowSize();if(supportsBrightnessChange&&data.clientX1?view.querySelector(".btnAudio").classList.remove("hide"):view.querySelector(".btnAudio").classList.add("hide")}function setTitle(item,parentName){var url=logoImageUrl(item,connectionManager.getApiClient(item.ServerId),{});if(url){Emby.Page.setTitle("");var pageTitle=document.querySelector(".pageTitle");pageTitle.style.backgroundImage="url('"+url+"')",pageTitle.classList.add("pageTitleWithLogo"),pageTitle.classList.remove("pageTitleWithDefaultLogo"),pageTitle.innerHTML=""}else Emby.Page.setTitle(parentName||"")}function setPoster(item,secondaryItem){var osdPoster=view.querySelector(".osdPoster");if(item){var imgUrl=seriesImageUrl(item,{type:"Primary"})||seriesImageUrl(item,{type:"Thumb"})||imageUrl(item,{type:"Primary"});if(!imgUrl&&secondaryItem&&(imgUrl=seriesImageUrl(secondaryItem,{type:"Primary"})||seriesImageUrl(secondaryItem,{type:"Thumb"})||imageUrl(secondaryItem,{type:"Primary"})),imgUrl)return void(osdPoster.innerHTML='')}osdPoster.innerHTML=""}function showOsd(){slideDownToShow(headerElement),showMainOsdControls(),startOsdHideTimer()}function hideOsd(){slideUpToHide(headerElement),hideMainOsdControls()}function toggleOsd(){"osd"===currentVisibleMenu?hideOsd():currentVisibleMenu||showOsd()}function startOsdHideTimer(){stopOsdHideTimer(),osdHideTimeout=setTimeout(hideOsd,5e3)}function stopOsdHideTimer(){osdHideTimeout&&(clearTimeout(osdHideTimeout),osdHideTimeout=null)}function slideDownToShow(elem){elem.classList.remove("osdHeader-hidden")}function slideUpToHide(elem){elem.classList.add("osdHeader-hidden")}function clearHideAnimationEventListeners(elem){dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function onHideAnimationComplete(e){var elem=e.target;elem.classList.add("hide"),dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function showMainOsdControls(){if(!currentVisibleMenu){var elem=osdBottomElement;currentVisibleMenu="osd",clearHideAnimationEventListeners(elem),elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("videoOsdBottom-hidden"),layoutManager.mobile||setTimeout(function(){focusManager.focus(elem.querySelector(".btnPause"))},50)}}function hideMainOsdControls(){if("osd"===currentVisibleMenu){var elem=osdBottomElement;clearHideAnimationEventListeners(elem),elem.offsetWidth,elem.classList.add("videoOsdBottom-hidden"),dom.addEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0}),currentVisibleMenu=null}}function onPointerMove(e){if("mouse"===(e.pointerType||(layoutManager.mobile?"touch":"mouse"))){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastPointerMoveData;if(!obj)return void(lastPointerMoveData={x:eventX,y:eventY});if(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10)return;obj.x=eventX,obj.y=eventY,showOsd()}}function onInputCommand(e){var player=currentPlayer;switch(e.detail.command){case"left":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.rewind(player));break;case"right":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.fastForward(player));break;case"pageup":playbackManager.nextChapter(player);break;case"pagedown":playbackManager.previousChapter(player);break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd();break;case"record":onRecordingCommand(),showOsd();break;case"togglestats":toggleStats()}}function onRecordingCommand(){var btnRecord=view.querySelector(".btnRecord");btnRecord.classList.contains("hide")||btnRecord.click()}function updateFullscreenIcon(){playbackManager.isFullscreen(currentPlayer)?(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("ExitFullscreen")),view.querySelector(".btnFullscreen i").innerHTML=""):(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("Fullscreen")),view.querySelector(".btnFullscreen i").innerHTML="")}function onPlayerChange(){bindToPlayer(playbackManager.getCurrentPlayer())}function onStateChanged(event,state){var player=this;state.NowPlayingItem&&(isEnabled=!0,updatePlayerStateInternal(event,player,state),updatePlaylist(player),enableStopOnBack(!0))}function onPlayPauseStateChanged(e){if(isEnabled){updatePlayPauseState(this.paused())}}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player,player.isMuted(),player.getVolume())}}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type);var player=this;onStateChanged.call(player,e,state),resetUpNextDialog()}function resetUpNextDialog(){comingUpNextDisplayed=!1;var dlg=currentUpNextDialog;dlg&&(dlg.destroy(),currentUpNextDialog=null)}function onPlaybackStopped(e,state){currentRuntimeTicks=null,resetUpNextDialog(),console.log("nowplaying event: "+e.type),"Video"!==state.NextMediaType&&(view.removeEventListener("viewbeforehide",onViewHideStopPlayback),Emby.Page.back())}function onMediaStreamsChanged(e){var player=this,state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}function bindToPlayer(player){if(player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player)){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate),events.on(player,"fullscreenchange",updateFullscreenIcon),events.on(player,"mediastreamschange",onMediaStreamsChanged),resetUpNextDialog()}}function releaseCurrentPlayer(){destroyStats(),resetUpNextDialog();var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),events.off(player,"fullscreenchange",updateFullscreenIcon),events.off(player,"mediastreamschange",onMediaStreamsChanged),currentPlayer=null)}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player);var currentTime=playbackManager.currentTime(player);updateTimeDisplay(currentTime,currentRuntimeTicks,playbackManager.playbackStartTime(player),playbackManager.getBufferedRanges(player));var item=currentItem;refreshProgramInfoIfNeeded(player,item),showComingUpNextIfNeeded(player,item,currentTime,currentRuntimeTicks)}}}function showComingUpNextIfNeeded(player,currentItem,currentTimeTicks,runtimeTicks){if(runtimeTicks&¤tTimeTicks&&!comingUpNextDisplayed&&!currentVisibleMenu&&"Episode"===currentItem.Type&&userSettings.enableNextVideoInfoOverlay()){var showAtSecondsLeft=runtimeTicks>=3e10?40:runtimeTicks>=24e9?35:30,showAtTicks=runtimeTicks-1e3*showAtSecondsLeft*1e4,timeRemainingTicks=runtimeTicks-currentTimeTicks;currentTimeTicks>=showAtTicks&&runtimeTicks>=6e9&&timeRemainingTicks>=2e8&&showComingUpNext(player)}}function onUpNextHidden(){"upnext"===currentVisibleMenu&&(currentVisibleMenu=null)}function showComingUpNext(player){require(["upNextDialog"],function(UpNextDialog){currentVisibleMenu||currentUpNextDialog||(currentVisibleMenu="upnext",comingUpNextDisplayed=!0,playbackManager.nextItem(player).then(function(nextItem){currentUpNextDialog=new UpNextDialog({parent:view.querySelector(".upNextContainer"),player:player,nextItem:nextItem}),events.on(currentUpNextDialog,"hide",onUpNextHidden)},onUpNextHidden))})}function refreshProgramInfoIfNeeded(player,item){if("TvChannel"===item.Type){var program=item.CurrentProgram;if(program&&program.EndDate)try{var endDate=datetime.parseISO8601Date(program.EndDate);if((new Date).getTime()>=endDate.getTime()){console.log("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)}}}function updatePlayPauseState(isPaused){view.querySelector(".btnPause i").innerHTML=isPaused?"":""}function updatePlayerStateInternal(event,player,state){var playState=state.PlayState||{};updatePlayPauseState(playState.IsPaused);var supportedCommands=playbackManager.getSupportedCommands(player);currentPlayerSupportedCommands=supportedCommands,supportsBrightnessChange=-1!==supportedCommands.indexOf("SetBrightness"),updatePlayerVolumeState(player,playState.IsMuted,playState.VolumeLevel),nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging&&(nowPlayingPositionSlider.disabled=!playState.CanSeek),btnFastForward.disabled=!playState.CanSeek,btnRewind.disabled=!playState.CanSeek;var nowPlayingItem=state.NowPlayingItem||{};playbackStartTimeTicks=playState.PlaybackStartTimeTicks,updateTimeDisplay(playState.PositionTicks,nowPlayingItem.RunTimeTicks,playState.PlaybackStartTimeTicks,playState.BufferedRanges||[]),updateNowPlayingInfo(player,state),state.MediaSource&&state.MediaSource.SupportsTranscoding&&-1!==supportedCommands.indexOf("SetMaxStreamingBitrate")?view.querySelector(".btnVideoOsdSettings").classList.remove("hide"):view.querySelector(".btnVideoOsdSettings").classList.add("hide");var isProgressClear=state.MediaSource&&null==state.MediaSource.RunTimeTicks;nowPlayingPositionSlider.setIsClear(isProgressClear),-1===supportedCommands.indexOf("ToggleFullscreen")||player.isLocalPlayer&&layoutManager.tv&&playbackManager.isFullscreen(player)?view.querySelector(".btnFullscreen").classList.add("hide"):view.querySelector(".btnFullscreen").classList.remove("hide"),-1===supportedCommands.indexOf("PictureInPicture")?view.querySelector(".btnPip").classList.add("hide"):view.querySelector(".btnPip").classList.remove("hide"),updateFullscreenIcon()}function getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs){return(currentTimeMs-programStartDateMs)/programRuntimeMs*100}function updateTimeDisplay(positionTicks,runtimeTicks,playbackStartTimeTicks,bufferedRanges){if(enableProgressByTimeOfDay){if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging)if(programStartDateMs&&programEndDateMs){var currentTimeMs=(playbackStartTimeTicks+(positionTicks||0))/1e4,programRuntimeMs=programEndDateMs-programStartDateMs;if(nowPlayingPositionSlider.value=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs),bufferedRanges.length){var rangeStart=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].start||0))/1e4),rangeEnd=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].end||0))/1e4);nowPlayingPositionSlider.setBufferedRanges([{start:rangeStart,end:rangeEnd}])}else nowPlayingPositionSlider.setBufferedRanges([])}else nowPlayingPositionSlider.value=0,nowPlayingPositionSlider.setBufferedRanges([]);nowPlayingPositionText.innerHTML="",nowPlayingDurationText.innerHTML=""}else{if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging){if(runtimeTicks){var pct=positionTicks/runtimeTicks;pct*=100,nowPlayingPositionSlider.value=pct}else nowPlayingPositionSlider.value=0;runtimeTicks&&null!=positionTicks&¤tRuntimeTicks&&!enableProgressByTimeOfDay&¤tItem.RunTimeTicks&&"Recording"!==currentItem.Type?endsAtText.innerHTML="  -  "+mediaInfo.getEndsAtFromPosition(runtimeTicks,positionTicks,!0):endsAtText.innerHTML=""}nowPlayingPositionSlider&&nowPlayingPositionSlider.setBufferedRanges(bufferedRanges,runtimeTicks,positionTicks),updateTimeText(nowPlayingPositionText,positionTicks),updateTimeText(nowPlayingDurationText,runtimeTicks,!0)}}function updatePlayerVolumeState(player,isMuted,volumeLevel){var supportedCommands=currentPlayerSupportedCommands,showMuteButton=!0,showVolumeSlider=!0;-1===supportedCommands.indexOf("Mute")&&(showMuteButton=!1),-1===supportedCommands.indexOf("SetVolume")&&(showVolumeSlider=!1),player.isLocalPlayer&&appHost.supports("physicalvolumecontrol")&&(showMuteButton=!1,showVolumeSlider=!1),isMuted?(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Unmute")),view.querySelector(".buttonMute i").innerHTML=""):(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Mute")),view.querySelector(".buttonMute i").innerHTML=""),showMuteButton?view.querySelector(".buttonMute").classList.remove("hide"):view.querySelector(".buttonMute").classList.add("hide"),nowPlayingVolumeSlider&&(showVolumeSlider?nowPlayingVolumeSliderContainer.classList.remove("hide"):nowPlayingVolumeSliderContainer.classList.add("hide"),nowPlayingVolumeSlider.dragging||(nowPlayingVolumeSlider.value=volumeLevel||0))}function updatePlaylist(player){var btnPreviousTrack=view.querySelector(".btnPreviousTrack"),btnNextTrack=view.querySelector(".btnNextTrack");btnPreviousTrack.classList.remove("hide"),btnNextTrack.classList.remove("hide"),btnNextTrack.disabled=!1,btnPreviousTrack.disabled=!1}function updateTimeText(elem,ticks,divider){if(null==ticks)return void(elem.innerHTML="");var html=datetime.getDisplayRunningTime(ticks);divider&&(html=" / "+html),elem.innerHTML=html}function onSettingsButtonClick(e){var btn=this;require(["playerSettingsMenu"],function(playerSettingsMenu){var player=currentPlayer;player&&playerSettingsMenu.show({mediaType:"Video",player:player,positionTo:btn,stats:!0,onOption:onSettingsOption})})}function onSettingsOption(selectedOption){"stats"===selectedOption&&toggleStats()}function toggleStats(){require(["playerStats"],function(PlayerStats){var player=currentPlayer;player&&(statsOverlay?statsOverlay.toggle():statsOverlay=new PlayerStats({player:player}))})}function destroyStats(){statsOverlay&&(statsOverlay.destroy(),statsOverlay=null)}function showAudioTrackSelection(){var player=currentPlayer,audioTracks=playbackManager.audioTracks(player),currentIndex=playbackManager.getAudioStreamIndex(player),menuItems=audioTracks.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,title:globalize.translate("Audio"),positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setAudioStreamIndex(index,player)})})}function showSubtitleTrackSelection(){var player=currentPlayer,streams=playbackManager.subtitleTracks(player),currentIndex=playbackManager.getSubtitleStreamIndex(player);null==currentIndex&&(currentIndex=-1),streams.unshift({Index:-1,DisplayTitle:globalize.translate("Off")});var menuItems=streams.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({title:globalize.translate("Subtitles"),items:menuItems,positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setSubtitleStreamIndex(index,player)})})}function onWindowKeyDown(e){if(!currentVisibleMenu&&(32===e.keyCode||13===e.keyCode))return playbackManager.playPause(currentPlayer),void showOsd();switch(e.key){case"f":e.ctrlKey||playbackManager.toggleFullscreen(currentPlayer);break;case"m":playbackManager.toggleMute(currentPlayer);break;case"ArrowLeft":case"Left":case"NavigationLeft":case"GamepadDPadLeft":case"GamepadLeftThumbstickLeft":e.shiftKey&&playbackManager.rewind(currentPlayer);break;case"ArrowRight":case"Right":case"NavigationRight":case"GamepadDPadRight":case"GamepadLeftThumbstickRight":e.shiftKey&&playbackManager.fastForward(currentPlayer)}}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function getChapterBubbleHtml(apiClient,item,chapters,positionTicks){for(var chapter,index=-1,i=0,length=chapters.length;i=currentChapter.StartPositionTicks&&(chapter=currentChapter,index=i)}if(!chapter)return null;var src=getImgUrl(item,chapter,index,400,apiClient);if(src){var html='
';return html+='',html+='
',html+='
',html+=chapter.Name,html+="
",html+='

',html+=datetime.getDisplayRunningTime(positionTicks),html+="

",html+="
",html+="
"}return null}function onViewHideStopPlayback(){if(playbackManager.isPlayingVideo()){var player=currentPlayer;view.removeEventListener("viewbeforehide",onViewHideStopPlayback),releaseCurrentPlayer(),playbackManager.stop(player)}}function enableStopOnBack(enabled){view.removeEventListener("viewbeforehide",onViewHideStopPlayback),enabled&&playbackManager.isPlayingVideo(currentPlayer)&&view.addEventListener("viewbeforehide",onViewHideStopPlayback)}var currentPlayer,comingUpNextDisplayed,currentUpNextDialog,isEnabled,currentItem,recordingButtonManager,enableProgressByTimeOfDay,supportsBrightnessChange,currentVisibleMenu,statsOverlay,osdHideTimeout,lastPointerMoveData,self=this,currentPlayerSupportedCommands=[],currentRuntimeTicks=0,lastUpdateTime=0,programStartDateMs=0,programEndDateMs=0,playbackStartTimeTicks=0,nowPlayingVolumeSlider=view.querySelector(".osdVolumeSlider"),nowPlayingVolumeSliderContainer=view.querySelector(".osdVolumeSliderContainer"),nowPlayingPositionSlider=view.querySelector(".osdPositionSlider"),nowPlayingPositionText=view.querySelector(".osdPositionText"),nowPlayingDurationText=view.querySelector(".osdDurationText"),startTimeText=view.querySelector(".startTimeText"),endTimeText=view.querySelector(".endTimeText"),endsAtText=view.querySelector(".endsAtText"),btnRewind=view.querySelector(".btnRewind"),btnFastForward=view.querySelector(".btnFastForward"),transitionEndEventName=dom.whichTransitionEvent(),headerElement=document.querySelector(".skinHeader"),osdBottomElement=document.querySelector(".videoOsdBottom-maincontrols");view.addEventListener("viewbeforeshow",function(e){headerElement.classList.add("osdHeader"),Emby.Page.setTransparency("full")}),view.addEventListener("viewshow",function(e){events.on(playbackManager,"playerchange",onPlayerChange),bindToPlayer(playbackManager.getCurrentPlayer()),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.add("autoScrollY"),showOsd(),inputManager.on(window,onInputCommand),dom.addEventListener(window,"keydown",onWindowKeyDown,{passive:!0})}),view.addEventListener("viewbeforehide",function(){statsOverlay&&statsOverlay.enabled(!1),dom.removeEventListener(window,"keydown",onWindowKeyDown,{passive:!0}),stopOsdHideTimer(),headerElement.classList.remove("osdHeader"),headerElement.classList.remove("osdHeader-hidden"),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.remove("autoScrollY"),inputManager.off(window,onInputCommand),events.off(playbackManager,"playerchange",onPlayerChange),releaseCurrentPlayer()}),view.querySelector(".btnFullscreen").addEventListener("click",function(){playbackManager.toggleFullscreen(currentPlayer)}),view.querySelector(".btnPip").addEventListener("click",function(){playbackManager.togglePictureInPicture(currentPlayer)}),view.querySelector(".btnVideoOsdSettings").addEventListener("click",onSettingsButtonClick),view.addEventListener("viewhide",function(){headerElement.classList.remove("hide")}),view.addEventListener("viewdestroy",function(){self.touchHelper&&(self.touchHelper.destroy(),self.touchHelper=null),recordingButtonManager&&(recordingButtonManager.destroy(),recordingButtonManager=null),destroyStats()});var lastPointerDown=0;dom.addEventListener(view,window.PointerEvent?"pointerdown":"click",function(e){if(dom.parentWithClass(e.target,["videoOsdBottom","upNextContainer"]))return void showOsd();var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse"),now=(new Date).getTime();switch(pointerType){case"touch":now-lastPointerDown>300&&(lastPointerDown=now,toggleOsd());break;case"mouse":e.button||(playbackManager.playPause(currentPlayer),showOsd());break;default:playbackManager.playPause(currentPlayer),showOsd()}},{passive:!0}),browser.touch&&dom.addEventListener(view,"dblclick",onDoubleClick,{}),view.querySelector(".buttonMute").addEventListener("click",function(){playbackManager.toggleMute(currentPlayer)}),nowPlayingVolumeSlider.addEventListener("change",function(){playbackManager.setVolume(this.value,currentPlayer)}),nowPlayingPositionSlider.addEventListener("change",function(){var player=currentPlayer;if(player){var newPercent=parseFloat(this.value);if(enableProgressByTimeOfDay){var seekAirTimeTicks=newPercent/100*(programEndDateMs-programStartDateMs)*1e4;seekAirTimeTicks+=1e4*programStartDateMs,seekAirTimeTicks-=playbackStartTimeTicks,playbackManager.seek(seekAirTimeTicks,player)}else playbackManager.seekPercent(newPercent,player)}}),nowPlayingPositionSlider.getBubbleHtml=function(value){if(showOsd(),enableProgressByTimeOfDay){if(programStartDateMs&&programEndDateMs){var ms=programEndDateMs-programStartDateMs;ms/=100,ms*=value,ms+=programStartDateMs;return'

'+getDisplayTimeWithoutAmPm(new Date(parseInt(ms)),!0)+"

"}return"--:--"}if(!currentRuntimeTicks)return"--:--";var ticks=currentRuntimeTicks;ticks/=100,ticks*=value;var item=currentItem;if(item&&item.Chapters&&item.Chapters.length&&item.Chapters[0].ImageTag){var html=getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId),item,item.Chapters,ticks);if(html)return html}return'

'+datetime.getDisplayRunningTime(ticks)+"

"},view.querySelector(".btnPreviousTrack").addEventListener("click",function(){playbackManager.previousTrack(currentPlayer)}),view.querySelector(".btnPause").addEventListener("click",function(){playbackManager.playPause(currentPlayer)}),view.querySelector(".btnNextTrack").addEventListener("click",function(){playbackManager.nextTrack(currentPlayer)}),btnRewind.addEventListener("click",function(){playbackManager.rewind(currentPlayer)}),btnFastForward.addEventListener("click",function(){playbackManager.fastForward(currentPlayer)}),view.querySelector(".btnAudio").addEventListener("click",showAudioTrackSelection),view.querySelector(".btnSubtitles").addEventListener("click",showSubtitleTrackSelection),browser.touch&&function(){require(["touchHelper"],function(TouchHelper){self.touchHelper=new TouchHelper(view,{swipeYThreshold:30,triggerOnMove:!0,preventDefaultOnMove:!0,ignoreTagNames:["BUTTON","INPUT","TEXTAREA"]}),events.on(self.touchHelper,"swipeup",onVerticalSwipe),events.on(self.touchHelper,"swipedown",onVerticalSwipe)})}()}}); \ No newline at end of file +define(["playbackManager","dom","inputmanager","datetime","itemHelper","mediaInfo","focusManager","imageLoader","scrollHelper","events","connectionManager","browser","globalize","apphost","layoutManager","userSettings","scrollStyles","emby-slider","paper-icon-button-light","css!css/videoosd"],function(playbackManager,dom,inputManager,datetime,itemHelper,mediaInfo,focusManager,imageLoader,scrollHelper,events,connectionManager,browser,globalize,appHost,layoutManager,userSettings){"use strict";function seriesImageUrl(item,options){if("Episode"!==item.Type)return null;if(options=options||{},options.type=options.type||"Primary","Primary"===options.type&&item.SeriesPrimaryImageTag)return options.tag=item.SeriesPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if("Thumb"===options.type){if(item.SeriesThumbImageTag)return options.tag=item.SeriesThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId,options);if(item.ParentThumbImageTag)return options.tag=item.ParentThumbImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.ParentThumbItemId,options)}return null}function imageUrl(item,options){return options=options||{},options.type=options.type||"Primary",item.ImageTags&&item.ImageTags[options.type]?(options.tag=item.ImageTags[options.type],connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId||item.Id,options)):"Primary"===options.type&&item.AlbumId&&item.AlbumPrimaryImageTag?(options.tag=item.AlbumPrimaryImageTag,connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId,options)):null}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}return function(view,params){function onVerticalSwipe(e,elem,data){var player=currentPlayer;if(player){var deltaY=data.currentDeltaY,windowSize=dom.getWindowSize();if(supportsBrightnessChange&&data.clientX1?view.querySelector(".btnAudio").classList.remove("hide"):view.querySelector(".btnAudio").classList.add("hide")}function setTitle(item,parentName){var url=logoImageUrl(item,connectionManager.getApiClient(item.ServerId),{});if(url){Emby.Page.setTitle("");var pageTitle=document.querySelector(".pageTitle");pageTitle.style.backgroundImage="url('"+url+"')",pageTitle.classList.add("pageTitleWithLogo"),pageTitle.classList.remove("pageTitleWithDefaultLogo"),pageTitle.innerHTML=""}else Emby.Page.setTitle(parentName||"");var documentTitle=parentName||(item?item.Name:null);documentTitle&&(document.title=documentTitle)}function setPoster(item,secondaryItem){var osdPoster=view.querySelector(".osdPoster");if(item){var imgUrl=seriesImageUrl(item,{type:"Primary"})||seriesImageUrl(item,{type:"Thumb"})||imageUrl(item,{type:"Primary"});if(!imgUrl&&secondaryItem&&(imgUrl=seriesImageUrl(secondaryItem,{type:"Primary"})||seriesImageUrl(secondaryItem,{type:"Thumb"})||imageUrl(secondaryItem,{type:"Primary"})),imgUrl)return void(osdPoster.innerHTML='')}osdPoster.innerHTML=""}function showOsd(){slideDownToShow(headerElement),showMainOsdControls(),startOsdHideTimer()}function hideOsd(){slideUpToHide(headerElement),hideMainOsdControls()}function toggleOsd(){"osd"===currentVisibleMenu?hideOsd():currentVisibleMenu||showOsd()}function startOsdHideTimer(){stopOsdHideTimer(),osdHideTimeout=setTimeout(hideOsd,5e3)}function stopOsdHideTimer(){osdHideTimeout&&(clearTimeout(osdHideTimeout),osdHideTimeout=null)}function slideDownToShow(elem){elem.classList.remove("osdHeader-hidden")}function slideUpToHide(elem){elem.classList.add("osdHeader-hidden")}function clearHideAnimationEventListeners(elem){dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function onHideAnimationComplete(e){var elem=e.target;elem.classList.add("hide"),dom.removeEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0})}function showMainOsdControls(){if(!currentVisibleMenu){var elem=osdBottomElement;currentVisibleMenu="osd",clearHideAnimationEventListeners(elem),elem.classList.remove("hide"),elem.offsetWidth,elem.classList.remove("videoOsdBottom-hidden"),layoutManager.mobile||setTimeout(function(){focusManager.focus(elem.querySelector(".btnPause"))},50)}}function hideMainOsdControls(){if("osd"===currentVisibleMenu){var elem=osdBottomElement;clearHideAnimationEventListeners(elem),elem.offsetWidth,elem.classList.add("videoOsdBottom-hidden"),dom.addEventListener(elem,transitionEndEventName,onHideAnimationComplete,{once:!0}),currentVisibleMenu=null}}function onPointerMove(e){if("mouse"===(e.pointerType||(layoutManager.mobile?"touch":"mouse"))){var eventX=e.screenX||0,eventY=e.screenY||0,obj=lastPointerMoveData;if(!obj)return void(lastPointerMoveData={x:eventX,y:eventY});if(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10)return;obj.x=eventX,obj.y=eventY,showOsd()}}function onInputCommand(e){var player=currentPlayer;switch(e.detail.command){case"left":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.rewind(player));break;case"right":"osd"===currentVisibleMenu?showOsd():currentVisibleMenu||(e.preventDefault(),playbackManager.fastForward(player));break;case"pageup":playbackManager.nextChapter(player);break;case"pagedown":playbackManager.previousChapter(player);break;case"up":case"down":case"select":case"menu":case"info":case"play":case"playpause":case"pause":case"fastforward":case"rewind":case"next":case"previous":showOsd();break;case"record":onRecordingCommand(),showOsd();break;case"togglestats":toggleStats()}}function onRecordingCommand(){var btnRecord=view.querySelector(".btnRecord");btnRecord.classList.contains("hide")||btnRecord.click()}function updateFullscreenIcon(){playbackManager.isFullscreen(currentPlayer)?(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("ExitFullscreen")),view.querySelector(".btnFullscreen i").innerHTML=""):(view.querySelector(".btnFullscreen").setAttribute("title",globalize.translate("Fullscreen")),view.querySelector(".btnFullscreen i").innerHTML="")}function onPlayerChange(){bindToPlayer(playbackManager.getCurrentPlayer())}function onStateChanged(event,state){var player=this;state.NowPlayingItem&&(isEnabled=!0,updatePlayerStateInternal(event,player,state),updatePlaylist(player),enableStopOnBack(!0))}function onPlayPauseStateChanged(e){if(isEnabled){updatePlayPauseState(this.paused())}}function onVolumeChanged(e){if(isEnabled){var player=this;updatePlayerVolumeState(player,player.isMuted(),player.getVolume())}}function onPlaybackStart(e,state){console.log("nowplaying event: "+e.type);var player=this;onStateChanged.call(player,e,state),resetUpNextDialog()}function resetUpNextDialog(){comingUpNextDisplayed=!1;var dlg=currentUpNextDialog;dlg&&(dlg.destroy(),currentUpNextDialog=null)}function onPlaybackStopped(e,state){currentRuntimeTicks=null,resetUpNextDialog(),console.log("nowplaying event: "+e.type),"Video"!==state.NextMediaType&&(view.removeEventListener("viewbeforehide",onViewHideStopPlayback),Emby.Page.back())}function onMediaStreamsChanged(e){var player=this,state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state)}function bindToPlayer(player){if(player!==currentPlayer&&(releaseCurrentPlayer(),currentPlayer=player,player)){var state=playbackManager.getPlayerState(player);onStateChanged.call(player,{type:"init"},state),events.on(player,"playbackstart",onPlaybackStart),events.on(player,"playbackstop",onPlaybackStopped),events.on(player,"volumechange",onVolumeChanged),events.on(player,"pause",onPlayPauseStateChanged),events.on(player,"unpause",onPlayPauseStateChanged),events.on(player,"timeupdate",onTimeUpdate),events.on(player,"fullscreenchange",updateFullscreenIcon),events.on(player,"mediastreamschange",onMediaStreamsChanged),resetUpNextDialog()}}function releaseCurrentPlayer(){destroyStats(),resetUpNextDialog();var player=currentPlayer;player&&(events.off(player,"playbackstart",onPlaybackStart),events.off(player,"playbackstop",onPlaybackStopped),events.off(player,"volumechange",onVolumeChanged),events.off(player,"pause",onPlayPauseStateChanged),events.off(player,"unpause",onPlayPauseStateChanged),events.off(player,"timeupdate",onTimeUpdate),events.off(player,"fullscreenchange",updateFullscreenIcon),events.off(player,"mediastreamschange",onMediaStreamsChanged),currentPlayer=null)}function onTimeUpdate(e){if(isEnabled){var now=(new Date).getTime();if(!(now-lastUpdateTime<700)){lastUpdateTime=now;var player=this;currentRuntimeTicks=playbackManager.duration(player);var currentTime=playbackManager.currentTime(player);updateTimeDisplay(currentTime,currentRuntimeTicks,playbackManager.playbackStartTime(player),playbackManager.getBufferedRanges(player));var item=currentItem;refreshProgramInfoIfNeeded(player,item),showComingUpNextIfNeeded(player,item,currentTime,currentRuntimeTicks)}}}function showComingUpNextIfNeeded(player,currentItem,currentTimeTicks,runtimeTicks){if(runtimeTicks&¤tTimeTicks&&!comingUpNextDisplayed&&!currentVisibleMenu&&"Episode"===currentItem.Type&&userSettings.enableNextVideoInfoOverlay()){var showAtSecondsLeft=runtimeTicks>=3e10?40:runtimeTicks>=24e9?35:30,showAtTicks=runtimeTicks-1e3*showAtSecondsLeft*1e4,timeRemainingTicks=runtimeTicks-currentTimeTicks;currentTimeTicks>=showAtTicks&&runtimeTicks>=6e9&&timeRemainingTicks>=2e8&&showComingUpNext(player)}}function onUpNextHidden(){"upnext"===currentVisibleMenu&&(currentVisibleMenu=null)}function showComingUpNext(player){require(["upNextDialog"],function(UpNextDialog){currentVisibleMenu||currentUpNextDialog||(currentVisibleMenu="upnext",comingUpNextDisplayed=!0,playbackManager.nextItem(player).then(function(nextItem){currentUpNextDialog=new UpNextDialog({parent:view.querySelector(".upNextContainer"),player:player,nextItem:nextItem}),events.on(currentUpNextDialog,"hide",onUpNextHidden)},onUpNextHidden))})}function refreshProgramInfoIfNeeded(player,item){if("TvChannel"===item.Type){var program=item.CurrentProgram;if(program&&program.EndDate)try{var endDate=datetime.parseISO8601Date(program.EndDate);if((new Date).getTime()>=endDate.getTime()){console.log("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)}}}function updatePlayPauseState(isPaused){view.querySelector(".btnPause i").innerHTML=isPaused?"":""}function updatePlayerStateInternal(event,player,state){var playState=state.PlayState||{};updatePlayPauseState(playState.IsPaused);var supportedCommands=playbackManager.getSupportedCommands(player);currentPlayerSupportedCommands=supportedCommands,supportsBrightnessChange=-1!==supportedCommands.indexOf("SetBrightness"),updatePlayerVolumeState(player,playState.IsMuted,playState.VolumeLevel),nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging&&(nowPlayingPositionSlider.disabled=!playState.CanSeek),btnFastForward.disabled=!playState.CanSeek,btnRewind.disabled=!playState.CanSeek;var nowPlayingItem=state.NowPlayingItem||{};playbackStartTimeTicks=playState.PlaybackStartTimeTicks,updateTimeDisplay(playState.PositionTicks,nowPlayingItem.RunTimeTicks,playState.PlaybackStartTimeTicks,playState.BufferedRanges||[]),updateNowPlayingInfo(player,state),state.MediaSource&&state.MediaSource.SupportsTranscoding&&-1!==supportedCommands.indexOf("SetMaxStreamingBitrate")?view.querySelector(".btnVideoOsdSettings").classList.remove("hide"):view.querySelector(".btnVideoOsdSettings").classList.add("hide");var isProgressClear=state.MediaSource&&null==state.MediaSource.RunTimeTicks;nowPlayingPositionSlider.setIsClear(isProgressClear),-1===supportedCommands.indexOf("ToggleFullscreen")||player.isLocalPlayer&&layoutManager.tv&&playbackManager.isFullscreen(player)?view.querySelector(".btnFullscreen").classList.add("hide"):view.querySelector(".btnFullscreen").classList.remove("hide"),-1===supportedCommands.indexOf("PictureInPicture")?view.querySelector(".btnPip").classList.add("hide"):view.querySelector(".btnPip").classList.remove("hide"),updateFullscreenIcon()}function getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs){return(currentTimeMs-programStartDateMs)/programRuntimeMs*100}function updateTimeDisplay(positionTicks,runtimeTicks,playbackStartTimeTicks,bufferedRanges){if(enableProgressByTimeOfDay){if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging)if(programStartDateMs&&programEndDateMs){var currentTimeMs=(playbackStartTimeTicks+(positionTicks||0))/1e4,programRuntimeMs=programEndDateMs-programStartDateMs;if(nowPlayingPositionSlider.value=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,currentTimeMs),bufferedRanges.length){var rangeStart=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].start||0))/1e4),rangeEnd=getDisplayPercentByTimeOfDay(programStartDateMs,programRuntimeMs,(playbackStartTimeTicks+(bufferedRanges[0].end||0))/1e4);nowPlayingPositionSlider.setBufferedRanges([{start:rangeStart,end:rangeEnd}])}else nowPlayingPositionSlider.setBufferedRanges([])}else nowPlayingPositionSlider.value=0,nowPlayingPositionSlider.setBufferedRanges([]);nowPlayingPositionText.innerHTML="",nowPlayingDurationText.innerHTML=""}else{if(nowPlayingPositionSlider&&!nowPlayingPositionSlider.dragging){if(runtimeTicks){var pct=positionTicks/runtimeTicks;pct*=100,nowPlayingPositionSlider.value=pct}else nowPlayingPositionSlider.value=0;runtimeTicks&&null!=positionTicks&¤tRuntimeTicks&&!enableProgressByTimeOfDay&¤tItem.RunTimeTicks&&"Recording"!==currentItem.Type?endsAtText.innerHTML="  -  "+mediaInfo.getEndsAtFromPosition(runtimeTicks,positionTicks,!0):endsAtText.innerHTML=""}nowPlayingPositionSlider&&nowPlayingPositionSlider.setBufferedRanges(bufferedRanges,runtimeTicks,positionTicks),updateTimeText(nowPlayingPositionText,positionTicks),updateTimeText(nowPlayingDurationText,runtimeTicks,!0)}}function updatePlayerVolumeState(player,isMuted,volumeLevel){var supportedCommands=currentPlayerSupportedCommands,showMuteButton=!0,showVolumeSlider=!0;-1===supportedCommands.indexOf("Mute")&&(showMuteButton=!1),-1===supportedCommands.indexOf("SetVolume")&&(showVolumeSlider=!1),player.isLocalPlayer&&appHost.supports("physicalvolumecontrol")&&(showMuteButton=!1,showVolumeSlider=!1),isMuted?(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Unmute")),view.querySelector(".buttonMute i").innerHTML=""):(view.querySelector(".buttonMute").setAttribute("title",globalize.translate("Mute")),view.querySelector(".buttonMute i").innerHTML=""),showMuteButton?view.querySelector(".buttonMute").classList.remove("hide"):view.querySelector(".buttonMute").classList.add("hide"),nowPlayingVolumeSlider&&(showVolumeSlider?nowPlayingVolumeSliderContainer.classList.remove("hide"):nowPlayingVolumeSliderContainer.classList.add("hide"),nowPlayingVolumeSlider.dragging||(nowPlayingVolumeSlider.value=volumeLevel||0))}function updatePlaylist(player){var btnPreviousTrack=view.querySelector(".btnPreviousTrack"),btnNextTrack=view.querySelector(".btnNextTrack");btnPreviousTrack.classList.remove("hide"),btnNextTrack.classList.remove("hide"),btnNextTrack.disabled=!1,btnPreviousTrack.disabled=!1}function updateTimeText(elem,ticks,divider){if(null==ticks)return void(elem.innerHTML="");var html=datetime.getDisplayRunningTime(ticks);divider&&(html=" / "+html),elem.innerHTML=html}function onSettingsButtonClick(e){var btn=this;require(["playerSettingsMenu"],function(playerSettingsMenu){var player=currentPlayer;player&&playerSettingsMenu.show({mediaType:"Video",player:player,positionTo:btn,stats:!0,onOption:onSettingsOption})})}function onSettingsOption(selectedOption){"stats"===selectedOption&&toggleStats()}function toggleStats(){require(["playerStats"],function(PlayerStats){var player=currentPlayer;player&&(statsOverlay?statsOverlay.toggle():statsOverlay=new PlayerStats({player:player}))})}function destroyStats(){statsOverlay&&(statsOverlay.destroy(),statsOverlay=null)}function showAudioTrackSelection(){var player=currentPlayer,audioTracks=playbackManager.audioTracks(player),currentIndex=playbackManager.getAudioStreamIndex(player),menuItems=audioTracks.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,title:globalize.translate("Audio"),positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setAudioStreamIndex(index,player)})})}function showSubtitleTrackSelection(){var player=currentPlayer,streams=playbackManager.subtitleTracks(player),currentIndex=playbackManager.getSubtitleStreamIndex(player);null==currentIndex&&(currentIndex=-1),streams.unshift({Index:-1,DisplayTitle:globalize.translate("Off")});var menuItems=streams.map(function(stream){var opt={name:stream.DisplayTitle,id:stream.Index};return stream.Index===currentIndex&&(opt.selected=!0),opt}),positionTo=this;require(["actionsheet"],function(actionsheet){actionsheet.show({title:globalize.translate("Subtitles"),items:menuItems,positionTo:positionTo}).then(function(id){var index=parseInt(id);index!==currentIndex&&playbackManager.setSubtitleStreamIndex(index,player)})})}function onWindowKeyDown(e){if(!currentVisibleMenu&&(32===e.keyCode||13===e.keyCode))return playbackManager.playPause(currentPlayer),void showOsd();switch(e.key){case"f":e.ctrlKey||playbackManager.toggleFullscreen(currentPlayer);break;case"m":playbackManager.toggleMute(currentPlayer);break;case"ArrowLeft":case"Left":case"NavigationLeft":case"GamepadDPadLeft":case"GamepadLeftThumbstickLeft":e.shiftKey&&playbackManager.rewind(currentPlayer);break;case"ArrowRight":case"Right":case"NavigationRight":case"GamepadDPadRight":case"GamepadLeftThumbstickRight":e.shiftKey&&playbackManager.fastForward(currentPlayer)}}function getImgUrl(item,chapter,index,maxWidth,apiClient){return chapter.ImageTag?apiClient.getScaledImageUrl(item.Id,{maxWidth:maxWidth,tag:chapter.ImageTag,type:"Chapter",index:index}):null}function getChapterBubbleHtml(apiClient,item,chapters,positionTicks){for(var chapter,index=-1,i=0,length=chapters.length;i=currentChapter.StartPositionTicks&&(chapter=currentChapter,index=i)}if(!chapter)return null;var src=getImgUrl(item,chapter,index,400,apiClient);if(src){var html='
';return html+='',html+='
',html+='
',html+=chapter.Name,html+="
",html+='

',html+=datetime.getDisplayRunningTime(positionTicks),html+="

",html+="
",html+="
"}return null}function onViewHideStopPlayback(){if(playbackManager.isPlayingVideo()){var player=currentPlayer;view.removeEventListener("viewbeforehide",onViewHideStopPlayback),releaseCurrentPlayer(),playbackManager.stop(player)}}function enableStopOnBack(enabled){view.removeEventListener("viewbeforehide",onViewHideStopPlayback),enabled&&playbackManager.isPlayingVideo(currentPlayer)&&view.addEventListener("viewbeforehide",onViewHideStopPlayback)}var currentPlayer,comingUpNextDisplayed,currentUpNextDialog,isEnabled,currentItem,recordingButtonManager,enableProgressByTimeOfDay,supportsBrightnessChange,currentVisibleMenu,statsOverlay,osdHideTimeout,lastPointerMoveData,self=this,currentPlayerSupportedCommands=[],currentRuntimeTicks=0,lastUpdateTime=0,programStartDateMs=0,programEndDateMs=0,playbackStartTimeTicks=0,nowPlayingVolumeSlider=view.querySelector(".osdVolumeSlider"),nowPlayingVolumeSliderContainer=view.querySelector(".osdVolumeSliderContainer"),nowPlayingPositionSlider=view.querySelector(".osdPositionSlider"),nowPlayingPositionText=view.querySelector(".osdPositionText"),nowPlayingDurationText=view.querySelector(".osdDurationText"),startTimeText=view.querySelector(".startTimeText"),endTimeText=view.querySelector(".endTimeText"),endsAtText=view.querySelector(".endsAtText"),btnRewind=view.querySelector(".btnRewind"),btnFastForward=view.querySelector(".btnFastForward"),transitionEndEventName=dom.whichTransitionEvent(),headerElement=document.querySelector(".skinHeader"),osdBottomElement=document.querySelector(".videoOsdBottom-maincontrols");view.addEventListener("viewbeforeshow",function(e){headerElement.classList.add("osdHeader"),Emby.Page.setTransparency("full")}),view.addEventListener("viewshow",function(e){events.on(playbackManager,"playerchange",onPlayerChange),bindToPlayer(playbackManager.getCurrentPlayer()),dom.addEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.add("autoScrollY"),showOsd(),inputManager.on(window,onInputCommand),dom.addEventListener(window,"keydown",onWindowKeyDown,{passive:!0})}),view.addEventListener("viewbeforehide",function(){statsOverlay&&statsOverlay.enabled(!1),dom.removeEventListener(window,"keydown",onWindowKeyDown,{passive:!0}),stopOsdHideTimer(),headerElement.classList.remove("osdHeader"),headerElement.classList.remove("osdHeader-hidden"),dom.removeEventListener(document,window.PointerEvent?"pointermove":"mousemove",onPointerMove,{passive:!0}),document.body.classList.remove("autoScrollY"),inputManager.off(window,onInputCommand),events.off(playbackManager,"playerchange",onPlayerChange),releaseCurrentPlayer()}),view.querySelector(".btnFullscreen").addEventListener("click",function(){playbackManager.toggleFullscreen(currentPlayer)}),view.querySelector(".btnPip").addEventListener("click",function(){playbackManager.togglePictureInPicture(currentPlayer)}),view.querySelector(".btnVideoOsdSettings").addEventListener("click",onSettingsButtonClick),view.addEventListener("viewhide",function(){headerElement.classList.remove("hide")}),view.addEventListener("viewdestroy",function(){self.touchHelper&&(self.touchHelper.destroy(),self.touchHelper=null),recordingButtonManager&&(recordingButtonManager.destroy(),recordingButtonManager=null),destroyStats()});var lastPointerDown=0;dom.addEventListener(view,window.PointerEvent?"pointerdown":"click",function(e){if(dom.parentWithClass(e.target,["videoOsdBottom","upNextContainer"]))return void showOsd();var pointerType=e.pointerType||(layoutManager.mobile?"touch":"mouse"),now=(new Date).getTime();switch(pointerType){case"touch":now-lastPointerDown>300&&(lastPointerDown=now,toggleOsd());break;case"mouse":e.button||(playbackManager.playPause(currentPlayer),showOsd());break;default:playbackManager.playPause(currentPlayer),showOsd()}},{passive:!0}),browser.touch&&dom.addEventListener(view,"dblclick",onDoubleClick,{}),view.querySelector(".buttonMute").addEventListener("click",function(){playbackManager.toggleMute(currentPlayer)}),nowPlayingVolumeSlider.addEventListener("change",function(){playbackManager.setVolume(this.value,currentPlayer)}),nowPlayingPositionSlider.addEventListener("change",function(){var player=currentPlayer;if(player){var newPercent=parseFloat(this.value);if(enableProgressByTimeOfDay){var seekAirTimeTicks=newPercent/100*(programEndDateMs-programStartDateMs)*1e4;seekAirTimeTicks+=1e4*programStartDateMs,seekAirTimeTicks-=playbackStartTimeTicks,playbackManager.seek(seekAirTimeTicks,player)}else playbackManager.seekPercent(newPercent,player)}}),nowPlayingPositionSlider.getBubbleHtml=function(value){if(showOsd(),enableProgressByTimeOfDay){if(programStartDateMs&&programEndDateMs){var ms=programEndDateMs-programStartDateMs;ms/=100,ms*=value,ms+=programStartDateMs;return'

'+getDisplayTimeWithoutAmPm(new Date(parseInt(ms)),!0)+"

"}return"--:--"}if(!currentRuntimeTicks)return"--:--";var ticks=currentRuntimeTicks;ticks/=100,ticks*=value;var item=currentItem;if(item&&item.Chapters&&item.Chapters.length&&item.Chapters[0].ImageTag){var html=getChapterBubbleHtml(connectionManager.getApiClient(item.ServerId),item,item.Chapters,ticks);if(html)return html}return'

'+datetime.getDisplayRunningTime(ticks)+"

"},view.querySelector(".btnPreviousTrack").addEventListener("click",function(){playbackManager.previousTrack(currentPlayer)}),view.querySelector(".btnPause").addEventListener("click",function(){playbackManager.playPause(currentPlayer)}),view.querySelector(".btnNextTrack").addEventListener("click",function(){playbackManager.nextTrack(currentPlayer)}),btnRewind.addEventListener("click",function(){playbackManager.rewind(currentPlayer)}),btnFastForward.addEventListener("click",function(){playbackManager.fastForward(currentPlayer)}),view.querySelector(".btnAudio").addEventListener("click",showAudioTrackSelection),view.querySelector(".btnSubtitles").addEventListener("click",showSubtitleTrackSelection),browser.touch&&function(){require(["touchHelper"],function(TouchHelper){self.touchHelper=new TouchHelper(view,{swipeYThreshold:30,triggerOnMove:!0,preventDefaultOnMove:!0,ignoreTagNames:["BUTTON","INPUT","TEXTAREA"]}),events.on(self.touchHelper,"swipeup",onVerticalSwipe),events.on(self.touchHelper,"swipedown",onVerticalSwipe)})}()}}); \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ar.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ar.json index b54ff29de5..4269cef034 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ar.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ar.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u0627\u0644\u0633\u0627\u0628\u0642", "LabelFinish": "\u0627\u0646\u0647\u0627\u0621", "LabelNext": "\u0627\u0644\u062a\u0627\u0644\u064a", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/be-BY.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/be-BY.json index 78e201a755..122ea25ab6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/be-BY.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/be-BY.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u044f\u0435", "LabelFinish": "\u0413\u0430\u0442\u043e\u0432\u0430", "LabelNext": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430\u0435", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/bg-BG.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/bg-BG.json index df28a99903..41e0a07a50 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/bg-BG.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/bg-BG.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", "LabelNext": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ca.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ca.json index 93c7aa5225..275d04767e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ca.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ca.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Finalitzar", "LabelNext": "Seg\u00fcent", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/cs.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/cs.json index db77a022e5..e26ec95b91 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/cs.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/cs.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "P\u0159edchoz\u00ed", "LabelFinish": "Dokon\u010dit", "LabelNext": "Dal\u0161\u00ed", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/da.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/da.json index ccd1583da2..4dc6e18188 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/da.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/da.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Forrige", "LabelFinish": "Afslut", "LabelNext": "N\u00e6ste", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/de.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/de.json index bcdb802f41..51b2a59b2b 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/de.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/de.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Das speichern der Untertitel neben den Video-Dateien macht es deutlich leichter diese zu managen.", "SubtitleDownloadInstructions": "Zur Verwaltung von Untertiteldownloads, klicke auf eine Bibliothek im Emby-Bibliotheken Setup und bearbeite die Download Einstellungen.", "OpenSubtitleInstructions": "Du musst ein Open-Subtitles Konto auf der Open Subtiles Einstellungsseite im Emby Server Dashboard konfigurieren.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Vorheriges", "LabelFinish": "Fertig", "LabelNext": "N\u00e4chstes", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/el.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/el.json index 9f19c9c033..e94eb04157 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/el.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/el.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2", "LabelFinish": "\u03a4\u03ad\u03bb\u03bf\u03c2", "LabelNext": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/en-GB.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/en-GB.json index ae41e09ae9..c055e19868 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/en-GB.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/en-GB.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Previous", "LabelFinish": "Finish", "LabelNext": "Next", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/en-US.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/en-US.json index d3903d4296..ddbbb96ad3 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/en-US.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/en-US.json @@ -25,8 +25,10 @@ "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", "DeleteMedia": "Delete media", - "HeaderAddUserManually": "Add User Manually", - "HeaderInviteByEmail": "Invite By Email", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", "AllowRemoteAccess": "Allow remote connections to this Emby Server.", "AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.", "HowWouldYouLikeToAddUser": "How would you like to add a user?", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/es-AR.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/es-AR.json index ca75b74571..f0ab1218dc 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/es-AR.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/es-AR.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", "LabelNext": "Siguiente", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/es-MX.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/es-MX.json index b600c5d505..879b0c8961 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/es-MX.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/es-MX.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Almacenar subtitulos junto al archivo de video permitir\u00e1 administrarlos con mas facilidad.", "SubtitleDownloadInstructions": "Para administrar la descarga de subtitulos, de clic en una biblioteca en el men\u00fa de configuraciones de Biblioteca de Emby, y edite las configuraciones de descarga de subtitulos.", "OpenSubtitleInstructions": "Necesita configurar la informaci\u00f3n de cuenta de Open Subtitles en la pantalla de configuraci\u00f3n de Open Subtitles en el Panel de Control del Servidor.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", "LabelNext": "Siguiente", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/es.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/es.json index 264e988f8f..f094da830e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/es.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/es.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", "LabelNext": "Siguiente", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/fa.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/fa.json index 8f1b9a742e..e12b49934c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/fa.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/fa.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u0642\u0628\u0644\u06cc", "LabelFinish": "\u067e\u0627\u06cc\u0627\u0646", "LabelNext": "\u0628\u0639\u062f\u06cc", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/fi.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/fi.json index 84f8620cb0..e96b90845d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/fi.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/fi.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Edellinen", "LabelFinish": "Valmis", "LabelNext": "Seuraava", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/fr-CA.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/fr-CA.json index 9d188b21e2..1443a61c3e 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/fr-CA.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/fr-CA.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Pr\u00e9c\u00e9dent", "LabelFinish": "Terminer", "LabelNext": "Suivant", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/fr.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/fr.json index 812415cd91..1afbcd4156 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/fr.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/fr.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Conserver les sous-titres avec les fichiers vid\u00e9o permettra de les g\u00e9rer plus facilement.", "SubtitleDownloadInstructions": "Pour g\u00e9rer le t\u00e9l\u00e9chargement des sous-titres, cliquez sur une biblioth\u00e8que dans la configuration des biblioth\u00e8ques Emby et modifiez les param\u00e8tres de t\u00e9l\u00e9chargement des sous-titres.", "OpenSubtitleInstructions": "Vous devez configurer les informations de compte Open Subtitles sur l'\u00e9cran de configuration Open Subtitles du tableau de bord du serveur Emby.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Pr\u00e9c\u00e9dent", "LabelFinish": "Terminer", "LabelNext": "Suivant", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/gsw.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/gsw.json index 07d7ca41fe..a3ba05532c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/gsw.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/gsw.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Vorher", "LabelFinish": "Beende", "LabelNext": "N\u00f6chst", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/he.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/he.json index f1075e7631..7c94ecf405 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/he.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/he.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", "LabelNext": "\u05d4\u05d1\u05d0", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/hi-IN.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/hi-IN.json index 1378dff0ab..1f6243355c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/hi-IN.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/hi-IN.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u092a\u093f\u091b\u0932\u093e", "LabelFinish": "\u0938\u092e\u093e\u092a\u094d\u0924", "LabelNext": "\u0905\u0917\u0932\u093e", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/hr.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/hr.json index f20db2be45..f2649761d0 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/hr.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/hr.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Prethodni", "LabelFinish": "Kraj", "LabelNext": "Sljede\u0107i", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/hu.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/hu.json index 1647295044..3737d705ac 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/hu.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/hu.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "El\u0151z\u0151", "LabelFinish": "Befejez", "LabelNext": "K\u00f6vetkez\u0151", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/id.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/id.json index e7e38645f5..f708fb587c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/id.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/id.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Sebelumnya", "LabelFinish": "Selesai", "LabelNext": "Berikutnya", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/it.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/it.json index 2fdfa0dad6..4c67ead53d 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/it.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/it.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Precedente", "LabelFinish": "Finito", "LabelNext": "Prossimo", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/kk.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/kk.json index 3126de35fc..ec9a138beb 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/kk.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/kk.json @@ -1,8 +1,13 @@ { "SaveSubtitlesIntoMediaFolders": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", "SaveSubtitlesIntoMediaFoldersHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u043c\u0435\u043d \u0431\u0456\u0440\u0433\u0435 \u0441\u0430\u049b\u0442\u0430\u0493\u0430\u043d\u0434\u0430 \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u0440\u0435\u0442\u0442\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456.", - "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", - "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "SubtitleDownloadInstructions": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u0443\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d, Emby \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u044b\u043c\u044b\u043d\u0434\u0430\u0493\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u043d\u04b1\u049b\u044b\u043f, \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456\u043d \u04e9\u04a3\u0434\u0435\u04a3\u0456\u0437.", + "OpenSubtitleInstructions": "Open Subtitles \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456 \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0456\u043d Emby Server \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0434\u0430\u0493\u044b Open Subtitles \u044d\u043a\u0440\u0430\u043d\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u0443 \u049b\u0430\u0436\u0435\u0442.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ko.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ko.json index f58a7ece53..5f3a045afc 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ko.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ko.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\uc774\uc804", "LabelFinish": "\ub05d\ub0b4\uae30", "LabelNext": "\ub2e4\uc74c", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/lt-LT.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/lt-LT.json index a328841733..34bfd55b36 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/lt-LT.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/lt-LT.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Ankstesnis", "LabelFinish": "Baigti", "LabelNext": "Kitas", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ms.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ms.json index 0d6f6a8c2c..c3bd08bdd8 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ms.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ms.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Sebelumnya", "LabelFinish": "Habis", "LabelNext": "Seterusnya", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/nb.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/nb.json index 9e5e5e1e34..d4121dc0a6 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/nb.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/nb.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Forrige", "LabelFinish": "Ferdig", "LabelNext": "Neste", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/nl.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/nl.json index 6695c9a67d..011a186f2c 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/nl.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/nl.json @@ -1,8 +1,13 @@ { - "SaveSubtitlesIntoMediaFolders": "Save subtitles into media folders", - "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", - "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", - "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "SaveSubtitlesIntoMediaFolders": "Ondertitels opslaan in media mappen", + "SaveSubtitlesIntoMediaFoldersHelp": "Het opslaan van ondertitels in dezelfde map als de video's zorgt ervoor dat deze beter te beheren zijn.", + "SubtitleDownloadInstructions": "Om het downloaden van ondertitels te beheren, navigeer naar een bibliotheek in de \"Emby bibliotheek instellingen\" en wijzig de instellingen.", + "OpenSubtitleInstructions": "Configureer de Open Subtitles accountinformatie in het desbetreffende configuratiescherm in het Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Vorige", "LabelFinish": "Voltooien", "LabelNext": "Volgende", @@ -22,23 +27,23 @@ "ButtonPrivacyPolicy": "Privacybeleid", "ButtonTermsOfService": "Service voorwaarden", "ButtonConvertMedia": "Converteer media", - "LabelAuthProvider": "Authentication provider:", - "AuthProviderHelp": "Administrators always use the default Emby provider to ensure you're never locked out.", + "LabelAuthProvider": "Authenticatieprovider:", + "AuthProviderHelp": "Administrators maken altijd gebruik van de standaard Emby provider om uitsluiten te voorkomen.", "HeaderSupporterBenefits": "Voordelen van Emby Premiere", "HeaderAddUser": "Gebruiker Toevoegen", "LabelAddConnectSupporterHelp": "Om een \u200b\u200bgebruiker toe te voegen die niet in de lijst voorkomt, moet u eerst hun account aan Emby Connect koppelen vanuit hun gebruikersprofiel pagina.", "LabelPinCode": "Pincode:", "DeleteMedia": "Verwijder media", - "AllowRemoteAccess": "Allow remote connections to this Emby Server.", - "AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.", + "AllowRemoteAccess": "Externe verbindingen met deze Emby Server toestaan.", + "AllowRemoteAccessHelp": "Indien niet aangevinkt worden alle externe verbindingen geblokkeerd.", "HeaderSync": "Sync", "HeaderPlayAll": "Speel alles af", "HeaderUpcomingNews": "Aankomende Nieuws", "ButtonOk": "Ok", "ButtonCancel": "Annuleren", "HeaderAllRecordings": "Alle Opnames", - "Advanced": "Advanced", - "Browse": "Browse", + "Advanced": "Geavanceerd", + "Browse": "Bladeren", "ButtonExit": "Afsluiten", "ButtonNew": "Nieuw", "All": "Alle", @@ -62,7 +67,7 @@ "LabelSyncTempPath": "Pad voor tijdelijke bestanden:", "LabelSyncTempPathHelp": "Geef een afwijkende sync werk directory op. Tijdens het sync proces aangemaakte geconverteerde media zal hier opgeslagen worden.", "LabelCustomCertificatePath": "Aangepast SSL-certificaatpad:", - "LabelCustomCertificatePathHelp": "Lever je eigen SSL-certificaat .pfx bestand aan.", + "LabelCustomCertificatePathHelp": "Pad naar een PKCS #12 bestand met een certificaat en priv\u00e9-sleutel om TLS ondersteuning op een aangepast domein in te schakelen.", "TitleNotifications": "Meldingen", "LabelEnterConnectUserName": "Gebruikersnaam of email:", "LabelEnterConnectUserNameHelp": "Dit is uw Emby Online Account gebruikersnaam of e-mailadres.", @@ -74,7 +79,7 @@ "FolderTypeMusicVideos": "Muziek video's", "FolderTypeGames": "Games", "FolderTypeBooks": "Boeken", - "FolderTypeTvShows": "TV", + "FolderTypeTvShows": "TV Series", "FolderTypeInherit": "overerven", "LabelContentType": "Inhoud type:", "TitleScheduledTasks": "Geplande Taken", @@ -84,8 +89,8 @@ "LabelLanguage": "Taal:", "LabelTimeLimitHours": "Tijdslimiet (uren):", "HeaderPreferredMetadataLanguage": "Gewenste metadata taal", - "LabelSaveLocalMetadata": "Sla afbeeldingen en metadata op in de mediamappen", - "LabelSaveLocalMetadataHelp": "Door afbeeldingen en metadata op te slaan in de mediamappen kunnen ze makkelijker worden gevonden en bewerkt.", + "LabelSaveLocalMetadata": "Afbeeldingen opslaan in de mediamappen", + "LabelSaveLocalMetadataHelp": "Door afbeeldingen op te slaan in de mediamappen kunnen ze makkelijker worden aangepast.", "LabelDownloadInternetMetadata": "Download afbeeldingen en metadata van het internet", "LabelDownloadInternetMetadataHelp": "Emby Server kan informatie downloaden van uw media om rijke presentaties mogelijk te maken.", "TabPassword": "Wachtwoord", @@ -263,8 +268,8 @@ "HeaderFeatureAccess": "Functie toegang", "OptionAllowMediaPlayback": "Media afspelen toestaan", "OptionAllowBrowsingLiveTv": "Live TV toegang toestaan", - "AllLibraries": "All libraries", - "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", + "AllLibraries": "Alle bibliotheken", + "HeaderAllowMediaDeletionFrom": "Wissen van media toestaan van", "AllowDeletionFromAll": "Toestaan media te verwijderen uit alle bibliotheken", "OptionAllowManageLiveTv": "Live TV opname beheer toestaan", "OptionAllowRemoteControlOthers": "Op afstand besturen van andere gebruikers toestaan", @@ -462,7 +467,7 @@ "HeaderSource": "Bron", "HeaderStatus": "Status", "HeaderDestination": "Doel", - "Subscriptions": "Subscriptions", + "Subscriptions": "Abonnementen", "HeaderProgram": "Programma", "HeaderClients": "Clients", "LabelCompleted": "Compleet", @@ -621,7 +626,7 @@ "LabelMusicStreamingTranscodingBitrateHelp": "Geef een maximum bitrate op voor het streamen van muziek", "OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Indien ingeschakeld, zullen deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", - "LabelFriendlyName": "Aangepaste naam", + "LabelFriendlyName": "Gebruiksvriendelijke naam:", "LabelManufacturer": "Fabrikant", "LabelManufacturerUrl": "Url Fabrikant", "LabelModelName": "Modelnaam", @@ -875,9 +880,9 @@ "OptionSaveMetadataAsHidden": "Metagegevens en afbeeldingen opslaan als verborgen bestanden", "LabelExtractChaptersDuringLibraryScan": "Hoofdstuk afbeeldingen uitpakken tijdens het scannen van de bibliotheek", "LabelExtractChaptersDuringLibraryScanHelp": "Wanneer ingeschakeld worden hoofdstuk afbeeldingen uitgepakt wanneer video's worden ge\u00efmporteerd tijdens het scannen van de bibliotheek. Wanneer uitgeschakeld worden de hoofdstuk afbeeldingen uitgepakt tijdens de geplande taak \"Hoofdstukken uitpakken\", waardoor de standaard bibliotheek scan sneller voltooid is.", - "LabelConnectGuestUserName": "Hun Emby gebruikersnaam of email adres:", - "LabelConnectUserName": "Emby gebruikersnaam of emailadres:", - "LabelConnectUserNameHelp": "Verbind deze locale gebruiker aan een online Emby account om eenvoudig aanmelden vanaf elke Emby app toe te staan zonder dat u het IP-adres hoeft te weten.", + "LabelConnectGuestUserName": "Hun Emby Connect e-mailadres of gebruikersnaam:", + "LabelConnectUserName": "Emby Connect gebruikersnaam of e-mailadres:", + "LabelConnectUserNameHelp": "Deze locale gebruiker aan een Emby Connect account koppelen om eenvoudig aan te kunnen melden vanaf elke Emby app zonder dat het IP-adres bekend hoeft te zijn.", "ButtonLearnMoreAboutEmbyConnect": "Leer meer over Emby Connect", "LabelExternalPlayers": "Externe spelers:", "LabelNativeExternalPlayersHelp": "Video's afspelen met behulp van externe spelers.", @@ -925,8 +930,8 @@ "TabCameraUpload": "Camera upload", "TabDevices": "Apparaten", "HeaderLibrarySettings": "Bibliotheek Instellingen", - "HeaderChapterImages": "Chapter Images", - "HeaderSubtitleDownloads": "Subtitle Downloads", + "HeaderChapterImages": "Hoofdstukafbeeldingen", + "HeaderSubtitleDownloads": "Ondertitel downloads", "HeaderCameraUploadHelp": "Emby apps kunnen automatisch foto's die genomen zijn met uw mobiele apparaten uploaden naar Emby Server", "LabelCameraUploadPath": "Camera upload pad:", "LabelCameraUploadPathHelp": "Selecteer een aangepast upload pad. Hierdoor worden alle standaardinstellingen in de camera uploaden sectie overschrijven. Wanneer leeg gelaten, wordt de standaard map gebruikt. Bij gebruik van een aangepast pad zal het ook moeten worden toegevoegd in de bibliotheek setup gebied.", @@ -1189,7 +1194,7 @@ "ButtonPlaylist": "Afspeellijst", "LabelEnabled": "Ingeschakeld", "LabelDisabled": "Uitgeschakeld", - "Disabled": "Disabled", + "Disabled": "Uitgeschakeld", "ButtonMoreInformation": "Meer informatie", "LabelNoUnreadNotifications": "Geen ongelezen meldingen.", "MessageInvalidUser": "Foutieve gebruikersnaam of wachtwoord. Probeer opnieuw.", @@ -1367,8 +1372,8 @@ "ButtonDown": "Omlaag", "LabelMetadataReaders": "Metadata lezers:", "LabelMetadataReadersHelp": "Rangschik de gewenste lokale metadata bronnen in volgorde van prioriteit. Het eerst gevonden bestand zal worden gelezen.", - "LabelSubtitleDownloaders": "Subtitle downloaders:", - "SubtitleDownloadersHelp": "Enable and rank your preferred subtitle downloaders in order of priority.", + "LabelSubtitleDownloaders": "Ondertiteldownloaders:", + "SubtitleDownloadersHelp": "Schakel de gewenste ondertiteldownloaders in en rangschik ze in volgorde van prioritieit.", "LabelMetadataDownloaders": "Metadata Downloaders:", "LabelMetadataDownloadersHelp": "Rangschik uw voorkeurs metadata downloader in volgorde van prioriteit. Lagere prioriteit downloaders zullen alleen worden gebruikt om de ontbrekende informatie in te vullen.", "LabelMetadataSavers": "Metadata Opslag:", @@ -1390,7 +1395,7 @@ "ButtonChangeContentType": "Verander content type", "HeaderMediaLocations": "Media Locaties", "LabelContentTypeValue": "Content type: {0}", - "FolderTypeUnset": "Niet ingesteld (gemengde inhoud)", + "FolderTypeUnset": "Gemengde inhoud", "BirthPlaceValue": "Geboorte plaats: {0})", "DeathDateValue": "Overleden: {0}", "BirthDateValue": "Geboren: {0}", @@ -1545,7 +1550,7 @@ "LabelQuality": "Kwaliteit", "MovieLibraryHelp": "Bekijk de {0} Emby film naamgeving gids {1}.", "TvLibraryHelp": "Bekijk de {0} Emby TV naamgeving gids {1}.", - "BookLibraryHelp": "Audio en tekst boeken worden ondersteund", + "BookLibraryHelp": "Audio- en tekstboeken worden ondersteund. Bekijk de {0}Emby Boeken naamgeving{1}.", "MessageGamePluginRequired": "Vereist installatie van de GameBrowser plugin", "MessageUnsetContentHelp": "Inhoud zal als gewone folders worden getoond. Gebruik voor het beste resultaat de Metadata Manager om de inhoud types voor subfolders in te stellen.", "LabelProfile": "profiel:", @@ -1666,7 +1671,7 @@ "LabelffmpegVersion": "FFmpeg versie:", "LabelffmpegPathHelp": "Het pad naar het ffmpeg applicatiebestand, of de folder die ffmpeg bevat.", "SetupFFmpeg": "FFmpet instellen", - "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", + "SetupFFmpegHelp": "Emby heeft mogelijk een applicatie of bibliotheek nodig om bepaalde mediatypen te converteren. Er zijn meerdere applicaties beschikbaar, maar Emby is getest om correct met ffmpeg te werken. Emby is op geen enkele manier verbonden met ffmpeg, het eigendom, de code of de distributie ervan.", "EnterFFmpegLocation": "Voer FFmpeg pad in", "DownloadFFmpeg": "Download FFmpeg", "FFmpegSuggestedDownload": "Voorgestelde download: {0}", @@ -1740,9 +1745,9 @@ "Rate": "Waardeer", "ButtonScanAllLibraries": "Scan alle bibliotheken", "ScanLibrary": "Scan bibliotheek", - "EnableStreamLooping": "Auto-loop live streams", - "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.", - "HttpsRequiresCert": "Om https te vereisen voor externe verbindingen zul je een vertrouw SSL-certificaat moeten voorzien zoals Lets Encrypt.", + "EnableStreamLooping": "Livestreams automatisch herhalen", + "EnableStreamLoopingHelp": "Schakel dit in als de livestreams slechts enkele seconden aan gegevens bevatten en continu moeten worden aangevraagd. Schakel dit niet in indien het niet nodig is.", + "HttpsRequiresCert": "Om https in te schakelen voor externe verbindingen, is een vertrouwd SSL-certificaat vereist, zoals Lets Encrypt.", "HeaderLatestDownloadedVideos": "Laatst gedownloade video's.", "ServerRestartNeededAfterPluginInstall": "Emby server zal heropgestart moeten worden na het installeren van een plugin.", "PluginInstalledMessage": "Het installeren van de plugin is gelukt. Emby Server zal heropgestart moeten worden om de wijzigingen door te voeren.", @@ -1771,21 +1776,21 @@ "EnableDebugLoggingHelp": "Debug logging mag alleen ingeschakeld worden voor het onderzoeken van problemen. De verhoogde belasting van het bestandssysteem kan voorkomen dat de server in slaapstand gaat in sommige omgevingen.", "LabelSimultaneousConnectionLimit": "Gelijktijdige streams limiet:", "SimultaneousConnectionLimitHelp": "Het maximum aantal toegestane gelijktijdige streams. Geef 0 in voor geen limiet.", - "LaunchWebAppOnStartup": "Launch the Emby web app in my web browser when Emby Server starts", - "LaunchWebAppOnStartupHelp": "This will open the web app in your default web browser when Emby Server initially starts. This will not occur when using the restart server function.", - "LabelUserAgent": "User agent:", - "UserAgentHelp": "Supply a custom user-agent http header, if necessary.", - "HeaderConfigureRemoteAccess": "Configure Remote Access", - "LearnHowToCreateSynologyShares": "Learn how to share folders in Synology.", - "LabelAllowedRemoteAddresses": "Remote IP address filter:", - "LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:", + "LaunchWebAppOnStartup": "De Emby-webapp in mijn webbrowser openen wanneer Emby Server opstart", + "LaunchWebAppOnStartupHelp": "Dit zal de webapp in uw standaard webbrowser openen wanneer Emby Server opstart. Dit zal niet gebeuren wanneer de \"server opnieuw opstarten\" functie gebruikt wordt.", + "LabelUserAgent": "User-agent:", + "UserAgentHelp": "Indien nodig een aangepaste user-agent HTTP-header opgeven", + "HeaderConfigureRemoteAccess": "Toegang op afstand configureren", + "LearnHowToCreateSynologyShares": "Leren mappen te delen in Synology.", + "LabelAllowedRemoteAddresses": "Externe IP-adressen filter:", + "LabelAllowedRemoteAddressesMode": "Externe IP-adressen filter modus:", "Whitelist": "Whitelist", "Blacklist": "Blacklist", - "AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP\/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.", - "LabelLanNetworks": "LAN networks:", - "LanNetworksHelp": "Comma separated list of IP addresses or IP\/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.", - "LabelSecureConnectionsMode": "Secure connection mode:", - "PreferredNotRequired": "Preferred, but not required", - "RequiredForAllRemoteConnections": "Required for all remote connections", - "HandledByProxy": "Handled by reverse proxy" + "AllowedRemoteAddressesHelp": "Komma-gescheiden lijst van IP-adressen of IP\/netmask adressen voor netwerken die op afstand verbinding mogen maken. Indien blanco, worden alle externe adressen toegestaan.", + "LabelLanNetworks": "LAN-netwerken:", + "LanNetworksHelp": "Komma-gescheiden lijst van IP-adressen of IP\/netmask adressen voor netwerken die als lokaal gezien worden wanneer bandbreedtebeperkingen van toepassing zijn. Indien ingesteld, worden alle overige IP-adressen gezien als externe adressen en zullen worden onderworpen aan de bandbreedte-instellingen voor externe adressen. Indien blanco, zal alleen het subnet van de server als lokaal netwerk gezien worden.", + "LabelSecureConnectionsMode": "Beveiligde verbinding modus:", + "PreferredNotRequired": "Gewenst, maar niet verplicht", + "RequiredForAllRemoteConnections": "Vereist voor alle externe verbindingen", + "HandledByProxy": "Behandeld door reverse proxy" } \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/pl.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/pl.json index af84017272..6ce5d00658 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/pl.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/pl.json @@ -2,7 +2,12 @@ "SaveSubtitlesIntoMediaFolders": "Zapisuj napisy w folderach medi\u00f3w", "SaveSubtitlesIntoMediaFoldersHelp": "Umo\u017cliwia \u0142atwiejsze zarz\u0105dzanie napisami poprzez sk\u0142adowanie ich razem z plikami wideo.", "SubtitleDownloadInstructions": "W celu zarz\u0105dzania pobieraniem napis\u00f3w, nale\u017cy w konfiguracji biblioteki zmodyfikowa\u0107 ustawienia pobierania napis\u00f3w.", - "OpenSubtitleInstructions": "Wymaga to konfiguracji informacji o koncie Open Subtitles na stronie konfiguracji Open Subtitles w kokpicie serwera Emby.", + "OpenSubtitleInstructions": "Wymaga konfiguracji informacji o koncie Open Subtitles, na stronie konfiguracji Open Subtitles, w kokpicie serwera Emby.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Wstecz", "LabelFinish": "Zako\u0144cz", "LabelNext": "Dalej", @@ -29,11 +34,11 @@ "LabelAddConnectSupporterHelp": "Dodanie u\u017cytkownika, kt\u00f3rego nie ma na li\u015bcie, wymaga po\u0142\u0105czenia jego konta, z poziomu jego profilu, z us\u0142ug\u0105 Emby Connect.", "LabelPinCode": "Kod PIN:", "DeleteMedia": "Usu\u0144 pozycj\u0119", - "AllowRemoteAccess": "Umo\u017cliwia zdalne po\u0142\u0105czenia z tym serwerem Emby.", - "AllowRemoteAccessHelp": "Je\u015bli odznaczone, wszelkie po\u0142\u0105czenia przychodz\u0105ce b\u0119d\u0105 blokowane.", + "AllowRemoteAccess": "Zezwalaj na zdalne po\u0142\u0105czenia z serwerem", + "AllowRemoteAccessHelp": "Je\u015bli nieaktywne, wszelkie zdalne po\u0142\u0105czenia b\u0119d\u0105 blokowane.", "HeaderSync": "Synchronizacja", "HeaderPlayAll": "Odtwarzaj wszystko", - "HeaderUpcomingNews": "Nadchodz\u0105ce nowo\u015bci", + "HeaderUpcomingNews": "Aktualno\u015bci wkr\u00f3tce", "ButtonOk": "Ok", "ButtonCancel": "Anuluj", "HeaderAllRecordings": "Wszystkie Nagrania", @@ -44,7 +49,7 @@ "All": "Wszystko", "OptionDev": "Dev", "OptionBeta": "Beta", - "HeaderTaskTriggers": "Wyzwalacze zada\u0144", + "HeaderTaskTriggers": "Wyzwalacze", "HeaderTV": "TV", "HeaderAudio": "D\u017awi\u0119k", "HeaderVideo": "Wideo", @@ -70,7 +75,7 @@ "FolderTypeMixed": "Zawarto\u015b\u0107 mieszana", "FolderTypeMovies": "Filmy", "FolderTypeMusic": "Muzyka", - "FolderTypePhotos": "Zdj\u0119cia", + "FolderTypePhotos": "Fotografie", "FolderTypeMusicVideos": "Teledyski", "FolderTypeGames": "Gry", "FolderTypeBooks": "Ksi\u0105\u017cki", @@ -260,7 +265,7 @@ "LabelName": "Nazwa:", "ButtonHelp": "Pomoc", "OptionAllowUserToManageServer": "Zezwalaj temu u\u017cytkownikowi na zarz\u0105dzanie serwerem", - "HeaderFeatureAccess": "Dost\u0119p do Funckji", + "HeaderFeatureAccess": "Dost\u0119p do funkcji", "OptionAllowMediaPlayback": "Zezwalaj na odtwarzanie medi\u00f3w", "OptionAllowBrowsingLiveTv": "Udost\u0119pniaj telewizj\u0119", "AllLibraries": "Biblioteki", @@ -299,7 +304,7 @@ "LabelMetadataPath": "Folder metadanych:", "LabelMetadataPathHelp": "Okre\u015bla niestandardow\u0105 lokalizacj\u0119 zapisywania pobranych grafik i metadanych.", "LabelTranscodingTempPath": "Folder tymczasowy transkodowania:", - "LabelTranscodingTempPathHelp": "Ten foldera zawiera pliki u\u017cywane przez silnik transkodowania. Wprowad\u017a niestandardowy folder lub zostaw puste, aby u\u017cywa\u0107 domy\u015blnego folderu danych serwera.", + "LabelTranscodingTempPathHelp": "Folder ten zawiera pliki u\u017cywane przez silnik transkodowania. Wprowad\u017a niestandardowy folder lub zostaw puste, aby u\u017cywa\u0107 domy\u015blnego folderu danych serwera.", "TabBasics": "Podstawowe", "TabTV": "Seriale", "TabGames": "Gry", @@ -310,7 +315,7 @@ "OptionOtherVideos": "Inne wideo", "LabelFanartApiKey": "Osobisty klucz API:", "LabelFanartApiKeyHelp": "\u017b\u0105dania fototapet, bez osobistego klucza API, zwr\u00f3c\u0105 obrazy, kt\u00f3re by\u0142y zatwierdzone 7 dni temu. Z osobistym kluczem API warto\u015b\u0107 spada do 48 godzin, a je\u017celi jeste\u015b cz\u0142onkiem VIP fototapety warto\u015b\u0107 ta spadnie do oko\u0142o 10 minut.", - "ExtractChapterImagesHelp": "Wyodr\u0119bianie obraz\u00f3w rozdzia\u0142\u00f3w pozwoli aplikacjom Emby, na wy\u015bwietlanie graficznego menu wyboru scen. Proces ten mo\u017ce by\u0107 wolny, mocno wykorzystuj\u0105cy procesor i mo\u017ce wymaga\u0107 kilku gigabajt\u00f3w przestrzeni dyskowej. Jest uruchamiany gdy filmy s\u0105 wykrywane oraz podczas nocnych zaplanowanych zada\u0144. Zadania s\u0105 konfigurowalne w cz\u0119\u015bci zaplanowanych zada\u0144. Nie jest zalecane uruchamianie tego zadania podczas szczytowych godzin u\u017cycia serwera.", + "ExtractChapterImagesHelp": "Wydobywanie obraz\u00f3w rozdzia\u0142\u00f3w pozwoli aplikacjom Emby, na wy\u015bwietlanie graficznego menu wyboru scen. Proces ten mo\u017ce by\u0107 wolny, mocno wykorzystuj\u0105cy procesor i mo\u017ce wymaga\u0107 kilku gigabajt\u00f3w przestrzeni dyskowej. Jest uruchamiany gdy filmy s\u0105 wykrywane oraz podczas nocnych zaplanowanych zada\u0144. Zadania s\u0105 konfigurowalne w cz\u0119\u015bci zaplanowanych zada\u0144. Nie jest zalecane uruchamianie tego zadania podczas szczytowych godzin u\u017cycia serwera.", "LabelMetadataDownloadLanguage": "Preferowany j\u0119zyk metadanych:", "ButtonSignIn": "Zaloguj si\u0119", "TitleSignIn": "Zaloguj", @@ -370,19 +375,19 @@ "LabelMinBackdropDownloadWidth": "Minimalna szeroko\u015b\u0107 pobieranych fototapet:", "LabelMinScreenshotDownloadWidth": "Minimalna szeroko\u015b\u0107 pobieranego zrzutu ekranu:", "ButtonAddScheduledTaskTrigger": "Dodaj wyzwalacz", - "HeaderAddScheduledTaskTrigger": "Dodaj wyzwalacz", + "HeaderAddScheduledTaskTrigger": "Dodawanie wyzwalacza", "ButtonAdd": "Dodaj", - "LabelTriggerType": "Typ Wyzwalacza:", - "OptionDaily": "Dziennie", - "OptionWeekly": "Tygodniowo", - "OptionOnInterval": "Na przedziale", + "LabelTriggerType": "Typ wyzwalacza:", + "OptionDaily": "Codziennie", + "OptionWeekly": "Weekly", + "OptionOnInterval": "Cyklicznie", "OptionOnAppStartup": "Podczas uruchomienia aplikacji", "OptionAfterSystemEvent": "Po zdarzeniu systemowym", "LabelDay": "Dzie\u0144:", - "LabelTime": "Czas:", + "LabelTime": "Godzina:", "LabelEvent": "Zdarzenie:", "OptionWakeFromSleep": "Wybud\u017a z uspienia", - "LabelEveryXMinutes": "Za ka\u017cdym:", + "LabelEveryXMinutes": "Cz\u0119stotliwo\u015b\u0107:", "HeaderTvTuners": "Tunery", "TabFolders": "Foldery", "LabelSpecialSeasonsDisplayName": "Nazwa sezonu odcink\u00f3w specjalnych", @@ -480,7 +485,7 @@ "LabelSeasonZeroFolderName": "Nazwa folderu sezonu zero:", "HeaderResult": "Wynik", "LabelTransferMethod": "Metoda transferu", - "HeaderLatestNews": "Najnowsze wiadomo\u015bci", + "HeaderLatestNews": "Nowo\u015bci", "HeaderRunningTasks": "Uruchomione zadania", "HeaderActiveDevices": "Aktywne urz\u0105dzenia", "HeaderPendingInstallations": "Instalacje w toku", @@ -583,7 +588,7 @@ "OptionProfileVideo": "Wideo", "OptionProfileAudio": "D\u017awi\u0119k", "OptionProfileVideoAudio": "Wideo Audio", - "OptionProfilePhoto": "Zdj\u0119cie", + "OptionProfilePhoto": "Fotografia", "LabelUserLibrary": "Biblioteka u\u017cytkownika:", "LabelUserLibraryHelp": "Wybierz, kt\u00f3r\u0105 bibliotek\u0119 u\u017cytkownika wy\u015bwietla\u0107 na urz\u0105dzeniu. Zostaw puste, aby odziedziczy\u0107 domy\u015blne ustawienia.", "OptionPlainStorageFolders": "Wy\u015bwietlaj wszystkie foldery jako zwyczajne foldery", @@ -693,7 +698,7 @@ "TabNextUp": "Do obejrzenia", "HeaderBecomeProjectSupporter": "Zam\u00f3w subskrypcj\u0119 Emby Premium", "MessageNoMovieSuggestionsAvailable": "Brak aktualnie polecanych film\u00f3w. Zacznij ogl\u0105da\u0107 i ocenia\u0107 filmy, nast\u0119pnie wr\u00f3\u0107, aby obejrze\u0107 swoje rekomendacje.", - "MessageNoCollectionsAvailable": "Kolekcje pozwalaj\u0105 na cieszenie si\u0119 personalizowanym grupowaniem Film\u00f3w, seriali, Album\u00f3w, Ksi\u0105\u017cek oraz Gier. Kliknij przycisk + aby zacz\u0105\u0107 tworzy\u0107 kolekcje.", + "MessageNoCollectionsAvailable": "Kolekcje pozwalaj\u0105 na cieszenie si\u0119 spersonalizowanym grupowaniem Film\u00f3w, Seriali, Album\u00f3w, Ksi\u0105\u017cek oraz Gier. Naci\u015bnij klawisz +, aby zacz\u0105\u0107 tworzy\u0107 kolekcje.", "MessageNoPlaylistsAvailable": "Listy odtwarzania pozwalaj\u0105 na tworzenie list z zawarto\u015bci\u0105 odtwarzanych w kolejno\u015bci. W celu dodania pozycji do listy odtwarzania, naci\u015bnij prawy przycisk lub naci\u015bnij palcem i przytrzymaj, a nast\u0119pnie wybierz z menu Dodaj do listy.", "MessageNoPlaylistItemsAvailable": "Lista odtwarzania jest obecnie pusta.", "ButtonEditOtherUserPreferences": "Edytuj profil, obrazy i ustawienia osobiste tego u\u017cytkownika.", @@ -773,7 +778,7 @@ "ButtonSync": "Synchronizuj", "TabScheduledTasks": "Harmonogram zada\u0144", "HeaderChapters": "Rozdzia\u0142y", - "HeaderResumeSettings": "Ustawienia wznawiania", + "HeaderResumeSettings": "Wznawianie", "TabSync": "Synchronizacja", "TitleUsers": "U\u017cytkownicy", "LabelProtocol": "Protok\u00f3\u0142:", @@ -817,7 +822,7 @@ "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera zosta\u0142a zaktualizowana", "MessageApplicationUpdated": "Serwer Emby zosta\u0142 zaktualizowany", "ProviderValue": "Dostawca: {0}", - "HeaderRecentActivity": "Ostatnie aktywno\u015bci", + "HeaderRecentActivity": "Aktywno\u015bci", "HeaderPeople": "Osoby", "OptionComposers": "Kompozytorzy", "OptionOthers": "Inne", @@ -858,7 +863,7 @@ "LabelAirDays": "Dni transmisji:", "LabelAirTime": "Czas transmisji:", "HeaderMediaInfo": "O mediach", - "HeaderPhotoInfo": "Informacje o Zdj\u0119ciu", + "HeaderPhotoInfo": "O fotografii", "HeaderInstall": "Instalacja", "LabelSelectVersionToInstall": "Wybierz wersj\u0119 do instalacji", "LinkLearnMoreAboutSubscription": "Dowiedz si\u0119 wi\u0119cej o Emby Premium", @@ -927,7 +932,7 @@ "HeaderLibrarySettings": "Ustawienia biblioteki", "HeaderChapterImages": "Obrazy rozdzia\u0142\u00f3w", "HeaderSubtitleDownloads": "Pobrane napisy", - "HeaderCameraUploadHelp": "Emby mo\u017ce automatycznie przekazywa\u0107 zdj\u0119cia i wideo, z urz\u0105dze\u0144 mobilnych, do serwera Emby.", + "HeaderCameraUploadHelp": "Aplikacje Emby mog\u0105 przekazywa\u0107 automatycznie fotografie i nagrania, z urz\u0105dze\u0144 mobilnych, do serwera Emby.", "LabelCameraUploadPath": "Folder zapisywania medi\u00f3w:", "LabelCameraUploadPathHelp": "Okre\u015bla niestandardowy folder zapisywania medi\u00f3w. Je\u015bli pozostawisz puste, u\u017cywany b\u0119dzie domy\u015blny folder. Nadpisze to jakiekolwiek domy\u015blne ustawienia w sekcji Zapisywanie medi\u00f3w. Je\u015bli pozostawisz puste, u\u017cyty zostanie folder domy\u015blny. W przypadku u\u017cywania niestandardowego folderu, nale\u017cy dodatkowo doda\u0107 go do biblioteki.", "LabelCreateCameraUploadSubfolder": "Utw\u00f3rz osobny podfolder dla ka\u017cdego urz\u0105dzenia", @@ -999,7 +1004,7 @@ "OptionAllowVideoPlaybackTranscoding": "Zezwalaj na odtwarzanie wideo, kt\u00f3re wymaga transkodowania", "OptionAllowVideoPlaybackRemuxing": "Zezwalaj na odtwarzanie video, kt\u00f3re wymaga konwersji, bez ponownego kodowania", "OptionAllowMediaPlaybackTranscodingHelp": "Ograniczenie dost\u0119pu do transkodowania mo\u017ce powodowa\u0107 awarie odtwarzania w aplikacji Emby, z powodu nieobs\u0142ugiwanych format\u00f3w medi\u00f3w.", - "TabStreaming": "Transmisja", + "TabStreaming": "Transmitowanie", "LabelRemoteClientBitrateLimit": "Limit przep\u0142ywno\u015bci transmisji (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Opcjonalny limit przep\u0142ywno\u015bci transmisji dla urz\u0105dze\u0144 poza sieci\u0105 domow\u0105. U\u017cywaj tej opcji, w celu zapobiegania \u017c\u0105daniom o wy\u017csze przep\u0142ywno\u015bci, ni\u017c Twojej po\u0142\u0105czenie internetowe mo\u017ce obs\u0142u\u017cy\u0107.", "LabelUserRemoteClientBitrateLimitHelp": "Umo\u017cliwia nadpisanie domy\u015blnej globalnej warto\u015bci wprowadzonej w ustawieniach odtwarzania serwera.", @@ -1009,7 +1014,7 @@ "OptionEnableFullSpeedConversionHelp": "Domy\u015blnie, synchronizacja konwersji jest wykonywana przy niskiej pr\u0119dko\u015bci tak, aby minimalizowa\u0107 u\u017cycie zasob\u00f3w.", "HeaderPlaylists": "Listy odtwarzania", "HeaderViewStyles": "Style widok\u00f3w", - "TabPhotos": "Zdj\u0119cia", + "TabPhotos": "Fotografie", "HeaderWelcomeToEmby": "Witaj w Emby", "EmbyIntroMessage": "Przy pomocy Emby mo\u017cesz \u0142atwo transmitowa\u0107 wideo, muzyk\u0119 i obrazy do smartfon\u00f3w, tablet\u00f3w i innych urz\u0105dze\u0144, ze swojego serwera Emby.", "ButtonSkip": "Pomi\u0144", @@ -1083,7 +1088,7 @@ "HeaderAdmin": "Administracja", "ButtonSignOut": "Wyloguj", "HeaderCameraUpload": "Przekazywanie", - "SelectCameraUploadServers": "Przekazuj zdj\u0119cia z aparatu do nast\u0119puj\u0105cych serwer\u00f3w:", + "SelectCameraUploadServers": "Przekazuj fotografie z aparatu do nast\u0119puj\u0105cych serwer\u00f3w:", "ButtonClear": "Wyczy\u015b\u0107", "LabelFolder": "Folder:", "HeadersFolders": "Foldery", @@ -1171,7 +1176,7 @@ "ButtonReenable": "Aktywuj ponownie", "LabelAbortedByServerShutdown": "(Przerwano w skuter wy\u0142\u0105czenia serwera)", "LabelScheduledTaskLastRan": "Ostatnio uruchomiono {0}, czas trwania {1}.", - "HeaderDeleteTaskTrigger": "Usu\u0144 wyzwalacz zadania", + "HeaderDeleteTaskTrigger": "Usu\u0144 wyzwalacz", "MessageDeleteTaskTrigger": "Czy na pewno chcesz usun\u0105\u0107 ten wyzwalacz zadania?", "MessageNoPluginsInstalled": "Brak zainstalowanych wtyczek.", "MessageNoPluginsDueToAppStore": "U\u017cy\u0107 aplikacji internetowej Emby, aby zarz\u0105dza\u0107 wtyczkami.", @@ -1361,7 +1366,7 @@ "OptionMusicAlbums": "Albumy muzyczne", "OptionMusicVideos": "Teledyski", "OptionSongs": "Utwory", - "OptionHomeVideos": "Nagrania i zdj\u0119cia prywatne", + "OptionHomeVideos": "Nagrania i fotografie prywatne", "OptionBooks": "Ksi\u0105\u017cki", "ButtonUp": "G\u00f3ra", "ButtonDown": "D\u00f3\u0142", @@ -1373,7 +1378,7 @@ "LabelMetadataDownloadersHelp": "Aktywuj i okre\u015bl priorytet preferowanych dostawc\u00f3w metadanych. Dostawcy o ni\u017cszym priorytecie b\u0119d\u0105 u\u017cywani tylko w przypadku brakuj\u0105cych informacji.", "LabelMetadataSavers": "Zapisywanie metadanych:", "LabelMetadataSaversHelp": "Wybierz formaty plik\u00f3w u\u017cywane do zapisywania metadanych.", - "LabelImageFetchers": "Pobieraj obrazy z:", + "LabelImageFetchers": "dostawcy grafik:", "LabelImageFetchersHelp": "Aktywuj i uporz\u0105dkuj preferowane \u017ar\u00f3d\u0142a obraz\u00f3w wed\u0142ug ich priorytetu.", "LabelDynamicExternalId": "{0} Id:", "PersonTypePerson": "Osoba", @@ -1603,7 +1608,7 @@ "ButtonNowPlaying": "Teraz odtwarzane", "HeaderLatestMovies": "Filmy ostatnio dodane", "HeaderEmailAddress": "Adres e-mail", - "LoginDisclaimer": "Emby jest zaprojektowane tak, aby pomaga\u0107 w zarz\u0105dzaniu bibliotek\u0105 domow\u0105 - filmami, muzyk\u0105 czy zdj\u0119ciami. Zapoznaj si\u0119 z zasadami u\u017cytkowania. U\u017cywanie oprogramowania Emby wymaga pe\u0142nego zaakceptowania zasad.", + "LoginDisclaimer": "Emby zosta\u0142o zaprojektowane tak, aby pomaga\u0107 w zarz\u0105dzaniu bibliotek\u0105 domow\u0105 - filmami, muzyk\u0105 i fotografiami. Zapoznaj si\u0119 z zasadami u\u017cytkowania. U\u017cywanie oprogramowania Emby wymaga pe\u0142nego zaakceptowania zasad.", "TermsOfUse": "Warunki u\u017cytkowania", "NumLocationsValue": "{0} foldery", "ButtonAddMediaLibrary": "Dodaj media do biblioteki", @@ -1635,7 +1640,7 @@ "HeaderTuners": "Tunery", "LabelOptionalM3uUrl": "Adres url M3U (opcjonalny)", "LabelOptionalM3uUrlHelp": "Niekt\u00f3re urz\u0105dzenia wspieraj\u0105 list\u0119 kana\u0142\u00f3w M3U.", - "TabResumeSettings": "Ustawienia wznawiania", + "TabResumeSettings": "Wznawianie", "DrmChannelsNotImported": "Kana\u0142y z DRM nie zostan\u0105 zaimportowane.", "LabelAllowHWTranscoding": "Zezwalaj na sprz\u0119towe transkodowanie", "AllowHWTranscodingHelp": "Je\u015bli w\u0142\u0105czone, zezwalaj tunerowi na transkodowanie strumieni w locie. To mo\u017ce pom\u00f3c zmniejszy\u0107 pro\u015bby serwera Emby na transkodowanie.", @@ -1650,8 +1655,8 @@ "RecordingPathChangeMessage": "Zmiana folderu z nagraniami nie spowoduje przeniesienia ju\u017c istniej\u0105cych nagra\u0144, ze starej lokalizacji do nowej. Je\u015bli jest to wymagane, nale\u017cy to zrobi\u0107 manualnie.", "LabelSportsCategories": "Kategorie wydarze\u0144 sportowych:", "XmlTvSportsCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako sportowe. Oddziel je u\u017cywaj\u0105c '|'.", - "LabelNewsCategories": "Kategorie wiadomo\u015bci:", - "XmlTvNewsCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako wiadomo\u015bci. Oddziel je u\u017cywaj\u0105c '|'.", + "LabelNewsCategories": "Kategorie informacyjne:", + "XmlTvNewsCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako programy informacyjne. Oddziel je u\u017cywaj\u0105c '|'.", "LabelKidsCategories": "Kategorie dzieci\u0119ce:", "XmlTvKidsCategoriesHelp": "Programy z tymi kategoriami, b\u0119d\u0105 wy\u015bwietlane jako dzieci\u0119ce. Oddziel je u\u017cywaj\u0105c '|'.", "LabelMovieCategories": "Kategorie filmowe", @@ -1676,8 +1681,8 @@ "XmlTvPremiere": "Domy\u015blnie, Emby b\u0119dzie importowa\u0107 {0} godzin danych przewodnika. Import nieograniczony czasowo wymaga aktywnego subskrypcji Emby Premium.", "MoreFromValue": "Wi\u0119cej z {0}", "OptionSaveMetadataAsHiddenHelp": "Zmiana ta b\u0119dzie mia\u0142a zastosowanie do nowych metadanych zapisanych w przysz\u0142o\u015bci. Istniej\u0105ce pliki metadanych zostan\u0105 zaktualizowane przy nast\u0119pnym zapisie przez serwer Emby.", - "EnablePhotos": "Aktywuj zdj\u0119cia", - "EnablePhotosHelp": "Zdj\u0119cia b\u0119d\u0105 wykrywane i wy\u015bwietlane obok innych plik\u00f3w multimedialnych.", + "EnablePhotos": "Aktywuj fotografie", + "EnablePhotosHelp": "Fotografie b\u0119d\u0105 wykrywane i wy\u015bwietlane obok innych plik\u00f3w multimedialnych.", "SyncToOtherDevices": "Synchronizuj z innymi urz\u0105dzeniami", "ManageOfflineDownloads": "Zarz\u0105dzaj pobranymi materia\u0142ami", "RememberMe": "Zapami\u0119taj mnie", @@ -1733,7 +1738,7 @@ "LabelCertificatePassword": "Has\u0142o do certyfikatu:", "LabelCertificatePasswordHelp": "Je\u015bli Tw\u00f3j certyfikat wymaga podania has\u0142a, wprowad\u017a go tutaj.", "Programs": "Programy", - "News": "Wiadomo\u015bci", + "News": "Aktualno\u015bci", "HeaderDownloadSync": "Synchronizacja", "LabelEnableHardwareDecodingFor": "Aktywuj dekodowanie sprz\u0119towe dla:", "EnableHardwareEncoding": "Aktywuj kodowanie sprz\u0119towe", @@ -1763,8 +1768,8 @@ "MessageSubCancelReqSent": "Do w\u0142a\u015bciciela klucza zosta\u0142a wys\u0142ana wiadomo\u015b\u0107 pocztowa. Post\u0119puj zgodnie z instrukcjami zawartymi w tej wiadomo\u015bci, aby zako\u0144czy\u0107 anulowanie subskrypcji. Mamy nadziej\u0119, \u017ce wkr\u00f3tce wr\u00f3cisz!", "MessageSubCancelError": "Podczas pr\u00f3by anulowania wyst\u0105pi\u0142 b\u0142\u0105d. Prze\u015blij wiadomo\u015b\u0107 na adres {0}, a my si\u0119 z Tob\u0105 skontaktujemy w tej sprawie.", "LabelAlreadyCancelled": "Ta subskrypcja zosta\u0142a anulowana. Tw\u00f3j rachunek nie zostanie obci\u0105\u017cony ponownie, ale dodatkowe funkcjonalno\u015b\u0107 b\u0119d\u0105 dzia\u0142a\u0142y do czasu podanego poni\u017cej.", - "AllowOnTheFlySubtitleExtraction": "Zezwalaj na wyodr\u0119bnianie napis\u00f3w w locie", - "AllowOnTheFlySubtitleExtractionHelp": "Napisy wbudowane mog\u0105 zosta\u0107 wyodr\u0119bnione z plik\u00f3w wideo, a Emby mo\u017ce je dostarcza\u0107 w postaci zwyk\u0142ego tekstu, w celu zapobiegania transkodowania wideo. Na niekt\u00f3rych systemach mo\u017ce to zabiera\u0107 du\u017co czasu i powodowa\u0107 wstrzymywanie odtwarzania wideo podczas procesu ekstrakcji. Dezaktywuj t\u0119 opcj\u0119, aby wbudowane napisy by\u0142y wypalane w transkodowanym wideo, w przypadku gdy nie s\u0105 obs\u0142ugiwane przez urz\u0105dzenie klienta.", + "AllowOnTheFlySubtitleExtraction": "Zezwalaj na wydobywanie napis\u00f3w w locie", + "AllowOnTheFlySubtitleExtractionHelp": "Napisy wbudowane mog\u0105 zosta\u0107 wydobyte z plik\u00f3w wideo, a Emby mo\u017ce je dostarcza\u0107 w postaci zwyk\u0142ego tekstu, zapobiegaj\u0105c transkodowaniu wideo. Na niekt\u00f3rych systemach mo\u017ce to zabiera\u0107 du\u017co czasu i powodowa\u0107 wstrzymywanie odtwarzania wideo podczas procesu ekstrakcji. Dezaktywuj t\u0119 opcj\u0119, aby wbudowane napisy by\u0142y wypalane w transkodowanym wideo, gdy nie s\u0105 obs\u0142ugiwane przez urz\u0105dzenie klienta.", "ButtonStopRecording": "Zatrzymaj nagrywanie", "StopRecording": "Zatrzymaj nagrywanie", "CancelSeries": "Anuluj nagrywanie seryjne", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-BR.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-BR.json index 986463ff43..ba15d5cc32 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-BR.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-BR.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Armazenar legendas junto com os arquivos de v\u00eddeo torna mais f\u00e1cil gerenci\u00e1-las.", "SubtitleDownloadInstructions": "Para gerenciar a recep\u00e7\u00e3o de legendas, clique nas configura\u00e7\u00f5es de uma biblioteca Emby e altere as configura\u00e7\u00f5es de recebimento de legendas.", "OpenSubtitleInstructions": "Voc\u00ea ter\u00e1 que configurar as informa\u00e7\u00f5es da conta do Open Subtitles na tela de configura\u00e7\u00f5es de Open Subtitles no painel de controle do Emby Server.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Finalizar", "LabelNext": "Pr\u00f3ximo", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-PT.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-PT.json index f4aff1811d..04524c8d44 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-PT.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/pt-PT.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anterior", "LabelFinish": "Terminar", "LabelNext": "Seguinte", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ro.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ro.json index d52d6ae063..f5ae56a8d0 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ro.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ro.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Anteriorul", "LabelFinish": "Termin\u0103", "LabelNext": "Urm\u0103torul", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/ru.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/ru.json index 4e199c3390..3761cd49d4 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/ru.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/ru.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043b\u0451\u0433\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043c\u0438.", "SubtitleDownloadInstructions": "\u0427\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a Emby, \u0438 \u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432.", "OpenSubtitleInstructions": "\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Open Subtitles \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Open Subtitles \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 Emby Server.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", "LabelFinish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c", "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/sk.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/sk.json index 760276b8d2..0ab174e441 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/sk.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/sk.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Predch\u00e1dzaj\u00face", "LabelFinish": "Ukon\u010di\u0165", "LabelNext": "\u010ealej", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/sl-SI.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/sl-SI.json index 06fc23352c..306d1fcb03 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/sl-SI.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/sl-SI.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Nazaj", "LabelFinish": "Konec", "LabelNext": "Naprej", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/sv.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/sv.json index de35464cf7..32937fea00 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/sv.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/sv.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "F\u00f6reg\u00e5ende", "LabelFinish": "Klart", "LabelNext": "N\u00e4sta", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/tr.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/tr.json index 4711c2fe97..93e81b2e19 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/tr.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/tr.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u00d6nceki", "LabelFinish": "Bitir", "LabelNext": "Sonraki", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/uk.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/uk.json index 634be7eb99..cc1a13a7cc 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/uk.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/uk.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", "LabelFinish": "Finish", "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/vi.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/vi.json index f97ba397cc..daab84c576 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/vi.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/vi.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "Tr\u01b0\u1edbc", "LabelFinish": "K\u1ebft th\u00fac", "LabelNext": "Ti\u1ebfp theo", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-CN.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-CN.json index de074447b2..b8e73f9913 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-CN.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-CN.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u4e0a\u4e00\u4e2a", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u4e2a", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-HK.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-HK.json index 87cbbfa008..93c4a6206f 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-HK.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-HK.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u524d\u4e00\u500b", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u500b", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-TW.json b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-TW.json index a750b71b80..33b76a1a00 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-TW.json +++ b/MediaBrowser.WebDashboard/dashboard-ui/strings/zh-TW.json @@ -3,6 +3,11 @@ "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SubtitleDownloadInstructions": "To manage subtitle downloading, click on a library in Emby library setup, and edit the subtitle downloading settings.", "OpenSubtitleInstructions": "You'll need to configure Open Subtitles account information on the Open Subtitles configuration screen in the Emby Server dashboard.", + "HeaderAddLocalUser": "Add Local User", + "AddUserByManually": "Add a local user by manually entering user information.", + "InviteAnEmbyConnectUser": "Add a user by sending an email invitation.", + "HeaderInviteWithEmbyConnect": "Invite with Emby Connect", + "HowWouldYouLikeToAddUser": "How would you like to add a user?", "LabelPrevious": "\u4e0a\u4e00\u500b", "LabelFinish": "\u5b8c\u6210", "LabelNext": "\u4e0b\u4e00\u500b", diff --git a/MediaBrowser.WebDashboard/dashboard-ui/syncactivity.html b/MediaBrowser.WebDashboard/dashboard-ui/syncactivity.html index 2206096295..588807151b 100644 --- a/MediaBrowser.WebDashboard/dashboard-ui/syncactivity.html +++ b/MediaBrowser.WebDashboard/dashboard-ui/syncactivity.html @@ -1,25 +1,10 @@ 
-
diff --git a/SharedVersion.cs b/SharedVersion.cs index 4c7484a68a..587ec3286c 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.3.1.19")] +[assembly: AssemblyVersion("3.3.1.20")] diff --git a/ThirdParty/emby/Emby.Server.Connect.dll b/ThirdParty/emby/Emby.Server.Connect.dll index 3ab7b7301d983bc042ade35ba83b6f05fe8417b4..ef06aaae1eca558ddb3730797709be787a131220 100644 GIT binary patch delta 101 zcmZp8!QAkIc|r$sBJ<6S-GviGg&82=jU0$(20}&#;mLv%g&Bo6t4_RaA#huNw{P+s xDVOEZX{Q-}|Cik?aH>WDqx$F6_ yU5*nA7EkwH8(zIx;8cwQNc-geSCRsmwo%dtP#g5=j+Y8n(=QMx}o_=44MN)vVYfHi{l{%-^!bh*KB*#W> K=g?*O!2tl`-X~oE delta 129 zcmZp8Bhc_hU_uA8NWs;{?$&O`t=&xSi!_B8AYgeph-L;tMh2MJfoLSL_TP(`w*Owl zoXRP%MCg}QXHdB3f{jeav&_W&wim2n&S?M{JpH~7i=@CxA+B;m%TJ!0J{8>&k4rP& K&Y{clg98Bf|0b6J diff --git a/ThirdParty/emby/Emby.Server.Sync.dll b/ThirdParty/emby/Emby.Server.Sync.dll index fe57be6108551c0d769cdb8d450c81d5ff8d0877..d22f730308b094e7e166baae23a36b884c583ded 100644 GIT binary patch literal 176128 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