diff --git a/dashboard-ui/components/directorybrowser/directorybrowser.js b/dashboard-ui/components/directorybrowser/directorybrowser.js index 742a13c728..7a445d386c 100644 --- a/dashboard-ui/components/directorybrowser/directorybrowser.js +++ b/dashboard-ui/components/directorybrowser/directorybrowser.js @@ -64,12 +64,7 @@ if (path) { - html += ''; - html += ''; - html += '...'; - html += ''; - html += ''; - html += ''; + html += getItem("lnkPath lnkDirectory", parentPath, "Network", '...'); } for (var i = 0, length = folders.length; i < length; i++) { @@ -78,21 +73,11 @@ var cssClass = folder.Type == "File" ? "lnkPath lnkFile" : "lnkPath lnkDirectory"; - html += ''; - html += ''; - html += folder.Name; - html += ''; - html += ''; - html += ''; + html += getItem(cssClass, folder.Type, folder.Path, folder.Name); } if (!path) { - html += ''; - html += ''; - html += Globalize.translate('ButtonNetwork'); - html += ''; - html += ''; - html += ''; + html += getItem("lnkPath lnkDirectory", "", "Network", Globalize.translate('ButtonNetwork')); } $('.results', page).html(html); @@ -108,6 +93,19 @@ }); } + function getItem(cssClass, type, path, name) { + + var html = ''; + html += ''; + html += ''; + html += name; + html += ''; + html += ''; + html += ''; + + return html; + } + function getEditorHtml(options, systemInfo) { var html = ''; diff --git a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js index b769bada8f..619d228799 100644 --- a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js +++ b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js @@ -55,10 +55,7 @@ html += ''; - if (!$.browser.msie) { - // Not sure why, but this is causing the entire browser to hang - html += ''; - } + html += ''; html += ''; html += path; diff --git a/dashboard-ui/components/paperdialoghelper.js b/dashboard-ui/components/paperdialoghelper.js index e3eefa4cc8..ddc63cbfdb 100644 --- a/dashboard-ui/components/paperdialoghelper.js +++ b/dashboard-ui/components/paperdialoghelper.js @@ -87,9 +87,12 @@ // without this safari will scroll the background instead of the dialog contents // but not needed here since this is already on top of an existing dialog - dlg.setAttribute('modal', 'modal'); + // but skip it in IE because it's causing the entire browser to hang + if (!$.browser.msie) { + dlg.setAttribute('modal', 'modal'); + } - // seeing max call stack size exceeded in the debugger with this + //// seeing max call stack size exceeded in the debugger with this dlg.setAttribute('noAutoFocus', 'noAutoFocus'); dlg.entryAnimation = 'scale-up-animation'; dlg.exitAnimation = 'fade-out-animation'; diff --git a/dashboard-ui/components/tvproviders/schedulesdirect.js b/dashboard-ui/components/tvproviders/schedulesdirect.js index f647f0214a..1edecc3987 100644 --- a/dashboard-ui/components/tvproviders/schedulesdirect.js +++ b/dashboard-ui/components/tvproviders/schedulesdirect.js @@ -166,7 +166,7 @@ }).fail(function () { Dashboard.hideLoadingMsg(); Dashboard.alert({ - message: Globalize.translate('ErrorSavingTvProvider') + message: Globalize.translate('ErrorAddingListingsToSchedulesDirect') }); }); diff --git a/dashboard-ui/devices/ie/ie.css b/dashboard-ui/devices/ie/ie.css index 7bad58f9ef..7fb2dd0e90 100644 --- a/dashboard-ui/devices/ie/ie.css +++ b/dashboard-ui/devices/ie/ie.css @@ -3,5 +3,5 @@ } paper-fab.keyboard-focus.paper-fab-0 { - /*background: #444;*/ + background: #444; } diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 298f1cd594..5fb45da29e 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -125,7 +125,10 @@ var isVlc = AppInfo.isNativeApp && $.browser.android; var bitrateSetting = AppSettings.maxStreamingBitrate(); - var canPlayWebm = self.canPlayWebm(); + var supportedFormats = getSupportedFormats(); + + var canPlayWebm = supportedFormats.indexOf('webm') != -1; + var canPlayAc3 = supportedFormats.indexOf('ac3') != -1; var profile = {}; @@ -135,28 +138,21 @@ profile.DirectPlayProfiles = []; - if (canPlayH264()) { + if (supportedFormats.indexOf('h264') != -1) { profile.DirectPlayProfiles.push({ Container: 'mp4,m4v', Type: 'Video', VideoCodec: 'h264', - AudioCodec: 'aac,mp3' + AudioCodec: 'aac,mp3' + (canPlayAc3 ? ',ac3' : '') }); } if ($.browser.chrome) { profile.DirectPlayProfiles.push({ - Container: 'mkv', + Container: 'mkv,mov', Type: 'Video', VideoCodec: 'h264', - AudioCodec: 'aac,mp3' - }); - - profile.DirectPlayProfiles.push({ - Container: 'mov', - Type: 'Video', - VideoCodec: 'h264', - AudioCodec: 'aac,mp3' + AudioCodec: 'aac,mp3' + (canPlayAc3 ? ',ac3' : '') }); } @@ -207,7 +203,7 @@ profile.TranscodingProfiles.push({ Container: 'ts', Type: 'Video', - AudioCodec: 'aac', + AudioCodec: 'aac' + (canPlayAc3 ? ',ac3' : ''), VideoCodec: 'h264', Context: 'Streaming', Protocol: 'hls' @@ -1827,7 +1823,6 @@ function canPlayH264() { var userAgent = navigator.userAgent.toLowerCase(); - if (userAgent.indexOf('firefox') != -1) { if (userAgent.indexOf('windows') != -1) { return true; @@ -1838,14 +1833,35 @@ return true; } - self._canPlayWebm = null; - self.canPlayWebm = function () { + var supportedFormats; + function getSupportedFormats() { - if (self._canPlayWebm == null) { - self._canPlayWebm = document.createElement('video').canPlayType('video/webm').replace(/no/, ''); + if (supportedFormats) { + return supportedFormats; } - return self._canPlayWebm; - }; + + var list = []; + var elem = document.createElement('video'); + + if (elem.canPlayType('video/webm').replace(/no/, '')) { + list.push('webm'); + } + if (elem.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '')) { + list.push('ac3'); + } + + var canPlayH264 = true; + var userAgent = navigator.userAgent.toLowerCase(); + if (userAgent.indexOf('firefox') != -1 && userAgent.indexOf('windows') == -1) { + canPlayH264 = false; + } + + if (canPlayH264) { + list.push('h264'); + } + supportedFormats = list; + return list; + } self.canAutoPlayAudio = function () { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 13ce034675..ebb24dede8 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1622,6 +1622,8 @@ var Dashboard = { name = "Opera"; } else if ($.browser.mozilla) { name = "Firefox"; + } else if ($.browser.edge) { + name = "Edge"; } if ($.browser.version) { diff --git a/dashboard-ui/strings/javascript/javascript.json b/dashboard-ui/strings/javascript/javascript.json index cc6f6f1d20..35112e3f6a 100644 --- a/dashboard-ui/strings/javascript/javascript.json +++ b/dashboard-ui/strings/javascript/javascript.json @@ -921,5 +921,6 @@ "HeaderTryDragAndDrop": "Try Drag and Drop", "TryDragAndDropMessage": "To re-arrange playlist items, just drag and drop. Try it!", "HeaderTryMicrosoftEdge": "Try Microsoft Edge", - "MessageTryMicrosoftEdge": "For a better experience on Windows 10, try the new Microsoft Edge Browser." + "MessageTryMicrosoftEdge": "For a better experience on Windows 10, try the new Microsoft Edge Browser.", + "ErrorAddingListingsToSchedulesDirect": "There was an error adding the lineup to your Schedules Direct account. Schedules Direct only allows a limited number of lineups per account. You may need to log into the Schedules Direct website and remove others listings from your account before proceeeding." } diff --git a/dashboard-ui/thirdparty/browser.js b/dashboard-ui/thirdparty/browser.js index cda788ce6c..682fb7cd57 100644 --- a/dashboard-ui/thirdparty/browser.js +++ b/dashboard-ui/thirdparty/browser.js @@ -902,7 +902,8 @@ jQuery.uaMatch = function (ua) { ua = ua.toLowerCase(); - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + var match = /(edge)[ \/]([\w.]+)/.exec(ua) || + /(chrome)[ \/]([\w.]+)/.exec(ua) || /(safari)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || @@ -945,7 +946,7 @@ browser[matched.platform] = true; } - if (userAgent.toLowerCase().indexOf("webkit") != -1 && !browser.chrome && !browser.msie) { + if (userAgent.toLowerCase().indexOf("webkit") != -1 && !browser.chrome && !browser.msie && !browser.edge) { browser.safari = true; }