diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index 33f9b44ea2..76249abf64 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -7,7 +7,7 @@ import '../../../../elements/emby-button/emby-button'; import Dashboard, { pageIdOn } from '../../../../scripts/clientUtils'; import confirm from '../../../../components/confirm/confirm'; -function deletePlugin(page, uniqueid, name) { +function deletePlugin(page, uniqueid, version, name) { const msg = globalize.translate('UninstallPluginConfirmation', name); confirm({ @@ -17,12 +17,26 @@ function deletePlugin(page, uniqueid, name) { confirmText: globalize.translate('HeaderUninstallPlugin') }).then(function () { loading.show(); - ApiClient.uninstallPlugin(uniqueid).then(function () { + ApiClient.uninstallPluginByVersion(uniqueid, version).then(function () { reloadList(page); }); }); } +function enablePlugin(page, uniqueid, version) { + loading.show(); + ApiClient.enablePlugin(uniqueid, version).then(function () { + reloadList(page); + }); +} + +function disablePlugin(page, uniqueid, version) { + loading.show(); + ApiClient.disablePlugin(uniqueid, version).then(function () { + reloadList(page); + }); +} + function showNoConfigurationMessage() { Dashboard.alert({ message: globalize.translate('MessageNoPluginConfiguration') @@ -41,12 +55,18 @@ function getPluginCardHtml(plugin, pluginConfigurationPages) { })[0]; const configPageUrl = configPage ? Dashboard.getPluginUrl(configPage.Name) : null; let html = ''; - html += "
"; + html += `
`; html += '
'; html += '
'; html += '
'; - html += configPageUrl ? '' : ''; html += '
'; @@ -59,7 +79,7 @@ function getPluginCardHtml(plugin, pluginConfigurationPages) { html += "
"; html += configPage && configPage.DisplayName ? configPage.DisplayName : plugin.Name; - html += '
'; + html += `
${globalize.translate('LabelStatus')} ${plugin.Status}
`; html += "
"; html += plugin.Version; html += '
'; @@ -114,6 +134,8 @@ function showPluginMenu(page, elem) { const name = card.getAttribute('data-name'); const removable = card.getAttribute('data-removable'); const configHref = card.querySelector('.cardContent').getAttribute('href'); + const status = card.getAttribute('data-status'); + const version = card.getAttribute('data-version'); const menuItems = []; if (configHref) { @@ -125,6 +147,22 @@ function showPluginMenu(page, elem) { } if (removable === 'true') { + if (status === 'Disabled') { + menuItems.push({ + name: globalize.translate('EnablePlugin'), + id: 'enable', + icon: 'mode_enable' + }); + } + + if (status === 'Active') { + menuItems.push({ + name: globalize.translate('DisablePlugin'), + id: 'disable', + icon: 'mode_disable' + }); + } + menuItems.push({ name: globalize.translate('ButtonUninstall'), id: 'delete', @@ -142,7 +180,13 @@ function showPluginMenu(page, elem) { Dashboard.navigate(configHref); break; case 'delete': - deletePlugin(page, id, name); + deletePlugin(page, id, version, name); + break; + case 'enable': + enablePlugin(page, id, version); + break; + case 'disable': + disablePlugin(page, id, version); break; } } diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index a34b649a28..a863660bc1 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1457,6 +1457,8 @@ "LabelEnableIP4Help": "Enables IPv4 functionality.", "LabelEnableIP4": "Enable IPv4:", "HeaderNetworking": "IP Protocols", + "EnablePlugin": "Enable Plugin", + "DisablePlugin": "Disable Plugin", "YoutubeDenied": "Requested video is not allowed to be played in embedded players.", "YoutubeNotFound": "Video not found.", "YoutubePlaybackError": "Requested video cannot be played.",