create EditRepoRoles

This commit is contained in:
Eduard Heimbuch
2019-05-15 17:30:42 +02:00
parent 60cf070c44
commit 394c1f53d4
4 changed files with 98 additions and 19 deletions

View File

@@ -4,9 +4,11 @@ import { translate } from "react-i18next";
import type { Role } from "@scm-manager/ui-types";
import ExtensionPoint from "@scm-manager/ui-extensions/lib/ExtensionPoint";
import PermissionRoleDetailsTable from "./PermissionRoleDetailsTable";
import {Button, Subtitle} from "@scm-manager/ui-components";
type Props = {
role: Role,
url: string,
// context props
t: string => string,
@@ -14,13 +16,15 @@ type Props = {
class PermissionRoleDetails extends React.Component<Props> {
render() {
const { role } = this.props;
const { role, url } = this.props;
return (
<div>
<PermissionRoleDetailsTable role={role}/>
<hr/>
<Subtitle subtitle={"repositoryRoles.edit"}/>
<Button label={"test"} link={`${url}/edit`} color="primary" />
<div className="content">
<ExtensionPoint
name="roles.repositoryRole-details.information"

View File

@@ -0,0 +1,71 @@
// @flow
import React from "react";
import RepositoryRoleForm from "./RepositoryRoleForm";
import { connect } from "react-redux";
import { translate } from "react-i18next";
import {
getModifyRoleFailure,
isModifyRolePending,
modifyRole,
} from "../modules/roles";
import type { Role } from "@scm-manager/ui-types";
type Props = {
disabled: boolean,
role: Role,
repositoryRolesLink: string,
//dispatch function
updateRole: (link: string, role: Role, callback?: () => void) => void
};
class EditRepositoryRole extends React.Component<Props> {
repositoryRoleUpdated = (role: Role) => {
const { history } = this.props;
history.push("/config/role/" + role.name);
};
updateRepositoryRole = (role: Role) => {
this.props.updateRole(role, () =>
this.repositoryRoleUpdated(role)
);
};
render() {
return (
<>
<RepositoryRoleForm
disabled={false}
role={this.props.role}
submitForm={role => this.updateRepositoryRole(role)}
/>
</>
);
}
}
const mapStateToProps = (state, ownProps) => {
const loading = isModifyRolePending(state);
const error = getModifyRoleFailure(state);
return {
loading,
error,
};
};
const mapDispatchToProps = dispatch => {
return {
updateRole: (role: Role, callback?: () => void) => {
dispatch(modifyRole(role, callback));
}
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(translate("config")(EditRepositoryRole));

View File

@@ -49,6 +49,9 @@ class RepositoryRoleForm extends React.Component<Props, State> {
componentDidMount() {
const { fetchAvailableVerbs, verbsLink} = this.props;
fetchAvailableVerbs(verbsLink);
if (this.props.role) {
this.setState({role: this.props.role})
}
}
isFalsy(value) {

View File

@@ -1,12 +1,10 @@
//@flow
import React from "react";
import { connect } from "react-redux";
import {Loading, ErrorPage, Title} from "@scm-manager/ui-components";
import { Loading, ErrorPage, Title } from "@scm-manager/ui-components";
import { Route } from "react-router";
import type { History } from "history";
import {
EditRepositoryRoleNavLink,
} from "../../components/navLinks";
import { EditRepositoryRoleNavLink } from "../../components/navLinks";
import { translate } from "react-i18next";
import type { Role } from "@scm-manager/ui-types";
import { getRepositoryRolesLink } from "../../../modules/indexResource";
@@ -19,6 +17,8 @@ import {
} from "../modules/roles";
import { withRouter } from "react-router-dom";
import PermissionRoleDetail from "../components/PermissionRoleDetails";
import EditRepositoryRole from "./EditRepositoryRole";
import Switch from "react-router-dom/es/Switch";
type Props = {
roleName: string,
@@ -83,22 +83,23 @@ class SingleRepositoryRole extends React.Component<Props> {
return (
<>
<Title title={t("repositoryRoles.title")}/>
<Title title={t("repositoryRoles.title")} />
<div className="columns">
<div className="column is-three-quarters">
<Route
path={url}
component={() => <PermissionRoleDetail role={role} />}
/>
<Route
path={`${url}/settings/general`}
component={() => <EditRepositoryRoleNavLink role={role} />}
/>
<ExtensionPoint
name="roles.route"
props={extensionProps}
renderAll={true}
/>
<Route
path={url}
component={() => <PermissionRoleDetail role={role} url={url} />}
/>
<Route
path={`${url}`}
exact
component={() => <EditRepositoryRole role={role} />}
/>
<ExtensionPoint
name="roles.route"
props={extensionProps}
renderAll={true}
/>
</div>
</div>
</>