From 02f78a025d5a3569c9b1c9e6e1cc5e170b27f91c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gr=C3=A9goire=20Aubert?= Date: Thu, 25 Oct 2018 16:17:14 +0200 Subject: [PATCH] SONAR-11396 Display private repositories in auto create projects page --- .../src/main/js/app/styles/init/icons.css | 8 +++- server/sonar-web/src/main/js/app/types.ts | 1 + .../apps/create/project/AlmRepositoryItem.tsx | 10 ++++- .../create/project/RemoteRepositories.tsx | 11 +++-- .../__tests__/AlmRepositoryItem-test.tsx | 4 ++ .../AlmRepositoryItem-test.tsx.snap | 40 ++++++++++++++++++- .../resources/org/sonar/l10n/core.properties | 1 + 7 files changed, 63 insertions(+), 12 deletions(-) diff --git a/server/sonar-web/src/main/js/app/styles/init/icons.css b/server/sonar-web/src/main/js/app/styles/init/icons.css index 3c96cec1bdc..788fdb12180 100644 --- a/server/sonar-web/src/main/js/app/styles/init/icons.css +++ b/server/sonar-web/src/main/js/app/styles/init/icons.css @@ -57,6 +57,10 @@ a[class*=' icon-'] { box-sizing: border-box; } +.icon-checkbox:focus { + outline: none; +} + .icon-checkbox:before { content: ' '; display: inline-block; @@ -68,8 +72,8 @@ a[class*=' icon-'] { box-shadow 0.4s ease; } -.icon-checkbox:focus:before, -.link-checkbox:focus:focus .icon-checkbox:before { +.icon-checkbox:not(.icon-checkbox-disabled):focus:before, +.link-checkbox:not(.disabled):focus:focus .icon-checkbox:before { box-shadow: 0 0 0 3px rgba(35, 106, 151, 0.25); } diff --git a/server/sonar-web/src/main/js/app/types.ts b/server/sonar-web/src/main/js/app/types.ts index 37b1bf07345..ff3b88449a0 100644 --- a/server/sonar-web/src/main/js/app/types.ts +++ b/server/sonar-web/src/main/js/app/types.ts @@ -37,6 +37,7 @@ export interface AlmRepository { installationKey: string; linkedProjectKey?: string; linkedProjectName?: string; + private?: boolean; } export interface AlmUnboundApplication { diff --git a/server/sonar-web/src/main/js/apps/create/project/AlmRepositoryItem.tsx b/server/sonar-web/src/main/js/apps/create/project/AlmRepositoryItem.tsx index 8fd083fb222..efc8e0397ba 100644 --- a/server/sonar-web/src/main/js/apps/create/project/AlmRepositoryItem.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/AlmRepositoryItem.tsx @@ -25,6 +25,7 @@ import CheckIcon from '../../../components/icons-components/CheckIcon'; import { AlmRepository, IdentityProvider } from '../../../app/types'; import { getBaseUrl, getProjectUrl } from '../../../helpers/urls'; import { translate } from '../../../helpers/l10n'; +import Tooltip from '../../../components/controls/Tooltip'; interface Props { identityProvider: IdentityProvider; @@ -45,14 +46,14 @@ export default class AlmRepositoryItem extends React.PureComponent { <> {identityProvider.name} {this.props.repository.label} @@ -65,6 +66,11 @@ export default class AlmRepositoryItem extends React.PureComponent { )} + {repository.private && ( + +
{translate('visibility.private')}
+
+ )} ); } diff --git a/server/sonar-web/src/main/js/apps/create/project/RemoteRepositories.tsx b/server/sonar-web/src/main/js/apps/create/project/RemoteRepositories.tsx index 66f3aef3f0e..d27b37528cd 100644 --- a/server/sonar-web/src/main/js/apps/create/project/RemoteRepositories.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/RemoteRepositories.tsx @@ -63,9 +63,7 @@ export default class RemoteRepositories extends React.PureComponent { const { organization } = this.props; - return getRepositories({ - organization - }).then( + return getRepositories({ organization }).then( ({ repositories }) => { if (this.mounted) { this.setState({ loading: false, repositories }); @@ -86,9 +84,10 @@ export default class RemoteRepositories extends React.PureComponent - Boolean(selectedRepositories[key]) - ), + installationKeys: Object.keys(selectedRepositories).filter(key => { + const repositories = selectedRepositories[key]; + return repositories && !repositories.private; + }), organization: this.props.organization }).then( ({ projects }) => this.props.onProjectCreate(projects.map(project => project.projectKey)), diff --git a/server/sonar-web/src/main/js/apps/create/project/__tests__/AlmRepositoryItem-test.tsx b/server/sonar-web/src/main/js/apps/create/project/__tests__/AlmRepositoryItem-test.tsx index 72b25cb2815..79edff1ed9a 100644 --- a/server/sonar-web/src/main/js/apps/create/project/__tests__/AlmRepositoryItem-test.tsx +++ b/server/sonar-web/src/main/js/apps/create/project/__tests__/AlmRepositoryItem-test.tsx @@ -53,6 +53,10 @@ it('should render disabled', () => { expect(getWrapper({ repository: repositories[0] })).toMatchSnapshot(); }); +it('should render private repositories', () => { + expect(getWrapper({ repository: { ...repositories[1], private: true } })).toMatchSnapshot(); +}); + function getWrapper(props = {}) { return shallow( @@ -81,11 +80,48 @@ exports[`should render disabled 1`] = ` `; +exports[`should render private repositories 1`] = ` + + + Foo Provider + + Awesome Project + + + +
+ visibility.private +
+
+
+`; + exports[`should render selected 1`] = ` diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index b8f7aec17ba..31a01e22666 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -2770,6 +2770,7 @@ onboarding.import_organization.installing.bitbucket=Installation of the Bitbucke onboarding.import_organization.installing.github=Installation of the GitHub application in progress... onboarding.import_organization.personal.page.header=Bind to your personal organization onboarding.import_organization.personal.page.description=An organization is a space where a team or a whole company can collaborate accross many projects. +onboarding.import_organization.private.disabled=It is not possible to automatically import private repositories yet. onboarding.import_organization.bitbucket=Import from BitBucket teams onboarding.import_organization.github=Import from GitHub organizations onboarding.import_organization.bind_existing=Bind to an existing sonarcloud organization -- 2.39.5