From 4b3a897a32b537f1b2f24826f2cfbe6542aad50c Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Wed, 3 Jul 2019 09:02:44 +0200 Subject: [PATCH] added PluginsOverview Page --- scm-ui/public/locales/de/admin.json | 10 ++++ scm-ui/public/locales/en/admin.json | 10 ++++ scm-ui/src/admin/containers/Admin.js | 44 ++++++++++++++ scm-ui/src/admin/containers/AdminDetails.js | 17 +++--- .../plugins/containers/PluginsOverview.js | 57 +++++++++++++++++++ .../src/admin/roles/containers/PluginsList.js | 0 6 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 scm-ui/src/admin/plugins/containers/PluginsOverview.js create mode 100644 scm-ui/src/admin/roles/containers/PluginsList.js diff --git a/scm-ui/public/locales/de/admin.json b/scm-ui/public/locales/de/admin.json index d7ced4ce70..1cae12b544 100644 --- a/scm-ui/public/locales/de/admin.json +++ b/scm-ui/public/locales/de/admin.json @@ -10,6 +10,16 @@ "currentAppVersion": "Aktuelle Software-Versionsnummer" } }, + "plugins": { + "title": "Plugins", + "installedSubtitle": "Installierte Plugins", + "availableSubtitle": "Verfügbare Plugins", + "menu": { + "pluginsNavLink": "Plugins", + "installedNavLink": "Installiert", + "availableNavLink": "Verfügbar" + } + }, "repositoryRole": { "navLink": "Berechtigungsrollen", "title": "Berechtigungsrollen", diff --git a/scm-ui/public/locales/en/admin.json b/scm-ui/public/locales/en/admin.json index 83b13990c0..2df7b80386 100644 --- a/scm-ui/public/locales/en/admin.json +++ b/scm-ui/public/locales/en/admin.json @@ -10,6 +10,16 @@ "currentAppVersion": "Current Application Version" } }, + "plugins": { + "title": "Plugins", + "installedSubtitle": "Installed Plugins", + "availableSubtitle": "Available Plugins", + "menu": { + "pluginsNavLink": "Plugins", + "installedNavLink": "Installed", + "availableNavLink": "Available" + } + }, "repositoryRole": { "navLink": "Permission Roles", "title": "Permission Roles", diff --git a/scm-ui/src/admin/containers/Admin.js b/scm-ui/src/admin/containers/Admin.js index 40ab00f95a..b00cc9163c 100644 --- a/scm-ui/src/admin/containers/Admin.js +++ b/scm-ui/src/admin/containers/Admin.js @@ -10,6 +10,7 @@ import type { Links } from "@scm-manager/ui-types"; import { Page, Navigation, NavLink, Section, SubNavigation } from "@scm-manager/ui-components"; import { getLinks } from "../../modules/indexResource"; import AdminDetails from "./AdminDetails"; +import PluginsOverview from "../plugins/containers/PluginsOverview"; import GlobalConfig from "./GlobalConfig"; import RepositoryRoles from "../roles/containers/RepositoryRoles"; import SingleRepositoryRole from "../roles/containers/SingleRepositoryRole"; @@ -62,6 +63,35 @@ class Admin extends React.Component { + + ( + + )} + /> + ( + + )} + /> + ( + + )} + /> + ( + + )} + /> ( @@ -106,6 +136,20 @@ class Admin extends React.Component { icon="fas fa-info-circle" label={t("admin.menu.informationNavLink")} /> + + + + { return ; } - return <> - - <Subtitle subtitle={this.props.version}/> - </>; + return ( + <> + <Title title={t("admin.information.currentAppVersion")} /> + <Subtitle subtitle={this.props.version} /> + </> + ); } } diff --git a/scm-ui/src/admin/plugins/containers/PluginsOverview.js b/scm-ui/src/admin/plugins/containers/PluginsOverview.js new file mode 100644 index 0000000000..e0b82817c8 --- /dev/null +++ b/scm-ui/src/admin/plugins/containers/PluginsOverview.js @@ -0,0 +1,57 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; +import { Loading, Title, Subtitle, LinkPaginator, Notification } from "@scm-manager/ui-components"; +import PluginsList from "../components/PluginsList"; + +type Props = { + loading: boolean, + error: Error, + baseUrl: string, + installed: boolean, + + // context objects + t: string => string +}; + +class PluginsOverview extends React.Component<Props> { + render() { + const { loading, installed, t } = this.props; + + if (loading) { + return <Loading />; + } + + return ( + <> + <Title title={t("plugins.title")} /> + <Subtitle + subtitle={ + installed + ? t("plugins.installedSubtitle") + : t("plugins.availableSubtitle") + } + /> + {this.renderPluginsList()} + </> + ); + } + + renderPluginsList() { + const { collection, page, t } = this.props; + + if (collection._embedded && collection._embedded.plugins.length > 0) { + return ( + <> + <PluginsList plugins={collection._embedded.plugins} /> + <LinkPaginator collection={collection} page={page} /> + </> + ); + } + return ( + <Notification type="info">{t("plugins.noPlugins")}</Notification> + ); + } +} + +export default translate("admin")(PluginsOverview); diff --git a/scm-ui/src/admin/roles/containers/PluginsList.js b/scm-ui/src/admin/roles/containers/PluginsList.js new file mode 100644 index 0000000000..e69de29bb2