diff --git a/src/components/apphost.js b/src/components/apphost.js index 3e4d9d1f50..e468ce161d 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -199,7 +199,6 @@ const supportedFeatures = function () { if (browser.operaTv || browser.tizen || browser.orsay || browser.web0s) { features.push('exit'); } else { - features.push('exitmenu'); features.push('plugins'); } diff --git a/src/controllers/user/menu/index.html b/src/controllers/user/menu/index.html index 58ec33b400..66a07f2a14 100644 --- a/src/controllers/user/menu/index.html +++ b/src/controllers/user/menu/index.html @@ -112,6 +112,15 @@ + + +
+ +
+
${ButtonExitApp}
+
+
+
diff --git a/src/controllers/user/menu/index.js b/src/controllers/user/menu/index.js index 7b0d045b17..f9443c92d1 100644 --- a/src/controllers/user/menu/index.js +++ b/src/controllers/user/menu/index.js @@ -17,6 +17,10 @@ export default function (view, params) { window.NativeShell.openClientSettings(); }); + view.querySelector('.exitApp').addEventListener('click', function () { + appHost.exit(); + }); + view.addEventListener('viewshow', function () { // this page can also be used by admins to change user preferences from the user edit page const userId = params.userId || Dashboard.getCurrentUserId(); @@ -33,6 +37,9 @@ export default function (view, params) { const supportsClientSettings = appHost.supports('clientsettings'); page.querySelector('.clientSettings').classList.toggle('hide', !supportsClientSettings); + const supportsExitMenu = appHost.supports('exitmenu'); + page.querySelector('.exitApp').classList.toggle('hide', !supportsExitMenu); + const supportsMultiServer = appHost.supports('multiserver'); page.querySelector('.selectServer').classList.toggle('hide', !supportsMultiServer); diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 6e8f8ae8de..ea74637839 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -302,6 +302,11 @@ import Headroom from 'headroom.js'; html += '' + globalize.translate('Settings') + ''; html += '' + globalize.translate('ButtonSignOut') + ''; + + if (appHost.supports('exitmenu')) { + html += '' + globalize.translate('ButtonExitApp') + ''; + } + html += ''; } @@ -318,6 +323,11 @@ import Headroom from 'headroom.js'; btnSettings.addEventListener('click', onSettingsClick); } + const btnExit = navDrawerScrollContainer.querySelector('.exitApp'); + if (btnExit) { + btnExit.addEventListener('click', onExitAppClick); + } + const btnLogout = navDrawerScrollContainer.querySelector('.btnLogout'); if (btnLogout) { btnLogout.addEventListener('click', onLogoutClick); @@ -706,6 +716,10 @@ import Headroom from 'headroom.js'; Dashboard.navigate('mypreferencesmenu.html'); } + function onExitAppClick() { + appHost.exit(); + } + function onLogoutClick() { Dashboard.logout(); } diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4d71420ce0..116692d50f 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -134,6 +134,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", + "ButtonExitApp": "Exit Application", "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSubmit": "Submit", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f1144e8f40..fe75c835c9 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -106,6 +106,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", + "ButtonExitApp": "Exit Application", "ButtonSplit": "Split", "ButtonStart": "Start", "ButtonStop": "Stop",