From 9e470c9f94b7570e8b4a1a6ec1af8edc40c07a3c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 May 2015 16:53:14 -0400 Subject: [PATCH] hls updates --- dashboard-ui/about.html | 4 +- dashboard-ui/cinemamodeconfiguration.html | 2 +- dashboard-ui/css/site.css | 17 +- dashboard-ui/log.html | 4 +- dashboard-ui/scripts/appservices.js | 2 +- .../scripts/cinemamodeconfiguration.js | 5 + dashboard-ui/scripts/dashboardpage.js | 7 +- dashboard-ui/scripts/extensions.js | 21 ++- dashboard-ui/scripts/mediaplayer-video.js | 174 ++++++++++++------ dashboard-ui/scripts/mediaplayer.js | 19 +- dashboard-ui/scripts/notifications.js | 48 ++--- dashboard-ui/scripts/nowplayingbar.js | 79 +++++--- dashboard-ui/scripts/selectserver.js | 9 +- dashboard-ui/scripts/site.js | 43 ++--- dashboard-ui/scripts/sync.js | 4 + dashboard-ui/scripts/syncactivity.js | 2 +- dashboard-ui/support.html | 4 +- dashboard-ui/supporter.html | 6 +- dashboard-ui/supporterkey.html | 4 +- dashboard-ui/thirdparty/apiclient/ajax.js | 8 +- dashboard-ui/thirdparty/cordova/chromecast.js | 17 +- 21 files changed, 315 insertions(+), 164 deletions(-) diff --git a/dashboard-ui/about.html b/dashboard-ui/about.html index 391d598d07..657b38e508 100644 --- a/dashboard-ui/about.html +++ b/dashboard-ui/about.html @@ -12,8 +12,8 @@
${TabGeneral} ${TabLogs} - ${TabDonate} - ${TabSupporterKey} + ${TabDonate} + ${TabSupporterKey} ${TabAbout}
diff --git a/dashboard-ui/cinemamodeconfiguration.html b/dashboard-ui/cinemamodeconfiguration.html index f23c9a11d6..7b7bca7683 100644 --- a/dashboard-ui/cinemamodeconfiguration.html +++ b/dashboard-ui/cinemamodeconfiguration.html @@ -41,7 +41,7 @@
${LabelTheseFeaturesRequireSupporterHelpAndTrailers}
- +
  • diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 8d97459bea..f140818d9f 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -142,6 +142,11 @@ h1 a:hover { position: fixed; } +/* Show over now playing bar */ +.ui-panel-display-overlay { + z-index: 1098; +} + .ui-panel-inner { position: absolute; top: 1px; @@ -192,10 +197,10 @@ h1 a:hover { overflow-x: hidden; } -.hiddenScrollY::-webkit-scrollbar { - width: 0 !important; - display: none; -} + .hiddenScrollY::-webkit-scrollbar { + width: 0 !important; + display: none; + } /** * Note: I have omitted any vendor-prefixes for clarity. @@ -1193,3 +1198,7 @@ h1 + .accentButton { -ms-user-select: auto !important; user-select: auto !important; } + +.supporterMembershipDisabled .tabSupporterMembership { + display: none; +} diff --git a/dashboard-ui/log.html b/dashboard-ui/log.html index 748ec53be0..0acd69ee89 100644 --- a/dashboard-ui/log.html +++ b/dashboard-ui/log.html @@ -11,8 +11,8 @@ diff --git a/dashboard-ui/scripts/appservices.js b/dashboard-ui/scripts/appservices.js index ebbd21b974..974824b291 100644 --- a/dashboard-ui/scripts/appservices.js +++ b/dashboard-ui/scripts/appservices.js @@ -105,7 +105,7 @@ Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) { - if (pluginSecurityInfo.IsMBSupporter || context != 'sync') { + if (pluginSecurityInfo.IsMBSupporter || context != 'sync' || !AppInfo.enableSupporterMembership) { $('.syncPromotion', page).hide(); } else { $('.syncPromotion', page).show(); diff --git a/dashboard-ui/scripts/cinemamodeconfiguration.js b/dashboard-ui/scripts/cinemamodeconfiguration.js index 6b356c816c..8afbc891b7 100644 --- a/dashboard-ui/scripts/cinemamodeconfiguration.js +++ b/dashboard-ui/scripts/cinemamodeconfiguration.js @@ -54,6 +54,11 @@ }); + if (AppInfo.enableSupporterMembership) { + $('.lnkSupporterLearnMore', page).show(); + } else { + $('.lnkSupporterLearnMore', page).hide(); + } }); function cinemaModeConfigurationPage() { diff --git a/dashboard-ui/scripts/dashboardpage.js b/dashboard-ui/scripts/dashboardpage.js index 61bc6730db..13330f8136 100644 --- a/dashboard-ui/scripts/dashboardpage.js +++ b/dashboard-ui/scripts/dashboardpage.js @@ -818,7 +818,10 @@ var imgUrl, text; - if (pluginSecurityInfo.IsMBSupporter) { + if (!AppInfo.enableSupporterMembership) { + $('.supporterIconContainer', page).remove(); + } + else if (pluginSecurityInfo.IsMBSupporter) { imgUrl = "css/images/supporter/supporterbadge.png"; text = Globalize.translate('MessageThankYouForSupporting'); @@ -1395,7 +1398,7 @@ $(document).on('pagebeforeshowready', "#dashboardPage", DashboardPage.onPageShow if (!$('.staticSupporterPromotion', page).length) { $('.supporterPromotion', page).remove(); - if (!pluginSecurityInfo.IsMBSupporter) { + if (!pluginSecurityInfo.IsMBSupporter && AppInfo.enableSupporterMembership) { $('.content-primary', page).append(''); } } diff --git a/dashboard-ui/scripts/extensions.js b/dashboard-ui/scripts/extensions.js index ba2aad90d4..0dc58dd4e4 100644 --- a/dashboard-ui/scripts/extensions.js +++ b/dashboard-ui/scripts/extensions.js @@ -119,10 +119,25 @@ if (!Array.prototype.filter) { }; } +// TODO: There should be notification services, where each defines what it supports and the best service is chosen based on params var WebNotifications = { show: function (data) { - if (window.Notification) { + + if (window.cordova && window.cordova.plugins && window.cordova.plugins.notification) { + + window.cordova.plugins.notification.local.schedule({ + id: new Date().getTime(), + title: data.title, + text: data.body, + //firstAt: monday_9_am, + //every: "week", + //sound: "file://sounds/reminder.mp3", + //data: { meetingId: "123#fg8" }, + icon: data.icon + }); + } + else if (window.Notification) { var level = Notification.permissionLevel ? Notification.permissionLevel() : Notification.permission; @@ -196,10 +211,6 @@ var WebNotifications = { }); } } - }, - - supported: function () { - return window.Notification || window.webkitNotifications; } }; diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index 8e6c0102ea..2d0ea4cf40 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -72,9 +72,29 @@ } } + self.showChaptersFlyout = function () { + + var html = getChaptersFlyoutHtml(); + + var elem = $('.videoChaptersPopup').html(html) + .trigger('create') + .popup("option", "positionTo", $('.videoChaptersButton')) + .off('popupafterclose', onFlyoutClose) + .on('popupafterclose', onFlyoutClose); + + onPopupOpen(elem); + }; + self.showSubtitleMenu = function () { - var elem = $('.videoSubtitlePopup').html(getSubtitleTracksHtml()) + var html = getSubtitleTracksHtml(); + + if (!supportsContentOverVideoPlayer()) { + showPopupUsingSelect(html, 'subtitles'); + return; + } + + var elem = $('.videoSubtitlePopup').html(html) .trigger('create') .popup("option", "positionTo", $('.videoSubtitleButton')) .off('popupafterclose', onFlyoutClose) @@ -85,7 +105,14 @@ self.showQualityFlyout = function () { - var elem = $('.videoQualityPopup').html(getQualityFlyoutHtml()) + var html = getQualityFlyoutHtml(); + + if (!supportsContentOverVideoPlayer()) { + showPopupUsingSelect(html, 'quality'); + return; + } + + var elem = $('.videoQualityPopup').html(html) .trigger('create') .popup("option", "positionTo", $('.videoQualityButton')) .off('popupafterclose', onFlyoutClose) @@ -94,20 +121,16 @@ onPopupOpen(elem); }; - self.showChaptersFlyout = function () { - - var elem = $('.videoChaptersPopup').html(getChaptersFlyoutHtml()) - .trigger('create') - .popup("option", "positionTo", $('.videoChaptersButton')) - .off('popupafterclose', onFlyoutClose) - .on('popupafterclose', onFlyoutClose); - - onPopupOpen(elem); - }; - self.showAudioTracksFlyout = function () { - var elem = $('.videoAudioPopup').html(getAudioTracksHtml()) + var html = getAudioTracksHtml(); + + if (!supportsContentOverVideoPlayer()) { + showPopupUsingSelect(html, 'audio'); + return; + } + + var elem = $('.videoAudioPopup').html(html) .trigger('create') .popup("option", "positionTo", $('.videoAudioButton')) .off('popupafterclose', onFlyoutClose) @@ -116,6 +139,55 @@ onPopupOpen(elem); }; + function openSelect(selector) { + var element = $(selector)[0], worked = false; + if (document.createEvent) { // all browsers + var e = document.createEvent("MouseEvents"); + e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + worked = element.dispatchEvent(e); + } else if (element.fireEvent) { // ie + worked = element.fireEvent("onmousedown"); + } + if (!worked) { // unknown browser / error + } + } + + function showPopupUsingSelect(html, type) { + + var re = new RegExp('
    ', 'g'); + + html = html.replace(re, ' • '); + + var options = $('.mediaPopupOption', $(html)).get().map(function (e) { + + var selected = $(e).hasClass('selectedMediaPopupOption') ? ' selected="selected"' : ''; + return '' + $(e).text() + ''; + }); + + html = ''; + + var select = $(html).appendTo(document.body).on('change', function () { + + var value = this.value; + $(this).remove(); + + if (type == 'audio') { + onAudioOptionSelected(value); + } + else if (type == 'subtitles') { + onSubtitleOptionSelected(value); + } + else if (type == 'quality') { + onQualityOptionSelected(value); + } + + }).on('blur', function () { + $(this).remove(); + }); + + openSelect(select); + } + self.setAudioStreamIndex = function (index) { self.changeStream(self.getCurrentTicks(), { AudioStreamIndex: index }); }; @@ -499,6 +571,29 @@ self.changeStream(Math.floor(newPositionTicks)); } + function onAudioOptionSelected(value) { + var index = parseInt(value); + + self.setAudioStreamIndex(index); + } + + function onSubtitleOptionSelected(value) { + var index = parseInt(value); + + self.setSubtitleStreamIndex(index); + } + + function onQualityOptionSelected(value) { + var bitrate = parseInt(value); + + AppSettings.maxStreamingBitrate(bitrate); + + self.changeStream(self.getCurrentTicks(), { + + Bitrate: bitrate + }); + } + $(function () { var parent = $("#mediaPlayer"); @@ -532,9 +627,7 @@ $('.videoAudioPopup').on('click', '.mediaPopupOption', function () { if (!$(this).hasClass('selectedMediaPopupOption')) { - var index = parseInt(this.getAttribute('data-index')); - - self.setAudioStreamIndex(index); + onAudioOptionSelected(this.getAttribute('data-value')); } $('.videoAudioPopup').popup('close'); @@ -546,9 +639,7 @@ if (!$(this).hasClass('selectedMediaPopupOption')) { - var index = parseInt(this.getAttribute('data-index')); - - self.setSubtitleStreamIndex(index); + onSubtitleOptionSelected(this.getAttribute('data-value')); } }); @@ -556,14 +647,7 @@ if (!$(this).hasClass('selectedMediaPopupOption')) { - var bitrate = parseInt(this.getAttribute('data-bitrate')); - - AppSettings.maxStreamingBitrate(bitrate); - - self.changeStream(self.getCurrentTicks(), { - - Bitrate: bitrate - }); + onQualityOptionSelected(this.getAttribute('data-value')); } $('.videoQualityPopup').popup('close'); @@ -597,26 +681,6 @@ tooltip.remove(); }); - - $('.videoSubtitleButton').on('click', function () { - - self.showSubtitleMenu(); - }); - - $('.videoQualityButton').on('click', function () { - - self.showQualityFlyout(); - }); - - $('.videoAudioButton').on('click', function () { - - self.showAudioTracksFlyout(); - }); - - $('.videoChaptersButton').on('click', function () { - - self.showChaptersFlyout(); - }); }); function idleHandler() { @@ -777,7 +841,7 @@ cssClass += ' selectedMediaPopupOption'; } - var optionHtml = '
  • '; + var optionHtml = '
  • '; optionHtml += '

    '; @@ -862,7 +926,7 @@ cssClass += ' selectedMediaPopupOption'; } - var optionHtml = '

  • '; + var optionHtml = '
  • '; optionHtml += '

    '; @@ -944,7 +1008,7 @@ cssClass += ' selectedMediaPopupOption'; } - var optionHtml = '

  • '; + var optionHtml = '
  • '; optionHtml += '

    '; @@ -1071,6 +1135,10 @@ }; + function supportsContentOverVideoPlayer() { + return true; + } + self.playVideoInternal = function (item, mediaSource, startPosition, streamInfo) { var videoUrl = streamInfo.url; @@ -1150,7 +1218,7 @@ $('.videoSubtitleButton').hide(); } - if (item.Chapters && item.Chapters.length) { + if (item.Chapters && item.Chapters.length && supportsContentOverVideoPlayer()) { $('.videoChaptersButton').show(); } else { $('.videoChaptersButton').hide(); @@ -1162,7 +1230,7 @@ $('#video-fullscreenButton', videoControls).show(); } - if ($.browser.mobile) { + if (AppInfo.hasPhysicalVolumeButtons) { $('.volumeSliderContainer', videoControls).addClass('hide'); $('.muteButton', videoControls).addClass('hide'); $('.unmuteButton', videoControls).addClass('hide'); diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 0ace4e90ca..02e42a0ffe 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -943,6 +943,11 @@ self.getPosterUrl = function (item) { + // Safari often shows the poster under the video, which doesn't look good + if ($.browser.safari) { + return null; + } + var screenWidth = Math.max(screen.height, screen.width); if (item.BackdropImageTags && item.BackdropImageTags.length) { @@ -1717,7 +1722,17 @@ }).on("timeupdate.mediaplayerevent", function () { - self.setCurrentTime(self.getCurrentTicks(this)); + var currentTicks = self.getCurrentTicks(this); + // Seeing transcoded audio looping in safari, going past the runtime but restarting the audio + if ($.browser.safari && self.currentDurationTicks && (currentTicks > self.currentDurationTicks)) { + if (currentPlaylistIndex < self.playlist.length - 1) { + self.nextTrack(); + } else { + self.stop(); + } + } else { + self.setCurrentTime(currentTicks); + } })[0]; }; @@ -1734,7 +1749,7 @@ window.MediaPlayer = new mediaPlayer(); - Dashboard.ready(function() { + Dashboard.ready(function () { window.MediaController.registerPlayer(window.MediaPlayer); window.MediaController.setActivePlayer(window.MediaPlayer, window.MediaPlayer.getTargets()[0]); }); diff --git a/dashboard-ui/scripts/notifications.js b/dashboard-ui/scripts/notifications.js index 42059d0025..98d1c56697 100644 --- a/dashboard-ui/scripts/notifications.js +++ b/dashboard-ui/scripts/notifications.js @@ -45,40 +45,46 @@ self.showNotificationsFlyout = function () { - var html = '

    '; + Dashboard.getCurrentUser().done(function (user) { + var html = '
    '; - html += '

    '; - html += '' + Globalize.translate('HeaderNotifications') + ''; - html += '' + Globalize.translate('ButtonViewNotifications') + ''; - html += '

    '; + html += '

    '; + html += '' + Globalize.translate('HeaderNotifications') + ''; - html += '
    '; + if (user.Policy.IsAdministrator) { + html += '' + Globalize.translate('ButtonViewNotifications') + ''; + } - html += '
    Loading...'; + html += '

    '; - html += '
    '; + html += '
    '; - html += '
    '; + html += '
    Loading...'; - html += '
    '; + html += '
    '; - $(document.body).append(html); + html += '
  • '; - $('.notificationsFlyout').panel({}).trigger('create').panel("open").on("panelclose", function () { + html += ''; - $(this).off("panelclose").remove(); + $(document.body).append(html); - }); + $('.notificationsFlyout').panel({}).trigger('create').panel("open").on("panelclose", function () { - self.isFlyout = true; + $(this).off("panelclose").remove(); - var startIndex = 0; - var limit = 5; - var elem = $('.notificationsFlyoutlist'); + }); - refreshNotifications(startIndex, limit, elem, null, false).done(function() { - - self.markNotificationsRead([]); + self.isFlyout = true; + + var startIndex = 0; + var limit = 5; + var elem = $('.notificationsFlyoutlist'); + + refreshNotifications(startIndex, limit, elem, null, false).done(function () { + + self.markNotificationsRead([]); + }); }); }; diff --git a/dashboard-ui/scripts/nowplayingbar.js b/dashboard-ui/scripts/nowplayingbar.js index 5dd5b6b52f..62a2d24c5b 100644 --- a/dashboard-ui/scripts/nowplayingbar.js +++ b/dashboard-ui/scripts/nowplayingbar.js @@ -8,6 +8,7 @@ var unmuteButton; var muteButton; var volumeSlider; + var volumeSliderContainer; var isVolumeSliderActive; var unpauseButton; var pauseButton; @@ -128,6 +129,8 @@ } }); + volumeSliderContainer = $('.volumeSliderContainer', elem); + positionSlider = $('.positionSlider', elem).on('slidestart', function () { isPositionSliderActive = true; @@ -186,26 +189,6 @@ var playerInfo = MediaController.getPlayerInfo(); - var supportedCommands = playerInfo.supportedCommands; - - if (supportedCommands.indexOf('SetVolume') == -1) { - volumeSlider.prop('disabled', 'disabled'); - } else { - volumeSlider.prop('disabled', ''); - } - - if (supportedCommands.indexOf('Mute') == -1) { - muteButton.prop('disabled', 'disabled'); - } else { - muteButton.prop('disabled', ''); - } - - if (supportedCommands.indexOf('Unmute') == -1) { - unmuteButton.prop('disabled', 'disabled'); - } else { - unmuteButton.prop('disabled', ''); - } - var playState = state.PlayState || {}; if (playState.IsPaused) { @@ -219,7 +202,7 @@ hideButton(unpauseButton); } - updatePlayerVolumeState(state); + updatePlayerVolumeState(state, playerInfo); var nowPlayingItem = state.NowPlayingItem || {}; if (!isPositionSliderActive) { @@ -258,25 +241,71 @@ updateNowPlayingInfo(state); } - function updatePlayerVolumeState(state) { + function updatePlayerVolumeState(state, playerInfo) { + + playerInfo = playerInfo || MediaController.getPlayerInfo(); if (!muteButton) { getNowPlayingBar(); } var playState = state.PlayState || {}; + var supportedCommands = playerInfo.supportedCommands; + + var showMuteButton = true; + var showUnmuteButton = true; + var showVolumeSlider = true; + + //if (supportedCommands.indexOf('SetVolume') == -1) { + // volumeSlider.prop('disabled', 'disabled'); + //} else { + // volumeSlider.prop('disabled', ''); + //} + + if (supportedCommands.indexOf('Mute') == -1) { + showMuteButton = false; + } + + if (supportedCommands.indexOf('Unmute') == -1) { + showUnmuteButton = false; + } if (playState.IsMuted) { - hideButton(muteButton); - showButton(unmuteButton); - + showMuteButton = false; } else { + showUnmuteButton = false; + } + + if (supportedCommands.indexOf('SetVolume') == -1) { + showVolumeSlider = false; + } + + if (playerInfo.isLocalPlayer && AppInfo.hasPhysicalVolumeButtons) { + showMuteButton = false; + showUnmuteButton = false; + showVolumeSlider = false; + } + + if (showMuteButton) { showButton(muteButton); + } else { + hideButton(muteButton); + } + + if (showUnmuteButton) { + showButton(unmuteButton); + } else { hideButton(unmuteButton); } + if (showVolumeSlider) { + volumeSliderContainer.show(); + } else { + volumeSliderContainer.hide(); + } + if (!isVolumeSliderActive) { volumeSlider.val(playState.VolumeLevel || 0); } diff --git a/dashboard-ui/scripts/selectserver.js b/dashboard-ui/scripts/selectserver.js index b284a80213..bbd9e4ad7d 100644 --- a/dashboard-ui/scripts/selectserver.js +++ b/dashboard-ui/scripts/selectserver.js @@ -20,13 +20,8 @@ break; case MediaBrowser.ConnectionState.ServerSignIn: { - if (Dashboard.isRunningInCordova()) { - - Dashboard.onServerChanged(null, null, apiClient); - Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id); - } else { - showServerConnectionFailure(); - } + Dashboard.onServerChanged(null, null, apiClient); + Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id); } break; default: diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index a73ee4f21e..72df535014 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -179,7 +179,7 @@ var Dashboard = { Dashboard.getUserPromise = null; }, - logout: function (logoutWithServer, forceReload) { + logout: function (logoutWithServer) { function onLogoutDone() { @@ -192,11 +192,7 @@ var Dashboard = { loginPage = 'login.html'; } - if (forceReload) { - window.location.href = loginPage; - } else { - Dashboard.navigate(loginPage); - } + Dashboard.navigate(loginPage); } if (logoutWithServer === false) { @@ -576,7 +572,7 @@ var Dashboard = { var apiClient = ApiClient; - if (apiClient.accessToken()) { + if (apiClient && apiClient.accessToken()) { if (apiClient.enableFooterNotifications) { apiClient.getSystemInfo().done(function (info) { @@ -968,17 +964,11 @@ var Dashboard = { { var args = cmd.Arguments; - if (args.TimeoutMs && WebNotifications.supported()) { - var notification = { - title: args.Header, - body: args.Text, - timeout: args.TimeoutMs - }; - - WebNotifications.show(notification); + if (args.TimeoutMs) { + Dashboard.showFooterNotification({ html: "
    " + args.Header + "
    " + args.Text, timeout: args.TimeoutMs }); } else { - Dashboard.showFooterNotification({ html: "
    " + args.Header + "
    " + args.Text, timeout: args.TimeoutMs }); + Dashboard.alert({ title: args.Header, message: args.Text }); } break; @@ -1554,9 +1544,11 @@ var AppInfo = {}; if (!isCordova) { AppInfo.enableFooterNotifications = true; + AppInfo.enableSupporterMembership = true; } AppInfo.enableUserImage = true; + AppInfo.hasPhysicalVolumeButtons = isCordova || $.browser.mobile; } function initializeApiClient(apiClient) { @@ -1678,6 +1670,10 @@ var AppInfo = {}; $(document.body).addClass('bottomSecondaryNav'); } + if (!AppInfo.enableSupporterMembership) { + $(document.body).addClass('supporterMembershipDisabled'); + } + if (Dashboard.isRunningInCordova()) { $(document).addClass('nativeApp'); } @@ -1699,16 +1695,17 @@ var AppInfo = {}; videoPlayerHtml += ''; videoPlayerHtml += ''; - videoPlayerHtml += ''; + // Embedding onclicks due to issues not firing in cordova safari + videoPlayerHtml += ''; videoPlayerHtml += '
    '; - videoPlayerHtml += ''; + videoPlayerHtml += ''; videoPlayerHtml += '
    '; - videoPlayerHtml += ''; + videoPlayerHtml += ''; videoPlayerHtml += '
    '; - videoPlayerHtml += ''; + videoPlayerHtml += ''; videoPlayerHtml += '
    '; videoPlayerHtml += ''; @@ -1961,7 +1958,7 @@ $(document).on('pagecreate', ".page", function () { var isSettingsPage = page.hasClass('type-interior'); if (!user.Policy.IsAdministrator && isSettingsPage) { - window.location.replace("index.html"); + Dashboard.logout(); return; } @@ -1981,7 +1978,7 @@ $(document).on('pagecreate', ".page", function () { if (isConnectMode) { if (!Dashboard.isServerlessPage()) { - Dashboard.logout(true, true); + Dashboard.logout(true); return; } } @@ -1989,7 +1986,7 @@ $(document).on('pagecreate', ".page", function () { if (!isConnectMode && this.id !== "loginPage" && !page.hasClass('forgotPasswordPage') && !page.hasClass('wizardPage')) { console.log('Not logged into server. Redirecting to login.'); - Dashboard.logout(true, true); + Dashboard.logout(true); return; } diff --git a/dashboard-ui/scripts/sync.js b/dashboard-ui/scripts/sync.js index 5b7c26efde..2a7a4f7416 100644 --- a/dashboard-ui/scripts/sync.js +++ b/dashboard-ui/scripts/sync.js @@ -346,6 +346,10 @@ function isAvailable(item, user) { + if (Dashboard.isRunningInCordova()) { + return false; + } + return item.SupportsSync; } diff --git a/dashboard-ui/scripts/syncactivity.js b/dashboard-ui/scripts/syncactivity.js index 77c9bf26ae..3826f0de8a 100644 --- a/dashboard-ui/scripts/syncactivity.js +++ b/dashboard-ui/scripts/syncactivity.js @@ -293,7 +293,7 @@ Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) { - if (pluginSecurityInfo.IsMBSupporter) { + if (pluginSecurityInfo.IsMBSupporter || !AppInfo.enableSupporterMembership) { $('.syncPromotion', page).hide(); } else { $('.syncPromotion', page).show(); diff --git a/dashboard-ui/support.html b/dashboard-ui/support.html index 8d94615358..65d79aa58b 100644 --- a/dashboard-ui/support.html +++ b/dashboard-ui/support.html @@ -12,8 +12,8 @@
    ${TabGeneral} ${TabLogs} - ${TabDonate} - ${TabSupporterKey} + ${TabDonate} + ${TabSupporterKey} ${TabAbout}

    ${ProjectHasCommunity}

    diff --git a/dashboard-ui/supporter.html b/dashboard-ui/supporter.html index bd1d967bc5..31bc96d756 100644 --- a/dashboard-ui/supporter.html +++ b/dashboard-ui/supporter.html @@ -13,8 +13,8 @@
    ${TabGeneral} ${TabLogs} - ${TabDonate} - ${TabSupporterKey} + ${TabDonate} + ${TabSupporterKey} ${TabAbout}
    @@ -55,6 +55,7 @@
    +