diff --git a/scm-ui-components/packages/ui-components/src/config/Configuration.js b/scm-ui-components/packages/ui-components/src/config/Configuration.js index 0eb6f6ffc2..3607777989 100644 --- a/scm-ui-components/packages/ui-components/src/config/Configuration.js +++ b/scm-ui-components/packages/ui-components/src/config/Configuration.js @@ -136,7 +136,7 @@ class Configuration extends React.Component { className="delete" onClick={() => this.setState({ configChanged: false })} /> - {this.props.t("config-form.submit-success-notification")} + {this.props.t("config.form.submit-success-notification")} ); } @@ -167,7 +167,7 @@ class Configuration extends React.Component { {this.props.render(renderProps)}
diff --git a/scm-ui-components/packages/ui-components/src/config/ConfigurationBinder.js b/scm-ui-components/packages/ui-components/src/config/ConfigurationBinder.js index 7d0dfe7ed8..e1ee8f562a 100644 --- a/scm-ui-components/packages/ui-components/src/config/ConfigurationBinder.js +++ b/scm-ui-components/packages/ui-components/src/config/ConfigurationBinder.js @@ -29,20 +29,20 @@ class ConfigurationBinder { // create NavigationLink with translated label const ConfigNavLink = translate(this.i18nNamespace)(({t}) => { - return this.navLink("/config" + to, labelI18nKey, t); + return this.navLink("/admin/settings" + to, labelI18nKey, t); }); // bind navigation link to extension point - binder.bind("config.navigation", ConfigNavLink, configPredicate); + binder.bind("admin.setting", ConfigNavLink, configPredicate); // route for global configuration, passes the link from the index resource to component const ConfigRoute = ({ url, links, ...additionalProps }) => { const link = links[linkName].href; - return this.route(url + to, ); + return this.route(url + "/settings" + to, ); }; // bind config route to extension point - binder.bind("config.route", ConfigRoute, configPredicate); + binder.bind("admin.route", ConfigRoute, configPredicate); } bindRepository(to: string, labelI18nKey: string, linkName: string, RepositoryComponent: any) { diff --git a/scm-ui-components/packages/ui-components/src/navigation/PrimaryNavigation.js b/scm-ui-components/packages/ui-components/src/navigation/PrimaryNavigation.js index ce0c2d75dc..871d630350 100644 --- a/scm-ui-components/packages/ui-components/src/navigation/PrimaryNavigation.js +++ b/scm-ui-components/packages/ui-components/src/navigation/PrimaryNavigation.js @@ -75,7 +75,7 @@ class PrimaryNavigation extends React.Component { "primary-navigation.groups", "groups" ); - append("/config", "/config", "primary-navigation.config", "config"); + append("/admin", "/admin", "primary-navigation.admin", "config"); navigationItems.push( { return ( ); } @@ -108,7 +108,7 @@ class ConfigForm extends React.Component { noPermissionNotification = ( this.onClose()} /> ); @@ -167,7 +167,7 @@ class ConfigForm extends React.Component {
{ +class Admin extends React.Component { stripEndingSlash = (url: string) => { if (url.endsWith("/")) { - return url.substring(0, url.length - 2); + if(url.includes("role")) { + return url.substring(0, url.length - 2); + } + return url.substring(0, url.length - 1); } return url; }; @@ -55,7 +59,9 @@ class Config extends React.Component {
- + + + ( @@ -86,7 +92,7 @@ class Config extends React.Component { )} /> @@ -94,22 +100,38 @@ class Config extends React.Component {
-
+
+ + + +
@@ -128,5 +150,5 @@ const mapStateToProps = (state: any) => { export default compose( connect(mapStateToProps), - translate("config") -)(Config); + translate("admin") +)(Admin); diff --git a/scm-ui/src/admin/containers/AdminDetails.js b/scm-ui/src/admin/containers/AdminDetails.js new file mode 100644 index 0000000000..f096929ca0 --- /dev/null +++ b/scm-ui/src/admin/containers/AdminDetails.js @@ -0,0 +1,41 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; +import {Loading, Subtitle} from "@scm-manager/ui-components"; +import {getAppVersion} from "../../modules/indexResource"; +import {connect} from "react-redux"; +import Title from "@scm-manager/ui-components/src/layout/Title"; + +type Props = { + loading: boolean, + error: Error, + + version: string, + + // context objects + t: string => string +}; + +class AdminDetails extends React.Component { + render() { + const { t, loading } = this.props; + + if (loading) { + return ; + } + + return <> + + <Subtitle subtitle={this.props.version}/> + </>; + } +} + +const mapStateToProps = (state: any) => { + const version = getAppVersion(state); + return { + version + }; +}; + +export default connect(mapStateToProps)(translate("admin")(AdminDetails)); diff --git a/scm-ui/src/config/containers/GlobalConfig.js b/scm-ui/src/admin/containers/GlobalConfig.js similarity index 98% rename from scm-ui/src/config/containers/GlobalConfig.js rename to scm-ui/src/admin/containers/GlobalConfig.js index 1d7a389584..0708144c87 100644 --- a/scm-ui/src/config/containers/GlobalConfig.js +++ b/scm-ui/src/admin/containers/GlobalConfig.js @@ -80,7 +80,7 @@ class GlobalConfig extends React.Component<Props, State> { className="delete" onClick={() => this.setState({ configChanged: false })} /> - {this.props.t("config-form.submit-success-notification")} + {this.props.t("config.form.submit-success-notification")} </div> ); } diff --git a/scm-ui/src/config/modules/config.js b/scm-ui/src/admin/modules/config.js similarity index 100% rename from scm-ui/src/config/modules/config.js rename to scm-ui/src/admin/modules/config.js diff --git a/scm-ui/src/config/modules/config.test.js b/scm-ui/src/admin/modules/config.test.js similarity index 100% rename from scm-ui/src/config/modules/config.test.js rename to scm-ui/src/admin/modules/config.test.js diff --git a/scm-ui/src/config/modules/namespaceStrategies.js b/scm-ui/src/admin/modules/namespaceStrategies.js similarity index 99% rename from scm-ui/src/config/modules/namespaceStrategies.js rename to scm-ui/src/admin/modules/namespaceStrategies.js index a9d2ef0cf6..b6788420f4 100644 --- a/scm-ui/src/config/modules/namespaceStrategies.js +++ b/scm-ui/src/admin/modules/namespaceStrategies.js @@ -1,5 +1,4 @@ // @flow - import * as types from "../../modules/types"; import type { Action, NamespaceStrategies } from "@scm-manager/ui-types"; import { apiClient } from "@scm-manager/ui-components"; diff --git a/scm-ui/src/config/modules/namespaceStrategies.test.js b/scm-ui/src/admin/modules/namespaceStrategies.test.js similarity index 100% rename from scm-ui/src/config/modules/namespaceStrategies.test.js rename to scm-ui/src/admin/modules/namespaceStrategies.test.js diff --git a/scm-ui/src/config/roles/components/AvailableVerbs.js b/scm-ui/src/admin/roles/components/AvailableVerbs.js similarity index 100% rename from scm-ui/src/config/roles/components/AvailableVerbs.js rename to scm-ui/src/admin/roles/components/AvailableVerbs.js diff --git a/scm-ui/src/config/roles/components/PermissionRoleDetails.js b/scm-ui/src/admin/roles/components/PermissionRoleDetails.js similarity index 94% rename from scm-ui/src/config/roles/components/PermissionRoleDetails.js rename to scm-ui/src/admin/roles/components/PermissionRoleDetails.js index 610bc98b6a..4410e286ae 100644 --- a/scm-ui/src/config/roles/components/PermissionRoleDetails.js +++ b/scm-ui/src/admin/roles/components/PermissionRoleDetails.js @@ -47,4 +47,4 @@ class PermissionRoleDetails extends React.Component<Props> { } } -export default translate("config")(PermissionRoleDetails); +export default translate("admin")(PermissionRoleDetails); diff --git a/scm-ui/src/config/roles/components/PermissionRoleDetailsTable.js b/scm-ui/src/admin/roles/components/PermissionRoleDetailsTable.js similarity index 92% rename from scm-ui/src/config/roles/components/PermissionRoleDetailsTable.js rename to scm-ui/src/admin/roles/components/PermissionRoleDetailsTable.js index 28ab5e1f14..852fe3f778 100644 --- a/scm-ui/src/config/roles/components/PermissionRoleDetailsTable.js +++ b/scm-ui/src/admin/roles/components/PermissionRoleDetailsTable.js @@ -35,4 +35,4 @@ class PermissionRoleDetailsTable extends React.Component<Props> { } } -export default translate("config")(PermissionRoleDetailsTable); +export default translate("admin")(PermissionRoleDetailsTable); diff --git a/scm-ui/src/config/roles/components/PermissionRoleRow.js b/scm-ui/src/admin/roles/components/PermissionRoleRow.js similarity index 100% rename from scm-ui/src/config/roles/components/PermissionRoleRow.js rename to scm-ui/src/admin/roles/components/PermissionRoleRow.js diff --git a/scm-ui/src/config/roles/components/PermissionRoleTable.js b/scm-ui/src/admin/roles/components/PermissionRoleTable.js similarity index 93% rename from scm-ui/src/config/roles/components/PermissionRoleTable.js rename to scm-ui/src/admin/roles/components/PermissionRoleTable.js index 13c5d775d1..a81f5d9b61 100644 --- a/scm-ui/src/config/roles/components/PermissionRoleTable.js +++ b/scm-ui/src/admin/roles/components/PermissionRoleTable.js @@ -34,4 +34,4 @@ class PermissionRoleTable extends React.Component<Props> { } } -export default translate("config")(PermissionRoleTable); +export default translate("admin")(PermissionRoleTable); diff --git a/scm-ui/src/config/roles/components/SystemRoleTag.js b/scm-ui/src/admin/roles/components/SystemRoleTag.js similarity index 89% rename from scm-ui/src/config/roles/components/SystemRoleTag.js rename to scm-ui/src/admin/roles/components/SystemRoleTag.js index 8aad57eddc..f1e8b0781b 100644 --- a/scm-ui/src/config/roles/components/SystemRoleTag.js +++ b/scm-ui/src/admin/roles/components/SystemRoleTag.js @@ -34,4 +34,4 @@ class SystemRoleTag extends React.Component<Props> { } } -export default injectSheet(styles)(translate("config")(SystemRoleTag)); +export default injectSheet(styles)(translate("admin")(SystemRoleTag)); diff --git a/scm-ui/src/config/roles/containers/CreateRepositoryRole.js b/scm-ui/src/admin/roles/containers/CreateRepositoryRole.js similarity index 95% rename from scm-ui/src/config/roles/containers/CreateRepositoryRole.js rename to scm-ui/src/admin/roles/containers/CreateRepositoryRole.js index 55b141469f..63e04e580e 100644 --- a/scm-ui/src/config/roles/containers/CreateRepositoryRole.js +++ b/scm-ui/src/admin/roles/containers/CreateRepositoryRole.js @@ -32,7 +32,7 @@ type Props = { class CreateRepositoryRole extends React.Component<Props> { repositoryRoleCreated = (role: RepositoryRole) => { const { history } = this.props; - history.push("/config/role/" + role.name + "/info"); + history.push("/admin/role/" + role.name + "/info"); }; createRepositoryRole = (role: RepositoryRole) => { @@ -85,4 +85,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(translate("config")(CreateRepositoryRole)); +)(translate("admin")(CreateRepositoryRole)); diff --git a/scm-ui/src/config/roles/containers/DeleteRepositoryRole.js b/scm-ui/src/admin/roles/containers/DeleteRepositoryRole.js similarity index 82% rename from scm-ui/src/config/roles/containers/DeleteRepositoryRole.js rename to scm-ui/src/admin/roles/containers/DeleteRepositoryRole.js index a00cc21840..0300866b50 100644 --- a/scm-ui/src/config/roles/containers/DeleteRepositoryRole.js +++ b/scm-ui/src/admin/roles/containers/DeleteRepositoryRole.js @@ -35,7 +35,7 @@ class DeleteRepositoryRole extends React.Component<Props> { }; roleDeleted = () => { - this.props.history.push("/config/roles/"); + this.props.history.push("/admin/roles/"); }; deleteRole = () => { @@ -45,15 +45,15 @@ class DeleteRepositoryRole extends React.Component<Props> { confirmDelete = () => { const { t } = this.props; confirmAlert({ - title: t("deleteRole.confirmAlert.title"), - message: t("deleteRole.confirmAlert.message"), + title: t("repositoryRole.delete.confirmAlert.title"), + message: t("repositoryRole.delete.confirmAlert.message"), buttons: [ { - label: t("deleteRole.confirmAlert.submit"), + label: t("repositoryRole.delete.confirmAlert.submit"), onClick: () => this.deleteRole() }, { - label: t("deleteRole.confirmAlert.cancel"), + label: t("repositoryRole.delete.confirmAlert.cancel"), onClick: () => null } ] @@ -74,12 +74,12 @@ class DeleteRepositoryRole extends React.Component<Props> { return ( <> - <Subtitle subtitle={t("deleteRole.subtitle")} /> + <Subtitle subtitle={t("repositoryRole.delete.subtitle")} /> <div className="columns"> <div className="column"> <ErrorNotification error={error} /> <DeleteButton - label={t("deleteRole.button")} + label={t("repositoryRole.delete.button")} action={action} loading={loading} /> @@ -110,4 +110,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(withRouter(translate("config")(DeleteRepositoryRole))); +)(withRouter(translate("admin")(DeleteRepositoryRole))); diff --git a/scm-ui/src/config/roles/containers/EditRepositoryRole.js b/scm-ui/src/admin/roles/containers/EditRepositoryRole.js similarity index 95% rename from scm-ui/src/config/roles/containers/EditRepositoryRole.js rename to scm-ui/src/admin/roles/containers/EditRepositoryRole.js index 15e3bee6ae..45576d02e3 100644 --- a/scm-ui/src/config/roles/containers/EditRepositoryRole.js +++ b/scm-ui/src/admin/roles/containers/EditRepositoryRole.js @@ -29,7 +29,7 @@ type Props = { class EditRepositoryRole extends React.Component<Props> { repositoryRoleUpdated = () => { - this.props.history.push("/config/roles/"); + this.props.history.push("/admin/roles/"); }; updateRepositoryRole = (role: RepositoryRole) => { @@ -78,4 +78,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(translate("config")(EditRepositoryRole)); +)(translate("admin")(EditRepositoryRole)); diff --git a/scm-ui/src/config/roles/containers/RepositoryRoleForm.js b/scm-ui/src/admin/roles/containers/RepositoryRoleForm.js similarity index 98% rename from scm-ui/src/config/roles/containers/RepositoryRoleForm.js rename to scm-ui/src/admin/roles/containers/RepositoryRoleForm.js index 9269af3838..fc7aa05f67 100644 --- a/scm-ui/src/config/roles/containers/RepositoryRoleForm.js +++ b/scm-ui/src/admin/roles/containers/RepositoryRoleForm.js @@ -169,4 +169,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(translate("config")(RepositoryRoleForm)); +)(translate("admin")(RepositoryRoleForm)); diff --git a/scm-ui/src/config/roles/containers/RepositoryRoles.js b/scm-ui/src/admin/roles/containers/RepositoryRoles.js similarity index 98% rename from scm-ui/src/config/roles/containers/RepositoryRoles.js rename to scm-ui/src/admin/roles/containers/RepositoryRoles.js index 2de1d3d74c..912af7f8c2 100644 --- a/scm-ui/src/config/roles/containers/RepositoryRoles.js +++ b/scm-ui/src/admin/roles/containers/RepositoryRoles.js @@ -151,5 +151,5 @@ export default withRouter( connect( mapStateToProps, mapDispatchToProps - )(translate("config")(RepositoryRoles)) + )(translate("admin")(RepositoryRoles)) ); diff --git a/scm-ui/src/config/roles/containers/SingleRepositoryRole.js b/scm-ui/src/admin/roles/containers/SingleRepositoryRole.js similarity index 98% rename from scm-ui/src/config/roles/containers/SingleRepositoryRole.js rename to scm-ui/src/admin/roles/containers/SingleRepositoryRole.js index 4aec3b0b06..5c392d222d 100644 --- a/scm-ui/src/config/roles/containers/SingleRepositoryRole.js +++ b/scm-ui/src/admin/roles/containers/SingleRepositoryRole.js @@ -129,5 +129,5 @@ export default withRouter( connect( mapStateToProps, mapDispatchToProps - )(translate("config")(SingleRepositoryRole)) + )(translate("admin")(SingleRepositoryRole)) ); diff --git a/scm-ui/src/config/roles/modules/roles.js b/scm-ui/src/admin/roles/modules/roles.js similarity index 100% rename from scm-ui/src/config/roles/modules/roles.js rename to scm-ui/src/admin/roles/modules/roles.js diff --git a/scm-ui/src/config/roles/modules/roles.test.js b/scm-ui/src/admin/roles/modules/roles.test.js similarity index 100% rename from scm-ui/src/config/roles/modules/roles.test.js rename to scm-ui/src/admin/roles/modules/roles.test.js diff --git a/scm-ui/src/containers/Main.js b/scm-ui/src/containers/Main.js index 42a6c54590..8681f2457b 100644 --- a/scm-ui/src/containers/Main.js +++ b/scm-ui/src/containers/Main.js @@ -21,7 +21,8 @@ import Groups from "../groups/containers/Groups"; import SingleGroup from "../groups/containers/SingleGroup"; import CreateGroup from "../groups/containers/CreateGroup"; -import Config from "../config/containers/Config"; +import Admin from "../admin/containers/Admin"; + import Profile from "./Profile"; type Props = { @@ -112,8 +113,8 @@ class Main extends React.Component<Props> { authenticated={authenticated} /> <ProtectedRoute - path="/config" - component={Config} + path="/admin" + component={Admin} authenticated={authenticated} /> <ProtectedRoute diff --git a/scm-ui/src/createReduxStore.js b/scm-ui/src/createReduxStore.js index 500ea23752..a05799eda7 100644 --- a/scm-ui/src/createReduxStore.js +++ b/scm-ui/src/createReduxStore.js @@ -14,9 +14,9 @@ import auth from "./modules/auth"; import pending from "./modules/pending"; import failure from "./modules/failure"; import permissions from "./repos/permissions/modules/permissions"; -import config from "./config/modules/config"; -import roles from "./config/roles/modules/roles"; -import namespaceStrategies from "./config/modules/namespaceStrategies"; +import config from "./admin/modules/config"; +import roles from "./admin/roles/modules/roles"; +import namespaceStrategies from "./admin/modules/namespaceStrategies"; import indexResources from "./modules/indexResource"; import type { BrowserHistory } from "history/createBrowserHistory"; diff --git a/scm-ui/src/modules/indexResource.js b/scm-ui/src/modules/indexResource.js index 12126e4841..e9b7e67baf 100644 --- a/scm-ui/src/modules/indexResource.js +++ b/scm-ui/src/modules/indexResource.js @@ -73,6 +73,7 @@ export default function reducer( case FETCH_INDEXRESOURCES_SUCCESS: return { ...state, + version: action.payload.version, links: action.payload._links }; default: @@ -107,6 +108,10 @@ export function getLinkCollection(state: Object, name: string): Link[] { return []; } +export function getAppVersion(state: Object) { + return state.indexResources.version; +} + export function getUiPluginsLink(state: Object) { return getLink(state, "uiPlugins"); } diff --git a/scm-ui/src/repos/containers/Create.js b/scm-ui/src/repos/containers/Create.js index 8931caa212..c524836438 100644 --- a/scm-ui/src/repos/containers/Create.js +++ b/scm-ui/src/repos/containers/Create.js @@ -22,7 +22,7 @@ import { getRepositoriesLink } from "../../modules/indexResource"; import { fetchNamespaceStrategiesIfNeeded, getFetchNamespaceStrategiesFailure, getNamespaceStrategies, isFetchNamespaceStrategiesPending -} from "../../config/modules/namespaceStrategies"; +} from "../../admin/modules/namespaceStrategies"; type Props = { repositoryTypes: RepositoryType[],