this.props.router.push({ pathname: '/create-organization', state: { paid: true } });
};
- openProjectOnboarding = () => {
+ openProjectOnboarding = (organization?: string) => {
if (isSonarCloud()) {
this.setState({ automatic: false, modal: undefined });
- this.props.router.push(`/projects/create`);
+ this.props.router.push({ pathname: `/projects/create`, query: { organization } });
} else {
this.setState({ modal: ModalKey.projectOnboarding });
}
openProjectOnboarding: PropTypes.func
};
+ analyzeNewProject = () => {
+ const { organization } = this.props;
+ const organizationKey = organization && organization.key;
+ this.context.openProjectOnboarding(organizationKey);
+ };
+
render() {
const { currentUser, organization } = this.props;
const showNewProjectButton = isSonarCloud()
{translate('projects.no_projects.empty_instance.how_to_add_projects')}
</p>
<p className="big-spacer-top">
- <Button onClick={this.context.openProjectOnboarding}>
+ <Button onClick={this.analyzeNewProject}>
{translate('embed_docs.analyze_new_project')}
</Button>
</p>
<p
className="big-spacer-top"
>
- <Button>
+ <Button
+ onClick={[Function]}
+ >
embed_docs.analyze_new_project
</Button>
</p>
<p
className="big-spacer-top"
>
- <Button>
+ <Button
+ onClick={[Function]}
+ >
embed_docs.analyze_new_project
</Button>
</p>
const displayManual = parseQuery(this.props.location.query).manual;
const header = translate('onboarding.create_project.header');
const hasAutoProvisioning = this.canAutoCreate() && identityProvider;
+ const query = parseQuery(this.props.location.query);
return (
<>
<Helmet title={header} titleTemplate="%s" />
<ManualProjectCreate
currentUser={currentUser}
onProjectCreate={this.handleProjectCreate}
+ organization={query.organization}
/>
) : (
<AutoProjectCreate
interface OwnProps {
currentUser: LoggedInUser;
onProjectCreate: (projectKeys: string[]) => void;
+ organization?: string;
}
type Props = OwnProps & StateProps & DispatchProps;
this.state = {
projectName: '',
projectKey: '',
- selectedOrganization:
- props.userOrganizations.length === 1 ? props.userOrganizations[0].key : '',
+ selectedOrganization: this.getInitialSelectedOrganization(props),
submitting: false
};
}
this.mounted = false;
}
+ getInitialSelectedOrganization(props: Props) {
+ if (props.organization) {
+ return props.organization;
+ } else if (props.userOrganizations.length === 1) {
+ return props.userOrganizations[0].key;
+ } else {
+ return '';
+ }
+ }
+
handleFormSubmit = (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
RawQuery,
parseAsBoolean,
serializeOptionalBoolean,
- parseAsOptionalString
+ parseAsOptionalString,
+ serializeString
} from '../../../helpers/query';
export interface Query {
error?: string;
manual: boolean;
+ organization?: string;
}
export const parseQuery = memoize(
(urlQuery: RawQuery): Query => {
return {
error: parseAsOptionalString(urlQuery['error']),
- manual: parseAsBoolean(urlQuery['manual'], false)
+ manual: parseAsBoolean(urlQuery['manual'], false),
+ organization: parseAsOptionalString(urlQuery['organization'])
};
}
);
export const serializeQuery = memoize(
(query: Query): RawQuery =>
cleanQuery({
- manual: serializeOptionalBoolean(query.manual || undefined)
+ manual: serializeOptionalBoolean(query.manual || undefined),
+ organization: serializeString(query.organization)
})
);